打印

还是不能全面理解 map文件,求解答。

[复制链接]
2073|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nongfuxu|  楼主 | 2013-5-28 08:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, AC, TE, ck, ni
IAR 的map文件内容如下:
-----------------------------------------------------------------------------------------------------------------
"A1":  place at mem:0x8000000 { ro section .intvec };
"P1":  place in [from mem:0x8000000 to mem:0x807ffff] { ro };
"P2":  place in [from mem:0x20000000 to mem:0x2000ffff] {
          rw, block CSTACK, block HEAP };

Section            Kind        Address     Size  Object
"A1":                                       0x130
  .intvec            ro code  0x08000000    0x130  startup_stm32f10x_hd.o [1]
                            - 0x08000130    0x130

"P1":                                     0x1a1d8
  .text              ro code  0x08000130   0x61e0  key_Process_SubState.o [1]
,,,
  .rodata            const    0x080187a4    0x120  main.o [1]

"P2", part 1 of 3:                         0xc000
  CSTACK                      0x20000000   0xc000  <Block>
    CSTACK           uninit   0x20000000   0xc000  <Block tail>
                            - 0x2000c000   0xc000

"P2", part 2 of 3:                         0x3874
  .bss               zero     0x2000c000   0x1ac8  key_Process_MainState.o [1]
,,,
  .bss               zero     0x2000f870      0x1  stm103v8_config.o [1]
                            - 0x2000f871   0x3871

"P2", part 3 of 3:                          0x2d8
  P2 s0                       0x2000f874    0x2d8  <Init block>
    .data            inited   0x2000f874    0x150  GUI_System_Set.o [1]
,,,
    .data            inited   0x2000fb4b      0x1  key_Process_Password.o [1]
                            - 0x2000fb4c    0x2d8
-----------------------------------------------------------------------------------------------------------------
这里, .bss   是指什么情况下的变量?
/**(来自网络)
.bss段是全局变量数据段。它用来存放未初始化的(uninitailized)全局变量(global)和未初始化的静态变量(static)。它也是可读可写的。bss是英文Block Started by Symbol的缩写。之所以把bss跟data分开来,是因为系统会为这些bss段的变量的初值清零。
**/
这样解释行吗? 求解!

沙发
nongfuxu|  楼主 | 2013-5-28 08:52 | 只看该作者
是不是说 “ 可读可写的初始化了的全局变量和静态变量段,被称作RW Data段(ReadWrite),即上述的.bss段” ?

使用特权

评论回复
板凳
nongfuxu|  楼主 | 2013-5-28 08:54 | 只看该作者
本帖最后由 nongfuxu 于 2013-5-28 08:55 编辑

”可读可写的未初始化的全局变量和静态变量段,被称作ZI Data段(Zero Init),即上述的.data段。因为这个段里的变量要被初始化为零,所以叫ZI段。“
那么理解成" .bss段,加上.data,就成了RW段。"
不知道是否理解正确。

使用特权

评论回复
地板
nongfuxu|  楼主 | 2013-5-28 09:13 | 只看该作者
那么,针对以下函数
void key_Process_MainState(u16 key,Day_Ctrl* tDay_Ctrl_run,
                           DateTime* tDateTime_run,
                           Driver_Lamp_Purpose* tDriver_Lamp_Purpose_run,
                           Interim_Param* tInterim_Param_run,
                           DownCNT_Ctrl* tDownCNT,
                           Conflict_Fault* tconflictFault_run)
的map内容
----------------------------------------------------------------------------------------------------------------------
  Section               Kind        Address         Size         Object
"P2", part 2 of 3:                        
  .bss                   zero         0x2000c000   0x1ac8    key_Process_MainState.o [1]
----------------------------------------------------------------------------------------------------------------------
0x1ac8是指什么?

使用特权

评论回复
5
IJK| | 2013-5-28 10:09 | 只看该作者
赞同LZ的理解。
0x1ac8是指占用空间的大小。

使用特权

评论回复
6
dld2| | 2013-5-28 10:31 | 只看该作者
有的叫:text、data、bss
有的叫:RO、RW、ZI
都是一个意思。

使用特权

评论回复
7
grasswolfs| | 2013-5-28 10:41 | 只看该作者
同意IJK和LZ的理解,其实有时候研究一下这些物理层编译器的东西还是很有意思的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:是不是经济不KUA,房价下不来? 高房价只能带来“实体经济挤出效应”。

417

主题

4293

帖子

2

粉丝