STMCU小助手
发布时间:2021-8-9 14:20
|
本文介绍一个小技巧:使用MDK编译器,让STM32程序HEX文件中加入固件版本信息。) U0 X% l {6 Z( e # M- N) a: S$ P2 j' f 代码* y+ Y4 z% s: W! T 1 C) N4 y6 S0 v8 c3 S ( ^+ w. C" _( q) u+ z 代码如下:7 n) o6 p: k& U6 n' X* L
0 m7 P Z* e" K1 C @ . t' t( L8 t& d7 Z/ Z+ y
5 M+ @, [: Z, S' u# G 选项配置中:Flash地址与大小不用做任何修改! * P2 ~& B+ P' `6 _ ]/ P' w
* H' ~. O) M+ B9 o 9 N1 O9 d( y: t( p# _% _6 @ HEX文件:
. O6 G# t7 O V% y) X. k * c8 D8 b7 M0 H' R+ @ 串口打印输出:' o# W% S o0 _" U- J 1 x8 S" a9 ?9 e1 h$ a$ F
+ Z! G' @% R. o- S2 @! G: }7 y 上述方法的缺点: B$ Y! B0 o7 |+ c# f6 Q3 }$ } 8 |2 h9 h; R; ?/ Y9 E& D4 v! } 上述操作可行, 但是有一个缺点:就是生成的bin文件都是满flash大小的, 造成每次烧录都是整个flash读写。7 ~! O( s9 e5 d2 g# w 0 L" V+ [/ g' Q 其实这个可以把存放地址放到前面,比如偏移1K的地方,都不用改指定地址。8 U x) E% ^" _2 K8 M 按照上述操作,程序末尾到VERINFO_ADDR_BASE地址这一段会被填充成0x00。根据需要可以修改VERINFO_ADDR_BASE减小地址,或者说不强制指定地址,由编译器自动分配,但这样就要去找相应的版本标识字符串了。* M& Q/ |! W* w ! a% ]# M7 G( z- ?- E 优化方法% m( x; Z4 c7 W6 A, \ 5 r7 w2 L/ c, h; Y 5 I+ l/ M7 R1 g6 e 不想前面这一段被大量填充0x00,让HEX文件体积小一点的话, 可以把选项配置中Flash的Size改小一点,把VERINFO_ADDR_BASE设置成从FlashSize后面的空间开始,这样生成的HEX文件就小了,且未用空间就不会被大量填充0x00了。 ! c, p' K7 L/ x ] 方法如下:
|
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版