Part Number:TMS320F28377D
在使用DSP28377D通过scic模块与位置传感器进行通讯,当程序烧写RAM里面时,程序可以正常运行,scic可以正常的发送和接受数据,但是我把程序烧写到Flash里面的时候,程序一直等待不到接受标志位置1,导致程序卡死在这里,一直在while那里等待,无法运行。当把while注释掉,程序就可以运行。可以确定scic配置正确,波特率正确,发送和接受都使能了,在RAM里面可以正常运行,当烧写flash后通过串口调试软件也可以确定dsp给位置传感器发送了正确的指令,位置传感器也返回了正确的指令,所以不清楚接受寄存器的标志位为啥不置位,希望给与指导和解答,谢谢,本人联系方式13852037592.
void RS485_ReceiveData()
{
Uint16 j=0;
for(j=0;j<=8;j++)
{
while(ScicRegs.SCIRXST.bit.RXRDY != 1);
RS485_RX_BUFF[j] = ScicRegs.SCIRXBUF.all; }
}
Yale Li:
程序中有没有用到必须copy到RAM中运行的代码?比如delay函数、操作flash的函数
,
feng dong:
用到了delay函数,请问需要添加什么代码,谢谢,本人联系方式13852037592
,
feng dong:
是不是这么一段话,我在程序里面添加了的
#ifdef _FLASH// These are defined by the linker (see device linker command file)extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadSize;extern Uint16 RamfuncsRunStart;#endif
void main(void){#ifdef _FLASH memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);#endif
InitSysCtrl();
#ifdef _FLASH InitFlash();#endif
,
Yale Li:
是的,这些是代码里添加的。cmd文件中也需要做相应的修改。
可以参考一下例程中的写法。每个例程都有针对烧录到FLASH、RAM的不同配置。也有烧录到FLASH的空工程。
,
feng dong:
我是直接用的led双核烧写到flash程序,在它的基础上加的自己的程序,用的它自带的CMD文件,请问还有哪有需要修改,方便加个微信吗,谢谢,我的联系方式为13852037592
,
Yale Li:
SPRA958L_Running an Application from Internal Flash Memory on the TMS320F28xxx DSP