STM32 IAP升级

设置


打开魔术棒,勾选After Build/Rebuild 下面的run #1或者run #2,在后面输入命令
我是通过cube生成的代码,路径就是默认的

方法1,显式指明


勾选run #1

D:\mdk5\ARM\ARMCC\bin\fromelf.exe --bin -o .\project\project.bin .\project\project.axf

方法2,makefile自动化变量


勾选run #2

fromelf --bin -o "$L@L.bin" "#L" 生成bin
fromelf  --text  -a -c  --output "$L@L.dis" "$L@L.axf"  反汇编

很显然方式2更简单方便

总结


两种方式都可以生成bin文件,建议使用方式2

IAP APP


IAP写bootloader代码实现升级,记得关中断,APP在最开头添加代码如下。keil中也要改为这个地址

 SCB->VTOR = 0x8000000 | (0x7800 & (uint32_t)0x1FFFFF80);//7800这个地址必须为0x200的整数倍
    __enable_irq();



MDK 须知的几个特殊符号
有的时候,我们需要通过脚本的方式在 bin 文件前加一些头(比如版本号、校验),因此今天鱼鹰分享一点小知识。

hex 转 bin 的方法太多了,就不多介绍:

《功能强大的 HEX 开源转换工具,你值得拥有》

《Keil 生成 Bin 文件最正确的姿势》

《bin 和 axf 文件的生成》

可以看到用了一个奇怪的符号 !L。

另外《BUG 终结者,现场抓获!|颠覆认知》也有一个奇怪的 %L。

这个是什么呢?我们可以通过脚本的方式打印出来看看(批处理也可以调用 shell、Python 脚本,这样可操作性很大)。

@echo off:: 参数 0 为批处理自身的文件名set parameter_0=%0:: @L 目标 axf 文件(不带后缀名)set parameter_1=%1:: %L 目标 axf 文件(带后缀名)set parameter_2=%2:: !L 目标 axf 文件(带相对路径和后缀名)set parameter_3=%3:: $L Objects 文件夹(绝对路径)set parameter_4=%4:: #K MDK 安装绝对路径set parameter_5=%5:: $K MDK 安装绝对路径set parameter_6=%6:: 版本号set version=%7:: 注意:参数使用时 %x 数字后不能有任何空格。= 两边也不需要空格
echo --parameter0 %parameter_0%--echo --parameter1 %parameter_1%--echo --parameter2 %parameter_2%--echo --parameter3 %parameter_3%--echo --parameter4 %parameter_4%--echo --parameter5 %parameter_5%--echo --parameter6 %parameter_6%--echo --parameter7 %version%--
::  脚本或命令调用::  获取当前路径"C:Program FilesGitbinsh.exe" -c "pwd""C:Program FilesGitbinsh.exe" -c "./helloword.sh"

让工程编译完成后自动调用该脚本打印看看结果:
在这里插入图片描述

test.bat  @L %L !L  $L  #K $K 0.1"C:Program FilesGitbinsh.exe" -c "./helloword.sh"

编译工程后,自动编译脚本 test.bat(该文件和工程文件同一目录下):
在这里插入图片描述
更多符号介绍可参考链接:https://developer.arm.com/documentation/101407/0538/Utilities/Key-Sequence-for-Tool-Parameters

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值