1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我希望设计一个boot1、boot2、app。
boot2运行在ram,boot2可以升级boot2自身存储于flash内的镜像,同时可以升级app镜像。 正在验证部分细节,请教下各位。 我先做了基于裸机的实验(正点原子探索者F407串口IAP实验): 一个boot1的裸机工程,一个app的裸机工程。 Boot1执行将串口收到的app的镜像文件写入到ram内的特定起始地址处,然后跳转到ram去执行app程序。 我的疑问在上图红框内,boot工程使用的ram是位于0x20000000开始的一段区域吗,大小肯定是超过0x1000大小了, 但是0x20001000地址开始又存放了app镜像。 这样,boot和app对这块ram的使用不是冲突了吗, 怎么还能正常跑起来呢? 上图细节放大: PS,修改魔术棒应该是使用的MDK的默认链接脚本, 找一下后缀为sct的链接脚本,打开app工程的链接脚本看一下: 这里的加载地址就等于执行地址, 也就是说,app需要boot运行起来,先把app镜像搬运到app工程内的链接脚本所指定的加载地址, 之后app就具备了正确的运行环境了。 对于如何把基于RTT工程的APP重定位到RAM运行,初步思路是,借鉴这个写法,加载地址和执行地址是ram上的同一个地址,但是前提是有一段前导程序(boot程序)把RTT的APP镜像先搬移到APP工程内指定的加载地址上。 |
|
相关推荐
3个回答
|
|
肯定会冲突。 只是没有运行到冲突的代码吧。
|
|
|
|
|
|
|
|
如果你不需要跳回boot或者跳回去也不需要保持原先的变量,那冲突了也不影响啊。我只在需要用到flashdriver的工程中会区分开ram的使用。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
529 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2000 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1174 浏览 0 评论
1674 浏览 0 评论
1439 浏览 0 评论
74728 浏览 21 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 15:27 , Processed in 0.887137 second(s), Total 73, Slave 57 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号