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.

关于DM6437 without AIS boot 的问题



使用seed_DEC6437开发板,启动方式为EMIF ROM FASTBOOT without AIS。boot LED 的例程启动没问题。 当换成我自己的程序时就启动不起来,中断进不去。下面是我自己的cmd文件:

MEMORY
{
BootLoader: o = 0x10800000 l = 0x00000400
INT: o = 0x10800400 l = 0x00000400
L2RAM: o = 0x10800800 l = 0x00020000
DDR2: o = 0x80000000 l = 0x10000000
ERAM_01: o = 0x90000000 l = 0x00100000
}

SECTIONS
{
.boot_load: > BootLoader
.bss > DDR2
.cinit > DDR2
.cio > DDR2
.const > DDR2
.data > DDR2
.far > DDR2
.stack > L2RAM
.switch > DDR2
.sysmem > DDR2
.text > DDR2
.vectors > INT
.ddr2 > DDR2
.data:IQmathTables : > ERAM_01
.text:IQmath : > ERAM_01
}

初步怀疑可能是中断的问题

  • Ju Hongwei,

    你的代码在CCS下可以正常运行么?

    如果把LED的例程加在你的代码的最前面,可以看到LED亮灯么?LED的例程程序是放在外部DDR还是内部RAM里面的?

  • 谢谢你的回复!

    我的代码在CCS下运行是没问题的。

    把LED加载到我的程序里是个好建议,我可以尝试一下。

    LED是放在外部DDR,代码如下:

    MEMORY
    {
    BootLoader: o = 0x10800000 l = 0x00000800
    L2RAM: o = 0x10800800 l = 0x0001F800
    DDR2: o = 0x80000000 l = 0x10000000
    }

    SECTIONS
    {
    .bootld: > BootLoader

    .bss > DDR2
    .cio > DDR2
    .const > DDR2
    .data > DDR2
    .far > DDR2
    .stack > L2RAM
    .sysmem > DDR2

    .text > DDR2
    .cinit > DDR2

    .switch > DDR2


    }

    我在想是不是因为我把中断向量表起始地址移到0x400引起的,默认的复位中断应该在零地址吧?

  • 刚试了一下,加了LED后CCS下灯闪没问题,boot后就不行了。看来没有跳转到main,问题会出在哪里呢?

  • Ju Hongwei,

    编一个带debug信息的版本的可执行文件,在代码运行起来后,连上仿真器(注意要去掉gel),然后load symbol,看看具体是挂在了哪里。

    对比一下CCS里面gel文件和你的带里面的初始化部分的差异,把gel里面多的配置加到你的代码里面试试。

  • 弱问一下,怎么生成带debug信息的版本的可执行文件并运行,谢谢。

    另外,我是这样理解的,我的boot.asm里面关于板子的配置已经覆盖了LED的,为什么把LED加进我的工程LED却不闪,是不是可以理解为boot没成功或没有跳进main。

  • 你好,现在boot启动的问题解决了,但是我发现一个问题,从boot启动后,关键算法的运行速度比在线仿真慢很多,导致实时处理完成不了。我仔细对了GEL初始化和BOOT的初始化,boot初始化覆盖了GEL的,是什么原因会导致这样?谢谢

  • Ju Hongwei,

    你能否分享一下之前启动的问题是如何解决的?

    什么叫“boot初始化覆盖了GEL的?你boot初始化里面的配置的和CCS使用的GEL完全一致么?

  • 之前启动不起来是因为硬件问题,数据总线有冲突,boot进来的程序出现错误。

    对的,我对照GEL的初始化,把boot里面没有的增加进去了,包括cache,PLL,DDR。

    现在boot起来后明显一个外部中断的处理时间比仿真长很多。一个外部中断处理包括EDMA读取ADC数据,ADC数据滤波处理。

    到底哪里会引起变慢呢?

  • Ju Hongwei,

    把boot起来后的cache/PLL/DDR相关寄存器值读出来和GEL的时候对比一下。