TI专家,各位朋友:
ARM端无OS,DSP端使用DSP/BIOS,该怎么从NAND FLASH启动?
ARM端和DSP端都不使用OS,通过AIS将两端的.out文件糅合成bin文件,然后通过烧录工程通过仿真器烧到NAND FLASH,这个我已经掌握,但现在DSP端使用了DSP/BIOS后就不知道该怎么做了,DSP/BIOS自己管理了cmd文件,不知道该怎么更改DSP的复位地址了,在DSP/BIOS中能不能重新定位代码段中_c_int00的入口地址?
wei lee1:
在DSP端DSP/BIOS自己产生的.cmd文件中,_c_int00的地址为0x1183b960,下面一行是从cmd文件中复制过来的:
ENTRY POINT SYMBOL: "_c_int00" address: 1183b960
在ARM端需要制定DSP的复位地址,而这个地址是要求1K字节对齐的,复制了部分代码如下:
* Set DSP boot address vector to entry point of DSP program This must be aligned to 1KB boundaries */
SYS_REGS->HOST1CFG = 0x80010000;
SYS_REGS->HOST1CFG的值应该修改为_c_int00的入口地址0x1183b960,而关键问题是0x1183b960不是1K字节对齐的。
wei lee1:
回复 Shine:
使用的是CCSV5.1,自己定义一个.cmd文件,放在工程根目录下,DSP/BIOS自己产生的.cmd文件在工程目录Debug或者Release目录下,在自己的.cmd文件中加入如下内容:
SECTIONS {
boot > 0x80000000
{
-l bios.a674P<boot.o674P>(.sysinit)
}
}
编译报如下错误:
-l"libc.a" "../Linker_dsp.cmd"
<Linking>
"../Linker_dsp.cmd", line 12: error: cannot find file "bios.a674P"
"../Linker_dsp.cmd", line 12: warning #10068-D: no matching
section error #10010: errors encountered during linking;
"ZV138_DSPBIOS_APP_V3_2.out" not built
wei lee1:
回复 wei lee1:
做如下修改,然后就成功修改_c_int00为固定地址0x80000000
SECTIONS
{
boot > 0x80000000
{
-l bios.a674<boot.o674>(.sysinit)
}
}是bios.a674和boot.o674而不是bios.a674P和boot.o674P
wei lee1:
回复 Shine:
_c_int00是指定了固定地址0x80000000,但烧录后扔然启动不起来。
DSP端主要的内存分配除_c_int00外都在L2(0x11800000-0x11840000上),把_c_int00映射到0x80000000-0x80010000这段地址,_c_int00实际使用的空间应该远远少于分配的空间;ARM端内存分配在0x80010000-0x80020000这段地址,然后ARM端指定DSP的复位地址:SYS_REGS->HOST1CFG = 0x80000000;
最终通过AIS将两者糅合成一个bin文件,烧录后却启动不起来。
wei lee1:
回复 wei lee1:
然后调试了下可以启动了,在AIS PSC0那里加上了14,15然后就可以了。