其实我是比较触头硬件编程这个事情的,因为我没学汇编计组还挂了,重修也没学明白,因为课时间重了办的免听,最后还是靠我的学弟们,贡献了他们老师给画的重点。结果毕业后找工作,就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文件路径

再点击编译


相关链接

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

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

  1. 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列

    第48章     MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  2. 第48章 MDK的编译过程及文件类型全解

    Frm: http://www.cnblogs.com/firege/p/5806134.html 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教 ...

  3. MDK的编译过程及文件类型全解——(二)

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 本文转载自:第48章 MDK的编译过程及文件类型全解-零死角玩转STM32 ...

  4. MDK中hex转BIN文件生成

    MDK开发的技巧: 1.使用fromelf.exe程序,将.hex或者.axf转化为.bin文件. 2.利用.bat批处理文件,将.bin和.hex拷贝到需要的文件夹下. 例如:E685工装中 Run ...

  5. ARM(IMX6U)裸机汇编LED驱动实验——驱动编写、编译链接起始地址、烧写bin文件到SD卡中并运行

    参考:Linux之ARM(IMX6U)裸机汇编LED驱动实验–驱动编写 作者:一只青木呀 发布时间: 2020-08-07 09:13:48 网址:https://blog.csdn.net/weix ...

  6. keil5环境下生成bin文件

    1. 首先对于keil5其编译生成的HEX文件,一般通过勾选如下: 在进行ISP烧写时,就可以通过传送HEX文件进行烧写. 2. 对于烧写而言不仅仅可以通过HEX文件进行烧写,还可以通过BIN文件进行 ...

  7. KEIL5 MDK编译后出现.\Output\led.axf: Error: L6218E: Undefined symbol SystemInitreferred from startup_解决方案

    KEIL5 MDK 编译后出现错误提示信息 .\Output\led.axf: Error: L6218E: Undefined symbol SystemInit (referred from st ...

  8. Keil5使用AC6编译后,生成bin文件变为生成文件夹的解决办法

    Keil5使用AC6编译后,生成bin文件变为生成文件夹的解决办法 KEIL AC5到AC6需要注意的地方 从AC5移植到AC6 解决流程 关键步骤 最近同事咨询改用keil的最新版本编译器编译原来的 ...

  9. MDK 的编译过程及文件类型全解

    出处:MDK 的编译过程及文件类型全解 MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是 ...

最新文章

  1. linux记录用户命令的日志是,用日志记录Linux用户执行的每一条命令
  2. 数字信号处理基础----FM的调制与解调
  3. java h5在线音频_用h5 audio播放mp3 播放一分钟就报错了
  4. Docker ASP.NET Core 2.0 微服务跨平台实践
  5. 一步步手动实现热修复(一)-dex文件的生成与加载
  6. movielens推荐系统_案例|推荐系统的评估指标
  7. Apache Hudi 在 B 站构建实时数据湖的实践
  8. type traits
  9. 设计字体打包_再也不用熬夜设计字体了!525款世界级绝美PS字体包免费送
  10. 元月份退休能享受涨养老金的待遇吗?
  11. 新款iPhone现已曝光,跟风华为“浴霸三摄”,没有5G版本
  12. 用Aliyun E-MapReduce集群的sqoop工具和数据库同步数据如何配置网络
  13. CSS中expression怎么用? CSS expression详解
  14. JS之经典for循环闭包问题解决方法
  15. EMC混合云解决方案Enterprise Hybrid Cloud升级
  16. 686. Repeated String Match
  17. Android开发——减小APK大小
  18. 19讲项目实战站内搜索页
  19. 机器学习梯度消失,梯度爆炸原因
  20. 网络投票中的作弊与反作弊

热门文章

  1. 昆石VOS3000_2.1.2.4完整安装包及安装脚本
  2. Vista HTTPS 证书错误
  3. JAVA多线程读写文件如何做到线程安全?(文件锁,FileChannel)
  4. Uniswap V2-Core 部分智能合约代码解析
  5. [洪流学堂]Hololens开发:Unity3d与Visual Studio最佳实践
  6. PDF怎么编辑?如何设置页面?
  7. 聊聊ThoughtWorks面试(郑大版 社招)+ PS:应届生简单流程介绍
  8. 买手机怎么选?答:看图买
  9. UPRtek光谱仪维修LED光谱计维修MK350N
  10. Kali Linux中无法使用pip的解决方法