CCS进行debug停止后不断电程序仍然可以运行

it2023-05-19  76

最近开发一个项目,使用CCS进行编译和debug,发现debug的一个问题,这个会导致我们误判,比如我遇到的问题:

描述

我在调试TDA4x的内置mcu,外面挂了一个NorFlash,我在调试这个Flash的擦除、读和写功能,但是突然发现出现了掉电之后不保存的问题,这就让我纳闷了,命名在debug的时候看到Flash地址已经写进去值了,而且也可以读出来,但是停止debug然后断电,再继续debug的时候发现那块地址写入的数据都没保存,尴尬。。。

分析:

经过漫长的调试,而且咨询了供应商,还是没有得到解决,然后在一个阳光明媚的下午,突然我想到了一个问题,是和我的操作有关,可能是这个问题导致的,然后开始验证这个想法,果然是这个问题导致的,这个问题对我映像很深刻,所以就想记录下来。

操作:

编译 -> 上电debug ->运行case -> 停止debug -> 断电

对操作分析

上述操作咋一看没啥问题,但是我忽略了一个问题,CCS在debug界面按了停止按钮之后,如果不断电的话程序会继续执行,就是在“停止debug -> 断电”这个步骤间会有个几秒的时间,这几秒会继续运行程序。

测试case分析:

如下是我的测试case,先擦除,然后写,最后读,这个case是放在一个周期任务中执行的,那么按照我的操作,在读操作完之后我将debug停止,然后再断电,这个过程中还会运行程序,而这个case是周期执行的,所以它有很大概率就会跑到擦除这一步,因为我擦除的大小是0x100000,需要几秒钟的时间,正好这个操作的间隔也是几秒,所以就会把我debug写入的数据都擦除掉,所以我再次上电看到的现象就是写入的数据没了,即掉电不保存。

改进操作:

编译 -> 上电debug ->运行case -> 断电 -> 停止debug

我操作改为,写完数据并读取成功后,先断电,然后按停止debug的按钮,然后再次上电看写入的数据,果然是有的,经过多次测试,完全没问题,问题解决,被自己坑了,尴尬。。。

 

如果看了这个记录对你有帮助的话请点个赞鼓励一下呀!!!

最新回复(0)