Skip to content

RT-Thread v4.0.4 released

Compare
Choose a tag to compare
@Guozhanxin Guozhanxin released this 15 Oct 10:10

Change log since v4.0.3

Kernel

  • Update memheap auto binding policy
  • Remove rt_thread_exit function
  • Improve API annotations and code comments
  • Standardize internal function naming
  • Add recessive RT_USING_ASM_MEMCPY definition to Kconfig
  • Add RT_PRINTF_LONGLONG option to Kconfig, not selected by default
  • Clear support for RT_PRINTF_LONGLONG in kservice.c
  • Fix RT_PRINTF_LONGLONG is supported by default in 64-bit mode
  • Solve the problem that FINSH cannot respond to serial port input in multi-core mode
  • Optimize the comment for ipc
  • Adjust the code to support cpu usage
  • Adjust the exception handling code structure to support backtrace functionality
  • Remove the mutex RT_IPC_FLAG_FIFO function
  • Remove switch_to_sethook function
  • Add idle reclaimed resources
  • Change defined(__CC_ARM) || defined(__CLANG_ARM) to ifdef __ARMCC_VERSION
  • Fix comment error for rt_mutex_detach().
  • Remove the rt_sscanf statement
  • Add RT_WEAK for rt_malloc_align,rt_free_align
  • Changed the memory heap protection mechanism from FIFO to PRIO
  • Remove fix priority inversion bug of mutex
  • Add volatile to the rt_tick variable to prevent compiler optimization problems
  • Keep the atomicity of idle task hook function calls
  • Fix the crash problem after opening Oz optimization on ac6.
  • Add protect to the rt_tick_increase critical section
  • Add rt_mutex_trytake function
  • Improve kernel stability
  • Remove C99 dependencies
  • Add conditional compilation for _has_defunct_thread function
  • Clarify the context
  • Add get/set microsecond time control command
  • Fix code comment error for function rt_memset().
  • Remove rt_device_init_all() function
  • Adjust graphics device driver definitions
  • Unsigned comparisons should still be used when the signed comparison is undone
  • Fix compile error when using LOG_HEX(...) function but RT_USING_ULOG not defined

