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

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

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

RT-Thread v4.1.0版本正式發(fā)布

科技綠洲 ? 來源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:RTThread物聯(lián)網(wǎng)操作 ? 2022-04-15 16:23 ? 次閱讀

自發(fā)布v4.1.0 beta版本以來,我們一直積極收集大家的反饋與問題報(bào)告,經(jīng)過我們和社區(qū)小伙伴們的共同努力,一起修復(fù)了一些問題,完善了新增的特性,現(xiàn)在RT-Thread v4.1.0 版本正式發(fā)布了。

這篇文章是專門介紹內(nèi)核部分更新的內(nèi)容的。

內(nèi)核部分更新

新增特性

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

修復(fù)的問題

修復(fù)了一個(gè)特定場(chǎng)景下會(huì)引起軟件定時(shí)器停止工作的BUG

其他優(yōu)化

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

特性解析

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

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

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

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

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

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

允許用戶通過“插入宏的方式”在編譯時(shí)刻精細(xì)控制具體HOOK哪個(gè)位置

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

具體使用方式可以參考共享者小伙伴的這篇文章:

RT-Thread新版本中HOOK的使用方法(請(qǐng)復(fù)制以下鏈接至瀏覽器打開:https://club.rt-thread.org/ask/article/3669.html)

注意:非rtos資深用戶,請(qǐng)謹(jǐn)慎使用HOOK機(jī)制

2. 為rt_tick_increase增加HOOK機(jī)制

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

注意:由于rt_tick_increase的執(zhí)行頻率較高,設(shè)定的HOOK函數(shù)一定不能執(zhí)行復(fù)雜的操作,會(huì)增大系統(tǒng)負(fù)荷!

3. 增加RT_KSERVICE_USING_STDLIB

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

pYYBAGJZK1-APy8-AAEixPPfPHE008.png

問題修復(fù)

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

問題描述:

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

問題場(chǎng)景:

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

poYBAGJZK2yAbU_pAAEBMP0lRd4367.png

問題修復(fù):

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

其他優(yōu)化

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

poYBAGJZK3aAae5XAAES18_0e14273.png

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

    關(guān)注

    69

    文章

    4699

    瀏覽量

    87088
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3231

    瀏覽量

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

    關(guān)注

    31

    文章

    1261

    瀏覽量

    39838
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RT-Thread記錄(一、版本開發(fā)環(huán)境及配合CubeMX)

    RT-Thread 學(xué)習(xí)記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT-Thread Studio開發(fā)環(huán)境 及
    的頭像 發(fā)表于 06-20 00:28 ?5102次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(一、<b class='flag-5'>版本</b>開發(fā)環(huán)境及配合CubeMX)

    RT-Thread 4.0版本

    (下拉至底部及可見RT-Thread4.0壓縮包)RT-Thread 4.0版本代碼Release啦!因?yàn)橹С諷MP(對(duì)稱多核處理器)的緣故,RT-Thread
    發(fā)表于 08-05 06:34

    RT-Thread v4.1.0 正式發(fā)布了!

    ,不會(huì)相互干擾完善了已有工具的支持,如:CMake、ArmClang、Keil、Eclipse的支持后面RT-Thread會(huì)繼續(xù)維護(hù)好已有特性、BSP的支持,并會(huì)在一些高性能芯片上發(fā)力,加強(qiáng)對(duì)64位以及多核的支持。目前,V4.1.0版本
    發(fā)表于 04-14 14:00

    RT-Thread v4.1.0版本內(nèi)核更新解析

    發(fā)布v4.1.0 beta版本以來,我們一直積極收集大家的反饋與問題報(bào)告,經(jīng)過我們和社區(qū)小伙伴們的共同努力,一起修復(fù)了一些問題,完善了新增的特性,現(xiàn)在RT-Thread
    發(fā)表于 06-10 14:49

    RT-Thread v4.1.0版本內(nèi)核部分更新內(nèi)容介紹

    _KSERVICE_USING_STDLIB、增加rt_strcpy修復(fù)的問題修復(fù)了一個(gè)特定場(chǎng)景下會(huì)引起軟件定時(shí)器停止工作的BUG其他優(yōu)化完善了內(nèi)核的調(diào)試日志特性解析新增了靜態(tài)宏方式的HOOK機(jī)制從4.1.0版本開始,
    發(fā)表于 11-22 16:17

    RT-Thread Studio生成的4.0.4版本為什么會(huì)有C-Style部分?

    ?具體過程如下:首先RT-Thread Studio新建基于開發(fā)板CH32V307V-R1工程RTT版本是4.0.4,F(xiàn)inSH組件目錄較4.1.0(CH32
    發(fā)表于 02-14 10:50

    支持RT-Thread V4.1.0的芯片BSP包,可以用V4.1.1版本嗎?

    我目前所用的 MCU 是 STM32F411CE,安裝的 STM3F4 芯片支持包,說明是支持 RT-Thread V4.1.0 版本。 但我看 V4.1.1
    發(fā)表于 05-17 10:43

    RT-Thread v4.1.0中FAL介紹

    V4.1.0 中,將 fal 軟件包重新定義為 RT-Thread 內(nèi)部組件。
    的頭像 發(fā)表于 04-26 13:34 ?3728次閱讀

    RT-Thread V4.1.0新特性CMake介紹與構(gòu)建CMake工程

    ? ? CMake 支持 在 RT-Thread 4.1.0 正式發(fā)布版中,添加了對(duì) CMake 的支持。開發(fā)者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持
    的頭像 發(fā)表于 05-24 19:20 ?2931次閱讀

    RT-Thread 4.1.0的CMake構(gòu)建教程

    CMake 支持 在 RT-Thread 4.1.0 正式發(fā)布版中,添加了對(duì) CMake 的支持。開發(fā)者可以使用 SCons 工具來生成 CMakeLists.txt 文件。 為何要支持 CMake
    的頭像 發(fā)表于 05-25 11:06 ?3281次閱讀

    RT-Thread 4.1.0正式添加對(duì)Arm Compiler 6支持

    RT-Thread 4.1.0 正式發(fā)布版中,添加了對(duì) Arm Compiler 6 的支持,用戶可以修改 rtconfig.py 指定生成 mdk5 工程時(shí)使用的編譯器
    的頭像 發(fā)表于 06-01 15:20 ?1971次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>4.1.0</b>正式添加對(duì)Arm Compiler 6支持

    RT-Thread V4.1.0 版本部分更新內(nèi)容

    RT-Thread V4.1.0 版本已經(jīng)發(fā)布四月有余了,在這四個(gè)月中,RT-Thread的主倉庫中收到了包含了內(nèi)核到BSP的方方面面的 P
    的頭像 發(fā)表于 08-30 09:48 ?2402次閱讀

    聊聊新版RT-Thread內(nèi)核中的鉤子

    4.1.0版本開始,RT-Thread在保證向前兼容的基礎(chǔ)上對(duì)原有的HOOK方式進(jìn)行了改進(jìn),實(shí)現(xiàn)了如下的效果:
    的頭像 發(fā)表于 10-25 09:32 ?1182次閱讀

    RT-Thread文檔_UART 設(shè)備 v2版本

    RT-Thread文檔_UART 設(shè)備 v2 版本
    發(fā)表于 02-22 18:32 ?0次下載
    <b class='flag-5'>RT-Thread</b>文檔_UART 設(shè)備 <b class='flag-5'>v</b>2<b class='flag-5'>版本</b>

    RT-Thread v5.0.2 發(fā)布

    ://github.com/RT-Thread/rt-thread/releases/tag/v5.0.2 RT-Thread 迎來了全新的版本
    的頭像 發(fā)表于 10-10 18:45 ?1356次閱讀
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>v</b>5.0.2 <b class='flag-5'>發(fā)布</b>