hi 大家好
我想使用tidvsdk0403自带的cs.64P的dsp可执行文件,但是没有成功。
我板子dsp内存使用空间为 0x8440 0000 – 0x8800 0000 这段60M的空间linux没有管理。
但是我看了cs.64P,DSP的coff文件内容如下:
Object File Information
File Name: /home/dm37xx/my_project/rootfs/opt/dvsdk/omap3530/cs.x64P
Format: TI-COFF Version 2
File Type: executable file
Time Stamp: Sun Jul 25 19:12:49 2010
Machine: TI C6x
Machine Endian: little endian
Entry Point: 0x87ecf0a0
Vendor: Texas Instruments, Inc.
Producer: Linker
Linker Version: 6.1.12
Number of Sections: 784
File Length: 7038969
Symbol Table File Offset: 0x005a7534
String Table File Offset: 0x00662c08
TI-COFF f_flags: 0x00001163
TI-COFF f_flag: F_RELFLG (relocation info stripped)
TI-COFF f_flag: F_SYMMERGE (debug type information merged)
CPU Generation: C6400+
Control Data Endian: little endian
Start of .text Section: 0x87c055c0
Start of .data Section: 0x87f0de80
Size of .text Section: 790944
Size of .data Section: 132
Size of .bss Section: 1406
我简单画了一张示意图,如果dsp的程序cs.64P文件大小超过了2M(文件大小为6,7M)。这样一来dsplink启动着个文件是不是把linux的bank1的空间(0x8800 0000)覆盖掉了。会有这种情况吗?
谢谢
lu edward:
这个coff文件是广州ema自己做好的,可以运行。
Chris Meng:
回复 lu edward:
Edward,
entry point是程序的入口地址,但程序不一定就是从这个才地址开始。建议你看看dsp的map文件,了解DSP的代码具体是如何分布的。
lu edward:
回复 Chris Meng:
谢谢 Meng,我想问下,dsplink去load程序的时候 是从高地址往下,还是低地址往上?
map文件我大致看了一下(没有细看,汇编也看不懂),文件大小应该是固定的,那么一定是有这么大的一段空间去装这么一段程序,如果load时候是动态安排空间。那么有什么规则吗?
谢谢
lu edward:
回复 Chris Meng:
看了PROC_Load我估计这个地方有问题,这个空间踩到cmem和dsp的其他空间了。
估计是algheap预留sdram空间引起的。
这个地址 加上32M超过了cmem。
lu edward:
回复 Chris Meng:
非常感谢
lu edward:
回复 Chris Meng:
我两张截图找不到了。