ADS中Image$$RO$$Limit的计算

程序的源码如下:

输出的Image Symbol Table内容如下:

    Global Symbols

    Symbol Name                              Value     Ov Type        Size  Object(Section)

    BuildAttributes$$ARM_ISAv4$M$PE$A:L22$X:L11$S22$~IW$~STKCKD$~SHL$OSPACE 0x00000000   Number         0  anon$$obj.o ABSOLUTE
    Image$$RO$$Base                          0x00000000   Number         0  anon$$obj.o ABSOLUTE
    Image$$RO$$Limit                         0x00000024   Number         0  anon$$obj.o ABSOLUTE
    Image$$RW$$Base                          0x00000024   Number         0  anon$$obj.o ABSOLUTE
    Image$$ZI$$Base                          0x0000002c   Number         0  anon$$obj.o ABSOLUTE
    Image$$ZI$$Limit                         0x0000002c   Number         0  anon$$obj.o ABSOLUTE

各部分的大小:

      Code    RO Data    RW Data    ZI Data      Debug  

        36          0          8          0        236   Grand Totals

================================================================================

    Total RO  Size(Code + RO Data)                   36 (   0.04kB)
    Total RW  Size(RW Data + ZI Data)                 8 (   0.01kB)
    Total ROM Size(Code + RO Data + RW Data)         44 (   0.04kB)

================================================================================

image中的分布为

ZI

RW

RO

RO base = 0

RO limit = RO base + RO size + 1 = 0 + 0x24 - 1 + 1 = 0x24(RO部分后面一个字节的地址)

RW base = RO limit

ZI base = RW base + RW size = 0x24 + 8 - 1 + 1 = 0x2c

由于没有ZI,所以ZI limit = ZI base

这个工程似乎一切都与预料符合,但boot270工程好像不符合???

原文地址:https://www.cnblogs.com/yanhc/p/2175243.html