ZHCU875Z August 2001 – October 2023 SM320F28335-EP
RAM 模型在加载时初始化变量。若要使用此方法,请使用 --ram_model 选项调用链接器。
此模型可以减少启动时间并节省初始化表使用的存储器空间。
在使用 --ram_model 链接器选项时,链接器会在 .cinit 段的标头中设置 STYP_COPY 位。这会告诉加载器不要将 .cinit 段加载到存储器中。(.cinit 段不占用存储器映射中的任何空间。)
对于 COFF,链接器还会将 cinit 符号设置为 -1(通常,cinit 指向初始化表的开头)。这会向启动例程表明存储器中不存在初始化表;因此,在启动时不执行运行时初始化。
对于 EABI,链接器会将 __TI_CINIT_Base 设置为等于 __TI_CINIT_Limit 以指示没有 .cinit 记录。
COFF 加载器必须能够执行以下任务才能在加载时使用初始化:
对于 EABI,加载器会将值直接从 .data 段复制到存储器中。
图 3-4 演示了在 COFF ABI 模式下加载时变量的初始化。