你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

keil分散加载文件

[复制链接]
Stm32McuLover 发布时间:2017-12-25 14:59
通过使用分散加载机制,可以为链接器指定映像的内存映射。分散加载为您提供了对映像组建分组和位置的全面控制。分散加载可以用于简单映像,但它通常仅用于具有复杂内存映射的的映像,即多个区在加载和执行时分散在内存映射中。& Q1 c9 D8 s7 m1 t6 l* n
7 y5 n9 |' @; {- D# [
加载域:就是编译之后得到的二进制文件烧写到rom中的这一段区域。包括只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。
* V1 g$ ]9 y$ O/ u
执行域:程序执行时的区域。比如:没有变动还是在ROM中RO段;被移到了RAM中的RW段和ZI段。2 R; t& f( F& {. [$ z

9 e: ]' V4 i0 Z; T4 U

3 K- Y7 _; B. h
先看一下分散加载文件的内容:
LR_IROM1 0x08000000 0x00080000  {    ; 加载域:名字 + 地址 + 大小
  ER_IROM1 0x08000000 0x00080000  {  ; 执行域:名字 + 地址 + 大小1 P8 z2 Q+ G( C/ h+ w/ _
   *.o (RESET, +First) ; RESET段(因此程序从RESET开始执行), i2 p; p$ Y- c0 k4 e- \8 m
   *(InRoot$$Sections) ; __main的代码段(用于将加载域转移到执行域), _2 @! v7 @6 n( {
   .ANY (+RO) ; 所有代码段
* [) J2 Z0 Y9 Q0 X+ ~  }8 S! \- ?* l# K! U  ?
  RW_RAM1 0x20000000 0x00010000  {  ; 执行域:名字 + 地址 + 大小. o7 ~. C# e3 b0 k% M
   .ANY (+RW +ZI) ; 所有RW段(.data)和ZI段(.bss)
* _0 x/ U+ B2 C& y4 G  }0 ~3 c# G; J7 w/ R. ~9 p
}
) m0 J7 ~5 _, a) {" r8 W7 {
这一段的作用就是告诉链接器:按照以上的信息进行链接,__main也将根据这些信息进行转移。
& Y0 ^" |2 c- J2 I8 L
转自http://blog.csdn.net/lushoumin/article/details/78885558
3 C$ I# `$ q6 B1 ~4 @& j
' }  t. f3 p+ K5 W+ a( Q
赞 收藏 评论4 发布时间:2017-12-25 14:59

举报

4个回答
左岸右岸 回答时间:2017-12-25 17:09:31
还得在KEILMDK工具里进行设置,不然用户编写的.sct文件是无效的,在编译后会被覆盖掉
maxtch 回答时间:2017-12-25 17:20:24
这个还不如 GNU 套件来的简单……
Stm32McuLover 回答时间:2017-12-25 17:50:49
maxtch 发表于 2017-12-25 17:202 M+ z( B1 o9 d' N6 L( w1 u; W6 J8 O
这个还不如 GNU 套件来的简单……
+ q; e* X( k6 o
有链接吗
maxtch 回答时间:2017-12-25 18:14:19
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版