TI工程师:
您好!
环境: 我使用的板子是ezdspc5515, CCS是5.21, DSP/BIOS是5.41.2.
问题: 在使用c5505evm_pg20.gel的时候,程序仿真运行正常,在取消c5505evm_pg20.gel后,仿真找不到main入口。
详述:
c5505evm_pg20.gel在目标板连接CCS时实现了一些初始化函数,主要为MAP映射和PLL设置。
以下为c5505evm_pg20.gel 初始化部分:
/* The OnTargetConnect() function is executed when the target is connected. */
OnTargetConnect()
{
GEL_Reset();//这个函数我没有找到原型
C5505_MapInit();//此函数为内存配置
ProgramPLL_100MHz_clksel0();//设置100M的PLL
GEL_TextOut("Target Connection Complete.\n");
}
我对比了一下内存配置部分。DRAM,SRAM,VEC基本是相同,
我程序的时钟初始化如下:
*(ioport volatile unsigned*)0x0001 = 0x000E;//ENable MPORT
asm(" idle");
//CLOCK INIT for 100M HZ
SYS_PCGCR1 = 0x0;//
SYS_PCGCR2 = 0x0;// Enable clocks to all peripherals
*(ioport volatile unsigned *) 0x1c1f = 0x0; // bypass PLL
*(ioport volatile unsigned *) 0x1c20 = 0x8be8;
*(ioport volatile unsigned *) 0x1c21 = 0x8000;
*(ioport volatile unsigned *) 0x1c22 = 0x0806;
*(ioport volatile unsigned *) 0x1c23 = 0x0000;
// Busy wait until TESTLOCKMON is high or timeout
while ( ((*(ioport volatile unsigned *) 0x1c22) & 8) == 0) ;
*(ioport volatile unsigned *) 0x1c1f = 0x1; // Switch to PLL clk
程序在进入DEbug的时候,是处于RUN的状态,找不到MAIN函数的开始地址。我手动暂停DEBUG,汇编程序就卡在如下部分循环
940082: 4b08_4b0c B #0x94008e || B #0x940092
940086: 4b10_4b14 B #0x94009a || B #0x94009e
94008a: 4b18_4b1c B #0x9400a6 || B #0x9400aa
94008e: 4b20_4b24 B #0x9400b2 || B #0x9400b6
940092: 4b28_4b2c B #0x9400be || B #0x9400c2
940096: 4b30_4b34 B #0x9400ca || B #0x9400ce
94009a: 4b38_4b3c B #0x9400d6 || B #0x9400da
94009e: 4b40_4b44 B #0x940062 || B #0x940066
9400a2: 4b48_4b4c B #0x94006e || B #0x940072
9400a6: 4b50_4b54 B #0x94007a || B #0x94007e
9400aa: 4b58_4b5c B #0x940086 || B #0x94008a
9400ae: 4b60_4b64 B #0x940092 || B #0x940096
9400b2: 4b68_4b6c B #0x94009e || B #0x9400a2
9400b6: 4b70_4b74 B #0x9400aa || B #0x9400ae
猜测:
不知道是什么原因会造成不使用GEL文件仿真时,找不到MAIN函数的入口?
程序比繁杂,Release模式下 out文件大小为760K,会不会因为程序太大造成内存分配出错?或者是因为BIOS初始化部分出错?
多谢解惑!
