大家好!
我正在使用6678,我创建一个CCS工程A,在A中链接调用库工程B生成的静态库ort.lib。我希望通过cmd文件的配置,使得ort.lib中的.bss段和.neardata段放在L2中,让工程A源文件中的.bss段和.neardata段放在DDR中。我参考sdk中某个linker.cmd的例子在工程A的cmd文件中设置了这样的语句(对于其他段的设置,库和应用程序都保持一致):
SECTIONS
{
.localdata :
{
"ort.lib" (.bss)
"ort.lib" (.neardata)
} > L2
}
SECTIONS
{
.bss > DDR
.neardata > DDR
}
如果我注释掉第一段SECTIONS,ort.lib和工程A中的这两个段可以正确的被放在DDR中,但是如果我使用了第一段SECTIONS,ort.lib中的两个段被放在了L2中,但是工程A中的这两个段没有放在DDR上,而是被放在了0x8800xx这样的奇怪地址上。请问是什么原因?
我的目的是希望将库中的段和应用工程中的同名段放在不同的内存区间上,请问该如何实现?
谢谢!
Andy Yin1:
你这样写没错的,6678每个core内部是L2是512KB,地址范围是0x800000~0x87FFFF, 你说放在地址0x8800xx,你确认一下你的L2地址范围是配置的多少,有可能是L2范围不对。