OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3661|回复: 1

STM32/ARM分散加载知识学习资料

[复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-7-4 22:05:00 | 显示全部楼层 |阅读模式
学习RT1052、STM32F750、STM32H750的时候,得用到分散加载相关知识点。
这里介绍两份文档:
1, ARM分散加载原理.doc(匿名网友编写)
2,分散加载文件浅释.pdf(周立功编写)

看完这两份文档,对分散加载会有一个比较深入的了解,在看.sct文件的时候,也就可以看懂了。

[M3-SN]-ARM分散加载原理.doc (285 KB, 下载次数: 126)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
664
金钱
664
注册时间
2019-1-30
在线时间
111 小时
发表于 2020-3-31 14:13:55 | 显示全部楼层
本帖最后由 zhangxiaolin 于 2020-3-31 14:21 编辑

原子哥我有个疑问,先贴段代码。。。。
[code]LR_IROM1 0x08043800 0x0001E000 {    ; load region size_region
  ER_IROM1 0x08043800 0x0001E000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
这里的0x8043800的代表域基址的数据,可以动态 改变吗?
为啥我想到要做动态改变---->因为在做OTA升级的时候看到了您顶的一个精华贴,链接如下
http://www.openedv.com/forum.php?mod=viewthread&tid=229573
在这篇贴子中,博主说可以实现程序工作在APP1和APP2区切换运行,做这个IAP升级,一般都只会保留一个工作区,一个下载区,但是楼主这个切换的思路,我感觉很好,就尝试写代码。但是现在出现了问题,就是没有办法自动的实现工作区切换,除非每次编译成新的固件程序bin文件之前得手动修改下上边的域基址,只有这样才能实现将工作区由APP1切换到APP2,否则更新完代码后,即使在bootloader中新的固件下载到了APP2区,并且通过debug也看到跳转到了APP2的相关地址,但是程序并没有得到更新,现象是程序还是工作在APP1区。通过调试发现,如果生成APP2固件前没有修改它在flash中的下载地址,程序仍然默认链接到了APP1区。除非在编译生AP2 的bin文件之前,先要通过魔术棒--》Target,修改程序的下载地址,将他也修改为APP2的地址,才可以真正的实现将工作区切换到APP2区,否则不行。我现在也不清楚那边精华帖的作者是怎样在更新app时,实现工作区的自动切换的。
所以,我在想是否可以通过动态修改.sct文件的这个地址,实现动态的跳转,或者有其他的方法可以实现工作区的自动切换,而不是生成新的固件程序时,先要想想当前程序工作在哪个区,然后手动更改新固件的下载地址,这肯定是不可以的。我也不清楚我有没有讲清楚这个问题。希望可以得到原子大哥的指点和回复,谢谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 06:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表