通过HPI接口下载程序到5509a中时,遇到比较奇怪的问题,希望大家看看,我的步骤是不是有什么地方不对的?
项目中CPU和c5509a之间是16位的HPI接口
下载程序的过程基本上是按照SPRA375F的顺序来做的:
1.将5509a芯片复位;
2.检测到5509a的IO4管脚产生下降沿;
3.然后开始通过HPI接口将bin文件写入到HPI接口可以操作的DRAM中,SPRA375F上推荐从0x100这个地址开始烧写程序。我的bin文件很小大概只有2k左右(只是用来闪灯,以便测试c5509a bootloader是否成功),也是从0x100这个地址往里面写。这里有个问题想问下,c5509a的DRAM存放数据是否是小端模式,假设我的bootloader只有4个字节[0x1,0x2,0x3,0x4],那么写入到DRAM中的格式是0x0201,0x0403(高字节在前,低字节在后)。
4.将上面的文件写入到DRAM中后,我又重新将代码从DRAM中读出,与我写入的进行比较,确定没有烧写错。
5. SPRA375F上介绍是向0x60,0x61这两个地址中写入程序开始运行的地址,我是从0x100这个地址开始烧写的,因此0x61这个地址内我写入了0x200(PDF上是说将字地址转换成字节地址,因此这里写了0x200),然后再往0x60中写入0xa500。其中0xa5是告诉5509a,可以运行烧写的程序了。
问题出现了,上述过程完成了,我的程序并没有运行起来(因为我是通过闪灯来验证的),
我的bin文件是将产生的.out文件通过hex55.exe来生成.bin文件的,命令代码如下:
hex55.exe -boot -v5510:2 -memwidth 8 -romwidth 16 -map LED.mxp LED.out -e start -b -o LED.bin
其中LED.out是输入文件,LED.bin是得到的输出文件,也就是我上面烧写到DSP中的文件。
这里有个问题请教下,使用HPI接口烧入的bin文件,在由.out文件得到的过程中是不是有什么限制呢,例如说不能写某些寄存器等等。
我是一名新手,还希望
论坛里的高手能够指点一下!万分感谢!