Changelog since v4.0.1

Kernel

  • Split the component automatic initialization into component automatic initialization and main funciton;
  • Add spin lock API in SMP mode;
  • Fix RT_IDLE_HOOK spelling issue;
  • Add thread waiting for message queue when queue is full;
  • Fix the issue of delete mq in rt_mq_create in some abnormal case;
  • Remove the C++ keywords in thert_console_set_devicefunction;
  • Remove the suspend_thread_count member from memory_pool structure;
  • Fix the issue when block = NULL in rt_mp_free;
  • Fix the issue of incorrect scheduling task sequence caused by rt_thread_yeild in system scheduling;
  • Fix the issue that the interrupt is opened too late and cause the signal handling delayed;
  • When disable SMP, cpu.c will not be added into project by default;
  • Fix the issue that rt_thread_exit turned on the interrupt prematurely in the SMP mode, so other cores might delete this task, causing the issue in subsequent function stacks;
  • Fix the issue of critical protection when rt_thread_delete change the status of thread;

Components

  • Fix the issue of mPool size in C++ / Queue;
  • Add the error status return in C++ / Thread task join/wait function;
  • Fix compilation warning in DFS/ELM FatFS;
  • Add support for Linux NFS Server in DFS/NFS;
  • Fix mkfs issue in DFS/UFFS;
  • Add ftruncate, flock, getuid, umask APIs;
  • Fix the display issue of fd with offset in list_fd command;
  • Add dfs_mount_device API to mount a file system on a device which is already in mount_table;
  • Rename the C++ keywords in DFS/rename function;
  • Connnect dfs/poll, select with RT_USING_POSIX in Kconfig;
  • Optimize the part of the code of finsh to make it more simple;
  • When RT_USING_DEVICE is not used, finsh can use the rt_hw_console_getchar() function which is simple to implement and not using the device framework;
  • Increase the line length of the finsh shell to more than 256 characters;
  • utest can support clang compiler and C++ compiler;
  • Fix possible cross-boundary issues in ulog;
  • Fix compilation warning in ulog/ulog_console_backend_output;
  • Add support for file sending and receiving feature in YModem;
  • CRC16 can be calculated without the lookup talbe to reduce code size in YModem component;
  • Fix the issue that stack may be wrongly released during pthread/destory;
  • Fix the possible memory leaks issue which caused by pthread_create abnormal case;
  • The timer-related APIs under different compiler of libc are moved to the libc\compilers\common folder;
  • Remove redundant definitions in dlib/sys/unistd.h (which will cause compilation warnings);
  • Add sys/errno.h andsys/signal.h header files under dlib;
  • Freemodbus is no longer in the kernel, and split it as a standalone softwre package;
  • AT socket updated to v1.3.0:
    • Add multi-client and multi-device function support in AT Socket, and improve the dirty data handling when AT device hardware module reboot;
    • Support netdev network card feature, which can manage and control AT device network connection through the network card interface;
  • Improve AT Server function support in AT components, add AT Server data sending and receiving interfaces at_server_send () and at_server_recv ();
  • Fix the issue of closesocket() in SAL component when socket closing failure after shutdown();
  • Improve sal_bind () network card binding related function in SAL component;
  • Add IPV6 related options configuration and function support to SAL and netdev;
  • Improve ping command error handling and log display in the netdev;
  • Add hostname configuration options and functions in lwIP component;
  • Fix the assertion issue of sys_arch_mbox_fetch() in lwIP which may occur when a socket is closed;
  • Add network card uninstallation function and support for dhcpd service stop function to the lwip component;
  • Fix lwIP component compilation failure caused by closing FinSH component;
  • Fix the issue that the socket may not be closed during the DHCPD task in the lwIP DHCP server;
  • Add dhcpd_stop() interface;
  • Change log in device driver framework:
    • Refactor audio driver framework;
    • Fix the issue that the receiving length is 0 in CAN and the issue of returning wrong values;
    • Add hardware encryption and decryption driver framework;
    • Fix the flag handling issue of rt_i2c_master_send/rt_i2c_master_recv;
    • Add input capture and pulse encoding driver framework;
    • Fix the issue that partition lock is deleted when rt_mmcsd_blk_remove;
    • Fix the issue that the enumerated capacity of the large-capacity card in MMC/SD exceeded the data range;
    • When the SDIO device is initialized, the function's manufacturer and product can also use the information in CIS;
    • Improve the interrupt mode handling in the sensor framework, and fix the issue that the memory is not released when registering the sensor;
    • More information are provided in command line of sensor framework;
    • Add the checking for Rx buffer size in the serial port framework, and provide a notification when RX buffer full;
    • Remove the old Nor SPI Flash driver in SPI framework, and replace with SFUD component;
    • Fix some judgements issue in the return value of SFUD;
    • Fix the definition warning of SFUD_FLASH_DEVICE_TABLE in SFUD;
    • Add support for W25Q64DW devices in SFUD;
    • Fix FiFo creation failure handling when creating a pipe;
    • Fix the issue of releasing RBB in advance in rt_rbb_destroy() function;
    • Rename the new keyword using of C++ in rt_rbb_blk_alloc function;
    • Unify the struct rt_delayed_work in workqueue to struct rt_work;
    • Add touch driver framework;
    • Add USB Audio class;
    • Fix RNDIS plug-in/out issue in USB device stack;
    • Add the interface callback function in USB device stack;
    • Improve wlan framework, including command line functions, handling of AP name, password length, support for netdev, better configurability, etc.

