完善资料让更多小伙伴认识你,还能领取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的使用。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
541 浏览 0 评论
1920 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2188 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统威廉希尔官方网站 与产业发展论坛”圆满结束
2681 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
29139 浏览 11 评论
72212 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:22 , Processed in 0.406210 second(s), Total 42, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号