以下列表展示了调用链接器时使用 --ram_model 或 --rom_model 选项的结果。
- 符号 _c_int00 定义为程序进入点。_c_int00 符号是 boot.c.obj 中 C 引导例程的起点。引用 _c_int00 可确保自动从适当的运行时支持库将 boot.c.obj 链接进来。
- 对于 COFF,.cinit 输出段中填充了终止记录,指示引导例程(运行时自动初始化)或加载器(加载时初始化)何时停止读取初始化表。
- 如果使用 ROM 模型在运行时自动初始化(--rom_model 选项):
- 对于 EABI,链接器定义了一个名为 __TI_CINIT_Base 的特殊符号,该符号指向存储器中初始化表的开头。当程序开始运行时,C 引导例程会将表中的数据(由 .cinit 指向)复制到变量的运行时位置。
- 对于 COFF,链接器会将 cinit 定义为 .cinit 段的起始地址。C 引导例程使用此符号作为自动初始化的起点。
- 如果使用 RAM 模型在加载时初始化(--ram_model 选项):
- 对于 EABI,链接器会将 __TI_CINIT_Base 设置为等于 __TI_CINIT_Limit 以指示没有 .cinit 记录。
- 对于 COFF,链接器会将 cinit 设为 -1。这表示初始化表不在存储器中,因此在运行时不执行初始化。链接器在 .cinit 段标头中设置 STYP_COPY 标志 (0010h)。STYP_COPY 是特殊属性,它指示加载器直接执行初始化,而不要将 .cinit 段加载到存储器中。链接器不会为 .cinit 段分配存储器空间。
注: 加载器:加载器不包含在 TMS320C28x C/C++ 编译器工具中。将 Code Composer Studio 用作加载器。