近段时间,遇到F28035运行中无端复位,中断资源排查,主函数程序排查,均未解决。查看堆栈大小,不知道是否是否因为堆栈不足,增大堆栈空间,继续观察。
-
CCS 堆栈配置
cmd 文件中配置:
此处0x380就是实际使用的最大值(map文件中也可以找到),该值不能超过RAMM0的长度。如果想将这个值改大,那么就重新分配 RAMM0 和 RAMM1的空间大小,最大的情况就是把两个空间合并成一个空间(0x7B0)。 -
堆栈使用大小评估
在堆栈空间的特定内存区域中预先写入标志性数据如(0x5A)。经由程序的执行,使用过的堆栈空间内的数据会被其他数据覆盖掉,从栈尾开始向低地址走的标志性数据则因其内存空间未被使用而得以保留不变,当然这一切的前提是堆栈不发生溢出。通过寻找被修改数组的最大地址即可以判断出这一测试过程中程序实际所使用的最大堆栈规模。
理解了以上方法的原理,下面看在CCS中如何实现。可以通过调试模式下的“Memory Browser”,从0x50地址开始,查看RAM变量的情况,数据刷新说明空间被占用。另外一种方式,通过往固定RAM地址写数据,运行一段时间看数据有没有被刷新来判断上限 。
运行中复位,是比较严重的问题,在不确定堆栈大小的情况下,堆栈空间最好尽量配置大一些。
参考资料: https://e2echina.ti.com/blogs_/b/the_process/posts/ti-c2000