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.

TMS320C6713B: RAM中运行正常,下载到flash后按复位按钮每次都能起来,都很正常,但是只要断电重启,程序就只能跑飞。

Part Number: TMS320C6713B


TI工程师您好:

我将一个简单的串口收发程序再RAM中运行测试通过后下载到flash,下载至flash后(有引导程序,上电会自动将flash程序搬运到RAM运行)不断电只按复位按钮,测试多次程序每次都能正常启动,串口收发都是正常的,但是只要一断电重起,程序可以启动起来,但是串口给板子一发数据,程序就卡死了。请问要从哪方面查找原因呢?堆栈我设置的很大,中断向量表中就一个用于串口接受_c_int08(EDMA)中断。

另外不知道我理解的对不,我的程序中使用了全局变量、static,这些变量应该存在于.cintit   .const   .bss 段中,在上电的引导程序中应该会自定拷贝至变量符号中,还是我的全局变量必须使用   #pragma DATA_SECTION(xmitbuf,"xmit_buf");  指令存放到指定位置才可以。

希望工程师能够指点迷津,谢谢!

  • 再次确认一下boot管脚的设置以及复位信号的时序是否正常。

    但是只要一断电重起,程序可以启动起来,但是串口给板子一发数据,程序就卡死了。

    只能建议您连上仿真器跟一下启动代码调试看看。

  • 您好   boot管脚没问题,设置的从ce1启动,您的意思是断电重新上电和按复位按钮的复位时序有区别导致的吗?

    但是我的现象是程序引导是成功的,重新上电程序也能起来可以看到初始化信息,但是串口一交互就卡死了,有打印信息应该就和复位的时序没有关系了把  因为程序已经起来了

  • 但是我的现象是程序引导是成功的,重新上电程序也能起来可以看到初始化信息,但是串口一交互就卡死了,有打印信息应该就和复位的时序没有关系了把  因为程序已经起来了

    是的,只是让您再次确认一下,通常来说应该是没有问题的。

    用仿真器跟一下程序看看。

  • 您好  问题找到了   串口处理中有一段CRC16的算法,跑死在算法里了,在算法里加点延时就好了,按理说不应该啊,这个算法复杂度也不是太高啊,而且我的数据量也并不大,请问C6000系列的这种片子不是专门跑算法的吗?

  • 请问C6000系列的这种片子不是专门跑算法的吗?

    是跑算法的,如果出现这种情况,建议考虑使用tms320c674x替换,tms320c6713也比较老了。