自發(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)。代碼效率更高,但是在地址非對齊的情況下,可能會出問題。
問題修復(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)致處理線程被異常掛起。
問題修復(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)試日志。
審核編輯 :李倩
-
函數(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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論