RT-Thread v5.0.2 Release

RT-Thread IoT OS
5 min readOct 11, 2023

--

Get ready for a thrilling ride with RT-Thread as we unveil our latest version v5.0.2! Since the grand launch of version v5.0.0, we’ve been on an exhilarating journey of transformation, with our kernel and components undergoing a series of dynamic changes and enhancements.

RT-Thread code repository address: ● https://github.com/RT-Thread/rt-thread

RT-Thread 5.0.2 version release log details: ● https://github.com/RT-Thread/rt-thread/releases/tag/v5.0.2

Here’s a sneak peek into some of the electrifying highlights and pivotal changes:

🧰 Kernel improvements:

● Added AMP support.

● Added message priority for message queues.

● Added rt_hw_interrupt_is_disabled API for detecting whether the interrupt is turned off;

● Added APIs to get object names and thread names.

● Improved errno compatibility with POSIX, enhancing compatibility.

● Improved atomic operation Atomic detection support.

● Improved device_open interface to avoid repeated calls.

● Removed recursion in mutexes, enhancing stability.

● Merged DBG header files, removing redundant code.

● Modified the structure of rt_thread to clearly inherit rt_object.

● Fixed the MQ reception blocking issue in user mode.

● Fixed uninitialized variable rt_err in thread.c and type conversion error in timer.c (IAR).

🔌 Component updates:

lwp:

○ Added support for checking executable permissions for elf.

○ Supported more features of IEEE Std 1003.1–2017 signals.

○ Supported file descriptor transmission.

○ Fixed memory leak issues, improving stability.

○ Added more system call support.

libc

○ Adapted rt_channel, added some commonality of rt_channel function on dfs v2, and standardized signalfd.

○ Renamed libc.c to posix/stdio.c.

○ Added timerfd system call function.

○ Implemented lightweight timezone configuration; optimized resource consumption.

○ Supported rt-thread CPP wrapper sub-switch macro, external third-party libc package

○ Supported picolibc’s heap.

○ Redirected sys/ioctl header file to bits/ioctl, improved posix interface message queue.

utilities

○ Removed zmodem.

○ Supported extensible memory management.

dfs:

○ Upgraded device file system (dfs) to v2 version, while considering compatibility also retained v1 version for Kconfig configuration selection.

○ Improved fd closing strategy to avoid potential memory leak issues.

○ Fixed tmpfs spin lock error, nfs 64-bit architecture error.

mm:

○ Added unmap page API.

○ Improved output of list_page .

○ Added API to unmap pages, better managing memory.

○ Fixed lwp _load_script .

○ Modified lwp_struct_copy function to copy working_directory when forking a child process .

finsh

○ Added MSH auto-completion sub-option function .

○ Fixed issue where Finsh offset was used before range check .

Network

○ Added more hook functions .

○ Fixed ping timeout calculation error, ipv6 compatibility issue .

○ Fixed issue finding next-hop in lwip_ip4_route_src .

○ Modified using interface to set default network device .

○ Optimized at_vprintfln and network-related Kconfig .

📦 Device drivers:

● Prepared for device driver v2.0 , bringing more features and performance improvements .

● Added device tree sub-node search macro, improving device management efficiency .

● Fixed issue where serial port sometimes repeatedly sends carriage return characters, improving serial communication stability .

● Fixed CPU timer issue in multi-threading , dtb compilation warning .

● Optimized SPI transmission speed and fixed some issues .

● Modified ADC channel data type , and added built-in channel universal number recognition .

● Modified current sensor framework back to v1 version , and made it independent of v2 .

● Fixed inconsistent return type error in Sensor-V1 , redefined Sensor-V2 as sensor framework .

● Modified tty driver program to device , and fixed multiple scanfs causing data loss issues .

⚙️ Libcpu:

● Made multiple fixes and optimizations under architectures such as riscv, arm, aarch64, arc, etc., improving performance and stability .

● Implemented default weak function for rt_hw_cpu_shutdown .

● Added cfi information of gdb unfolding program for aarch64, arm cortex-a, risc-v .

🔧 Tools:

● Supported more BSP driver compilations , ensuring wider hardware compatibility .

● Added CI process , improving project maintainability .

● Added llvm-arm 16.0 support , and added llvm-arm workflow .

● Added function to filter files that do not need cppcheck for file_check.py .

● Added — add-rtconfig parameter for scons , used to add macro definitions during build .

● Fixed issue where c99 and gnu options could not be selected in Keil-MDK .

Fixed deque problem with Env[‘CPPDEFINES’] in scons version 4.5.0 or above .

🔄 Action:

Added CI to compile more changed BSP drivers , added pkgs-test ; added manual trigger and failed BSP check ; added more configurations for manual trigger .

Added repo check ; added review request for code_owner ; added paths-ignore for format and static check .

Added manual trigger for all STM32 , added exp_STM32 SCons .

Refactored and optimized ci execution process , and added manual trigger and cppcheck check for scons dist .

📦 BSP:

Added some new bsp:

● ST: imx6ull, stm32u585-iot02a, stm32f405zgtx, stm32h563-st-nucleo, stm32h563-st-nucleo, stm32f407-rt-spark, stm32f334-st-nucleo, stm32l496-st-discovery

● SOPHGO: cv1800b

● TI: msp432e401y-LaunchPad

● APM32: apm32e103ze-evalboard, apm32e103ze-tinyboard, apm32f030r8-miniboard

● AT32: at32f423-start

● Essemi: es32vf2264

● Imxrt: imxrt1061-forlinx-OK1061-S

● Renesas: ra6m3-hmi-board

● Yichip: yc3122-pos

● Bouffalo_lab: bl808/d0

Fixed some issues:

  • Fixed atomic volatility issue in bsp/simulator when compiling in VS2019 .
  • Fixed mismatched function type of rt_pin_ops in all drv_gpio.c.

🎉The unveiling of version v5.0.2 is a testament to the relentless dedication and hard work of our developers. A heartfelt thank you for your invaluable contributions to the RT-Thread community! Together, we’re making RT-Thread better and more user-friendly! 💪

Here’s a roll call of our amazing contributors from the mainline v5.0.0 to v5.0.2 (in no particular order):

A standing ovation for developers like Shisan, yanghaiyong, lepus, guo, Junjie Wang, Zheng-Bicheng, Legend, XYZ, zhouminquan, Shicheng Chu, Tennn11, Wayne Lin, liYangYang, cmbjxxiao, Yuqiang Wang, Supper Thomas, zmq810150896, sp-cai, Siwei Xu, Fan YANG, dejavudwh, yuanzihao, DingDing, Eric LGF, Mr.M, yby, liYony, Cheng Mengmeng, 1ridic, vacabun, LTreeshu, Frogrey, Shell, zbtrs, wangqinglin, wusongjie,bxhsiman , XYZboom , flyingcys , WCX , kurisaW , zan319 , Man Jiangting(Meco) , Fan Yang , KunYi Chen , xyz , Jay , cx , geniusgogo , zhugengyu , FragrantRye , Donocean , zhangyan , xqyjlj , GuEe-GUI and many more.

We also extend our gratitude to companies such as NXP、Renesas、Infineon、Nuvoton、Xilinx、Geehy、Xiaohua、Artery Technology、Qingdao Eastsoft、and the Institute of Software of the Chinese Academy of Sciences PLCT Laboratory for their significant contributions to this version update!

--

--

RT-Thread IoT OS
RT-Thread IoT OS

Written by RT-Thread IoT OS

An Open-Source Community-Powered Real-Time Operating System (RTOS) Project! Let’s develop, DIY, create, share, and explore this new IoT World together!

No responses yet