Hi:
在工程编译时,编译的map结果有如下的一段:
00897940 00000010 ti.csl.ae66 : csl_tsc.oe66 ($Tramp$S$$CSL_tscRead)
00897950 00000010 –HOLE– [fill = 0]
.switch.2* 0 00897950 00000010 00897950 00000010 HDL_PDU.obj (.switch:HDL_PushToLmacQue)
.switch和上一段的–HOLE–落在了相同的位置0x00897950,请问产生这种问题的原因?如何解决?
另外我在cfg文件中尝试通过progrma来控制.switch.2 放置的位置,也不起作用,请问这是为什么?
使用的芯片使6670,CCS版本为5.1.009,编译器版本为7.3.1
谢谢
Brighton Feng:
看起来有点奇怪, 不过.switch.2放在没用的HOLE里似乎也可以,你运行程序有什么错误吗?
另外,.switch.2是个自定义段吗?一般.switch是编译器自动生成的switch-case表,不能手工生成。
Jerry Liu1:
回复 Brighton Feng:
Brighton 你好,
.switch.2不是自定义的段,是编译器自动生成的,我们的工程编译后,没有.switch,而是分成了.switch.1,.switch.2,.switch.3等;.switch.2放在–HOLE–里面用仿真器运行的时候没有问题,但是boot时,–HOLE–的内容会覆盖.switch.2的内容,导致系统abort,所以想请教一下有没有避免Linker将.switch.2放入到–HOLE–的方法?
谢谢!
Jerry Liu1:
回复 Brighton Feng:
好的,谢谢!