各位工程师们好,最近我在调试CC3200 时,会出现 CC3200 工作一段时间后,出现卡死的情况,我所指的卡死是连接wifi 仍然可以连接,但其他的任务(使用的是FreeRTOS)比如连接指示灯的运行任务,根本就没有被调用执行,我程序比较大 .bin文件大概有140K~150k左右,之前怀疑是堆栈溢出,但已经将堆栈大小改大了,并在溢出的回调函数中做了处理,使用的官方的开发版,现目前希望得到以下一些信息:
1,bin文件过大是否会造成这种情况出现
2. 我能否通过仿真,在CCS上实时查看当前的堆栈内存的使用状态,以及各个任务占用CPU的时间
灰小子:
freertos可以使用uxTaskGetStackHighWaterMark()这个函数查看堆栈、内存的使用情况
Susan Yang:
1 能否请您简要描述下您现在的程序情况?
2 您可以在仿真时通过CCS–>VIEW 下的 MemoryAllocation 以及Stack Usage 来查看
user6138550:
回复 Susan Yang:
你好,感谢回复,程序情况是这样的:
我创建了4个任务,程序上电,通过打印提示能够知道程序已经正常启动并运行,之前确实有过这样的现象:在打印过多的字符后,程序就出现卡死,后来将任务栈改大之后,未出现该问题,但现在程序运行一段时间后,就出现卡死现象,我在某个任务做了一个清看门狗的操作,当卡死之后,那个任务不会被执行,就导致没有及时喂狗,看门狗定时触发了中断函数,但即使卡死,我仍然可以连接CC3200的AP,你说的Memory Allocation 以及Stack Usage我查看了,Memory Allocation里面SRAM_CODE与SRAM_DATA分别占用了97%与90%,Stack Usage 里面也有几个函数存在占用98%的情况,只是我不知道该如何去解决当前这些问题
Susan Yang:
回复 user6138550:
若是可以的话,请您给出您的cmd文件以及Memory Allocation的Stack Usage相关截图,谢谢
另外您现在堆栈改成多大了?
user6138550:
回复 Susan Yang:
你好,感谢回复,目前情况是这样的:a.docx
user6138550:
回复 灰小子:
好的,感谢你的回答,我先试试看