硬汉嵌入式论坛

 找回密码
 立即注册
查看: 914|回复: 7
收起左侧

[ThreadX全家桶] Threadx 任务统计

[复制链接]

8

主题

21

回帖

45

积分

新手上路

积分
45
发表于 2025-12-21 17:57:48 | 显示全部楼层 |阅读模式
今天给工程加了任务统计,发现最大栈使用不太对,单步跟踪发现p_tcb->tx_thread_stack_highest_ptr总是0,请指教,谢谢
PixPin_2025-12-21_17-48-07.png
回复

使用道具 举报

8

主题

21

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2025-12-21 18:28:07 | 显示全部楼层
解决了,打开编译选项 TX_ENABLE_STACK_CHECKING 就好了
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122752
QQ
发表于 2025-12-22 10:23:10 | 显示全部楼层
zxljack 发表于 2025-12-21 18:28
解决了,打开编译选项 TX_ENABLE_STACK_CHECKING 就好了

好的,
回复

使用道具 举报

2

主题

30

回帖

36

积分

新手上路

积分
36
发表于 2026-4-15 21:30:27 | 显示全部楼层
你这个堆栈大小为什么是对的,我的怎么是1020、2044之类的数字比实际定义的少4个字节?
回复

使用道具 举报

2

主题

30

回帖

36

积分

新手上路

积分
36
发表于 2026-4-15 21:30:58 | 显示全部楼层
你这个堆栈大小为什么是对的,我的怎么是1020、2044之类的数字比实际定义的少4个字节?
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122752
QQ
发表于 2026-4-17 08:13:58 | 显示全部楼层
zouhp 发表于 2026-4-15 21:30
你这个堆栈大小为什么是对的,我的怎么是1020、2044之类的数字比实际定义的少4个字节?

你的实现代码用的那个。
回复

使用道具 举报

30

主题

312

回帖

402

积分

高级会员

积分
402
QQ
发表于 2026-4-17 10:40:55 | 显示全部楼层
VSCode + Cortex-Debug 调试优势区间,什么宏不宏的,只要创建了 任务/内存池/事件 都可以自动扫到监测。

f757964b9d480206a2e081b98958d009.png
回复

使用道具 举报

2

主题

30

回帖

36

积分

新手上路

积分
36
发表于 2026-4-19 13:07:05 | 显示全部楼层
eric2013 发表于 2026-4-17 08:13
你的实现代码用的那个。


/* 遍历任务控制列表(TCB list),打印所有的任务的优先级和名称 */
    while(1)
    {
        Shell_GoTo( 6, 0);
        p_tcb = &AppTaskStartTCB;
            while (p_tcb != (TX_THREAD *)0)
            {                    
            printf("   %2d        %5d      %5d       %5d        %s",
                    p_tcb->tx_thread_priority,
                    p_tcb->tx_thread_stack_size,
                    (int)p_tcb->tx_thread_stack_end - (int)p_tcb->tx_thread_stack_ptr,
                    (int)p_tcb->tx_thread_stack_end - (int)p_tcb->tx_thread_stack_highest_ptr,
                    p_tcb->tx_thread_name);

            p_tcb = p_tcb->tx_thread_created_next;

            if(p_tcb == &AppTaskStartTCB) break;
            else printf("\r\n");
            }
   
            Shell_GoTo( 17, 26);printf("%.2f%% \r\n",   OSCPUUsage);
            Shell_GoTo( 18, 26);printf("%.8fs\r\n",   (double) _tx_execution_idle_time_total/SystemCoreClock);
            Shell_GoTo( 19, 26);printf("%.8fs\r\n",   (double) _tx_execution_thread_time_total/SystemCoreClock);
            Shell_GoTo( 20, 26);printf("%.8fs\r\n",   (double) _tx_execution_isr_time_total/SystemCoreClock);
            Shell_GoTo( 21, 26);printf("%.8fs",       (double)(_tx_execution_thread_time_total + \
                                                                   _tx_execution_idle_time_total   + \
                                                           _tx_execution_isr_time_total)/SystemCoreClock);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-5-26 09:40 , Processed in 1.914884 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表