Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)

其实我是比较触头硬件编程这个事情的,因为我没学汇编计组还挂了,重修也没学明白,因为课时间重了办的免听,最后还是靠我的学弟们,贡献了他们老师给画的重点。结果毕业后找工作,就c++熟一些,急乎乎的找了c++的工作,又因为c++本身的性质,被提溜去硬啃ARM。

没有头绪的卡了一周,老板说你拿Keil写个程序,然后再反汇编看看。

那行,先试试怎么写第一个程序。

0 Keil安装

Keil的安装,这一步我就跳过了,因为这个软件是交接工作的时候别人帮我装的。
https://blog.csdn.net/ybhuangfugui/article/details/51501781

1 新建工程

打开软件 Project→New uVersion Project→设置存储路径→设置工程名称

设置单片机型号,我用的是ARMCM3。
(这两步懒得重新操作一遍截图了,反正所有的教程上都是)

点这个,新建一个空白文件,保存的时候文件名改成test.c,这里就是写c代码的地方。
在这里插入图片描述

在Source Group1 文件夹那里右键单击导入add.c(无视我下边绿色的那一些,那些是后面才生成的)
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第1张图片

我就随便写了个a+b程序,然后点击Option for Target…
在这里插入图片描述

Create HEX File默认没有选,给它勾上。
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第2张图片

Translate,我看别人管它叫转换。
在这里插入图片描述

此时一切正常
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第3张图片

Build编译
在这里插入图片描述

然后就开始出现异常
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第4张图片

2 异常. \Objects\Add.sct (7): error:I6236E: No section matches selector - no section to be FIRST/LAST.

这是没有加载启动文件

Manage Run-Time Environment
在这里插入图片描述

把这个勾上。
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第5张图片

然后重新编译,出现新的问题。
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第6张图片

3 异常 C:\Keil_v5\AEL ( PAcXN AERN(XNSIS\5.0.\pevice AM/ARNCXA3 \Inc1ude 2EANCN83, (110); error: 15: canmnot open scource input file “core _ams.h” : No such #include “core cm3.h”

把C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.1\CMSIS\Include路径下的文件(我是默认路径,自己设了别的话可以去相应位置找)
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第7张图片
粘贴到
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第8张图片

再编译就正常了。
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第9张图片

现在生成了Add.axf文件

bin文件是真正的可执行文件;

axf文件是ARM的调试文件,除了包含bin的内容之外,还附加了其他的调试信息;

这些调试信息加在可执行的二进制数据的前面,所以把axf文件写到ARM的指令执行地址(一般是0x0)将不能运行,
因为在此地址前几十个字节的数据不是可执行的二进制数据,而是头部的调试信息;
而bin文件正是去掉了调试信息的可以执行的“精华”部分。

4 生成bin文件

还是点击那个很像魔法棒的Option for Target…
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第10张图片
勾选After Build/Rebuild下的Run #1,并设置指令
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第11张图片
C:\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bin --output ./Objects/Add.bin ./Objects/Add.axf
也就是
Keil自带的fromelf.exe路径 --bin --output 结果bin文件的存放位置(以工程文件位置为标准的相对路径) 对应的axf文件路径

再点击编译
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第12张图片
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第13张图片

5 运行

如果只是单纯想要运行程序的话,编译后点这里
在这里插入图片描述
Start/Stop Debug Session
然后点这个框出来的是run,旁边那个现在还是灰色的叉号是stop(因为我是还没有运行的时候截的图)
在这里插入图片描述
如果看不到程序运行结果的话点这里
Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)_第14张图片
运行结果就可以在下边这里看到了
在这里插入图片描述


相关链接

ARM映像文件
https://blog.csdn.net/chun_1959/article/details/43732373

使用IDA pro逆向ARM M系核心的Bin固件
https://zhuanlan.zhihu.com/p/58938992

STM32固件逆向
https://zhuanlan.zhihu.com/p/526613532

学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
https://blog.csdn.net/laogaoav/article/details/9259503

STM32——IDA反编译 Hex\Bin文件成C代码(转)
https://www.cnblogs.com/panda-w/p/11548121.html

【MCU】可怕,别人把我MCU固件给反汇编了!(逆向)
https://blog.csdn.net/qq_33471732/article/details/109507340

你可能感兴趣的:(ARM,Keil,ARMCM3,c语言,afx)