C6416T的HPI在DSP加电后,有时候可以正常写入HPIC、HPIA和HPID,但是有HPIA写入不正确,那么写HPID时HRDY就为高,奇怪的是在正常写入后,将HPIC中的DSPINT位置1,但是程序有时候会正常启动,而绝大多数时候无法正常启动,不知道是什么原因?但有几个现象比较奇怪:1、在写HPIC的时候,通过仿真器看HPIC的寄存器更新了,但是后面地址每隔3个4字节地址后的数据全部都在更新,同理,HPIA写入时,也是同样的现象,为什么写一个寄存器,后面都在更新呢?这个正常吗?2、用仿真器连接后,在看到HPIC、HPIA和HPID写入正常后,程序无法启动,但是把CCS关闭,则程序开始正常加载,这是什么原因?是HPI加载的数据有问题吗?如果数据看到写入了,在CCS里点击运行也可以正常运行,但是软件向HPIC的DSPINT置1没有任何反应。
shui liu:
3、在BootMode模式设置为HPI的模式时,BEA的高位用3.3V电压通过一个10K的电阻上拉,但是上拉电压始终为0,相当于BEA[1:0]=00,无加载,但是HPIC、HPIA和HPID有时也可正常写入,这是正常的吗?
Shine:
回复 shui liu:
你好,
建议先在仿真器模式下调一下HPI口读写有没有问题, 调通后在用HPI boot模式加载。
shui liu:
回复 Shine:
已经在仿真器模式下调试了写操作,正常情况下,都是正确写入了,但是一旦HPIA的地址写有问题,HPID在搬移数据时,HDRY就始终为高,但是发现个问题,就是每次写HPIC或者HPIA时,后面地址的数据也在跟着更新,且数据与写入的数据相同,甚至看到后面的CTRL寄存器的值也随着写入的值在改变,这个是什么原因?
Shine:
回复 shui liu:
shui liu
3、在BootMode模式设置为HPI的模式时,BEA的高位用3.3V电压通过一个10K的电阻上拉,但是上拉电压始终为0,相当于BEA[1:0]=00,无加载,但是HPIC、HPIA和HPID有时也可正常写入,这是正常的吗?
shui liu:
回复 Shine:
非常感谢您的指导,已经更换,但是问题好像不是在那个地方,我怀疑是生成的代码有问题,就是我直接用编译生成的out文件,利用hex6x,编了一个cmd程序,然后用hex2bin生成BIN文件,但是我发现0-1024段全是0,我看相关的文献,说是需要在0地址处添加跳转到main函数的指令,是这样的吗?怎么添加?我的程序加载之后有时也可以正常运行,不知道是不是没有加跳转指令造成的,恳请您的指导。
Shine:
回复 shui liu:
hex2bin文件是哪里来的?你可以直接用hex6x.exe十六进制工具的-b选项生成.bin文件, 用-boot选项生成boot table的格式, 根据段长和地址把程序加载到目的地址, 直到section size为0. hex6x工具和boot table结构都有在下面的用户手册第11章介绍.http://www.ti.com/lit/ug/spru186w/spru186w.pdf