• 滨海湾新区要变“湾区明珠” 2019-05-21
  • 孙杨、宁泽涛扛起中国游泳大旗 2019-05-11
  • 那你就写个帖子驳呀!告诉你,我是普通老百姓就是错了也没有啥,你可是论坛“真理化身”呀! 2019-05-11
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-05-10
  • 巴厘岛被爆众多海域垃圾成灾 潜水常被塑料瓶塑料袋包围 2019-05-04
  • 两个不能否定,怎会是停留在30年前? 2019-04-27
  • 国际在线:向世界报道中国,向中国报道世界 2019-04-27
  • 【理上网来喜迎十九大】外媒记者:稳步推进生态文明建设的中国更加美丽 2019-04-26
  • 董卿海霞李思思康辉撒贝宁 央视名嘴童年照谁更萌 2019-04-26
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 打印

    广东体彩11选五助手: [STM32] 分散加载文件 之一 (初探)

    [复制链接]
    1094|3
    跳转到指定楼层
    楼主
    本帖最后由 千岁寒 于 2018-11-5 13:00 编辑

    1、什么是分散加载   
          简单来说就是让编译器高速MCU内核哪里存的是代码、哪里存的是数据,去哪个特定的地址找到下一步需要运行的函数,就是高速编译器把每一个编译好的函数、数据放到具体的哪一个物理地址。

    2、分散加载常见应用场景
            * Bootloader & 程序升级
         Bootloader的原理就简单来说在MCU的Flash里面同时摆放2个(或多个)不同工程的程序,一个Bootloader程序和一个用户程序,那么这就需要调整分散加载文件,以达成在一个Flash里面同时摆放两个不同程序的目的。
           程序升级都是为了增加一个小功能或修复一个小BUG,不需要全部升级而是只升级一点点。当然要实现这个功能同样需要分散加载的配合,把可能会后续升级的部分函数或数据事先分配好空间,留好空间上的余量,这些都需要分散加载来完成。

            * 加速程序运行速度(如:对速度有较高要求的算法等、RTOS kernel)
            在SRAM中运行的程序要比在XIP Flash中执行要快,性能提升明显。

            * 访问扩展存储&对存储区的划分
           如果要把外扩的存储用于运行代码/扩展RW数据段等用途,简单来说就是把片内地址映射到片外,需要按照寻址空间的方式来访问扩展存储的话,比如扩展Nor-Flash、扩展SDRAM、扩展SRAM等,那就需要分散加载配合。(只作存储数据的话,分散加载不是必要的?。。。?br />
    3、分散加载的基本结构定义以及分散加载的目的

        Code段:表示程序代码部分
        RO-data段:程序定义的所有常量以及const类型数据
        RW-data段:已经初始化的所有静态变量
        ZI-data段:未初始化的静态变量
        RO段:指Code以及RO-data的统称
                具体分布可查看对应的*.map文件。
        RW+ZI数据段最终运行时会占用片内SRAM或外扩的RAM存储器,而Code+RO-data+RW-data数据最终会产生对片内Flash的占用或外扩程序存储区的占用。
    所以分散加载的根本目的就是:
            * 指引把RO-data数据段、RW数据段从片内程序存储区里面(一般是片内Flash),搬到片内程序运行区(一般是片内SRAM);
            * 在片内程序运行区(一般是片内SRAM)内分配ZI数据段运行需要的空间并把这段数据初始化为0;
            * 初始化堆栈;
            * 对于有些指定加载到程序运行区(一般是片内SRAM)的RO数据段,把他们加载到程序运行区(一般是片内SRAM)里面。

    { 类比:这个和使用的电脑运行操作系统或者软件原理类似,电脑就是把硬盘里面的操作系统加载到内存里面,然后CPU从内存里面取数据以及程序指令来运行的。}

    TIP:
            RW以及ZI数据段的初始化是在分散加载过程中完成的,也就是在__main中完成的,比如你定义一个全局变量,并给它赋值,只有在__main结束后你才能看到这个全局变量被赋值成功的,也就是说在__main之前,使用全局变量是行不通的。

    整理参考: https://blog.csdn.net/weixin_39118482/article/details/79849133
    沙发
    | 2018-11-5 17:15 | 只看该作者
    不错,接着讲
    板凳
    | 2018-11-9 22:51 | 只看该作者
    周立功单片机:分散加载文件浅释.pdf (399.9 KB, 下载次数: 23)
    地板
    | 2018-11-16 20:00 | 只看该作者

    那种段操作:把变量定义在flash中的叫啥?
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    关闭

    热门推荐上一条 /5 下一条

    快速回复 广东快乐十分走势图 返回列表
  • 滨海湾新区要变“湾区明珠” 2019-05-21
  • 孙杨、宁泽涛扛起中国游泳大旗 2019-05-11
  • 那你就写个帖子驳呀!告诉你,我是普通老百姓就是错了也没有啥,你可是论坛“真理化身”呀! 2019-05-11
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-05-10
  • 巴厘岛被爆众多海域垃圾成灾 潜水常被塑料瓶塑料袋包围 2019-05-04
  • 两个不能否定,怎会是停留在30年前? 2019-04-27
  • 国际在线:向世界报道中国,向中国报道世界 2019-04-27
  • 【理上网来喜迎十九大】外媒记者:稳步推进生态文明建设的中国更加美丽 2019-04-26
  • 董卿海霞李思思康辉撒贝宁 央视名嘴童年照谁更萌 2019-04-26
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 广西快乐十分走势图 500彩票网合法吗 老时时彩后不定位胆 广西快乐十分开奖时间 南国七星彩 足彩单场 浙江福利彩票网 体彩排列五走势图带连线 重庆时时彩开奖记录 真钱游戏下载 381818白小姐中特玄机 安徽时时彩结果 内蒙古时时彩走势 高频老时时彩 快速时时彩软件计划 双色球71复式玩法