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

DSP28335仿真模式和正常运行的区别

现在我的DSP28335通过XINTF接口与FPGA进行通信
在debug模式中,从FPGA中读出的数据都是正常的
非debug模式中,上电之后,从FPGA读出来的数据都是0xffff
请问这是什么问题

Green Deng:

最直接的区别是,debug模式程序是运行在ram中,运行速度较快。而脱机情况下程序如果没有copy到ram中运行(memcpy函数),那么是运行在flash中的,运行速度会慢很多。

,

user5197967:

cmd文件和运行方式我都改成flash了,debug之前也会擦除flash,所以不是您说的情况,另外请您看一下我的问题
为什么两个模式下,读取的不一样

,

Green Deng:

这是运行速度的问题,不是cmd或者flash擦没擦除的问题。
运行速度不同,可能就导致你的程序运行会出问题。需要你把对时序性要求比较高的程序段copy到ram中运行。

,

user5197967:

就算我运行方式修改成flash运行,而不是ram运行,debug的时候也都会在ram运行?就算debug之前也把flash都擦除了?

,

Green Deng:

是的,在线debug,程序是运行在ram的,即使使用的是切换成flash配置。

,

user5197967:

那我应该如何将代码搬运到flash运行

,

Green Deng:

可以参考一下这个文档和帖子:
www.ti.com/…/spraau8a.pdf
e2echina.ti.com/…/93973

,

user5197967:

我搬运之后,上电运行,就进入数据越界中断了interrupt void
ILLEGAL_ISR(void)

,

user5197967:

我修改了这几处地方

并口读写函数#pragma CODE_SECTION(write_to_sram, "ram_function")#pragma CODE_SECTION(read_from_sram, "ram_function")

cmd文件

ram_function : LOAD = APPLICATION, PAGE = 0 RUN = RAM_DATA, PAGE = 1 LOAD_START(_ram_functionstart), LOAD_END(_ram_functionsend), RUN_START(_ram_functionsrunstart)

在外设初始化之前

MemCopy(&ram_functionstart, &ram_functionsend, &ram_functionsrunstart); InitFlash();

然后上电运行代码,就到这里了

interrupt void ILLEGAL_ISR(void){ // // Insert ISR Code here //

// // Next two lines for debug only to halt the processor here // Remove after inserting ISR Code // asm (" ESTOP0"); for(;;);}

,

Green Deng:

额,有点乱。你用memcopy的话可以看一下这个例子:e2echina.ti.com/…/185635

,

user5197967:

我确实是这么操作的,上电之后运行,就运行到这里了
interrupt void ILLEGAL_ISR(void)
{
//
// Insert ISR Code here
//

//
// Next two lines for debug only to halt the processor here
// Remove after inserting ISR Code
//
asm (" ESTOP0");
for(;;);
}

,

Green Deng:

你的memcopy函数具体放在哪里?
当你烧写到flash时,要严格按照下面的顺序,先memcopy,在调用Initflash。

MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

InitFlash();

,

user5197967:

我确实是这样的先,memcpy,再Initflash(),然后才初始化各种外设

,

Green Deng:

方便的话可以上传一下工程或者代码吗?

,

user5197967:

这个涉及本司的一些机密

,

user5197967:

这个越界的问题解决了,但是发现最开始的问题并没有得到解决,debug模式下读取到正常,正常上电运行下,就不正常

,

Green Deng:

这个确实目前没有更多的想法,或者你去英文E2E论坛上咨询一下这个问题,看有没有其他工程师有这方面的经验:
e2e.ti.com/…/c2000-microcontrollers-forum

赞(0)
未经允许不得转载:TI中文支持网 » DSP28335仿真模式和正常运行的区别
分享到: 更多 (0)