RT-Thread v4.1.0 Beta 釋出

2022-02-05 09:00:17

前言

雖然距離上次釋出v4.0.5的更新才剛剛過去一個月的時間,但是經過我們緊鑼密鼓的準備,我們終於在農曆新年第一天為大家帶來了全新的 v4.1.0 Beta 版本。這是一個體驗嚐鮮版並非4.1.0正式釋出版,包含一些重大的更新,目前處於公測階段,歡迎大家下載體驗。預計收集完反饋之後穩定的版本 v4.1.0 將會在今年3月下旬正式釋出

下載地址:

更新紀錄檔

  • 更完善的 POSIX 支援(PSE51 以及 其他常用的POSIX API 支援)

  • 更完善的跨多編譯器平臺的支援

  • 更加穩定精簡的系統核心

  • 更完善的CPP11支援(gcc、armclang 雙平臺支援)

  • 更完善的64位元架構支援

  • 更完善的驅動框架(PM、sensor、sdio、cputime、usb)

  • 更多的原廠BSP(瑞薩、新唐、先楫、沁恆、小華半導體、東軟載波...)

詳細紀錄檔

https://github.com/RT-Thread/rt-thread/releases/tag/v4.1.0-beta

遷移指南

在 RT-Thread 的 v4.1.0 版本及後續的版本,移除了 dfs_poll.h, dfs_posix.h, dfs_select.h三個之前常用的標頭檔案。並且移除了 RT_USING_LIBC,RT_USING_POSIX 兩個範圍較大的宏。

修改原因

該項改動的原因,是因為我們推動了 POSIX 程式設計介面標準化工作,方便 POSIX(例如類UNIX) 程式向 RT-Thread 遷移而無需大規模改動標頭檔案。因此我們移除了dfs_poll.h, dfs_posix.h, dfs_select.h 這些被大量使用但帶有 RT-Thread 特點的標頭檔案;移除了模糊且開啟範圍過大的宏開關 RT_USING_POSIX 和 RT_USING_LIBC;細化了裁剪宏開關,使得裁剪更加精細化,在豐富功能的同時,不會導致程式碼體積的膨脹。使用者可根據自己實際需求,精細化設定POSIX相關的功能。

產生的問題
由於歷史原因,在部分軟體包中,仍然有對RT_USING_LIBC,RT_USING_POSIX, dfs_poll.h, dfs_posix.h, dfs_select.h 的使用,在 RT-Thread 的 v4.1.0 版本及後續的版本中可能會出現編譯失敗的問題。

如果發現類似問題,請到社群論壇發帖報告,我們將及時處理

解決方案

  • 若程式碼中仍有 RT_USING_LIBC 與 RT_USING_POSIX 來判斷新增某些標頭檔案,則需要將這兩個宏刪除並細化:

 1RT_USING_POSIX_FS
 2    RT_USING_POSIX_DEVIO     --->Enable devices as file descriptors
 3    RT_USING_POSIX_STDIO     --->Enable standard I/O devices, e.g. STDOUT_FILENO
 4    RT_USING_POSIX_POLL      --->Enable I/O Multiplexing poll() <poll.h>
 5    RT_USING_POSIX_SELECT    --->Enable I/O Multiplexing select() <sys/select.h>
 6    RT_USING_POSIX_TERMIOS   --->Enable Terminal I/O <termios.h>
 7    RT_USING_POSIX_AIO       --->Enable Asynchronous I/O 
 8    RT_USING_POSIX_MMAN      --->Enable Memory-Mapped I/O <sys/mman.h>
 9RT_USING_POSIX_DELAY
10RT_USING_POSIX_CLOCK
11RT_USING_POSIX_TIMER
12RT_USING_PTHREADS
13
  • 若程式碼中有 #include <dfs_posix.h>,按照程式碼中,對介面的需要,視情況分別參照 dfs_file.h,unistd.h,stdio.h,sys/stat.h, sys/statfs.h。

  • 若程式碼中有 #include <dfs_select.h> 修改為參照 sys/select.h

  • 若程式碼中有 #include <dfs_poll.h> 修改為參照 poll.h

需要特殊注意的標頭檔案

為保證跨不同編譯器、不同工具鏈的相容性,建議使用者應用層程式碼:

  • 使用 <sys/time.h> 代替 <time.h>

  • 使用 <sys/errno.h> 代替 <errno.h>

  • 使用 <sys/signal.h> 代替 <signal.h>

歡迎小夥伴至論壇評論區留言!

歡迎大家多多貢獻程式碼(PR)

如何給RT-Thread貢獻程式碼這裡有視訊教學

https://www.bilibili.com/video/BV1gr4y1w7yX

展開閱讀全文