一、基于MDK创建汇编语言STM32工程
-
打开Keil MDK -
选择project --> New μVision Project... -
选择项目工程存放的位置,并进行命名 -
点击保存 -
设置工程的目标环境,这里是基于STM32F103ZET6 。 弹出的窗口如下图所示,既可以通过Search直接进行输入查找;也可通过小文件+号进行手中寻找。 -
选择运行环境 CMSIS 中选择CORE ;Device 中选择Startup ,其中包含了启动文件。 选择后可以发现窗格变绿。 -
在打开后的界面左侧Project 栏,打开Target1 ,鼠标右键单击Source Group1 , 选择Add New Item to Group -
添加源文件,创建汇编项目。选择Asm File(.s) ,设置源文件名称,并保存
通过以上步骤,即可完成汇编语言STM32工程创建。
二、测试代码
1.源代码
编译并调试如下代码
AREA MYDATA, DATA
AREA MYCODE, CODE
ENTRY
EXPORT __main
__main
MOV R0,
MOV R1,
MOV R2,
MOV R3,
;LDR R0, =func01
BL func01
;LDR R1, =func02
BL func02
BL func03
LDR LR, =func01
LDR PC, =func03
B .
func01
MOV R5,
BX LR
func02
MOV R6,
BX LR
func03
MOV R7,
MOV R8,
BX LR
2.仿真器设置(采用软件仿真)
步骤:
在Debug 选项卡中选择Use Simulator ,表示使用软件仿真;
选择Run to main() 则表示跳过汇编代码,直接跳转到main函数开始仿真;
设置下面的Dialog DLL 项为DARMSTM.DLL 和TARMSTM.DLL ;
parameter 项为-pSTM32F103C8 ,用于设置支持STM32F103C8的软硬件仿真。
注意!不进行勾选的话无法进行仿真!
三、编译调试
编译工程并进入调试模式。
进入调试界面后,点击左上角step over 键,点击三次后,选择左侧的X(stop 键),可以得到预期结果。
寄存器R5,R6,R7,R8与程序设置一致,如下图所示。
四、生成HEX文件
在写好文件后,点击工具栏的魔法棒
选择Output 页,勾选Create HEX File ,点击ok
点击工具栏的编译按钮
打开项目所在文件夹(大概率在Object文件夹下)即可发现.hex文件
1、HEX文件解析
hex文件可以通过UltraEdit、Notepad++、记事本等工具打开。 上图所示,使用Notepad++打开后会不同含义的数据颜色不同
每行数据都会有一个冒号开始,后面的数据由:数据长度、地址、标识符、有效数据、校验数据等构成
以上图的第一行为例,进行解析:
第1个字节10,表示该行具有0x10个数据,即16个字节的数据;
第2、3个字节C000,表示该行的起始地址为0xC000;
第4个字节00,表示该行记录的是数据;
第5-20个字节,表示的是有效数据;
第21个字节73,表示前面数据的校验数据,校验方法:0x100-前面字节累加和;
其中,第4个字节具有5种类型:00-05,含义如下: 00 —— 表示后面记录的是数据 01 —— 表示文件结束 02 —— 表示扩展段地址 03 —— 表示开始段地址 04 —— 表示扩展线性地址 05 —— 表示开始线性地址
单片机的hex文件以00居多,都用来表示数据。hex文件的结束部分如下图所示。 最后一行的01表示文件结束了,最后的FF表示校验数据,由0x100-0x01=0xFF得来。
2、扩展地址
上面的地址都是两个字节,范围从0x000-0xFFFF,如果地址是0x17FFFF该怎么办呢?需要用到扩展字段
第一行中,第一个字节为0x02,表示只有两个字节的数据,而扩展段的标识符为0x04表示后面的数据0x0800为扩展线性地址,基地址的计算方法为:
(0x0800<<16)=0x08000000,在0x04标识段出现之前,下面的数据都是这个基地址。
第二行的地址是0x0000,那么实际地址应是0x08000000+0x0000=0x08000000;
第二行的地址是0x0010,那么实际地址应是0x08000000+0x0010=0x08000010.
五、总结
利用Keil MDK创建汇编语言stm32工程并不复杂,虽然断点调试过程中出现了一些问题,但最终得以解决。如果想要实现预期,还是需要掌握了解汇编语言,需要不断实践,在之后配合硬件学习,相信会有跟进一步的学习和掌握。
参考文献 [1] https://blog.csdn.net/Bruce_Qee/article/details/119089365
|