单片机IAP升级问题

做个记录,原来搞stm32的时候,被领导整呀,和外部合作需要把一个无线的协议栈加进去,但是人家只提供lib库有没有,提供库还好,但是好大怎么办,光一个库就要140K左右,后期虽然人家答应删减,但是要遥遥无期怎么办,·而这边的代码也不小怎么办,也有100k怎么办,再加上BootLoader函数,怎么也超了256KB了,简单的办法就是换一个512K的单片机不就得了,呵呵哒,但是垃圾领导想省钱怎么办,我也很绝望呀,算了算,100K+140K,也就差不多240多K了,算上什么参数区,什么的,给BootLoader留下也就几kB的空间,但是升级函数要USB升级要网络升级要串口升级都要,绝望了,只有想办法优化代码了,心里骂着,还要优化代码,但是代码不是我写的怎么办,优化了有问题怎么办,这个责任不想担,也不想动脑子看代码,去优化,好好的代码工作了好几年了,不想动,这时候想了想,只要BootLoader有2K就足够了,能全部实现什么usb呀,网络呀,串口升级,客官说了,这怎么可能,一个lwip,一个usb库那么大,怎么可能2K装下,这时候就有了,stm32的RAM启动有用了,具体流程如下,在spi flash固化一部分stm32代码,在BootLoader启动的时候,从固定位置搬运stm32代码到ram缓冲区,在把sp指针跳转到ram中,一般的stm32有48K的ram。其中,32K作为程序区,16K作为数据去,运行真正的BootLoader程序,在最后从ram去在跳转到flash区,这样就实现了小代码的BootLoader升级,你的BootLoader要是大于32K,就要面壁思过了,这么大的代码,就不是BootLoader了,呵呵,解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值