TI中文支持网
TI专业的中文技术问题搜集分享网站

5510HPI启动代码加载不正确

小弟用5510HPI启动,用MSP430单片机作为host,将code代码加载到0x8000处(字地址),可是上电后加载到0x8000的数据却并不是我的code代码(十六进制数据),请问大侠们,咋回事啊?

我的调试方法是:先将单片机上电运行host代码,然后用ccs3.3->connect连接,然后看view->memory,请问大侠们,我的操作有问题吗?我跟踪单片机,单片机确实运行起来了。

Shine:

你先看一下HPI读写时序对不对?

js jiang:

回复 Shine:

真的太感谢您了,看过你的关于5509的hpi启动答疑http://www.deyisupport.com/question_answer/dsp_arm/c5000/f/48/t/19385.aspx学到了很多东西。

正如您所说,是时序不对,现在写入的数据是正确的,但是dsp还是没起来,明天继续研究,有问题再来请教您哈。

js jiang:

回复 js jiang:

今天调了一下午,发现DSP还是起不来,我一一的将DSP8000h开始的数据和用host加载的数据进行了对比,完全是正确的。可DSP还是启动不了,我怀疑是我EHPI启动的操作顺序不对,我的步骤是这样的:1、设置bootm[3..0]=1101。2、拉低DSP的reset管脚,延时后再拉高DSP的reset管脚。3、向hpic寄存器写入0x00。4、加载程序所需数据。5、向hpic寄存器写入0x01,启动DSP。

请问大侠,我的操作有问题么?

Shine:

回复 js jiang:

1. 去掉 3、向hpic寄存器写入0x002. 在byte address 0x10000处设置一个硬件断点, 看能停在该断点吗?3. 用ccs反汇编窗口看一下byte address 0x10000处放的是你的入口程序_c_init00么?

 

js jiang:

回复 Shine:

您好Shine Zhang,我按照您的方法调试了一下,我用ccs反汇编窗口中右键的“start address”可以定位0x10000处,但是用鼠标滚轮向上或向下稍微一滚动,就发现0x10000这个地址不存在了,看下面我复制的反汇编窗口数据:

以下是我用“start address”定位0x10000处:

010000 ec314e0038fa             AMAR *(#038fah),XSP010006 ec315e0039f4             AMAR *(#039f4h),XSSP01000C f406f91f_98              AND #63775,mmap(@ST1_55)010011 f5064100_98              OR #16640,mmap(@ST1_55)010016 f496fa00_98              AND #64000,mmap(@ST2_55)01001B f5968000_98              OR #32768,mmap(@ST2_55)010020 4656                     BCLR ST3_SATA010022 4617                     BSET ST3_SMUL010024 160000                   MOV #0,DPH010027 160001                   MOV #0,MDP0501002A 160002                   MOV #0,MDP6701002D 6c000248                 CALL _auto_init

在此窗口数据上,我在010000 ec314e0038fa             AMAR *(#038fah),XSP这一行设定了一个硬件断点,发现pc指针可以停在此处。

 

以下是我用鼠标滚轮向上翻,本想看看0x10000以上的代码,但是却出现下面的情况:

00FFFA 6dd5a55a                 BCC #0x00a558,T1 >= #000FFFE 0cccec_314e              RPT #52460 || MIN T0,AR6010003 0038fa                   RPTCC #250, AR0 <= #0010006 ec315e0039f4             AMAR *(#039f4h),XSSP01000C f406f91f_98              AND #63775,mmap(@ST1_55)010011 f5064100_98              OR #16640,mmap(@ST1_55)010016 f496fa00_98              AND #64000,mmap(@ST2_55)01001B f5968000_98              OR #32768,mmap(@ST2_55)010020 4656                     BCLR ST3_SATA010022 4617                     BSET ST3_SMUL010024 160000                   MOV #0,DPH010027 160001                   MOV #0,MDP0501002A 160002                   MOV #0,MDP6701002D 6c000248                 CALL _auto_init

 

以下是我的原始代码用ccs加载后的反汇编窗口:

000100          .text, __text, _c_int00:000100 ec314e0038fa             AMAR *(#038fah),XSP000106 ec315e0039f4             AMAR *(#039f4h),XSSP00010C f406f91f_98              AND #63775,mmap(@ST1_55)000111 f5064100_98              OR #16640,mmap(@ST1_55)000116 f496fa00_98              AND #64000,mmap(@ST2_55)00011B f5968000_98              OR #32768,mmap(@ST2_55)000120 4656                     BCLR ST3_SATA000122 4617                     BSET ST3_SMUL000124 160000                   MOV #0,DPH000127 160001                   MOV #0,MDP0500012A 160002                   MOV #0,MDP6700012D 6c000248                 CALL _auto_init

 

js jiang:

回复 Shine:

太感谢您了,确实是-cr惹的祸,最开始一直没有关心-cr选项,也没有找到这个选项在哪儿,后来刻意的找到了这个选项,改成none,马上就可以运行了,但是代码数据貌似很少了,而且这个-cr不是cinit段初始化作用的么?这样一来哪些全局变量不就没有初始化了么?为什么程序还能运行起来?很不解。

而且,现在的代码数据和利用ccs加载进DSP的数据貌似根本就不一样,但是为什么能运行起来呢?

当时用-cr选项,代码数据和利用ccs加载进DSP的数据完全一样,反而却运行不起来,这一点很是不解,可能还是没有弄明白HPI启动的深层原理是什么?

js jiang:

回复 Shine:

太谢谢您了!根据您的提示,问题终于搞定了。

赞(0)
未经允许不得转载:TI中文支持网 » 5510HPI启动代码加载不正确
分享到: 更多 (0)