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

keil分散加载文件

[复制链接]
Stm32McuLover 发布时间:2017-12-25 14:59
通过使用分散加载机制,可以为链接器指定映像的内存映射。分散加载为您提供了对映像组建分组和位置的全面控制。分散加载可以用于简单映像,但它通常仅用于具有复杂内存映射的的映像,即多个区在加载和执行时分散在内存映射中。4 u  h( y1 j1 S: i

9 K) N6 w4 {; X3 n! {+ H9 Y
加载域:就是编译之后得到的二进制文件烧写到rom中的这一段区域。包括只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。) f# G) l4 T) w* y9 j6 a8 x# J
执行域:程序执行时的区域。比如:没有变动还是在ROM中RO段;被移到了RAM中的RW段和ZI段。; T" ]  G- _5 D1 ^  j* \/ |* U

1 I; Q, a5 M, K
9 L0 Y9 r- @+ ~' }2 W; U
先看一下分散加载文件的内容:
LR_IROM1 0x08000000 0x00080000  {    ; 加载域:名字 + 地址 + 大小
  ER_IROM1 0x08000000 0x00080000  {  ; 执行域:名字 + 地址 + 大小7 [0 S7 A# D  O* ~
   *.o (RESET, +First) ; RESET段(因此程序从RESET开始执行)
5 D- h* F. G- n$ w# f   *(InRoot$$Sections) ; __main的代码段(用于将加载域转移到执行域)* w+ r- ^7 e& v* l$ e8 S& i; x6 _
   .ANY (+RO) ; 所有代码段. L; o, i3 }, S" u# s# a7 D. T
  }% e5 E; j2 z- n
  RW_RAM1 0x20000000 0x00010000  {  ; 执行域:名字 + 地址 + 大小
7 b% [5 m0 f" s1 C   .ANY (+RW +ZI) ; 所有RW段(.data)和ZI段(.bss)
" E6 B( L" B* z; }; n  }' ~4 L9 J- ^$ ^$ B
}

( u+ [. }5 V% H5 |& `2 V* ?. Z# y4 W
这一段的作用就是告诉链接器:按照以上的信息进行链接,__main也将根据这些信息进行转移。
# c" G# I) j4 H# J
转自http://blog.csdn.net/lushoumin/article/details/78885558
: b1 V9 S% }+ \: O0 d' c5 F
) n  [; J: V; _/ R& Y3 e
收藏 评论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:20
3 e# z- t; P, j7 g* b这个还不如 GNU 套件来的简单……

$ [3 N3 h* b! U' ]* b& c有链接吗
maxtch 回答时间:2017-12-25 18:14:19
哈佛祖安智 发表于 2017-12-25 17:50
; R1 E' O* |: x( K有链接吗
- w0 D0 \. ?+ R; D) p' P: h$ E. A5 b" a
http://developer.arm.com/open-so ... in/gnu-rm/downloads

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版