我用的5502外扩了一块RAM,接到了外部映射CE2上,在下载程序时,出现了如下这样的镇错误,
Data verification failed at address 0x0401BC0.Please verify target memory and memory map.
是怎么回事呢?外扩的RAM接到CE2上应该也是可以的吧?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用的5502外扩了一块RAM,接到了外部映射CE2上,在下载程序时,出现了如下这样的镇错误,
Data verification failed at address 0x0401BC0.Please verify target memory and memory map.
是怎么回事呢?外扩的RAM接到CE2上应该也是可以的吧?
应该是GEL文件中没有对RAM初始化引起的. 当程序下载到片外RAM时, 需要在GEL文件中先初始化RAM, 因为CCS 加载器没有初始化外部RAM的功能.
你可以参考EVM5502 GEL文件的写法, 下载"Target Content"
http://c5000.spectrumdigital.com/evm5502/
恩 好像是有过以前不能下载,用GEL初始化一下就可以了,可是CCS中没有自带的初始化CE2的gel函数,需要自己写,我看了下你说的文件,对其中的一地址不知道5502的CE2是怎么对应?你能说具体点嘛?
*(short *)EMIF_CE11@IO = 0xFF13; /* 16-bit async in CE1 space. */
GEL_MapAdd(0x400000u, 0, 0x400000u, 1, 1); /* External CE1 */
GEL_MapAdd(0x200000u, 1, 0x200000u, 1, 1); /* External CE1 */
其中,第一行,我对比了一下就是0xFF13和oxFF23的区别,前者表示16位,后者表示32位。但是下面的就不知道是怎么来对应了,它那个0x400000u,0x200000u 是对应的CE1那CE2应该是多少呢?
请查看GEL文件中的 /* EMIF Registers */, 定义了各个CE空间的EMIF寄存器的地址, 你在配置CE2寄存器的时候, 需要用相应的寄存器名.
CE2对应的空间如下,
映射到程序空间, byte address
GEL_MapAdd(0x800000u, 0, 0x400000u, 1, 1); /* External CE1 */
映射到数据空间, word address
GEL_MapAdd(0x400000u, 1, 0x200000u, 1, 1); /* External CE1 */