STM32之MDK分析,分散加载

STM32分散加载

我们知道MDK的分散加载主要是通过.sct文件实现的,链接器根据.sct文件的配置分配各个节区地址,生成分散加载代码,因此我们通过修改该文件可以定制具体节区的存储位置。

如何打开.sct文件

在Options for Targets->Linker界面下面去掉默认选项,然后edit scatter file 就可以在编辑界面中看到.sct文件了。

.sct文件结构

LR_IROM1 0x08000000 0x00010000  {    ; load region size_region ##就是所有代码需要下载到0x08000000 开始的区域中,且这个区域大小只有0x00010000  这么大
  ER_IROM1 0x08000000 0x00010000  {  ; load address = execution address	##加载域等于执行域,只能是只读的代码段和只读数据段
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00004000  {  ; RW data	##执行域是以0x20000000 开始的长度为0x00004000  一段区域
   .ANY (+RW +ZI)						;其中包括的是哪些文件
  }
  RW_IRAM2 0x20004000 0x00001000  {			##执行域是以0x20004000 开始的长度为0x00001000  一段区域
    delay.o (+ZI +RW)
   .ANY (+RW +ZI)
  }
}

修改分散加载文件

其实上面贴的这段代码是修改之后的.sct文件,如果需要修改分散加载文件,并使其生效需要

  1. 修改Options for Targets->Target 的onchip 的rom或者ram,容量地址必须和选择的芯片一致
  2. 修改某个文件的存储属性,在工程窗口中右击文件名字 Options for file ,然后出现窗口可以修改文件的存储属性
  3. 修改完,重新编译,点开.sct文件就可以看到.sct已经被修改了,然后可以看map文件可以看到相关变量函数地址信息已经改变。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值