当前位置: 首页 > article >正文

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(无视我下边绿色的那一些,那些是后面才生成的)
在这里插入图片描述

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

Create HEX File默认没有选,给它勾上。
在这里插入图片描述

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

此时一切正常
在这里插入图片描述

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

然后就开始出现异常
在这里插入图片描述

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

这是没有加载启动文件

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

把这个勾上。
在这里插入图片描述

然后重新编译,出现新的问题。
在这里插入图片描述

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路径下的文件(我是默认路径,自己设了别的话可以去相应位置找)
在这里插入图片描述
粘贴到
在这里插入图片描述

再编译就正常了。
在这里插入图片描述

现在生成了Add.axf文件

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

4 生成bin文件

还是点击那个很像魔法棒的Option for Target…
在这里插入图片描述
勾选After Build/Rebuild下的Run #1,并设置指令
在这里插入图片描述
C:\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe --bin --output ./Objects/Add.bin ./Objects/Add.axf
也就是
Keil自带的fromelf.exe路径 --bin --output 结果bin文件的存放位置(以工程文件位置为标准的相对路径) 对应的axf文件路径

再点击编译
在这里插入图片描述
在这里插入图片描述

5 运行

如果只是单纯想要运行程序的话,编译后点这里
在这里插入图片描述
Start/Stop Debug Session
然后点这个框出来的是run,旁边那个现在还是灰色的叉号是stop(因为我是还没有运行的时候截的图)
在这里插入图片描述
如果看不到程序运行结果的话点这里
在这里插入图片描述
运行结果就可以在下边这里看到了
在这里插入图片描述


相关链接

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

http://www.lryc.cn/news/2421114.html

相关文章:

  • 参观中关村软件园二期小记
  • 怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法
  • Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法
  • Win2003安装简录
  • KindEditor编辑器 用法
  • 红雪iOS6.1.3不完美越狱教程
  • 魔域mysql下载_魔域3.2无敌版之富甲天下下载_魔域3.2无敌版下载_快吧单机游戏...
  • Linux小知识---关于socket的一些知识点
  • 网维服务器加硬盘,网维大师官网-帮助
  • 裸奔浏览器_谁动了我的浏览器主页?“技术霸凌”带来糟心事
  • WPA2破解教程(详细步骤)
  • 雷军,早已财富自由的人,依然在努力!
  • NoSQL数据库Redis--2
  • 天蓝色房间(密室逃脱三)攻略
  • Unity实现瞄准镜效果之美
  • PC装MAC OS 10.6雪豹系统教程
  • windows 执行CMD命令
  • Java爬虫实践:Jsoup+HttpUnit爬取今日头条、网易、搜狐、凤凰新闻
  • 开发WAP网站入门
  • 2021-03-01
  • .NET Framework 3.5 SP1 离线安装时下载文件问题及精简方法
  • chinaren同学录的字数倒记数
  • as3.0舞台自适应
  • 虚拟光驱DAEMONTools 3.47特别版/汇编版/珍藏版
  • flask中jinja2设置使用全局变量
  • iPad2 4.3.3完美越狱教程
  • 中间继电器
  • 2008年卫星地图_黄河入海口1984年-2016年,34年卫星地图变化
  • 【转】怎样将APP或PXL转为IPA格式
  • 天河一号超算集群编译安装OpenFOAM5.x