TI中文支持网
TI专业的中文技术问题搜集分享网站

请问cmd文件的load和run的影响以及cinit段的一点疑问

cmd文件中,假设load=ROM run=IRAM,已知其会影响程序section的vaddr和paddr值,并且在6416中经常这样写来控制启动的时候的1KB自动搬移。看了相关的手册,有点疑问,望解惑,谢谢!

疑问主要是看了cinit的描述并实验:

coff的cint在rom mode会分配地址空间,而ram mode则仅存在与文件里,需要loader程序自己去处理,使用hex6x工具转换后看起来ram模式的hex文件丢失了cinit信息,如果拿去烧写很可能出问题,而ROM模式的保留了cinit信息,并且已知其会在cint_00后至main前copy对应的数据,手册也说了,ram mode需要loader关心并处理cinit信息。

而elf格式在rom mode编译出来cinit段仍然有信息,个人理解应该是跟coff处理一致,会自动在程序main运行前自动更新对应段,但是ram mode下cinit段没有了(长度为0),是否elf格式的ram mode下对应的各个数据段已经问最终的数据,不需要运行时加载?

然后,既然数据有run time load和加载时的load,请问使用run和load修饰的section,link会做特殊的处理吗?如果处理是一样的依据rom mode和ram mode吗? 以及是否coff 和elf也存在差异。

再次感谢!

Shine:

ROM model会把初始化数据放在.cinit段里,RAM model没有.cinit段,具体请看编译器手册。8.9.2 Automatic Initialization of Variableshttp://www.ti.com/lit/ug/sprui04b/sprui04b.pdf

Ryan BL:

回复 Shine:

额…我更关心的是使用load和run修饰的section是否自动copy in run time,像cinit的信息那样,包括coff和elf的格式。谢谢!

Shine:

回复 Ryan BL:

会自动生成copy table,在汇编手册里有详细说明Chatper 3 Program Loading and Running和8.8 Linker-Generated Copy Tableshttp://www.ti.com/lit/ug/sprui04b/sprui04b.pdf

赞(0)
未经允许不得转载:TI中文支持网 » 请问cmd文件的load和run的影响以及cinit段的一点疑问
分享到: 更多 (0)