ZHCU876Z July 2001 – October 2023 SM320F28335-EP
本节仅适用于使用 COFF ABI 的应用。
在加载时初始化变量可通过缩短引导时间和节省初始化表使用的内存来提高性能。若要使用此方法,请使用 --ram_model 选项调用链接器。
当您使用 --ram_model 链接选项时,链接器会在 .cinit 段的标头中设置 STYP_COPY 位。这会告诉加载程序不要将 .cinit 段加载至存储器。(.cinit 段不占用存储器映射中的任何空间。)链接器还会将 cinit 符号设置为 -1(通常,cinit 指向初始化表的开头)。这会向启动例程表明存储器中不存在初始化表;因此,在启动时不执行运行时初始化。
加载程序(并非编译器包的一部分)必须能够执行以下任务才能在加载时使用初始化:
图 7-5 演示了加载时变量的初始化。
无论使用 --rom_model 还是 --ram_model 选项,始终在运行时加载和处理 .pinit 或 .init_array 段。