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.

5402的通过HPI加载问题

Other Parts Discussed in Thread: TMS320VC5402

利用TMS320VC5402的HPI口对程序代码进行加载,将.OUT文件通过批处理之后,转换成.h格式的文件,通过单片机写进DSP内部。现在的问题是,把里面的数据写完之后程序没有执行(通过JTAG仿真,发现程序没有问题),于是在写完之后连上JTAG,但是不LOAD .OUT文件,连上之后发现PC指向0XFF80(单片机的末尾向0X007F处写了0X0080,0X0080是程序入口地址),0XFF80应该是BOOTLOADER的起始地址,问题是硬件上我的MP/MC引脚是接地的,HINT和INT2连在一起的,就是说上电复位之后就应该执行了BOOTLOADER,那么我连上JTAG时PC应该指向0X0080啊?麻烦给个建议,从哪方面入手检查,谢谢!

  • 补充一下,连上JTAG之后,在没下载.OUT文件的情况下点击RUN,运行结果没什么问题,意思就是HPI加载之后程序没有自行运行,我猜想是找不到入口地址,期待大神的解惑,谢谢了!

  • 你好,

    用仿真器跟踪bootloader过程时, 指向0xFF80正常, 你可以看到bootloader时如何执行到HPI boot代码, 你可以跟一下FF80处的代码看能不那执行到HPI boot模式那块.

  • YL zhang 说:

    补充一下,连上JTAG之后,在没下载.OUT文件的情况下点击RUN,运行结果没什么问题,意思就是HPI加载之后程序没有自行运行,我猜想是找不到入口地址,期待大神的解惑,谢谢了!



    你可以跟一下bootloader过程, 进入HPI boot 代码后, 应该是一直在轮询0x7F的值是否不为0, 另外, 你可以看一下Host有没有把代码加载进来.

  • 多谢Shine Zhang的回复与建议,上面有个地方说错了,FF80是中断向量表的入口地址,不是BOOTLOADER的入口,这个问题已经解决了,现在加载完代码后连上JTAG,PC的值就是程序入口地址,但是程序运行不正确,我是这样测试的:程序的开始将XF拉低,再定义两个变量作一个简单的加法,XF外面接了一个LED,低电平会发光,现在单片机加载完成之后,LED灯是亮的,连上JTAG,发现加法的结果在内存中是正确的,也就是说程序跑起来了,可是下面FFT的程序运行就不正确了,输出值有错误,关键是同样用HPI加载的,点击RUN之后结果又是正确的,而且单步调试可以一步一步执行下去。用CCS的RUN和HPI加载的有什么区别吗,麻烦Shine Zhang给点建议,从哪里入手检查,多谢!

  • 查看一下bootloader.map文件中.cinit段正确吗? 工程在编译的时候不要用-cr选项.

     

  • 我是用汇编写的,所以没有.cinit这个段的,还有CCS默认的就是-c,我没有改动过。我就是很不解那个RUN之后会有什么不一样吗?为什么同样的代码两种方法结果就不一样。

  • 谢谢您的建议,问题已经解决了,是有几个位没设置好,多好!