编译出来的固件发现hex大小还在某个范围内,但是bin很大,比如有100多M, 一般来说碰到了链接问题。

经过对比hex里面的数据,发现数据并不是连续的, 一般来说,数据只要不连续,强制转bin的时候,会把中间不连续的部分全部填充为0x00或者0xff。如果使用了不连续的rom,最好不要转化为bin,或者使用工具转成多个bin。

但是我的并不是这个问题, rom为1M且连续,经过分析发现,竟然有一部分全是为0的数据被打包到RAM区域的地址。周所周知,RAM区域的数据打包进固件是无意义的, 因为单片机掉电之后RAM就会消失。

知道了问题后,在 RAM字段的描述里面插入  (NOLOAD) 即可。

更多推荐