0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

RT-Thread 4.1.0特性解析

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:RTThread物聯(lián)網(wǎng)操作 ? 2022-04-19 14:43 ? 次閱讀

自發(fā)布v4.1.0 beta版本以來,我們一直積極收集大家的反饋與問題報告,經(jīng)過我們和社區(qū)小伙伴們的共同努力,一起修復(fù)了一些問題,完善了新增的特性,現(xiàn)在RT-Thread v4.1.0 版本正式發(fā)布了。 這篇文章是專門介紹內(nèi)核部分更新的內(nèi)容的。

內(nèi)核部分更新

新增特性

【hook】增加靜態(tài)宏方式的HOOK機制 【tick】為rt_tick_increase增加HOOK機制 【kservice】增加RT_KSERVICE_USING_STDLIB、增加rt_strcpy

修復(fù)的問題

修復(fù)了一個特定場景下會引起軟件定時器停止工作的BUG

其他優(yōu)化

完善了內(nèi)核的調(diào)試日志

特性解析

1. 新增了靜態(tài)宏方式的HOOK機制

從4.1.0版本開始,RT-Thread在保證向前兼容的基礎(chǔ)上對原有的HOOK方式進行了改進,實現(xiàn)了如下的效果:

與原有使用函數(shù)指針進行“運行時刻”HOOK的方式兼容,依賴原有方式進行代碼插入或HOOK的模塊無需修改;

使用RT_USING_HOOK作為總開關(guān)

- 當(dāng)未定義該宏時,將關(guān)閉所有HOOK功能,也不再生成任何相關(guān)代碼

- 當(dāng)定義該宏時,在未開啟傳統(tǒng)“函數(shù)指針HOOK”時,默認情況下也不再生成額外代碼

允許用戶通過“插入宏的方式”在編譯時刻精細控制具體HOOK哪個位置

- 可以插入任意代碼塊——其中就包括函數(shù)指針、對普通函數(shù)的調(diào)用等等

具體使用方式可以參考共享者小伙伴的這篇文章:
RT-Thread新版本中HOOK的使用方法(請復(fù)制以下鏈接至瀏覽器打開//club.rt-thread.org/ask/article/3669.html) 注意:非rtos資深用戶,請謹慎使用HOOK機制

2. 為rt_tick_increase增加HOOK機制

我們?yōu)?rt_tick_increase 增加了 HOOK 機制。這樣在某些場景下,比如:當(dāng)用戶需要一個精度較高的時間基準,或者要做一些和系統(tǒng)心跳同頻的事情的時候,就可以借助這個機制。利用前一部分的靜態(tài)宏的方式或者使用API rt_tick_sethook設(shè)定hook函數(shù)的方式,在系統(tǒng)心跳的時候執(zhí)行一些“非常簡短”的操作。 注意:由于rt_tick_increase的執(zhí)行頻率較高,設(shè)定的HOOK函數(shù)一定不能執(zhí)行復(fù)雜的操作,會增大系統(tǒng)負荷!

3. 增加RT_KSERVICE_USING_STDLIB

增加了一些針對 kservice.c 的配置宏,可以配置使用c庫里提供的內(nèi)存函數(shù)替換 RT-Thread Kservice 實現(xiàn)。代碼效率更高,但是在地址非對齊的情況下,可能會出問題。

2e109cf6-bf94-11ec-9e50-dac502259ad0.png

問題修復(fù)

軟件定時器BUG修復(fù)

問題描述:

在特定場景下,軟件定時器處理線程會錯誤的掛起自身,導(dǎo)致如果之后沒有啟動軟件定時器的操作,來喚醒處理線程的話,所有的軟件定時器都會停止工作。

相關(guān)鏈接:https://github.com/RT-Thread/rt-thread/issues/5623

問題場景:

當(dāng)一個定時器到達設(shè)定的超時時間,此時軟件定時器處理線程會嘗試獲取下一個定時器的超時時間,來決定何時喚醒自身執(zhí)行超時操作。如果獲取不到下次超時時間的話,就會掛起自身,永久等待。這里獲取下一次超時時間的函數(shù)之前的版本有問題,如果下一次的超時時間恰好為 RT_TICK_MAX 的話,也會被認為是沒有獲取到,就會導(dǎo)致處理線程被異常掛起。

2e2c4c62-bf94-11ec-9e50-dac502259ad0.png

問題修復(fù):

RT-Thread v4.1.0版本已經(jīng)修復(fù)了這個問題:https://github.com/RT-Thread/rt-thread/pull/5637。推薦大家同步修改此補丁。

其他優(yōu)化

完善了內(nèi)核的調(diào)試日志,添加 RT_DEBUG_DEVICE 類型,統(tǒng)一使用 RT_DEBUG_LOG 宏管理內(nèi)核的調(diào)試日志。

2e47eaa8-bf94-11ec-9e50-dac502259ad0.png

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4286

    瀏覽量

    62341
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4728

    瀏覽量

    68252
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1265

    瀏覽量

    39854