BSP and CPU porting

  • Add Clang compiler support in ARM-related CPU porting;
  • Fix SCB_AIRCR definition issue in ARM Cortex-M0;
  • Add ARM Cortex-M33 porting;
  • Add DMB/DSB related operations for cache operations in ARM Cortex-A porting;
  • Add FPU support in ARM Cortex-A porting;
  • Re-organize MIPS port. And XBurst related porting are moved to X1000 BSP;
  • The porting of loongson 1B and 1C CPU are combined into one GS232 porting;
  • Add support for RISC-V Hummingbird processor porting;
  • The context switch exit operation of risc-v is forced back to machine mode;
  • Fix the issue of switch interruption during TI C28x DSP porting;
  • Add _ffs like implementation in the TI C28x DSP porting;
  • Unify the .data .bss section to 8bytes alignment in GCC tool chain;
  • The es32f0334 BSP is moved to bsp/essemi/es32f0334;
  • Add bsp/essemi/es8p508x BSP, including UART and GPIO drivers;
  • Add GD32VF103V-EVAL (RISC-V MCU) BSP, including UART driver;
  • Rerange NXP i.MXRT BSP and add related BSP documents;
  • Add i.MXRT1052 ATK Commander, Fire Pro BSP and i.MXRT1064 EVK BSP to the new i.MXRT BSP;
  • Add BSP for NXP LPC55S6X series, and increase support for NXP official development board LPC55S69-EVK;
  • Fix I2C operation (master_xfer) in LPC54114-lite BSP;
  • Add Audio driver in LPC54114-lite BSP;
  • Update Loongson 1B BSP and use automatic component initialization in default;
  • Add Kconfig configuration for Loongson 1B BSP;
  • Add QEMU/mipssim BSP for simulate RT-Thread/MIPS without MIPS hardware;
  • Refactor qemu-vexpress-a9's Audio driver and fix the issue of OS Tick accuracy;
  • Add LPUART driver to RV32M1 VEGA BSP;
  • Remove old STM32 BSP: stm32f4xx-HAL, stm32f10x, stm32f10x-HAL, stm32f429-apollo, stm32f429-disco, stm32h743-nucleo;
  • Fix the issue of rt_hw_sci_init() for opening the global interrupt in tms320f28379d BSP;
  • Add support of soft I2C and hardware encryption module to WinnerMicro W60x BSP(AES/DES/3DES/RC/SHA1/MD3/CRC);
  • Add oneshot WiFi configuration support in WinnerMicro W60x BSP;
  • Add more STM32 BSP based on new STM32 BSP framework:
    • stm32f072-st-nucleo
    • stm32f103-gizwits-gokitv21
    • stm32f103-yf-ufun
    • stm32f412-st-nucleo
    • stm32f427-robomaster-a
    • stm32f429-st-disco
    • stm32f769-st-disco
    • stm32g431-st-nucleo
    • stm32h743-st-nucleo
    • stm32h750-armfly-h7-tool
    • stm32l4r5-st-nucleo
    • stm32l452-st-nucleo
  • For the new STM32 BSP framework:
    • Add DMAMUX support to stm32l4+;
    • Update F7 HAL library SConscript;
    • Open the SWD port configuration on cubemx in stm32f103-atk-warshipv3 BSP;
    • Add support for SD card in stm32f427-robomaster-a BSP;
    • Add USBFS driver to stm32f412-nucleo BSP;
    • Remove use of device user data on uart driver;
    • Add QSPI FLASH support in stm32h743-atk-apollo BSP;
    • Optimized Ethernet driver;
    • Add hardware encryption and decryption driver;
    • Add MIPI LCD driver;
    • Add pulse encoding driver;
    • Optimize hardware timer driver;
    • Add support for UART 7/8 in serial driver;
    • Optimize WDT driver;

Tools

  • Optimize scons script for eclipse in order to generate eclipse project better;
  • Improve rtconfig.h generator, PATH type configuration can be generated correctly;
  • Fix gcc path detection issue when using the default cross toolchain of the Linux distribution;

项目简介

RT-Thread is an open source IoT real-time operating system (RTOS).

🚀 Github 镜像仓库 🚀

源项目地址

https://github.com/RT-Thread/rt-thread

发行版本 33

RT-Thread v5.0.1 released

全部发行版

贡献者 383

全部贡献者

开发语言

  • C 97.4 %
  • Assembly 1.8 %
  • HTML 0.4 %
  • Python 0.3 %
  • C++ 0.1 %