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.

F28035 在FLASH里运行就这么难????

三天了,一直在搞这个事。在RAM里运行正常的程序,烧到FLASH就不能运行了。愁!!

  多次更改CMD文件。有时能在烧写时仿真,但断电后再启动就不行了。有时在烧后仿真也不行。有时仿真只能在汇编的step into中运行。也改过initFlash()函数。

 

愁啊,愁……

  • TI的例程有个FLASH工程。跑一下就明白了。不要自己去搞。

  • 这件事情搞了3天一定是有什么小的地方没有小心。建议楼主检查程序初始化。

    碰到“有时能在烧写时仿真,但断电后再启动就不行了。有时在烧后仿真也不行。”一般是程序初始化不完全导致,有上次运行后的数据存留在RAM中影响本次运行。

    另外再检查一下有实时要求的必须放在RAM的子程序吧,比如中断子程序,延时子程序.....

    没有把一些变量放到FLASH中,没有把ECONST数据放在程序中初始化,没有把部分数据放在RAM中导致掉电遗失。

  • 非常感谢以上专家热心帮助。

    昨晚已经可以在FLASH里运行了。

    在没有达到目的时,我是乱改程序、设置。我只记得最后一次不正常时,是一个延时函数,即一个宏#define DELAY_US(A)  DSP28x_usDelay(((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L)

    。在这里作单步运行时,指令指针就跑到了不该去的地方。我把它换为例程中的DelayUs(Uint16)后,就正常了。

    请问这是为什么?

  • 这需要Assembly step into单步看反汇编才能知道,看看运行了些什么指令,再进一步分析。