从TOOL的2.22版本固件开始正式支持,这几天将发布2.22版本固件。uCOS-II的Trace不同于前面的已经发布的uCOS-III,RTX5和ThreadX Trace。
得写个操作说明,因为有个几个变量如果大家的工程检索不到,需要手动填写,还有FreeRTOS,这两个的玩法情况是一样的。
【RTOS Trace操作说明】
https://www.armbbs.cn/forum.php?mod=viewthread&tid=114824
【uCOS-II工程注意事项】
1、推荐使用2.92及其以上版本,含最新的2.93.x
2、创建任务请使用函数OSTaskCreateExt,函数OSTaskCreate创建的任务信息不全。
3、使能uCOS-II的调试信息和统计任务宏定义,如果大家的移植没问题都可以正常展示:
使能OS_DEBUG_EN
使能OS_TASK_STAT_EN
使能OS_EVENT_NAME_EN
使能OS_TASK_CREATE_EXT_EN
使能OS_EVENT_EN, 并设置OS_MAX_EVENTS > 0u
使能OSFlagEn,并设置OS_MAX_FLAGS > 0u
【uCOS-II操作注意事项】
默认uCOS-II的任务控制块结构体成员地址是按照固定方式设置的,但此结构体里面宏定义非常多,导致成员的地址不是固定的,所以需要大家根据需要手动修改。
手动修改也比较简单。点击此按钮
打开uCOS-II.lua文件,修改这几个变量:
为了方便大家修改,执行了一个C函数,大家使用自己的工程运行一次就可以打印出来:
[C] 纯文本查看 复制代码 void TaskTcbPrintf(void)
{
printf("\"OSTCBStkPtr_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBStkPtr)));
printf("\"OSTCBStkBottom_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBStkBottom)));
printf("\"OSTCBStkSize_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBStkSize)));
printf("\"OSTCBNext_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBNext)));
printf("\"OSTCBPrev_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBPrev)));
printf("\"OSTCBDly_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBDly)));
printf("\"OSTCBStat_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBStat)));
printf("\"OSTCBStatPend_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBStatPend)));
printf("\"OSTCBPrio_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBPrio)));
printf("\"OSTCBCtxSwCtr_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBCtxSwCtr)));
printf("\"OSTCBTaskName_off\", %d,\r\n", (int)&((((struct os_tcb*)0)->OSTCBTaskName)));
}
打印出来的数据:
覆盖原有的即可,覆盖后记得保存文件,另外这个文件是GBK编码格式的
下面是解析的动态效果图:
|