在cmd文件中有如下定义: DDR2 o = 0xC0001000 l = 0x08000000 /* 128MB DDR2 分配给 DSP */ EntryPoint o = 0xC0000000 l = 0x00000800 /* 2 KB C 语言入口点 */ Vector o = 0xC0000800 l = 0x00000800 /* 2 KB 中断向量表 */
我的理解是: DSP有128k on chip RAM,256k L2 RAM, 以及通过EMIFA及DDR2/mDDR扩展的RAM或FLASH,这些空间可供用户使用; CMD文件即将这些空间进行划分。
疑问如下: 1. 上述CMD的定义,EntryPoint及Vector占用的是哪一部分空间?on chip RAM, 还是DDR2扩展的RAM,或是其它?请指出。如果是占用的DDR2扩展的RAM,为何在DDR2段长度中没有将4kb的占用扣除?
2. 在理解视频资料时,视频提到,将代码或常用的变量放到L2 RAM中,能获取最快的运行速度,但L2中前面一段空间需预留出来,留给L2 ROM启动程序使用,那么用户在使用L2 RAM的原则是什么,这个预留的空间一般预留多少比较合适?
3. 我的程序会下载到SPI0扩展的FLASH中,在运行时,如何将代码从flash中拷出来,放在on chip RAM或L2 Ram中运行;这个操作该如何做?是直接在CMD中指定,还是在代码中通过#progma code_section实现,能否给出样例?
4. CMD中load和run如何理解?视频中一带而过。 我理解的是,假若我代码放在SPI0的Flash中,那么我可以指定.text从flash中load,在on chip ram中run?假若理解正确,可通过SPI0扩展的flash没有地址,我该如何去将其中的代码copy出来呢?
|