完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
要对代码做ISP,而且不能改变boot跳线,实现全地址flash更新.用的STM32103VBT6,20K RAM,程序占用17K左右.
我的设想是进入ISP任务时,把ISP部分代码移到RAM运行(大概4K),要覆盖掉以前程序的内存,然后这个ISP代码通过通讯口接收数据,重写整个Flash,然后重新启动 不知道这个方案是否可行?可行的话,如何让程序loader到RAM中运行? |
|
相关推荐
5个回答
|
|
stm32我还未做过,做过LPC2220的,而且只是将LOAD下来写到另外一个地方,而不是覆盖本身,不过好像这种原理都一样。需要覆盖本身,那你就要让ISP就在RAM里运行了,而且不知道你是否用到中断,要是用到中断的话还要将中断映射到RAM,用分散加载吧,最好将你的ISP写成一个文件,然后加载到RAM里,这样编译器就会帮你将那个给烤到RAM里,你的ISP过程可是要一直在RAM里转悠的哟,可千万别跑到FLASH里就好了。
有点思路就好做了。 |
|
|
|
这样不安全,下载过程中一断电就歇菜了
|
|
|
|
这样不安全,下载过程中一断电就歇菜了
|
|
|
|
不断电有其他保证的,现在的问题就是如何让程序在RAM里面运行....
|
|
|
|
具体做法值得商榷
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2049 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1893 浏览 3 评论
4485 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2040 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2549 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 11:25 , Processed in 0.841693 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号