stm32 IAP 需要注意的几点

我就不说什么是iap了 以及如何iap了 ,,论坛资料很多。就不赘述了。。。
我就记录一下我在IAP过程中遇到的几个问题,希望可以帮到有遇到相同情况的人,。

问题1 flash中写入app的起始地址

我的iap源码参考正点原子的 IAP源码 原子使用的ZET6 有64K的ram和126K的FLASH 所以原子很大气的给bootloader分了64K的flash。 当我把代码移植到我的F103C8T6上以后,app的存放地址我没改动。。然后就导致在写flash的时候遇到了代码没有完全写进去的问题。。因为我从0X08010000开始写app程序,这样是有问题的。

解决方法

将看了一下我的bootloader只有7K 然后我将app地址设置为0X08005000以后该问题就解决了。

问题2 大容量flash和中小容量flash的区别

在我写flash的时候原子的程序一次写1024个半字 也就是2K byte但是我调试的时候发现,flash里面总是只写入了前1K的数据,,最后查资料才发现 stm32的大容量芯片的flash一页是2k 中小容量一页是1k 。正是这个原因导致的问题

解决方法

中小容量的mcu 将1024 改为 512 即可

问题3 app程序的起始地址和中断向量表的偏移

在app编译前需要设置app在rom中的起始地址,一定要和bootloader里面的写flash地址对应。同时在主程序里面将中断向量表也要偏移 该长度 即从0x08000000到你APP的起始地址。

划重点了: IAR的memory窗口和live watch真是个好东西。 当你在程序运行过程中,关于写内存的时候你可以打开memory窗口,输入你要写的地址。 就可以清楚的看到你写入的数据。。排错超级好用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值