现在调试easylink 和modbus 协议栈的时候遇到了 硬件异常中断问题,现在不清楚是访问哪个硬件资源或者函数引起的,想看一下 代码调用的 call stack ,但是在ccs中找了半天没找到,请问 CCS7中有 类似的功能么
Susan Yang:
“ 硬件异常中断问题”能否详细说明一下?您现在使用的是哪款芯片?
user1768925:
回复 Susan Yang:
我现在用的是 CC1310, 其实我不关心 异常中断,我就是想通过 代码的调用记录 call stack 看看 在产生异常前 调用的是哪个函数,所以 CCS7 这个 显示函数调用关系的 界面在哪啊 类似IAR中的 Call Stack
Susan Yang:
回复 user1768925:
如上所述,call stack 已集成到调试视图中了,您可以试一下
user1768925:
回复 Susan Yang:
恩,按照您的方法尝试了一下还是没法看到,只显示当前的进入的这个异常中断中,我进入的异常中断是 ti_sysbios_family_arm_m3_hwi_excHandler__I;
目前我的任务中使用了 串口驱动 定时器驱动 和 easylink 协议栈; 实现的功能是
1、modbus接收任务通过event阻塞 , 串口接收1个字节 开启10ms定时器超时 再次接收到1个字节时刷新定时器计数器,知道产生定时器10ms超时,在这个超时中发送一个event 给modbus接收任务; 接收任务开始处理这一帧接收的数据;
2、easylink 准备实现1对多的 发送接收,目前测试的时候是点对点发送接收,使用的是阻塞方式;成功接收数据后将数据处理后放在modbus寄存器中;
目前的现象: modbus 和easylink 分开测试 只编译其中一个功能,运行测试都是没问题的,是有2个功能编译到一起,同时工作的时候回产生上面的异常中断;这个异常中断
/* excHandler__I */#define ti_sysbios_family_arm_m3_Hwi_excHandler ti_sysbios_family_arm_m3_Hwi_excHandler__Ixdc__CODESECT(ti_sysbios_family_arm_m3_Hwi_excHandler__I, "ti_sysbios_family_arm_m3_Hwi_excHandler")__extern xdc_Void ti_sysbios_family_arm_m3_Hwi_excHandler__I( xdc_UInt *excStack, xdc_UInt lr );
我的问题:我应该怎么定位这个产生异常中断的原因,上面的是宏定义没找到哪里能调用这个函数。
user1768925:
回复 Susan Yang:
追加一下,就是这个异常产生的时候,是随机的是系统运行起来,modbus 正常通讯,easylink 的2个节点建立连接通讯后,运行一段时间,时间有长有短 就会进入到这个 异常中断中
Susan Yang:
回复 user1768925:
触发的HWI异常处理程序指示CPU异常,实际上没有调试此异常的好方法。
建议您采用如下的方式:
在debug时,点击View -> Registers,查看CPU_SCS 下的CFSR寄存器的值(Configurable Fault Status)
看哪一位出现了异常
user1768925:
回复 Susan Yang:
感谢您的回复,我想看看TI-ROTS的内核调试记录,我应该怎样打开os的内核log日志啊,我想看一下任务上下文切换,想确认下在运行哪个任务的时候系统跑飞了,因为串口现在运行Modbus没法要打印记录,还有就是我在看串口驱动和easylink驱动的时候,驱动内也有 debug_log 我应该怎么打开它们,这些log 是记录在 片上的ram中么。
Susan Yang:
回复 user1768925:
您是指的是下面链接的内容?
processors.wiki.ti.com/…/System_Analyzer_Tutorial_3C
processors.wiki.ti.com/…/SystemAnalyzerTutorial1C