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.

仿真模式 和 烧写到flash 运行的区别



我的程序在仿真模式下运行数据正常,但是烧入flash之后, 发现里面数据都是错的,而且还都是随机数。

请问这两种模式有什么不同???

是不是CMD文件那里分配的不对? 

  • 你好,xiansheng

    程序烧入Flash和烧入RAM这两种烧写方式分别使用的是两个不同的 cmd 文件,所以请首先请确认你的工程使用的是flash烧写所对应的 cmd 文件。

    如果使用的是RAM烧写所对应的cmd文件,则程序只能在仿真模式下运行,并没有写入flash。在断开仿真器重新上电之后,所运行的仍然是之前flash中一直存在的程序。

  • 谢谢您! 问题找到了,的确是CMD文件的问题。 同时上次调我的程序,在CMD文件里改了一些东西,后来改回来的时候没改全。

    把CMD文件中的“.econst             : > RAMH0  PAGE = 1 ” 改为“.econst             : > FLASHA      PAGE = 0” 就好了。 

    之前的现象是所有初始化好的数组中的数据会乱,而且经常变化。因为.econst段里保存的都是静态变量和已初始化的变量,所以定位到flash中就没问题了。

  • 很高兴得知问题已经解决!

    建议您在修改 cmd 文件之前,可以保留一份原始的文件作为备份,这样有助于在出现问题时进行对比。

  • 当然也得感谢您的热心相助! 

    我同事拿过去试了个东西,改完之后没告诉我。 多备份的确是好办法,有时是程序改动大的时候。改一点测试一点,总比全改完一测试进非法中断在去检查要好得多。