在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RT-Thread Debug分析與調整方案

冬至子 ? 來源:螺絲松掉的人 ? 作者:螺絲松掉的人 ? 2023-07-22 15:32 ? 次閱讀

RT-Thread 中可以通過 menuconfig 使能相關宏,配置和使用 debug 功能,即可向工作臺輸出程序運行信息,方便調試和使用。

但目前的 rt-thread(5.0.0) 關于 debug 存在 rtdebug.h 和 rtdbg.h 這兩個文件;存在冗余,并且 rtdbg.h 中實現的 LOG_E , LOG_W , LOG_I , LOG_D 更優,因此考慮將 rtdebug.h 中的 RT_DEBUG_LOG 廢棄,全部替換為 LOG_x

問題分析

rtdebug.h 中的 RT_DEBUG_LOG 具體實現如下:

#define RT_DEBUG_LOG(type, message)
do
{
if (type)
rt_kprintf message;
}
while (0)

調用示例如下:

RT_DEBUG_LOG(RT_DEBUG_THREAD, ("startup a thread:%s with priority:%dn",
thread->parent.name, thread->current_priority));
/* RT_DEBUG_THREAD default is 0 */

可以看出, RT_DEBUG_LOG 可以通過相關宏,實現對特定內核對象的單獨使能調試。

但 rtdbg.h 中的 LOG_x 是將調試信息分為不同的等級,通過與設定的 DBG_LVL 進行比較,輸出不同等級的調試信息。

可以看出 LOG_x 主要針對的是不同等級, RT_DEBUG_LOG 針對的是不同對象。那接下來要考慮的重點就是:廢棄 rtdebug.h 中 RT_DEBUG_LOG 的同時,如何使用 LOG_x 保留單獨調試不同內核對象的特性。

解決方案

使用以下解決方案:

#define DBG_TAG "kernel.thread"
#ifdef RT_DEBUG_THREAD
#define DBG_LVL DBG_LOG
#else
#define DBG_LVL DBG_WARNING
#endif
#include
以內核對象 thread 為例,將以上代碼添加到對應的 thread.c 文件中,即可使用對應的 LOG_x,可以注意到,宏判斷使用的是 #ifdef RT_DEBUG_THREAD 而不再是通過判斷對應宏值為 0 還是 1,這是因為 rtdebug.h 老版本問題,現在可以通過 Kconfig 非常便捷的定義相關宏,因此修改了相應的 Kconifg 文件:

/* old version */
config RT_DEBUG_THREAD_CONFIG
    bool "Enable debugging of Thread State Changes"
    default n
config RT_DEBUG_THREAD
    int
    default 1 if RT_DEBUG_THREAD_CONFIG
/* old version */

==============================================================================
/* new version /
config RT_DEBUG_THREAD
bool "Enable debugging of Thread State Changes"
default n
/
new version */

可以看出,修改后更加的簡潔明了。

并且之前使用 RT_DEBUG_LOG 的內核對象的調試信息基本都為 LOG_D 級別,于是就可以使用 LOG_D 進行替換。

需要注意,使用 LOG_x 替換 RT_DEBUG_LOG 時,要刪去換行符,因為 LOG_x 已經帶有換行的效果。

于是我們就通過定義相關的宏,更改了對應內核對象的調試等級,使用 LOG_x 實現了單獨調試不同內核對象的效果。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RT-Thread
    +關注

    關注

    31

    文章

    1304

    瀏覽量

    40300
收藏 人收藏

    評論

    相關推薦

    RT-Thread記錄(二、RT-Thread內核啟動流程)

    在前面我們RT-Thread Studio工程基礎之上講一講RT-Thread內核啟動流程.
    的頭像 發表于 06-20 00:30 ?5075次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(二、<b class='flag-5'>RT-Thread</b>內核啟動流程)

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT-Thread實時操作系統的編程指南
    發表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導在RT-Thread實時操作系統環境下如何進行編 程。
    發表于 11-26 16:16 ?0次下載

    RT-Thread Studio驅動SD卡

    RT-Thread Studio驅動SD卡前言一、創建基本工程1、創建Bootloader2、創建項目工程二、配置RT-Thread Settings三、代碼分析1.引入庫2.讀入數據四、效果驗證
    發表于 12-27 19:13 ?20次下載
    <b class='flag-5'>RT-Thread</b> Studio驅動SD卡

    RT-Thread全球技術大會:螢石研發團隊使用RT-Thread的技術挑戰

    RT-Thread全球技術大會:研發團隊使用RT-Thread的技術挑戰 ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 11:36 ?1335次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:螢石研發團隊使用<b class='flag-5'>RT-Thread</b>的技術挑戰

    RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制

    RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 14:49 ?1573次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:Kconfig在<b class='flag-5'>RT-Thread</b>中的工作機制

    RT-Thread全球技術大會:在RT-Thread上編寫測試用例

    RT-Thread全球技術大會:在RT-Thread上編寫測試用例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:28 ?1506次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:在<b class='flag-5'>RT-Thread</b>上編寫測試用例

    RT-Thread全球技術大會:RT-Thread測試用例集合案例

    RT-Thread全球技術大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:34 ?2126次閱讀
    <b class='flag-5'>RT-Thread</b>全球技術大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    RT-Thread學習筆記 RT-Thread的架構概述

    RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發表于 07-09 11:27 ?4584次閱讀
    <b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Thread文檔_workqueue

    RT-Thread文檔_workqueue
    發表于 02-22 18:40 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_workqueue

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?4080次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習

    RT-Thread v5.0.2 發布

    RT-Thread 代碼倉庫地址: ●? https://github.com/RT-Thread/rt-thread RT-Thread 5.0.2 版本發布日志詳情: ●? htt
    的頭像 發表于 10-10 18:45 ?1539次閱讀
    <b class='flag-5'>RT-Thread</b> v5.0.2 發布
    主站蜘蛛池模板: 欧美性猛交xxxx乱大交高清| 国产成人永久在线播放| 韩国视频在线播放| 精品一区 二区三区免费毛片| 男人不识本站| 韩国xxxxx视频在线| 国产高清免费| 最新版天堂资源官网| 婷婷视频网| 前后灌满白浆护士| 黄色录像欧美| 五月激情网站| 日本欧美一区二区三区免费不卡 | 免费观看三级毛片| 免费恐怖片| 国产精品嫩草影院在线播放| ts人妖系列在线专区| 亚洲免费小视频| 免费看片你懂的| 97天天摸天天碰天天爽| 好大好猛好爽好深视频免费| 亚洲视频一二三| 亚洲精品久久久久久婷婷| 四虎影院一级片| 免费a级毛片出奶水| www.亚洲色图.com| 日本最黄| 91亚洲视频在线| 一级特黄女人生活片| 日本精品一卡二卡≡卡四卡| 户外露出精品视频国产| 午夜啪| 国产精品午夜在线观看| 亚洲一区 在线播放| 亚洲美女激情视频| 欧美日韩亚洲国产一区二区综合| 国内免费视频成人精品| 天天拍天天干天天操| 人人揉揉香蕉大青草| 一本到卡二卡三卡视频| 男人的天堂视频在线|