本帖最后由 john_lee 于 2012-1-30 21:44 编辑
代码段(.text)和常量(只读)数据段(.rodata)肯定放在flash(ROM)中,可读写数据段肯定放在RAM中,但有一些特殊的地方,可读写数据段一般分为两部分:
- 已初始化数据段(.data),这个段中的数据在main()运行之前,就要准备好初始值,但RAM上电时并没有这些数据,一般的方法是把这些数据(副本)存放在代码段和常量数据段的后面,由启动程序复制到RAM中,当main()运行时,这些数据就已经是ready了。
- 未初始化数据段(.bss),这个段中的数据在main()运行之前,也要准备好初始值,按C标准规定,这些数据被初始化为 0 值,这个操作也是由启动程序来进行的。
所以,存储器最终的映像应该是: flash ROM: | .text | 代码段。 | .rodata | 常量数据段。 | .data | 已初始化数据段副本,由启动代码复制到RAM.data。 | RAM: | .data | 已初始化数据段。 | .bss | 未初始化数据段,由启动代码清 0。 |
|