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.

5509A的HPI启动

 最近搞了好几天的5509AHPI启动,host加载代码正常,就是无法运行,后来进入bootloader代码跟踪,发现在0xFF801A这个地方一直都给0x60字地址赋0,HPI启动怎么回这样呢?0x60这个地址不是装载代码的入口地址吗?

 

  • 在线等啊,哪位大侠帮忙指点一下啊,谢谢了。

  • 你好,

    bootloader是会把0x60, 0x61处的值清0, 然后一直等直到host把入口地址写入到0x60, 0x61处, 检测到不为0后, 跳转到程序入口地址开始执行.

    HPI启动流程, 你可以参考下面的bootloader文档.
    http://www.ti.com/lit/an/spra375f/spra375f.pdf

  • 谢谢Shine Zhang 的指点,现在是这样的:我用一块单片机做host,上电后单片机加载代码到DSP,然后DSP开始跳到代码的入口地址开始运行,但是现在偶尔能自举成功(通过闪灯),请问这是怎么回事?

    1、会不会出现一种情况:单片机的代码已经加载了,DSP才开始运行,所以0x60处的内容被DSP的bootloader清零了?(因为我硬件设计时忘记了IO4管脚,所以无法检测IO4),但是我通过延长单片机加载代码之前的时间,还是无法解决此问题。

    2、我的代码中cmd文件是从0x100(字节地址)开始的,map文件中的入口地址是0x1aa(字节地址),我准备将代码灌入DSP 的0x200(字节地址),0x61地址中的内容写入0x255对吧?

  • 还有个情况,我把代码灌入DSP后,用ccs的查看memory,0x200(字节地址)开始的代码和我加载我的.out文件后0x100开始的memory数据是相同的(我的map文件指定加载字节地址是0x100开始)。但是代码貌似就是没有运行起来。

  • js jiang 说:

    谢谢Shine Zhang 的指点,现在是这样的:我用一块单片机做host,上电后单片机加载代码到DSP,然后DSP开始跳到代码的入口地址开始运行,但是现在偶尔能自举成功(通过闪灯),请问这是怎么回事?

    1、会不会出现一种情况:单片机的代码已经加载了,DSP才开始运行,所以0x60处的内容被DSP的bootloader清零了?(因为我硬件设计时忘记了IO4管脚,所以无法检测IO4),但是我通过延长单片机加载代码之前的时间,还是无法解决此问题。

    2、我的代码中cmd文件是从0x100(字节地址)开始的,map文件中的入口地址是0x1aa(字节地址),我准备将代码灌入DSP 的0x200(字节地址),0x61地址中的内容写入0x255对吧?



    1. 不用IO4, host延长时是可以的, 只要确保host在DSP reset后至少等200个cycle再加载程序.

    2. 0x60, 0x61放的是你的程序入口地址, 即map文件中的entry point address, 0x61处写入0xaa.

  • js jiang 说:

    还有个情况,我把代码灌入DSP后,用ccs的查看memory,0x200(字节地址)开始的代码和我加载我的.out文件后0x100开始的memory数据是相同的(我的map文件指定加载字节地址是0x100开始)。但是代码貌似就是没有运行起来。

    你加载代码的时候应该用word address, 即如果你的.out文件中code section段地址是0x100, 那么host加载时的地址是word address 0x80.

  • 万分感谢Shine Zhang ,问题解决了,主要是因为函数的入口地址没有正确的设置。