TI论坛
直播中

张宇

7年用户 1624经验值
私信 关注
[问答]

请问我的C5509a通过HPI接口下载程序的步骤哪里不对?

通过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文件得到的过程中是不是有什么限制呢,例如说不能写某些寄存器等等。
我是一名新手,还希望论坛里的高手能够指点一下!万分感谢!

回帖(9)

张宇

2019-10-25 08:52:09
shine zhang,你好,我在您的另一个回复的帖子中(也是关于5509A bootloader的问题),看到您的回答是:
看看gel文件中的初始化设置有没有搬到应用程序中.
使用boot方式, 可以用jtag追踪程序运行到哪里出错
 
而且这个回复,对方给了正确答案的评价,我想问下的是,如何查看gel文件中的初始化设置是否搬到应用程序中呢 ?
举报

张宇

2019-10-25 09:04:04
引用: dfgsdf 发表于 2019-10-25 09:32
shine zhang,你好,我在您的另一个回复的帖子中(也是关于5509A bootloader的问题),看到您的回答是:
看看gel文件中的初始化设置有没有搬到应用程序中.
使用boot方式, 可以用jtag追踪程序运行到哪里出错

问题,终于搞定了,呵呵,果真是C 编译器选项的问题,必须选择 NO  那个选项,程序才能正常的跑起来!
举报

余少虹

2019-10-25 09:17:17
引用: dfgsdf 发表于 2019-10-25 09:44
问题,终于搞定了,呵呵,果真是C 编译器选项的问题,必须选择 NO  那个选项,程序才能正常的跑起来!

恭喜啊, 谢谢分享!

使用了-cr这个编译选项,这样在CCS load程序时会自动把.cinit段的数据复制到.bss段,但是当脱机运行时,就不能选-cr,而是需要选-c或省略。具体可以参考下面的FAQ。
http://www-k.ext.ti.com/sc/technical-support/knowledgebase.asp?kb=dsp&obj=5511
举报

张宇

2019-10-25 09:37:12
引用: vuywsdfwf 发表于 2019-10-25 09:57
恭喜啊, 谢谢分享!

使用了-cr这个编译选项,这样在CCS load程序时会自动把.cinit段的数据复制到.bss段,但是当脱机运行时,就不能选-cr,而是需要选-c或省略。具体可以参考下面的FAQ。

今天又做了下测试,情况和shine zhang 说的真好相反,使用-cr选项时或者省略时,程序能够正常运行,而采用-c这个选项,程序反而不能正常运行。
看了下-cr的介绍,还是不得其解!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分