Components

  • Support armclang
  • Optimized system for suppoort gcc
  • Update Libc
    • Create a gcc folder and merge the newlib and partical folders
    • Optimized system to support GCC
    • Fix support system function
    • Fix asctime_r return value
    • Lowers the action of calling printf before libc initialization to the warning level
    • Replace dfs_select.h with standard sys/select.h
    • The RT_LIBC_USING_TIME macro definition remains after RT_USING_LIBC is enabled
    • Optimized fcntil.h definition
    • Fix syscall was optimized to incorporate minilibc into syscalls.c file
    • Rebuild _libc_init_array to prevent chip startup failure under GCC
    • RT_USING_NEWLIB and math libraries are defined without libc enabled
    • Fix the conflict warning of read and write functions
    • Remove libc_signal.h and libc_fdset.h
    • Fix an issue where keil did not compile properly
    • Remove rtlibc, libc_stdio.h, libc_dirent.h, libc_ioctl.h,libc_signal.h,libc_fdset.h,libc_errno.h, libc_limits.h
    • Add delay when the scheduler is not running
    • Fix armClang support issues
    • usleep supports calling in interrupts.
    • Fix sys header file import when liBC is not enabled
    • The gettimeofday () function supports time zones and specification set_timeval/get_timeval returns a value
    • Fix warning of posix_signal
    • Fix bug where nonegcc folder path was not added to project in Simulator Win32
    • Fix error caused by libc removing sys/errno.h file
    • Remove _TIMESPEC_DEFINED
    • Add the RT_LIBC_FIXED_TIMEZONE default value to time.c to prevent projects that do not have RT_LIBC_FIXED_TIMEZONE configured
    • Add the ability to manually set the time zone
    • Add riscv.c dlmodule can support riscv architecture
    • Implement pid_t gettid(void)
    • Implement isatty()
    • Implement set_timeval
    • Change the libc directory to common and none-gcc
    • Remove dlib and armlibc sys folder
    • Fix MDK build error when using gmtime_r
    • Optimize get_timeval and set_timeval conditional compiled code structure
    • Update mktime support fixed timezone
    • Add microseconds time get feature in gettimeofday
    • LOG_W will cause a recursive printing if ulog timestamp function is turned on
    • Remove inherent mutex protect
  • Update drivers
    • Fix stdint in cputime
    • Delete NTP configurations
    • Make rt_soft_rtc_init private
    • Bypass controlling commands in touch class to driver
    • Update the RTC device driver framework to unify and simplify RTC device registration and access
    • Add i2c bus control api
    • Update uac class, remove GPL code
    • Fix measurement unit of "percentage" to "permillage" for accuracy
    • Add spo2 sensor support in drivers/include/drivers/sensor.h and drivers/sensors/sensor.c
    • Optimize pin.h, sensor.h, rtdevice.h to avoid reverse inclusion
    • Update usb enlarge uconfig_descriptor's data array space
    • Add security devices
  • [netif] Fix the eth_tx_msg protection
  • Update utest
    • Add kernel testcases
    • Fix TC_FAIL_LIST_MARK_FAILED Subscript calculation error
  • Fix comments error in ringbuffer and workqueue
  • Update ringbuffer
    • Add an interface comment
    • Local variables are used to prevent resource competition
    • Write_index bug in rt_ringbuffer_put_force
  • Update workqueue
    • Add an interface comment
    • Remove rt_delayed_work_init()
    • Privatize the rt_work_sys_workqueue_init function
    • Fix an unexpected suspension of critical condition threads
  • Fixed timer ASSERT exception due to multithreaded scheduling
  • Optimize the inclusion relationship between dfs.h and dirent.h
  • Update finsh
    • Restore the FINSH_USING_MSH definition for compatibility
    • Expose the finsh_getchar function
    • Fixed _cmd_xxx command unavailable due to finsh removal
    • Update Kconfig is more hierarchical
    • The finsh component can optionally include built-in commands
    • Repaie that the table key on msh do not work
    • The list-thread command adds the bind core display for multiple cores
    • Add support for tasking toolchain
    • Add mount/umount cmd
  • Fix ringblk_buf error when no longer using dynamic memory
  • [timezone] implement timezone
  • [DeviceDriver] Change the special device commands form 0x1X to 0x2X. It will avoid same of general device commands
  • Update AT
    • Update old_urc_table to new_urc_table
    • Optimized at socket memory leak modification
    • Add at_utils_send virtual function
    • Fix at_vprintf and at_vprintfln and end_sign response
    • Fix at_server_getchar spelling error
  • Add device type USBOTG to redef.h
  • [newlib] fix compile error when closing RT_USING_CONSOLE
  • Update rtc
    • Add RT_DEVICE_CTRL_RTC_GET_TIMEVAL and RT_DEVICE_CTRL_RTC_SET_TIMEVAL ops
    • Remove RT_DEVICE_CTRL_RTC_GET_TIME_US and RT_DEVICE_CTRL_RTC_SET_TIME_US. Add RT_DEVICE_CTRL_RTC_GET_TIMEVAL and RT_DEVICE_CTRL_RTC_SET_TIMEVAL. The RT_DEVICE_CTRL_RTC_GET_TIMEVAL cmd can get second time and microsecond time.
    • Change core.c/.h name to rtc.c /.h
    • Update rt_rtc_dev_register function name to rt_hw_rtc_register
    • Change localtime name to localtime_r
  • [ethernetif] replace rt_memcpy with SMEMCPY
  • [sdio] remove rt_mmcsd_blk_init
  • Update time
    • Fix an issue where POSIX related functions were not protected for critical sections
    • Adjust the judgment logic of posiX related functions to obtain time results
    • Rename nonstandard liBC functions and reposition the time.h definition
    • Revert the old code
  • Fix the sem init check bug in pthread.
  • Fix MMC initialization error, write card->csd as card->cid
  • Update serial
    • Add CTS/RTS flowcontrol
    • Implement function of getting window's size(TIOCGWINSZ)
    • Optimized RT_USING_POSIX_TERMIOS precompilation
    • Serial_v2 support device ops feature
    • Fix the problem that serial Close did not clear the callback interface
    • Optimize send non-blocking problem when serial_close does not execute rt_completion_done
    • Optimize DMA receive processing flow and decouple the driver to call the API interface of the serial port framework
    • Added the Serial V2 framework and the Serial port driver based on STM32
    • Serial_v2 support device ops feature
    • Fix do RT_DEVICE_CTRL_CLOSE cmd when close serial device regardless of DMA config
  • Update lwip
    • Fix lwIP critical section protection bug
    • Set default lwip stack for old bsp folder.
    • Change default lwip stack to lwip2.0.3
    • Fix delete useless code.
    • The "event_callback" will be change by RT-Thread dfs.
    • Adjust the string.h position
    • LWIP_TIMEVAL_PRIVATE: provided by <sys/time.h>
    • LWIP2.0.2 and 2.1.2 remove ERRNO
    • Remove ESHUTDOWN from LWIP
    • Remove the possible critical zone risk
    • Iperf speed test have been stable.
    • The overflow problem of lwip rx thread mailbox.
  • [pm] Index should be less than PM_MODLUE_MAX_ID
  • [cputime] Add sys/errno.h
  • Update msh
    • Implement tail command
    • Fix shell msh_exec memory over-bound.
  • Update dfs
    • Fix F_GETFL/F_SETFL should be handled by the drivers.
    • Change the default maximum number and type of the file system to 4
    • Add format_ignore file, exclude fatfs format check
    • Add comments for _device_fs
  • Update ymodem
    • Modified the enabling conditions of YMODEM USING FILE TRANSFER
    • Check the file path's legitimacy of'sy' command
  • Add new component: rt-link
  • [net] Add the function of set [internet up] status, activate the callback.
  • [components] Remove uip
  • Update ulog
    • Using gettimeofday for timestamp get
    • Fix thread info show when kernel not startup
    • Increase the usec check time
    • Add output locker enabled API
  • Update FatFs
    • Update the mutex protection timeout can be set using Kconfig
    • Fix the time dependent function opening condition

