RT-Thread v4.0.2 released.
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 the
rt_console_set_device
function; - 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 ()
andat_server_recv ()
; - Fix the issue of
closesocket()
in SAL component when socket closing failure aftershutdown()
; - 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 tostruct 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;