原文標題:RT-Thread 4.1.0 特性解析之內(nèi)核

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread上CAN實踐

    開箱測試RT-Thread官方已完成了對英飛凌XMC7200EVK的移植,通過shell可以看到做好了uart3的console。本文將介紹如何進行RT-ThreadCan移植。接下來我們要完成CAN_FD的驅(qū)動移植,并正常啟動RT-T
    的頭像 發(fā)表于 11-13 01:03 ?269次閱讀
    <b class='flag-5'>RT-Thread</b>上CAN實踐

    開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會報名啟動!

    親愛的RT-Thread開發(fā)者我們很高興地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread開發(fā)者大會)正式啟動報名!2024RT-Threa
    的頭像 發(fā)表于 10-29 08:06 ?166次閱讀
    開源共生 商業(yè)共贏 | <b class='flag-5'>RT-Thread</b> 2024開發(fā)者大會報名啟動!

    2024 RT-Thread全球巡回 線下培訓(xùn)火熱來襲!

    親愛的RT-Thread社區(qū)成員們:我們非常高興地宣布,2024年RT-Thread全球開發(fā)者線下培訓(xùn)即將拉開帷幕!24年全球巡回培訓(xùn)將覆蓋超10座城市及國家,為開發(fā)者提供一個深入學(xué)習(xí)RT-Thread嵌入式開發(fā)的絕佳機會。
    的頭像 發(fā)表于 08-07 08:35 ?839次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓(xùn)火熱來襲!

    【好書推薦】RT-Thread設(shè)備驅(qū)動開發(fā)指南

    近年來國內(nèi)芯片產(chǎn)業(yè)和物聯(lián)網(wǎng)產(chǎn)業(yè)的快速崛起,行業(yè)發(fā)展迫切需要更多人才,尤其需要掌握嵌入式操作系統(tǒng)等底層技術(shù)的人才。隨著RT-Thread被更廣泛地應(yīng)用于行業(yè)中,開發(fā)者對嵌入式驅(qū)動開發(fā)的需求越來越
    的頭像 發(fā)表于 08-01 08:35 ?492次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>設(shè)備驅(qū)動開發(fā)指南

    RT-Thread 新里程碑達成——GitHub Star 破萬!

    RT-Thread實時操作系統(tǒng)開源項目在GitHub上的star數(shù)量突破一萬!截止發(fā)文,RT-Thread作為實時操作系統(tǒng)在業(yè)界Star數(shù)量排名第一!倉庫地址:https://github.com
    的頭像 發(fā)表于 07-04 08:35 ?381次閱讀
    <b class='flag-5'>RT-Thread</b> 新里程碑達成——GitHub Star 破萬!

    6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我們將在杭州舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 05-28 08:35 ?395次閱讀
    6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    2024 RT-Thread 全球技術(shù)大會演講議程發(fā)布!

    RT-ThreadGlobalTechConference(RT-ThreadGTC,RT-Thread全球技術(shù)大會)致力于圍繞RT-Thread基礎(chǔ)軟件技術(shù)發(fā)展、實踐創(chuàng)新、開發(fā)者能力
    的頭像 發(fā)表于 05-16 08:34 ?463次閱讀
    2024 <b class='flag-5'>RT-Thread</b> 全球技術(shù)大會演講議程發(fā)布!

    5月16日南京站RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    5月16日下午我們將在南京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 05-01 08:35 ?303次閱讀
    5月16日南京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    RT-Thread混合部署Workshop北京站來啦!

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-19 08:34 ?389次閱讀
    <b class='flag-5'>RT-Thread</b>混合部署Workshop北京站來啦!

    4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我們將在北京舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 04-16 08:35 ?384次閱讀
    4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深嵌入式軟件工程師農(nóng)曉明老師為您講
    的頭像 發(fā)表于 03-27 11:36 ?747次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!

    4月10日我們將在深圳福田舉辦RT-Thread混合部署線下workshop,在瑞芯微RK3568平臺上實現(xiàn)同時運行RT-Thread和linux,本次workshop邀請到RT-Thread資深
    的頭像 發(fā)表于 03-27 08:34 ?469次閱讀
    4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    RT-Thread成為恩智浦注冊合作伙伴,共同賦能工業(yè)與物聯(lián)網(wǎng)應(yīng)用開發(fā)!

    前不久,恩智浦半導(dǎo)體加入RT-Thread全球合作伙伴計劃,成為RT-Thread高級會員合作伙伴。同時,RT-Thread現(xiàn)已成為恩智浦注冊合作伙伴。
    的頭像 發(fā)表于 03-15 09:15 ?811次閱讀

    恩智浦半導(dǎo)體正式加入RT-Thread全球合作伙伴計劃!

    前不久,恩智浦半導(dǎo)體正式加入RT-Thread全球合作伙伴計劃,成為RT-Thread高級會員合作伙伴。同時,RT-Thread現(xiàn)已成為恩智浦注冊合作伙伴(RT-Thread| 簡介合
    的頭像 發(fā)表于 03-14 10:40 ?557次閱讀
    恩智浦半導(dǎo)體正式加入<b class='flag-5'>RT-Thread</b>全球合作伙伴計劃!

    【PSoC?62 for RT-ThreadRT-Thread攜手英飛凌舉辦嵌入式網(wǎng)絡(luò)應(yīng)用開發(fā)沙龍,圓滿落幕!

    2023年12月09日,深圳,全球半導(dǎo)體解決方案的領(lǐng)導(dǎo)者英飛凌科技(中國)有限公司(以下簡稱:英飛凌)與上海睿賽德電子科技有限公司(RT-Thread)在深圳塘朗聯(lián)合舉辦了“嵌入式網(wǎng)絡(luò)應(yīng)用開發(fā)”為主
    的頭像 發(fā)表于 12-14 16:25 ?518次閱讀
    【PSoC?62 for <b class='flag-5'>RT-Thread</b>】<b class='flag-5'>RT-Thread</b>攜手英飛凌舉辦嵌入式網(wǎng)絡(luò)應(yīng)用開發(fā)沙龍,圓滿落幕!