diff --git a/ChangeLog.md b/ChangeLog.md index aa32e1698c..8ac4fc2ab8 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,155 @@ +# RT-Thread v4.0.2 Change Log + +Change log since v4.0.1 + +## Kernel + +* Split the component automatic initialization to 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` and`sys/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 v4.0.1 Change Log ## Kernel @@ -738,487 +890,4 @@ RT-Thread做为一个开源组织参与的CSDN开源夏令营结出了丰硕的 由wzyy2参与的GDB stub实现,也完美的支持BeagleBoneBlack开发板和STM32F4平台; CSDN开源夏令营其他的成果,例如bluedroid移植也有了初步的成果,希望能够在后续的版本(可能会是2.1.0系列版本?)包含进来。CSDN开源夏令营是一次非常棒的活动,能够让学生提前进入实战,了解软件开发的初步知识。对开源社区来说,也是一次非常有益的社区互动活动。希望明年这个活动可以继续,关注RT-Thread、嵌入式开发的同学可以关注明年的动向。 -当前智能化设备是一个备受关注的领域,针对这一领域的特点,RT-Thread也相应的做出了积极的响应,所以这个版本开始加入sensor的应用框架(APP/算法 <--> sensor framework <--> RT-Thread device driver <--> 硬件外设)。希望在小型化的RT-Thread操作系统基础上融合智能化相关的技术,让RT-Thread成为这方面可选的OS系统之一。RT-Thread操作系统的sensor框架也尝试新的实现方式,即采用C++的方式来实现(当然也会考虑C方面的兼容,无疑C++的面向对象特性会更好,所以最终选择了C++),在这个基础上也可能融合其他的一些生态技术,例如ARM mbed平台上的一些社区组件技术。所以这个发布版本中既包括sensor框架,也包括了C++底层的一些基础支撑。 - -这个版本是RT-Thread 2.0.0系列正式版本的候选版本,正式版本预计会在年底正式发布,距离正式版本还会加入更完善的一些支撑(例如各种传感器驱动)。也计划2014年11月22日,在上海浦东举行RT-Thread嵌入式系统沙龙活动,欢迎大家关注并参与进行RT-Thread方方面面的技术交流。 - -以下是这个版本的更改记录: - -## 内核 - -* 修正当采用高级别优化编译时,idle任务中查询是否有僵尸线程的潜在bug; - -* 修正memory pool中的竞争问题; - -* 在console中打开设备时,加入流标志进行打开; - -## 组件 - -* 加入C++基础支撑组件。C++组件依赖于RT_USING_LIBC库,当使用GCC编译器时请注意查看其中的说明文档并更改ld script; -* 修正DFS中NFS打开目录的bug; -* 更改DFS ROMFS默认romfs_root为弱化符号; -* 添加DFS中dfs_file_lseek接口中关于fs的检查; -* 移除I2C core中无用的core lock锁; -* 添加sensor framework(采用C++的方式支持各种sensor); -* 修正serial框架中DMA发送的bug(heyuanjie87); -* 移除SPI框架中不必要的device初始化代码; -* 完善SPI Wi-Fi网卡RW009驱动并提供RSSI相关的命令; -* 修正MSH中未定义DFS_USING_WORKDIR时更改当前目录的bug; -* 修正MSH中未定义RT_LWIP_TCP时依然定义了netstat命令的bug; -* 修正MSH中未定义RT_USING_HEAP时依然定义了free命令的bug; -* 修正finsh中FINSH_USING_HISTORY相关的裁剪; -* 加入gdb stub组件,当前支持ARM Cortex-A8和Cortex-M3/4(wzyy2); -* 统一不同编译器下使用LIBC的宏为RT_USING_LIBC,原有的宏定义RT_USING_NEWLIB/RT_USING_ARM_LIBC需要从rtconfig.h中移除,并替换成RT_USING_LIBC; -* 加入最新的lwIP分支:lwip-head,以提供IPv4/v6双栈的功能(hduffddybz); -* YMode中打开串口设备时,添加open flag(armink); - -## bsp - -* 加入北京京微雅格的M7(华山)低功耗FPGA的ARM Cortex-M3移植(aozima); -* 加入北京京微雅格的M7 EMAC以太网驱动(aozima); -* AT91SAM9260分支中更改RT_USING_NEWLIB为RT_USING_LIBC; -* BeagleBoneBlack分支中加入gdb stub支持(wzyy2); -* LPC176x分支中加入C++支持; -* LPC176x分支中修正SD卡驱动返回卡信息的bug; -* 修正LPC408x分支中GCC编译时的问题; -* LPC408x分支中加入C++支持; -* 龙芯1B分支中加入UART3驱动; -* 加入飞索半导体的MB9BF568 FM4分支移植(yangfasheng); -* mini2440分支中更改RT_USING_NEWLIB为 RT_USING_LIBC; -* stm32f0x分支中移除不同编译器下的LIBC定义,统一更改为RT_USING_LIBC; -* stm32f0x分支中加入串口接收溢出中断处理(armink); -* stm32f40x分支中加入gdb stub支持并添加UART6驱动(wzzy2); -* zynq7000分支中更改RT_USING_NEWLIB为RT_USING_LIBC; -* 加入ARM Cortex-M4芯片指令级的ffs实现; -* 修正MB0BF618S分支中缺少timer初始化的bug(mike mao); - -## 工具 - -* 移除Python 2.6中未支持的语法(xfguo); -* 移除Windows平台中的startupinfo信息(对Python版本兼容性更好); -* 修正CPPPATH被打乱的bug; - -# RT-Thread 2.0.0 Beta更改说明 - -发布时间:2014/8/1 - -v2.0.0这个版本系列是RT-Thread当前的开发分支,如果要上新项目,建议使用这个版本来进行,预计这个版本的正式版会在年底发布。欢迎对这个版本进行测试、并反馈问题,能够早日进入到稳定版。 - -v2.0.0版本的开发相对活跃些,开源社区提供了强有力的支持:如Arda贡献的TM4C129x移植,Romeo贡献的frdm-k64f移植,xiaonong的LPC4300移植等,以及睿赛德服务公司捐赠的Zynq7000移植,MB9BF618S移植,以及SPI WiFi网卡的驱动代码等。 - -更改记录 - -## 内核 - -* 移除rt_device_init_all()函数:在系统启动时不需要再调用这个函数来初始化驱动,而是由上层应用执行rt_device_open时自动进行设备初始化; -* 修正设备对象引用计数在打开设备失败依然递增的问题; -* 增加WEAK宏用于定义/声明弱符号; -* 在执行静态内存块分配前,重置线程的errno; -* 修正timer未打开调试选项时,无用的静态函数定义(导致编译警告); -* 启动timer前,对timer进行强制移除; -* 在执行soft timer超时函数时,打开调度器锁; -* 新增块设备的自动刷新参数,RT_DEVICE_CTRL_BLK_AUTOREFRESH; - -## 工具 - -* 修正scons命令编译时,选择keil mdk (armcc)编译器时,命令行太长编译失败的问题; - -## 移植 - -* 移除rt_device_init_all()相关的调用; -* 根据串口框架调整相关的驱动代码; -* 新增frdm-k64f移植(FreeScale K64芯片); -* 移除K60Fxxxx移植; -* 新增LPC43xx移植(NXP LPC4357芯片); -* 移除LPC176x中的组件初始化配置; -* 修正龙芯1B移植(ls1bdev)中链接脚本关于组件初始化部分的配置; -* 修正STM32F40x中UART3的配置; -* 修正STM32F40x中GNU GCC连接脚本中ROM/RAM大小的配置; -* 移除STM32F107中的组件初始化配置; -* 增强STM32F107 EMAC驱动性能,同时加入自动查找PHY芯片地址功能; -* 重写xplorer4330(NXP LPC4330芯片)移植(xiaonong完成); -* 新增Zynq7000 ARM Dual Cortex-A9移植; -* 新增MB9BF618S移植; -* 新增tm4c129x移植,并加入相应的EMAC以太网驱动; - -## 组件 - -* DFS: 新增根据设备对象获得其上装载文件系统路径的函数:dfs_filesystem_get_mounted_path(struct rt_device* device); -* DFS: 修正readdir在GNU GCC下的编译警告; -* DeviceDrivers:新增workqueue实现; -* DeviceDrivers: 修正USB Device栈中的一些拼写错误; -* DeviceDrivers: 重写serial框架,能够让串口设备驱动同时支持三种模式:poll、interrupt、DMA。模式选择需要在执行rt_device_open时,由open flags指定; -* DeviceDrivers: 加入更多的SPI设备驱动,例如RW009的SPI WiFi网口驱动(2.4G 802.11 b/g/n,WEP/WPA/WPA2,SoftAP/Station),SPI NorFlash块设备驱动,ENC28J60以太网网卡驱动; -* Finsh: list_device()命令中增加refcount的信息; -* Finsh: 修正'0'零常量无法识别的错误; -* Finsh: mv命令,实现把一个文件移动到一个目录中; -* Finsh: ifconfig命令支持对一个网络接口的基本配置; -* Finsh: 新增netstat命令,用于显示当前系统中TCP连接的状态; -* Finsh: 修正当命令行太长导致的缓冲区移除的问题; -* libc: 修正arm libc中未使用DFS时的编译警告; -* libc: 修正newlib中使用DFS时的系统调用编译警告(GNU GCC下); -* lwIP 1.4.1: 默认打开LWIP_SO_SNDTIMEO以支持连接发送超时; -* lwIP 1.4.1: 修正MEMP_NUM_TCP_SEG定义错误的问题; -* lwIP 1.4.1: 加入RT_LWIP_REASSEMBLY_FRAG选项定义以支持IP分组及合并; -* lwIP 1.4.1: ethnet网络接口支持定义LWIP_NO_TX_THREAD/LWIP_NO_RX_THREAD,以关闭etx/erx线程; -* lwIP 1.4.1: 用户可以重新定义RT_LWIP_ETH_MTU,以修改网络中的MTU值; -* lwIP 1.4.1: 修正LWIP_NETIF_LINK_CALLBACK条件编译的问题; -* lwIP 1.4.1: 完善移植相关的注释; -* log trace: 增加log_session_lvl接口; -* log trace: log trace中的session引用更改成常量形式; -* ymodem: 增强数据接收的稳定性; - -# RT-Thread 2.0.0 Alpha更改说明 - -发布时间:2014/4/8 - -RT-Thread 2.0.0分支的第一个技术预览版本,仅用于展示2.0.0发展分支的演化动向(按照roadmap,2.0.0这个分支会有一部分RT-Thread和Linux互补性的技术,为Linux增加更好的实时性,为RT-Thread增加更多的功能性,这份技术预览版正是朝着这个目标而努力),欢迎反馈建议和问题。 - -## 组件 - -* msh: bugfix 和功能性增强。新的 msh 在调用外部模块方面更加方便。 -* DFS: nfs 的 bugfix 和内置命令的增强。ELM FatFS加入对扇区不匹配情况下的信息输出,这样能够及时定位问题。 -* JS:新添了轻量级Javascript引擎,可以在RT-Thread中直接运行javascript脚本。 -* VMM:可以在qemu中运行的 Virtual Machine Module 组件。暂时只支持 realview-pb-a8 的 bsp。 -* CMSIS:版本更新至 3.20 -* drivers:USB 协议栈的重构。新的框架中编写驱动变得更加容易了。 - -## BSP - -* beaglebone:串口驱动更新 -* realview-a8:添加了 VMM 组件 - -## 工具 - -* 固件加入scons --target=ua -s,用于准备用户应用环境; - -[发布后记] - -RT-Thread 2.0.0. Alpha版本相比于RT-Thread 1.2.1,新的特性主要有两部分: -- RT-Thread + Linux双系统,这部分以RealView-A8处理器(ARM Cortex-A8单核)为蓝本,给出一个简单的双系统并行运行的demo;在没有硬件的环境下,可以使用QEMU软件虚拟方式的执行。这个链接中包含一个编译好的Linux及RT-Thread二进制包,可以直接下载进行体验。 - -目录中有 Linux 的内核镜像 zImage,ramdisk rootfs.cpio.gz。可以用 -qemu-system-arm -M realview-pb-a8 -kernel zImage -initrd rootfs.cpio.gz -serial vc -serial vc -来启动。启动之后 Linux 的控制台在第一个串口上(Atl + Ctrl + 3),可以直接无密码以 root 用户登录。登录之后加载内核模块: -insmod rtvmm.ko -来启动 RT-Thread。RT-Thread 启动之后控制台在第二个串口上(Atl + Ctrl + 4)。第一个串口Linux shell依然可以使用,第二个串口则是RT-Thread的shell。 -- JavaScript解析器,这个是由牛头哥移植的,可以在一个非常小资料的MCU上以JavaScript脚本方式进行编程、开发。根据这种方式,也提供了RN001JS的以太网硬件模块:以JavaScript脚本语言作为二次开发,提供在线web(即WebIDE)进行编程并运行JavaScript程序。JavaScript作为一门轻量级、解释型的语言,更容易上手,配合WebIDE、及提供的一些example可以使得开发变得非常的轻松,也包括一些传感器的JavaScript例子,让做网页的人也可以玩硬件了! - -# RT-Thread 1.2.1更改说明 - -发布时间: 2014/4/8 - -在原有的1.2.0版本的bug修正版本,也是1.2.0系列的第一个修正版本,原则上不添加任何的新功能,我们尽量会按照每个季度一个修订版本的方式推进。大家在使用的过程中有什么问题还请反馈给我们,这些问题很可能会在下个版本中修正! - -以下是更改记录: - -## 内核 - -* 用户应用,增加用户应用命令行参数支持; -* 在挂起一个任务时,把相应的定时器也关闭; - -## BSP - -* BeagleBone,加入更多串口驱动支持; -* 移除BSP中rt_device_init_all函数调用,改成打开设备时自动进行初始化; -* LPC176x,移除components初始化管理器; -* LPC4088,修正LED驱动的问题; -* STM32F107,移除components初始化管理器; - -## 组件 - -* 文件系统,ELM FatFS加入对扇区不匹配情况下的信息输出,这样能够及时定位问题; -* 文件系统,NFS网络文件系统修正相关的一些编译警告信息; -* 文件系统,copy命令加入文件夹方式复制功能; -* 文件系统,RAMFS,加入到components初始化管理器中; -* 文件系统,ROMFS,用于转换文件的工具mkromfs.py,增加Linux主机的支持; -* CMSIS更新到3.2.0版本; -* 串口驱动框架加入serial->ops->control的调用; -* 命令行系统,优化msh,支持用户应用的命令行参数; -* 命令行系统,当使用msh时,默认使用msh >的命令行提示符; -* TCP/IP协议栈,导出更多的lwIP接口给用户应用; -* POSIX thread,修正了同时使用lwIP组件时的编译警告; -* 第三方组件,加入TJPGD的移植,加入libpng的移植; - -## 工具 - -* 固件加入scons --target=ua -s,用于准备用户应用环境; - -[发布后记] -* RT-Thread携带了众多的BSP,不一定能够一一保证每个分支上把RT-Thread上相应的功能使用起来。所以针对这种情况,我们有一款评估用的硬件开发板:RealBoard 4088,在上面力求把一些相关例程都添加上,这样在一个基本的BSP基础上,可以对照着把其他的组件、功能添加进去; -* RealBoard 4088使用的RT-Thread版本主要以RT-Thread 1.2.1版本为主。 - -# RT-Thread 1.2.0正式版本更改说明 - -发布时间: 2014/1/6 - -实现roadmap中提到的大部分内容 -​ -1,文档方面已完成《RT-Thread编程手册》,同时还有论坛上jiezhi童鞋的《一起来学RT-Thread系列连载教程》 -2,BSP分支方面新增cortext-A8(beaglebone),cortext-R4(rm48x50),UNITY-2(SEP6200),lpc408x的移植 -3,组件方面: -- 加入msh(类似linux shell的风格),能够直接执行应用程序 -- 新增freemodbus 1.6.0的移植 -- 新增开源的嵌入式关系数据库SQLite 3.8.1的移植 -- 新增Ymodem协议 -- 默认使用lwIP 1.4.1 - -下面是自RT-Thread 1.2.0 RC版本发布以来具体的变更履历: - -## 内核 - -* timer.c - 使用跳跃表(skip list)实现系统定时器链表,并在bsp中的startup.c中重新加入定时器初始化函数rt_system_timer_init() -* rtdebug.h - 新增宏定义RT_DEBUG_IN_THREAD_CONTEXT -* idle.c - 在函数rt_thread_idle_excute()中一次清除所有的死线程 -* scheduler.c - 新增API rt_critical_level()返回调度器上锁次数 - -## 移植 - -* cortex-m0 - 修正 cortex-m0 GCC移植中hardfault的问题点 -* cortex-r4 - 在startup后释放IRQ堆栈空间 -* cortex-r4 - 按字节长度分配堆栈空间 - -## BSP分支 - -* 新增lpc408x移植 -* bsp/stm32f0x - 增加USART1,USART2驱动,支持finsh,支持组件初始化 -* bsp/simulator - 当RTGUI配置无效时打印错误信息 -* bsp/simulator - 默认情况下关闭RTGUI选项 -* bsp/simulator - 增加createdef.py文件来生成VS的def文件 -* bsp/simulator - 当使用VC++编译时去除_TIME_T_DEFINED的定义 -* bsp/xplorer4330 - 重命名文件Retarget.c为retarget.c,否则linux系统中编译会报错 -* bsp/xplorer4330 - 修正GCC编译链接时关于ENTRY的警告 -* bsp/rm48x50 - 新增GCC的移植 -* bsp/K60Fxxxx - 修正一个编译错误 - -## 组件 - -* dfs - 正确处理mkfs未实现的情况 -* dfs - 使用指针代替index变量 -* dfs - 在函数dfs_filesystem_lookup()将含义模糊的指针变量名称empty重命名为fs -* dfs - 修正dfs_unmount问题点 -* dfs - 在设备打开错误时令挂载失败 -* dfs/elmfat - 令elmfatfs每次都检查扇区大小 -* net - 新增freemodbus 1.6.0的移植 -* finsh - 新增FINSH_USING_MSH_ONLY选项 -* finsh - 只有当shell设备为空时调用rt_console_get_device() -* finsh - 修正FINSH_USING_SYMTAB未定义的错误 -* finsh - 重构control按键的处理 -* msh - 增加文件和路径名称自动补全的功能 -* msh - msh内增加执行module的功能 -* msh - msh内增加更多的命令 -* libc - 修正 _sys_read()/_sys_write()问题点 -* external - 增加开源的嵌入式关系数据库SQLite 3.8.1的移植 -* pthreads - 避免ESHUTDOWN重复定义 -* mtd_nand - 在MTD nand中增加更多的调试措施 -* mtd_nand - 修正操作MTD nand时起始块错误的问题 -* lwip-1.4.1 - 在lwIP内加入更多的RT-Thread选项设置 -* log_trace - 修正函数memmove()参数使用错误的问题 -* drivers/pipe - 增加一个control命令来获得pipe剩余的空间 -* drivers/serial - 如果读写长度为0,则立即返回 - -## 例程 - -* examples - 用rt_sem_control()中的RT_IPC_CMD_RESET命令rt_sem_trytake()来清除信号量 -* examples - 始终打印输出测试结果 -* examples - 在所有的测试结束后打印输出简报 -* examples - 在TC线程中清除变量_tc_stat的TC_STAT_RUNNING状态 -* examples - 重新实现loop功能,并新增finsh命令tc_loop -* examples - 在tc_stop中增加延时,由原来的延时RT_TICK_PER_SECOND/2调整为10 * RT_TICK_PER_SECOND -* examples - 在SConscript中判断TC如果被使能,在CPPPATH中增加TC路径 -* examples - 新增一个in-mem-log的例子 -* semaphore_priority.c - 在cleanup时释放信号量 -* heap_realloc.c - 检查调用realloc(ptr, 0)是否成功 -* thread_delete.c - tc线程的延时应该比tid2的延时长,保证其测试过程中正常运行 -* thread_delay.c - 放宽超时判断条件,因为当RT_TICK_PER_SECOND为1000时,容易产生1个tick的误差 -* semaphore_static.c - 放宽超时判断条件,因为当RT_TICK_PER_SECOND为1000时,容易产生1个tick的误差 -* semaphore_dynamic.c - 放宽超时判断条件,因为当RT_TICK_PER_SECOND为1000时,容易产生1个tick的误差 - -其他: -* 更新README.md - -# RT-Thread 1.2.0RC更改说明 - -发布时间: 2013/10/10/ 10:19 - -主要说明: 该版本新增ARM Cortex-A8的支持(BeagleBone),新增UNITY-2内核的支持(SEP6200),新增Ymodem协议。 - -变更履历 -======== - -[内核] - -* 修正rtdef.h中的拼写错误(_MSC_VER_ -> _MSC_VER) -* 修正scheduler.c中的调试打印输出错误 -* ipc - 在函数rt_event_recv()中增加对参数option有效性的检查 -* device - 增加统计设备引用次数的变量ref_count -* memheap - 修正内存块分割问题点 -* memheap - 优化函数rt_memheap_realloc() -* kservice - 函数声明使用rt_vsnprintf代替vsnprintf - - -[组件] - -* dfs - 修正dfs_file.c中一处变量参数类型错误的问题 -* dfs - 增加mount table -* dfs - 在building脚本中加入ramfs的支持 -* dfs - 修正ramfs中O_APPEND write的问题 -* dfs/elm - 在mkfs中加入device_open/close -* dfs/jffs2 - 修正jffs2_opn/opendir中的f_flag初始化问题 -* dfs/jffs2 - 修正jffs2卸载问题 -* pthread - 修正一处编译警告 -* drivers/pipe - 增加rt_pipe_init/rt_pipe_detach -* drivers/pipe - 增加非阻塞读写和强制写模式 -* drivers/pipe - 当恢复读的时候调用函数rx_indicate() -* drivers/pipe - 增加一个设备类型(pipe类型) -* drivers/portal - 实现portal设备类型 -* drivers/ringbuffer - 修改一些模糊不清的函数名称 -* drivers/ringbuffer - 新增put_force和putchar_force接口函数 -* finsh - 当set_device时增加设备检查 -* finsh - 在rx_ind中增加对shell设备的自动设置 -* finsh - 增加pipe和portal设备的描述 -* finsh - 在变量定义时使用别名 -* finsh - 当关闭设备时注销rx_indicate -* finsh - 修正命令行太长的问题 -* finsh/msh - 只有当DFS_USING_WORKDIR使能时才声明cd/pwd -* init - 为新的组件初始化机制更新连接脚本 -* init - 增加组件初始化调试代码 -* logtrace - 整理代码,去除编译警告 -* logtrace - 增加LOG_TRACE_VERBOSE -* logtrace - 调整log values -* logtrace - 只有当finsh使能的时候才声明cmd -* libc/minilibc - 在sys/time.h中增加gettimeofday的声明 -* utilities - 新增ymodem - -工具: - -* building.py - 增加clang静态缝隙器的支持 -* building.py - 为Keil MDK增加buildlib功能 -* building.py - 在clang-analyze中执行'clang -Wall -fsyntas-only' -* clang-analyze.py - 增加一个定制工具实现clang静态分析 - -分支: - -* 新增BeagleBone的移植 -* 新增SEP6200的移植 -* 新增K60Fxxxx的移植 -* 修正Linux中的编译错误(lm4f232, stm32f40x, xplorer4330) -* cortex-m3 - 加强hard fault的异常处理函数 -* at91sam9260 - 更新串口驱动,使用组件中的通用串口驱动 -* at91sam9260 - 更新工程目录结构 -* at91sam9260 - 修正编译错误 -* at91sam9260 - 内嵌GPLv2许可 -* stm32f10x - 删除无用的文件 -* stm32f10x - 更新工程目录结构 -* stm32f10x - 更新工程文件 -* stm32f10x - 为使用新的组件初始化更新连接脚本 -* stm32f10x - 为使用新的组件初始化更新SD card驱动 -* stm32f10x - 为使用新的组件初始化更新DM9000驱动 -* stm32f10x - 更新串口驱动,使用组件中的通用串口驱动 -* stm32f10x - 修正rtgui初始化问题 -* simulator - 为使用新的组件初始化更新代码,以便支持mingw -* simulator - 支持Linux系统 -* simulator - 修正Linux系统中的SDL初始化问题 -* simulator - 在rt_components_init之后初始化SDL -* simulator - 将对SDL设置的内容移入drivers/SConstruct -* simulator - 在env中获得CORSS_TOOL和EXEC_PATH的值 -* simulator - 支持clang-analyze -* simulator - 增加tap netif driver - -//---------------------------------------------------------------------------------------- - -//---------------------------------------------------------------------------------------- - -//---------------------------------------------------------------------------------------- - - -版本: RT-Thread 1.2.0 Beta 版本 - -发布时间: 2013/6/30 -​ -进过开发人员三个月的努力,RT-Thread 1.2.0 Beta 版本如期发布。 -该版本默认采用lwIP 1.4.1协议栈,USB device stack也进一步完善。加入 log_trace 子系统,加入组件初始化升级版本,加入 ARM Cortex-R 的移植。 - -主要变化: - -* 1,新增组件初始化功能 -- 详情请看论坛帖子[新功能] 组件初始化 -* 2,支持ARM Cortex-R系列处理器 -- Grissiom 完成 ARM Cortex-R 的移植,目前BSP中已有TI RM48x50分支(仅支持TI CCS开发环境) -* 3,文件系统中新增 RAMFS -* 4,加入 log_trace 子系统 -* 5,优化Cortex-M4线程上下文切换,使用了浮点运算的线程才保存及恢复FPU寄存器 -- 详情请看论坛帖子[优化]cortex-m4f线程切换,优化FPU寄存器 -* 6,新增API rt_memheap_realloc() -* 7,重新实现ringbuffer,采用镜像的方法区分“满”和“空”,同时支持任意大小的buffer -* 8,内核中加入RT_KERNEL_MALLOC/RT_KERNEL_FREE/RT_KERNEL_REALLOC宏。 -如果用户未定义这些宏,将默认指向rt_malloc/rt_free/rt_realloc。 -同时内核仅局限于使用这些宏来使用动态内存 -* 9,在 building.py 中新增生成 cscope database 的选项 -* 10,USB组件新增reset函数,支持热插拔 -* 11,scons编译系统支持CCS开发环境 -* 12,USB组件新增状态信息(USB_STATE_NOTATTACHED,USB_STATE_ATTACHED,USB_STATE_POWERED...) - -修复问题点: - -* 1,USB组件HOST可以挂起endpoints -* 2,simulator分支,修复 serial_write 问题 -* 3,udisk可以被弹出 -* 4,iar.py中修复绝对路径的问题 -* 5,dfs_fs.h内增加dfs_mkfs()函数的申明 -* 6,生成MDK工程文件的时候加入library文件 -* 7,当PC不再接受数据的时候,重置VCOM相应的状态 -* 8,USB组件:返回正确的LangID字符串长度给HOST -* 9,Cortex-M0,Cortex-M3,Cortex-M4上下文切换时,回收系统初始化时用到的栈空间 - -//---------------------------------------------------------------------------------------- - -//---------------------------------------------------------------------------------------- - -//---------------------------------------------------------------------------------------- - - - -版本: RT-Thread 1.2.0 Alpha版本 - -发布时间: 2013/4/10 -​ -遵循2013年RT-Thread roadmap,RT-Thread 1.2.0 Alpha版本发布,Alpha意味着此版本为技术预览版,仅用于展示RT-Thread 1.2.0未来的发展方向,并不适合于开发正式产品。RT-Thread 1.2.0版本是1.1.x系列的下一个分支,这个分支主要体现的是RT-Thread 1.x系列的文档情况。当然也有一些功能、代码方面的增强。 - -伴随着新版本的到来,RT-Thread有几个重大的转变: -1,代码托管从google code(SVN)迁移到github(GIT) -2,RT-Thread与RTGUI区分开来,并成为两个独立的开发分支 -3,重视文档,将文档建设作为1.2.0版本的首要任务来抓 - -内核主要变化: -1,加入__rt_ffs函数用于实现32位整数中获取第一个置1的位;同时调度器中位图相关算法直接使用__rt_ffs函数;CPU移植时,可定义RT_USING_CPU_FFS,使用芯片指令完成。 - -2,新的中断注册机制 -weety加入interrupt description功能,用于为interrupt增加更多的信息,同时中断服务例程也可以携带用户自定义的参数类型。 -* 这部分对ARM7、ARM9、MIPS等影响很大,需要对CPU移植做相应的一些修改。 -* 这部分对ARM Cortex-M系列芯片没有影响。 - -3,调整定时器插入位置,为相同超时定时的后面。 - -组件主要变化: -1,添加lwIP 1.4.1。 -2,在finsh shell中加入module shell功能。finsh shell本身是一个C语言表达式的shell命令行,而module shell更类似于一个传统的命令行,由命令,参数等方式构成。 - -分支主要变化: -1,完善simulator分支,支持RTGUI,支持应用模块。 -2,完善at91sam9260分支的移植及驱动更新。 - -编译系统主要变化: -1,开启省略编译时长命令特性,如果需要查看编译时命令行,可以使用scons --verbose查看。 -2,加入生成CodeBlocks工程特性。 -3,修正当系统安装使用Keil MDK 4.6+版本的问题。 - -github主要提交履历: -5646189b29: elm fatfs支持mkfs,并且无需提前执行dfs_mount; mount/umount/mkfs操作也不会引起reset -22786f8817: 允许用户自定义PID和VID -0001344105: 更明确的定时器运行机制,如果两个定时器在同一个时刻发生超时,那么先开始的定时器先处理 -5d68ef8ec1: 修正使用64位GCC时编译finsh过程中发生错误的问题 -a4d661dcf1: 修正dfs_elm.c中一处内存泄露,并且在mount fatfs失败时执行 umount fatfs操作 -43228aeb9c: 修正list_tcps问题:ipaddr_ntoa不是可重入的函数。 -3de4b92a68: 修正AT91SAM9260分支中PHY link状态错误的问题。 -1abaa0492d +当前智能化设备是一个备受关注的领域,针对这一领域的特点,RT-Thread也相