BSP and CPU porting

  • Support armclang
  • [stm32h750-artpi-h750] Complete bsp
  • [ls2k] Fix missing header file applications
  • [AT32] Complete BSP
  • Add _CRT_DECLARE_NONSTDC_NAMES=0 macro definition in simulator bsp
  • Refresh the project and remove rtlibc and duplicate definitions in simulator bsp
  • Update libcpu
    • Modified the irq handle interface rt_hw_trap_IRq to support intercore IPI interrupt processing
    • Add interface dcache invalidate/dcache clean&invalidate
    • Adjust the stack_top to bss
    • Remove gtimer/pmu from cortex-a
    • Repair hard fault return bug
    • Add in Cortex-A to turn on the _rt_FFS implementation when RT_USING_CPU_FFS macro definition
    • Add interface to get Cortex-A Generic Timer frequency
    • Add GICV3 interrupt controller code, updated MenuConfig configuration options with utest config.h
    • Tidy up the cortex-a aarch32 boot code
    • Fix RTC driver compile error
    • add gic&gtimer interface
    • Optimized the condition for automatically enabling FPU when cortex-A does not define an exception
    • Fix inconsistent function behavior with different optimization levels
    • Correct cortex-m23 rvds.S including for armclang platform.
  • Fix simulator:
    • Fix sd_sim.c compilation error using rt_dgb instead of old debug output
    • Refresh the project and remove rtlibc and duplicate definitions
    • Add _CRT_DECLARE_NONSTDC_NAMES=0 macro definition
  • Fix stm32f407-explorer
    • Optimize fal Settings
    • Update readme
    • Implement ESP8266 configuration in extended module driver menu
    • Optimized Kconfig file system naming, SFUD registration w25Q128 name adaptive, avoid users to set more than one step name
  • Add more BSP on BSP framework:
    • VangoV85xx
    • hc32l136
    • ap32f103xe-miniboard
    • gd32407v-start
    • mm32f103x
    • ch32f103c8-core
    • n32g452xx
    • hc32l196
    • hc32f460petb
    • gd32f105c-eval
    • nrf52833
    • hc32f030c8t6-mini
    • fm33lc0xx
    • stm32l4r9-st-sensortile-box
    • stm32f302-st-nucleo
    • mm32f3270
    • stm32f407-robomaster-c
    • qemu-riscv-virt64
    • gd32350r-eval
    • stm32f407-armfly-v5
    • juicevm
    • stm32f207-st-nucleo
    • m2354
  • [ch32f103c8-core] rename function name: ch32f1_hwtimer_clock_init, ch32f1_hwtimer_clock_get
  • Fix thread-smart
    • Support T-HEAD Xuantie-E9xx Series CPU on Smart-EVB, eg. E906/F/D/P, E907/F/D/P
    • Formatting code
    • Add QEMU support, and code optimization for thead extension
  • [mm32f327x] Fix .ignore_format file path error
  • [hc32f4a0] Fix syntax errors in scons scripts
  • [x86] Enable romfs
  • Replace gmtime with gmtime_r
  • [swm320-lp100] Update libraries
  • [ft2004] Add gtimer support and fixed can driver initialization issues
  • Fix bluetrum
    • Optimizing the uart driver
    • Fix RTC driver building errors
    • Add RT_USING_CONSOLE judgment
  • [nrf52x] Optimize drv_wdt.c
  • [mm32f327x] Add on-chip flash driver
  • [imxrt1064-nxp-evk] Improved I2C, UART,LCD kconfig, fixed i2C imXrT_i2C_mST_xfer function that would write an address before reading data
  • [w60x] Fix UART1 function unavailable
  • [gd32450z-eval] Update firmware library and delete usb relate library codes
  • [raspi4-32] Update raspi4-32 eth drv
  • [bluetrum] Fix uart1 and uart2 cannot recv data
  • Fix STM32
    • Implement rtc driver to RTC framework V2.0
    • Add spi config increases irq_type
    • Fix driver library USBH initialization errors
    • Add timeval ops for STM32 platform Sub-second timestamp.
  • Remove BSP on BSP framework:
    • realview-a8
    • fh8620
    • gkipc
    • stm32f20x
    • efm32
    • zynq7000
    • stm32f1.0-mini-sysytem
  • Fix unused device frame error
  • Update GPL license to Apache-2.0, and format files
  • Fix incorrect setting of word length when parity check is enabled on the STM32 serial port

Tools

  • Support windows cmake tool
  • Optimization the EXTERN_LIB variable use
  • Update eclipse project after dist
  • Add default project name and project path while --dist-ide
  • Fix the problem of an error when opening menuconfig after the project is dist
  • Update cmake.py, add c++ support and libpath.
  • Python 3 compatibility support
  • Update eclipse.py to compatible tasking