ARM Cortex-M底层技术(六)分散加载的简单介绍

分散加载原理的简单介绍

    分散加载我自己在最初学习这部分内容的时候在网上找吐血了都没找到很靠谱的深入的文章,基本看之前不懂,看完了就更不懂了,后来只能硬着头皮自己慢慢摸索,也花了很多功夫,这里跟大家系统的分享一下,小编我会分成几篇文章来讨论这部分内容,争取做到让各位看官老爷看过我的文章后能够了解其原理并应用到自己的项目中去。前面N篇文章总是提及的分散加载我们将在接下来的几篇文档里面把他讲清楚!

1、什么是分散加载?

    简单来说就是让编译器高速MCU内核哪里存的是代码、哪里存的是数据,去哪个特定的地址找到下一步需要运行的函数的东东,就是高速编译器把每一个编译好的函数、数据放到具体的哪一个物理地址的东东。当然你可以对链接器的工作漠不关心,但经常你的工程比较复杂时,你就需要指导你下属的具体工作了。

2、分散加载能做什么?

    还记得我们之前的文章中讲过的,一般来说在Keil MDK工程中的默认程序各个部分的摆放如下图所示(示例,其他Cortex-M系列MCU的程序摆放与之类似):

                            

    大家有没有想过为什么是这样的摆放?或者说是谁决定了程序是这样的摆放?或者我们能否定义自己的摆放?

    举几个常用的必须通过修改分散加载脚本的常见用法,如下:

    a:Bootloader & 程序升级

        Bootloader的原理就简单来说在MCU的Flash里面同时摆放2个不同工程的程序,一个Bootloader程序和一个用户程序,那么这就需要调整分散加载文件,以达成在一个Flash里面同时摆放两个不同程序的目的。

        

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值