根据这个文档:http://processors.wiki.ti.com/index.php/Linux_IPC_on_AM57xx?keyMatch=am57xx%20ipc&tisearch=Search-EN-Everything#Changing_the_DSP_Memory_Map
里说到:The physical location where the DSP code/data will actually reside is defined by the CMA carveout
而DSP1的CMA定义在0X9900000,可是TI自己给出的例子里DSP TEXT 和DATA都定在了0X95000000
在rsc_table_vayu_dsp.c里
#define DSP_MEM_TEXT 0x95000000
/* Co-locate alongside TILER region for easier flushing */
#define DSP_MEM_IOBUFS 0x80000000
#define DSP_MEM_DATA 0x95100000
#define DSP_MEM_HEAP 0x95600000
这是为什么?而且0X95800000就是IPU2 的CMA了,于是DSP的TEXT DATA空间只有8M?
我尝试过修改这几个宏设定和BLD文件,把DSP_MEM_TEXT指向0X99000000,编译能通过,但装载代码时提示
C66xx_DSP1: File Loader: Verification failed: Values at address 0x997A2811 do not match Please verify target memory and memory map.
C66xx_DSP1: GEL: File: E:/AM5728\ivt5728_dsp_with_ipc\Debug\ivt5728_dsp_with_ipc.out: a data verification error occurred, file load failed.
我的目的是想吧DSP的 CODE DATA 都分回去0X99000000的地址段,让CODE DATA HEAP能得到 更大的地址,请问该如何修改?
Denny%20Yang99373:
device tree里面定义的是实际物理地址,系统启动的时候预留给DSP使用
在DSP的代码里定义的是DSP运行的虚拟的地址,ARM会帮DSP建立MMU映射表