xref: /nrf52832-nimble/rt-thread/ChangeLog.md (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero# RT-Thread v4.0.0 Change Log
2*10465441SEvalZero
3*10465441SEvalZero## Kernel
4*10465441SEvalZero
5*10465441SEvalZero* Add SMP support;
6*10465441SEvalZero* Add support for 64-bit processors;
7*10465441SEvalZero* When the thread is running on CPU, the state of this thread is changed to RUNNING stat instead of READY state in previous version;
8*10465441SEvalZero
9*10465441SEvalZero## Components
10*10465441SEvalZero
11*10465441SEvalZero* When formatting the file system, adds FM_SFD option to create a volume in SFD format for FatFs; (HubretXie)
12*10465441SEvalZero* Add file system handle pointer in `struct dfs_fd' structure;
13*10465441SEvalZero* Fix stdio fd issue when POSIX api is used; (gbcwbz)
14*10465441SEvalZero* Fix the `fd_is_open()` issue: when the sub-path is the same in different mounted filesystem.
15*10465441SEvalZero* Change the critical lock/unlock to dfs_lock/unlock in `getcwd()` function of DFS (the critical lock/unlock is different in SMP environment);
16*10465441SEvalZero* Rewrite `list_thread/list_*` implementation of finsh cmd to avoid multi-core competition case;
17*10465441SEvalZero* Fix the `aio_result` issue, which is returned by `aio_read_work` in AIO; (fullhan)
18*10465441SEvalZero* Fix the mmap issue when the addr parameter is NULL; (fullhan)
19*10465441SEvalZero* Modify the `_sys_istty` function in armlibc to correctly handle STDIN/STDOUT/STDERR; (gbcwbz)
20*10465441SEvalZero* Modify the `_write_r` function in newlib to correctly handle stdout.
21*10465441SEvalZero* Add lightweight processes (lwP) and corresponding system calls;
22*10465441SEvalZero  * the lwP user application environment will be added later;
23*10465441SEvalZero* Fix the at_socket issue when socket is a null pointer; (thomas onegd)
24*10465441SEvalZero* Fix the select event issue in `at_recvfrom()` function in at_socket;
25*10465441SEvalZero* Divide SAL into `sal_socket_ops/sal_proto_ops` and sal_proto_ops is implemented with gethostbyname/getaddrinfo ops etc.
26*10465441SEvalZero* Add socket TLS layer in SAL, that is, upper application can be supported by encrypted transmission without considering lowlevel TLS at all.
27*10465441SEvalZero* Fix the length issue of `ulog_strcpy`, which should be not exceed `ULOG_LINE_BUF_SIZE`;
28*10465441SEvalZero* Add the macro definition of hexadecimal log output to ulog; (HubretXie)
29*10465441SEvalZero* Add uTest component. The uTest is a unit test framework on RT-Thread, and can also be used for automatic testing on board with external Python scripts.
30*10465441SEvalZero* Fix some compilation warnings and enumeration mismatches in drivers/audio;
31*10465441SEvalZero* Fix the `can_rx/can_tx` issue, which is not cleared to NULL when CAN device is closed in drivers/can; (xeonxu)
32*10465441SEvalZero* Fix drivers/hwtimer, time acquisition issue with counting down mode;
33*10465441SEvalZero* Add drivers/adc driver framework;
34*10465441SEvalZero* Fix the tick compensation issue when enable interrupt too early; (geniusgogo)
35*10465441SEvalZero* Add `RT_SERIAL_USING_DMA` option in drivers/serial;
36*10465441SEvalZero* Add QSPI support in drivers/spi framework;
37*10465441SEvalZero* Add QSPI support in SFUD (based on the QSPI peripheral of stm32); SFUD is upgraded to version 1.1.0;
38*10465441SEvalZero* Optimize SPI take/release function call in spi_msd;
39*10465441SEvalZero* Fix the `blk_size` issue in `rt_rbb_blk_alloc()`;
40*10465441SEvalZero* Fix the FS USB issue in `_get_descriptor` function;
41*10465441SEvalZero* Fix the empty password issue in AP mode of drivers/wlan;
42*10465441SEvalZero* Fix the return type issue in drivers/wlan;
43*10465441SEvalZero* Remove the duplicate opening file check when open a file;
44*10465441SEvalZero
45*10465441SEvalZero# BSP
46*10465441SEvalZero
47*10465441SEvalZero* Change the name parameter to `cosnt char *` in `rt_hw_interrupt_install` function; (liruncong)
48*10465441SEvalZero* Rewrite the RISC-V porting layer to make as a common and standalone porting layer for RISC-V IMAC 32/64;
49*10465441SEvalZero* Fix `$` warning issue in Kconfig files of each BSP;
50*10465441SEvalZero* Add the LPC54114-lite BSP, including GPIO, I2C, SDCard, SPI, SPI Flash, UART driver;
51*10465441SEvalZero* Add Nuvoton-M487 BSP, including UART, EMAC driver; (Bluebear 233)
52*10465441SEvalZero* Add Kendryte K210 BSP with RISC-V64 dual-core SMP BSP, including UART driver, also verified with micropython;
53*10465441SEvalZero* Add RV32M1 VEGA BSP, including GPIO, I2C, SDCard, UART and other drivers;
54*10465441SEvalZero* Fix the CAN driver issue in STM32F4XX-HAL BSP; (xeonxu)
55*10465441SEvalZero* Fix UART DMA settings issue in STM32F10x/STM32F40x BSP; (zhouchuanfu)
56*10465441SEvalZero* Fix the HEAP_BEGIN definition issue in STM32H743-Nucleo BSP; (nongxiaoming)
57*10465441SEvalZero* Fix GPIO configuration issue in stm32f10x-HAL; (Wu Han)
58*10465441SEvalZero* Change stm32f107 BSP as main function entry; (whj4674672)
59*10465441SEvalZero* Fix the serial interrupt handling issue in stm32f10x BSP;
60*10465441SEvalZero* Add PWM, RTC and watchdog drivers to stm32f10x-HAL BSP; (XXXXzzzz000)
61*10465441SEvalZero* Fix the watchdog driver issue in stm32f4xx-HAL BSP; (XXXXzzzz000)
62*10465441SEvalZero* Use lwIP version 2.x in stm32f40x/stm32f107 BSP.
63*10465441SEvalZero* Fix the link issue when enable cmBacktrace package in stm32f4xx-HAL BSP; (xeonxu)
64*10465441SEvalZero* Support Audio and microphones features in stm32f429-apollo BSP;
65*10465441SEvalZero* Enable dlmodule support in x86 BSP; (SASANO Takayoshi)
66*10465441SEvalZero* Addd uTest section in the link script of qemu-vexpress-a9/stm32f429-atk-apollo BSP for automatic testing;
67*10465441SEvalZero* Change the license to Apache License v2.0 in Godson 1C BSP; (sundm75)
68*10465441SEvalZero* Add the new BSP framework for STM32 serial chip, such as STM32 G0/F0/L0/F1/F4/F7/H7. In new BSP framework, the SoC drivers is reused. And in same time, lots of STM32 boards are supportted with new BSP framework:
69*10465441SEvalZero  * STM32F091-Nucleo Development Board BSP
70*10465441SEvalZero  * STM32F411-Nucleo Development Board BSP
71*10465441SEvalZero  * STM32L432-Nucleo Development Board BSP; (sun_shine)
72*10465441SEvalZero  * STM32F407-Discovery Development Board BSP
73*10465441SEvalZero  * STM32F446-Nucleo Development Board BSP; (andeyqi)
74*10465441SEvalZero  * STM32F746-Discovery Development Board BSP; (jinsheng)
75*10465441SEvalZero  * STM32F767-Nucleo Development Board BSP; (e31207077)
76*10465441SEvalZero  * STM32G071-Nucleo Development Board BSP;
77*10465441SEvalZero  * ATK STM32F103 NANO Development Board BSP
78*10465441SEvalZero  * ATK STM32F407 Explorer Development Board BSP
79*10465441SEvalZero  * ATK STM32F429 Apollo Development Board BSP
80*10465441SEvalZero  * ATK STM32F767 Apollo Development Board BSP
81*10465441SEvalZero  * ATK STM32L475 Pandora IoT Development Board BSP
82*10465441SEvalZero  * Fire STM32F103 Arbitrary Development Board BSP
83*10465441SEvalZero  * Fire STM32F429 Challenger Development Board BSP
84*10465441SEvalZero  * Fire STM32F767 Challenger Development Board BSP; (Hao Zhu)
85*10465441SEvalZero  * ArmFly STM32F429-v6 Development Board BSP
86*10465441SEvalZero  * STM32F103 iBox development board BSP; (dingo1688)
87*10465441SEvalZero  * Dofly STM32F103 Development Board; (FindYGL)
88*10465441SEvalZero  * STM32F107 uC/Eval Development Board BSP; (whj4674672)
89*10465441SEvalZero  * and more, there are more developers involved for stm32 BSP framework, they are HubretXie, Hao Zhu, e190, etc. to improve the STM32 public driver.
90*10465441SEvalZero* Add SWM320 BSP of Synwit.cn, including GPIO, HW Timer, I2C, Watchdog, PWM, RTC, SPI, UART, etc.; (provided and maintained by Synwit)
91*10465441SEvalZero* Add TI TMS320F28379D BSP, the first DSP chip supported on RT-Thread; (xuzhuoyi)
92*10465441SEvalZero* Fix USB driver issue in X1000; (Zhou YanJie)
93*10465441SEvalZero* Add BSP for Synopsys Design Ware ARC EM Starter Kit, bsp/synopsys/emsk_em9d, EM9D core, including GPIO, UART and other drivers; (provided and maintained by Synopsys)
94*10465441SEvalZero
95*10465441SEvalZero# Tool
96*10465441SEvalZero
97*10465441SEvalZero* Provide more inforamtion when the tool chain does not exist;
98*10465441SEvalZero* Add a draft Segger Embedded Studio project file generation command. Note that the tool chain in SES is a special version not the newlib.
99*10465441SEvalZero* Fix the IAR library link command issue when use scons command line under;
100*10465441SEvalZero* Fix the BSP path issue in scons `str(Dir('#'))`;
101*10465441SEvalZero* Add `scons --pyconfig-silent` command to add some Kconfig configurations and to generate `.config` and `rtconfig.h` files;
102*10465441SEvalZero* Update the `scons --dist` command to adapt to the new BSP framework;
103*10465441SEvalZero* Modify the mkromfs.py script. Fix the corresponding C code generation When the romfs contains empty files or empty folders;
104*10465441SEvalZero* Fix the issue of version string comparison issue for GNU GCC version in utils.py;
105*10465441SEvalZero* ENV updated to V1.1.0
106*10465441SEvalZero  * Provide better prompt information to improve user experience;
107*10465441SEvalZero  * Add `system32` path to environment variables to avoid the `cmd` command cannot be found;
108*10465441SEvalZero  * Add `PYTHONHOME` variable to environment variables to avoid PYTHON environment issue;
109*10465441SEvalZero
110*10465441SEvalZero# RT-Thread v3.1.1 Change Log
111*10465441SEvalZero
112*10465441SEvalZero## Kernel
113*10465441SEvalZero
114*10465441SEvalZero* Support the configuration of the upward growth stack which is defined by the `ARCH_CPU_STACK_GROWS_UPWARD` macro. Because there are fewer ARCH for stacks growing upward, this configuration item does not display directly in menuconfig. When a CPU ARCH needs stacks growing upward, the configuration of `ARCH_CPU_STACK_GROWS_UPWARD` can be selected by BSP Kconfig file in default.
115*10465441SEvalZero* Support for ARMCC V6 and later compiler (LLVM-based Compiler); currently it's mainly used in Keil MDK IDE. Please notes that the "Warnings" needs to use `Moderate Warnings` in project configuration in C/C++ (AC6) TAB; After using ARMCC v6, RT-Thread will add an additional `CLANG_ARM` macro definition; (liruncong, nongxiaoming, bernard)
116*10465441SEvalZero* The `RT_USING_IDLE_HOOK` configuration in Kconfig becomes a separate configuration item, not limited to `RT_USING_HOOK`; (geniusgogo)
117*10465441SEvalZero
118*10465441SEvalZero## Components
119*10465441SEvalZero
120*10465441SEvalZero* Improve the PWM driver framework and add more interfaces.
121*10465441SEvalZero* Fix the F_SETFL handling in ioctrl function; Fix the return value issue of fcntl function which is always 0 value.
122*10465441SEvalZero* Fix the memheap object type issue when creating a ramfs object.
123*10465441SEvalZero* Add power management framework for low power applications.
124*10465441SEvalZero* Add multi-segment support for read and write operations in MC/SDIO driver framework (for stm32, you can choose a separate stm32_sdio package); (weety)
125*10465441SEvalZero* Add ringblk_buf component for the block mode but in ringbuffer applications;
126*10465441SEvalZero* Improve WLAN management framework with unified interfaces, management, commands, to provide more friendly support to developers and users;
127*10465441SEvalZero* Add the conditional macro in the finsh when the MSH component is not enabled, even if the code files are compiled.
128*10465441SEvalZero* Remove gdbstub and move to rt-thread packages.
129*10465441SEvalZero* Upgrade and improve SAL and AT components: (linuxhan, eddylin83, slyant, luofanlu, Hubert Xie, Lawlieta, zhaojuntao, armink)
130*10465441SEvalZero  * Fix the none cleared issue when closing socket in SAL, which lead to the socket is always holding.
131*10465441SEvalZero  * Fix the `select()` issue for UDP communication in AT component. Add the receiving data handling to complete the clearing of received event;
132*10465441SEvalZero  * Add the errno value when receive data timeout in at_recvfrom function in the AT component.
133*10465441SEvalZero  * Add the receive data timeout handling in at_client_recv function in the AT component.
134*10465441SEvalZero* Fix a possible issue in fputc function implementation when using microlib;
135*10465441SEvalZero* Add gmtime_r implementation for ARMCC, IAR tool chain;
136*10465441SEvalZero* Improve time function support in IAR and support 64bit time; (hichard)
137*10465441SEvalZero* DHCPD's support for IPv6;
138*10465441SEvalZero* Remove lwIP-1.3.2 porting and add lwIP-2.1.0 porting; lwIP-2.0.2 is still the default version.
139*10465441SEvalZero* Add a lightweight ulog component and automatically replace the debug macro of the original rtdbg.h when it's enable.
140*10465441SEvalZero* USB stack update
141*10465441SEvalZero  * HOST, optimize the USB HOST timeout mechanism; fix the un-alignment visit issue in F4xx-HAL USB host driver;
142*10465441SEvalZero  * Device: Add the check when class drivers are illegally registered; Fix the un-aligned access issue in some platforms; optimize CDC VCOM classes, add the timeout mechanism and ID definition.
143*10465441SEvalZero
144*10465441SEvalZero## BSP
145*10465441SEvalZero
146*10465441SEvalZero* Upgrade the wlan adaptor to the new version of Wi-Fi management framework in amebaz BSP.
147*10465441SEvalZero* Add airkiss wifi configuration code to amebaz BSP.
148*10465441SEvalZero* Update Apollo2 BSP with ADC, GPIO, I2C, PDM, SPI, UART and other drivers; (Haleyl)
149*10465441SEvalZero* BeagleBone BSP is changed to main function mode, and adds Kconfig configuration file.
150*10465441SEvalZero* DM365 BSP adds Kconfig configuration file;
151*10465441SEvalZero* Update HiFive1 BSP and add more documentation.
152*10465441SEvalZero* Update imx6sx BSP to main function mode, and add Kconfig configuration file.
153*10465441SEvalZero* Change the old imxrt1052-evk BSP. The imxrt1052-related BSPs are classified into the `bsp/imxrt` directory; A touch framework is added to `bsp/imxrt`, and later will be moved into `components/drivers` directory;
154*10465441SEvalZero* Improve stm32f4xx-HAL BSP with PWM, I2C, USB Host driver; (XuanZe, xuzhuoyi)
155*10465441SEvalZero* Improve stm32f10x BSP with CAN driver and increase I2C driver; (wuhanstudio, AubrCool)
156*10465441SEvalZero* Improve stm32f10x-HAL BSP with I2C, IWG, PWM, RTC and other drivers, improve UART driver; (XuanZe)
157*10465441SEvalZero* Improve stm32f429-disco BSP and add I2C, LCD, Touch driver; (xuzhuoyi)
158*10465441SEvalZero* Improve x86 BSP, support dlmodule function; (SASANO Takayoshi, parai)
159*10465441SEvalZero
160*10465441SEvalZero## Tool
161*10465441SEvalZero
162*10465441SEvalZero* Modify the building script to support Python 3; <Python 3 patches have been submitted to scons and need to wait for next scons release,maybe scons-3.0.2> (Arda)
163*10465441SEvalZero* Add `scons --pyconfig` mode, which has a TK UI configurator; (weety)
164*10465441SEvalZero* Support for GNU GCC 7/8 version toolchains (The `-std=c99` is not added into C-compiler flags), but please note: PThreads component failed in 2.5 and new version of newlib.
165*10465441SEvalZero
166*10465441SEvalZero# RT-Thread 3.1.0 Change Log
167*10465441SEvalZero
168*10465441SEvalZero## Kernel
169*10465441SEvalZero
170*10465441SEvalZero* The main thread priority can be configured by Kconfig;
171*10465441SEvalZero* Add the checking of kernel object type, which can effectively avoid the problem of continuing to use kernel objects after they are destroyed.
172*10465441SEvalZero* Add the idle hook list to mount multiple idle hook, and can be configured by Kconfig.
173*10465441SEvalZero* Add the device_ops operation set to reduce the footprint of device object.
174*10465441SEvalZero* Remove the special memory operation in application module when using SLAB memory management algorithm.
175*10465441SEvalZero* Move application module from the kernel to `libc/libdl`.
176*10465441SEvalZero* Enhance the debug information output of `rtdbg.h` file.
177*10465441SEvalZero* In Keil/IAR tool chain, the `RT_USED` is used to keep symbols and avoid to add more argument or section in link phrase.
178*10465441SEvalZero
179*10465441SEvalZero## Components
180*10465441SEvalZero
181*10465441SEvalZero* Remove all of external codes, which will be moved to packages in the future.
182*10465441SEvalZero* Add initialization flag for shell, file system, network protocol stack etc to prevent repeated initialization;
183*10465441SEvalZero* Enable the long file name feature of ELM FatFs in default.
184*10465441SEvalZero* Change DFS FD to dynamic allocation mode. The maximum number of allocation is still DFS_FD_MAX.
185*10465441SEvalZero* Add dfs_fdtable_get() function to get different fdtable;
186*10465441SEvalZero* Add more DFS error messages, and provide easy to understand log when abnormal.
187*10465441SEvalZero* Fix the disk format issue of FatFs file system when multiple FatFs file systems are mounted.
188*10465441SEvalZero* Remove the folder enter feature in msh when input a folder name;
189*10465441SEvalZero* Add `int finsh_set_prompt (const char * prompt);` routine for setting a custom prompt for msh;
190*10465441SEvalZero* Add the VBUS configuration in Kconfig.
191*10465441SEvalZero* Move the application module from kernel to `libc/libdl` component;
192*10465441SEvalZero* Rewrite most of the management code for application module: replace the original object container with the object list; split the symbol resolution code into different processor architecture etc.
193*10465441SEvalZero* Update the application module chapter in the programming guide, and change it into dynamic module chapter.
194*10465441SEvalZero* Overwrite the exit() function of newlib to take over the processing of exit for a dlmodule.
195*10465441SEvalZero* Add SAL (Socket Abstraction Layer) component for adapting different protocol stacks and network implementations, and update the relevant sections of the programming guide;
196*10465441SEvalZero* Add AT component, including AT client, AT server and AT Socket function;
197*10465441SEvalZero* Remove the poll/select API of DFS_NET and move them to SAL component.
198*10465441SEvalZero* Remove the strong dependence of lwIP component for DFS_NET and replace it with Kconfig configuration in SAL.
199*10465441SEvalZero* Add the DHCP server function with lwIP raw API;
200*10465441SEvalZero* Fix the wait queue none-initialization issue in socket allocation of lwIP.
201*10465441SEvalZero* When a thread is about to block on a wait queue, fix the wake up issue for `rt_wqueue_wakeup' is executed to wake up that thread;
202*10465441SEvalZero* Add the PWM driver framework;
203*10465441SEvalZero* Fix the sdio_irq_wakeup release issue in the MMC/SD framework.
204*10465441SEvalZero* Fix the problem of DMA handling in the serial driver framework.
205*10465441SEvalZero* Update SFUD to v1.0.6 version;
206*10465441SEvalZero
207*10465441SEvalZero## BSP
208*10465441SEvalZero
209*10465441SEvalZero* Fix the SP issue when hard fault occurs for ARM Cortex-M arch;
210*10465441SEvalZero* Add C-Sky CK802 architecture porting;
211*10465441SEvalZero* Add Realtek amebaz WiFi SOC (rtl8710bn) BSP;
212*10465441SEvalZero* Update imxrt1052-evk firmware SDK to support B model chip.
213*10465441SEvalZero* Fix the copying packets issue in the Godson 1C BSP when sending message.
214*10465441SEvalZero* The Nuvoton m05x/m451 BSP are changed into the main() entry mode, and supports GCC compilation;
215*10465441SEvalZero* Fix the inconsistency issue between touch range and LCD resolution in qemu-vexpress-a9.
216*10465441SEvalZero* Add qemu-vexpress-gemini BSP for dual core A9 (RT-Thread + Linux) arch;
217*10465441SEvalZero* Add the basic porting for Raspberry Pi 2B ;
218*10465441SEvalZero* Add CAN and PWM drivers in stm32f4xx-HAL BSP;
219*10465441SEvalZero* Optimize the GPIO driver in stm32f4xx-HAL BSP;
220*10465441SEvalZero* Add UART3 driver in stm32f4xx-HAL BSP;
221*10465441SEvalZero* Fix the I2C1 driver clock in stm32f10x BSP and WDG control interface.
222*10465441SEvalZero* Add rt_hw_us_delay interface in stm32f10x-HAL BSP;
223*10465441SEvalZero* Optimize the GPIO driver in stm32f10x-HAL BSP;
224*10465441SEvalZero* Add GPIO driver and RTC driver in stm32f107 BSP;
225*10465441SEvalZero
226*10465441SEvalZero## Tool
227*10465441SEvalZero
228*10465441SEvalZero* ENV update to v1.0.0 final version.
229*10465441SEvalZero* ENV added the China mirror for software package, which can speed up the software package download, update  etc.
230*10465441SEvalZero* Fix the ENV known bugs and enhance the interaction with users.
231*10465441SEvalZero* Add building script to detect the version of GCC & newlib;
232*10465441SEvalZero* Add building script to detect the version of armcc;
233*10465441SEvalZero* Add `scons --dist` function to make distribution for a BSP.
234*10465441SEvalZero* Add `scons - dist - strip' function to make a minimal files of distribution for a BSP.
235*10465441SEvalZero* Add `ASFLAGS/LOCAL_ASFLAGS' parameters for defined a group and pass them to assembler;
236*10465441SEvalZero* Fix some errors in building script under the Linux environment.
237*10465441SEvalZero* Add the C-Sky CDK IDE project generation.
238*10465441SEvalZero* Add `scons --target=vsc -s` to generate friendly configuration files for VSCode;
239*10465441SEvalZero
240*10465441SEvalZero# RT-Thread 3.0.4 Change Log
241*10465441SEvalZero
242*10465441SEvalZero## Kernel
243*10465441SEvalZero
244*10465441SEvalZero* Change the location of hook invoking in rt_event_send, which can better reflect the event value to the system view.
245*10465441SEvalZero* Fix the rt_realloc() issue in memheap;
246*10465441SEvalZero* Fix the vstart_addr issue in the dynamic library.
247*10465441SEvalZero* Ensure that signal is more standardized and remove si_errno members from siginfo_t;
248*10465441SEvalZero* Add rt_thread_mdelay() API for millisecond delay in thread.
249*10465441SEvalZero
250*10465441SEvalZero## Components
251*10465441SEvalZero
252*10465441SEvalZero* Fix the DFS mkfs issue of FatFs (which is a merge issue introduced in RT-Thread V3.0 upgrade).
253*10465441SEvalZero* Fix dfs_net poll issue, if there is already received data, the upper layer can not wake up and deal with data.
254*10465441SEvalZero* Fix the socket issue in dfs_net if lwip_socket failed(Bluebear233);
255*10465441SEvalZero* If the dfs_net/socket feature is used within lwIP 1.x version, a compiler error will be returned.
256*10465441SEvalZero* Fix the DFS df() information issue;
257*10465441SEvalZero* Fix the audio device write issue while the interrupt is not properly recovered.
258*10465441SEvalZero* Fix the one-shot timeout issue in the hardware timer driver framework.
259*10465441SEvalZero* In ENC28J60 driver, the "link change interrupt" is enable in initialization.
260*10465441SEvalZero* Fix the data issue in put data into ringbuffer.
261*10465441SEvalZero* Add UDP information display in netstat command;
262*10465441SEvalZero* Fix the USB HS issue when sending 1 bytes of data will cause two times of transmission.
263*10465441SEvalZero* Change the registration mechanism of USB Class Driver and Class Driver can be registered in package.
264*10465441SEvalZero* Add USB Device driver framework for HS USB.
265*10465441SEvalZero* Enhance the compatibility of time() function for different compilers;
266*10465441SEvalZero* Add more configuration items for DHCPD in menuconfig.
267*10465441SEvalZero
268*10465441SEvalZero## BSP
269*10465441SEvalZero
270*10465441SEvalZero* Temporarily remove the Andes AE210P transplant because of the mistakenly use SVC for context switching.
271*10465441SEvalZero* Add SD/MMC drive in Allwinner ARM9 BSP;
272*10465441SEvalZero* Add SPI and SPI Flash drivers to Allwinner ARM9 BSP.
273*10465441SEvalZero* Add GD32's gd32303e-eval development board support;
274*10465441SEvalZero* gd32450z-eval supports GNU GCC compilation;
275*10465441SEvalZero* Rewriting the hifive1 board level support package for the risc-v architecture;
276*10465441SEvalZero* About i.MX RT1052, we have completed various development board support: ATK, Fire, seeed studio;
277*10465441SEvalZero* On i.MX RT1052, add the cache-ops functions;
278*10465441SEvalZero* On i.MX RT1052, add I2S driver and WM8960 codec driver support;
279*10465441SEvalZero* Improve ETH driver support (including support for Fire development board) on i.MX RT1052.
280*10465441SEvalZero* Add Hardware Timer driver support on i.MX RT1052.
281*10465441SEvalZero* On i.MX RT1052, add GPIO driver;
282*10465441SEvalZero* On i.MX RT1052, add RTC driver;
283*10465441SEvalZero* On i.MX RT1052, improve SD/MMC driver;
284*10465441SEvalZero* On i.MX RT1052, add SPI driver and SPI Flash driver (connect to SFUD component);
285*10465441SEvalZero* Add USB Device driver on i.MX RT1052.
286*10465441SEvalZero* Add README files and KConfig files in LPC408x BSP;
287*10465441SEvalZero* Add README documents in LPC5460x-LPCXpresso BSP;
288*10465441SEvalZero* Add the display controller driver (Sundm75) in Godson 1C BSP.
289*10465441SEvalZero* Add CAN driver in Loongson 1C BSP(Sundm75);
290*10465441SEvalZero* In GPIO driver of Loongson 1C BSP, add (external) interrupt feature (Zhuangwei);
291*10465441SEvalZero* Use SPI automatic initialization in Loongson 1C BSP.
292*10465441SEvalZero* Add I2C driver in Loongson1C BSP(Sundm75);
293*10465441SEvalZero* Add resistive touch screen driver in Loongson 1C BSP(Sundm75);
294*10465441SEvalZero* In Loongson 1C BSP, the components initiliazation and main function is enable(Zhuangwei).
295*10465441SEvalZero* Add self bootup in Loongson1C BSP (Zhuangwei);
296*10465441SEvalZero* Add README files and KConfig files to Loongson 1C BSP(Zhuangwei).
297*10465441SEvalZero* Fix the rx descriptor issue in init_rx_desc function in NUC472 BSP (Bluebear233);
298*10465441SEvalZero* Add AC97 Audio driver in QEMU-VExpress-A9 BSP;
299*10465441SEvalZero* Add README description file in QEMU-VExpress-A9;
300*10465441SEvalZero* Add I2C driver in stm32f4xx-HAL BSP, and README description file;
301*10465441SEvalZero* Add cache-ops in stm32f7-disco BSP, and README description file;
302*10465441SEvalZero* Add README description file in stm32f10x/stm32f10x-HAL;
303*10465441SEvalZero* Add README specification files and KConfig configuration files in stm32f40x BSP;
304*10465441SEvalZero* Add KConfig configuration file in stm32f20x BSP;
305*10465441SEvalZero* Add README description file to stm32f411-nucleo BSP and enable GNU GCC tool chain support;
306*10465441SEvalZero* Add GPIO driver and README description file in stm32f429-apollo BSP;
307*10465441SEvalZero* Add KConfig configuration files in stm32f429-armfly BSP;
308*10465441SEvalZero* Add README description file in stm32l476-nucleo BSP;
309*10465441SEvalZero* Because V2M-MPS2 does not support in 32-bit machine simulation operation, temporarily remove this BSP.
310*10465441SEvalZero* Add README description file and some firmware file, such as u-boot.bin, wifi firmware etc, in X1000 BSP;
311*10465441SEvalZeroTools
312*10465441SEvalZero* Add detection feature for the version of GNU GCC tool chain and libc function feature.
313*10465441SEvalZero* Add the function of VSCode editor assistance, and support scons --target=vsc -s under BSP folder to generate configuration files for VSCode.
314*10465441SEvalZero* Add the detection of verson of IAR;
315*10465441SEvalZero* Add the ProjectInfo (Env) function to get information about target: all source files should be compiled, all header files, all macro definitions, the search paths for header file etc.
316*10465441SEvalZero
317*10465441SEvalZero# RT-Thread 3.0.3 Change Log
318*10465441SEvalZero
319*10465441SEvalZero## Kernel
320*10465441SEvalZero
321*10465441SEvalZero* Add scheduler protection when do cleanup for a detached thread;
322*10465441SEvalZero* Fix the object_find issue when enable module feature;
323*10465441SEvalZero* Improve POSIX signal support and add rt_signal_wait function and POSIX sigwait interface;
324*10465441SEvalZero* When enable finsh shell, rtthread.h header file includes the API file of finsh. Therefore, the application code can use command export feature without finsh.h file;
325*10465441SEvalZero* Improve the comments of rtdbg.h file. In RT-Thread, just use following code to add debug log feature:
326*10465441SEvalZero
327*10465441SEvalZero```c
328*10465441SEvalZero    #define DBG_ENABLE
329*10465441SEvalZero
330*10465441SEvalZero    #define DBG_SECTION_NAME    "[ MOD]"
331*10465441SEvalZero    #define DBG_LEVEL           DBG_INFO
332*10465441SEvalZero    #define DBG_COLOR
333*10465441SEvalZero    #include <rtdbg.h>
334*10465441SEvalZero```
335*10465441SEvalZero
336*10465441SEvalZeroWhen close the DBG_ENABLE definition, the debug log will be closed. Otherwise, the `dbg_log(level, fmt, ...)` can be used to print debug information.
337*10465441SEvalZero
338*10465441SEvalZeroDBG_SECTION_NAME - The prefix information for each log line;
339*10465441SEvalZeroDBG_LEVEL - The debug log level;
340*10465441SEvalZeroDBG_COLOR - Whether use color log in console.
341*10465441SEvalZero
342*10465441SEvalZero## Components
343*10465441SEvalZero
344*10465441SEvalZero* Fix the flag issue of fopen in GNU GCC;
345*10465441SEvalZero* Fix the pthread_detach issue when used for a detached pthread;
346*10465441SEvalZero* Fix the _TIMESPEC_DEFINED issue in IAR 8;
347*10465441SEvalZero* Add libc_stdio_get_console() interface for returns the fd of console;
348*10465441SEvalZero* Move UI engine component as a standalone package;
349*10465441SEvalZero* Add a unify TF/SD card driver on SPI device bus;
350*10465441SEvalZero* Add soft-RTC device, therefore device can synchronize with network time and maintains the time with OS tick later;
351*10465441SEvalZero* Change the open/fcntl/ioctl API to POSIX standard  interface;
352*10465441SEvalZero* Fix ramfs issue when update with RTT 3.0.x;
353*10465441SEvalZero* Fix the elm fatfs umount issue; (liu2guang)
354*10465441SEvalZero* ignore the O_CREAT flag when open a device file;
355*10465441SEvalZero* Improve VCOM class driver in USB stack; (ChunfengMu, Aubr.Cool)
356*10465441SEvalZero
357*10465441SEvalZero## BSP
358*10465441SEvalZero
359*10465441SEvalZero* Fix the potential issue when enable Cortex-M hardware FPU;
360*10465441SEvalZero* Add v2m-mps2 bsp, which is used in Keil MDK5 for Cortex-M4/M7/M23/M33 simulation;
361*10465441SEvalZero* Add sdcard driver for stm32f10x-HAL;(liu2guang)
362*10465441SEvalZero* Improve GNU GCC support for stm32f10x-HAL;(Xeon Xu)
363*10465441SEvalZero* simulator bsp can be used in Windows/Visual C++ and update SDL to v2.0.7;
364*10465441SEvalZero* Add gk7102 bsp by gokemicro;(gokemicro)
365*10465441SEvalZero* Add allwinner F1C100s ARM9 bsp;(uestczyh222)
366*10465441SEvalZero* Fix some issues in peripherals drive library of NXP LPC54608/i.MX RT; (Valeriy Van)
367*10465441SEvalZero
368*10465441SEvalZero## Tools
369*10465441SEvalZero
370*10465441SEvalZero* scons building script will automatically add `_REENT_SMALL` macro when enable newlib nanao;
371*10465441SEvalZero* Modify building script for Python 3.x and scons 3.0
372*10465441SEvalZero
373*10465441SEvalZero# RT-Thread v3.0.2 Change log
374*10465441SEvalZero
375*10465441SEvalZero## Platform
376*10465441SEvalZero
377*10465441SEvalZero* Make sure the Object_Class to a fixed value
378*10465441SEvalZero* Add `rt_device_create/destroy` API
379*10465441SEvalZero* Add memory trace for small memory management algorithm for memory leak and overwritten.
380*10465441SEvalZero* Add a first version of asynchronous I/O API
381*10465441SEvalZero* Add cputime for high resolution counter
382*10465441SEvalZero* Add pipe device functions in DeviceDrivers
383*10465441SEvalZero* USB Host available in stm32f4 with mass storage class
384*10465441SEvalZero* Add 'df' command in msh
385*10465441SEvalZero* Update UI engine and add an example
386*10465441SEvalZero* Split `clock_time` from pthreads and add a new clock id: `CLOCK_CPUTIME_ID`
387*10465441SEvalZero* Enable IPv6 in lwIP 2.0.2 version
388*10465441SEvalZero* Add memlog in logtrace
389*10465441SEvalZero* Fix closesocket issue in dfs_net
390*10465441SEvalZero* Fix IPv6 issue in NFS
391*10465441SEvalZero* Update JFFS2 file system with new DFS API
392*10465441SEvalZero* Fix the issue of stat "/.." of lwext4 (parai)
393*10465441SEvalZero* Fix the fs type search issue in mkfs
394*10465441SEvalZero* Fix the select issue in dfs_net
395*10465441SEvalZero
396*10465441SEvalZero## Tools
397*10465441SEvalZero
398*10465441SEvalZero* scons: add '--useconfig' command to use an exist config file
399*10465441SEvalZero* scons: force to use g++ for link when enable `RT_USING_CPLUSPLUS` in GNU GCC configuration
400*10465441SEvalZero* Enable package feature in Linux/MacOS host
401*10465441SEvalZero
402*10465441SEvalZero## BSP
403*10465441SEvalZero
404*10465441SEvalZero* Add NUC472 bsp (bluebear)
405*10465441SEvalZero* Update SD/MMC driver for qemu-vexpress-A9
406*10465441SEvalZero* Add keyboard/mouse driver for qemu-vexpress-a9
407*10465441SEvalZero* Add ADC/I2C/Flash/PWM/RTC/smbus/SPI driver for apollo2 (Haleyl)
408*10465441SEvalZero* Add I2C/LCD/Touch driver for i.MXRT1052-EVK
409*10465441SEvalZero* Update SD/MMC driver for mini2440 (kuangdazzidd)
410*10465441SEvalZero* Update simulator to adapt VC++ compiler
411*10465441SEvalZero* Add USB host driver in stm32f4xx-HAL (uestczyh222)
412*10465441SEvalZero* Update EMAC driver for IPv6 in stm32f40x/stm32f107
413*10465441SEvalZero* Add stm32h743-nucleo bsp (polariss)
414*10465441SEvalZero
415*10465441SEvalZero# RT-Thread v3.0.1 Change log
416*10465441SEvalZero
417*10465441SEvalZero## Platform:
418*10465441SEvalZero
419*10465441SEvalZero* Add mmap()/munmap() API for POSIX compatibility.
420*10465441SEvalZero* Fix the filesystem_operation_table issue.
421*10465441SEvalZero* Enhance USB stack for USB slave (HID/ECM/RNDIS/WINUSB or composite device);
422*10465441SEvalZero* Enhance USB stack for USB host (HID/MSC etc);
423*10465441SEvalZero* Fix memory leak issue when close a pipe.
424*10465441SEvalZero* Fix the romfs open issue;
425*10465441SEvalZero* Add SoftAP device in Wi-Fi framework;
426*10465441SEvalZero* Re-order the lwIP/ETH initialization;
427*10465441SEvalZero* Add IPv6 options in Kconfig;
428*10465441SEvalZero* Fix the module_id issue in _rt_thread_init;
429*10465441SEvalZero
430*10465441SEvalZero## Tools:
431*10465441SEvalZero
432*10465441SEvalZero* Add menuconfig for Linux/Mac platform: use `scons --memuconfig` to enable it;
433*10465441SEvalZero* Add LIBS feature for IAR project;
434*10465441SEvalZero
435*10465441SEvalZero## BSP:
436*10465441SEvalZero
437*10465441SEvalZero* Enhance LPC54608 BSP for kinds of compiler;
438*10465441SEvalZero* Add GPIO/I2C/SPI driver for Loongson 1C;
439*10465441SEvalZero* Add csd cmd in sdcard driver of mini2440;
440*10465441SEvalZero* Add SDIO/EMAC driver for qemu-vexpress-a9 bsp;
441*10465441SEvalZero* Enable VC++ to compile simulator bsp;
442*10465441SEvalZero* Add stm32f4xx-HAL bsp for kinds of STM32F4 series <User can use menuconfig to select chip>;
443*10465441SEvalZero* Fix the PHY reset in stm32f429-apollo bsp;
444*10465441SEvalZero* Add Audio/MMC/SLCD/Touch/USB slave/RTC/SPI/SFC Flash driver in Ingenic X1000 bsp;
445*10465441SEvalZero
446*10465441SEvalZero# RT-Thread v3.0.0 Change log
447*10465441SEvalZero## Platform:
448*10465441SEvalZero
449*10465441SEvalZero* Add more POSIX features, for example poll/select, signal, termios etc.
450*10465441SEvalZero* Add waitqueue for poll feature.
451*10465441SEvalZero* Use fops for file operation. There are two ways to visit device object: rt_device_* API, the file API(open/read/write/close etc).
452*10465441SEvalZero* Change the type of cmd from uint8_t to int in control interface.
453*10465441SEvalZero* Add more C++ object for RT-Thread Kernel Object.
454*10465441SEvalZero* Add wlan driver framework for wlan device operation.
455*10465441SEvalZero* Integrate SFUD into RT-Thread to unify the operations of spi flash.
456*10465441SEvalZero* Update lwIP to v2.0.2 version.
457*10465441SEvalZero
458*10465441SEvalZero## Tools:
459*10465441SEvalZero
460*10465441SEvalZero* Enable packages, with ENV tool.
461*10465441SEvalZero* menuconfig & Kconfig.
462*10465441SEvalZero* Add scons --dist for make a distribution for specified BSP.
463*10465441SEvalZero
464*10465441SEvalZero## BSP:
465*10465441SEvalZero
466*10465441SEvalZero* more MCU porting.
467*10465441SEvalZero
468*10465441SEvalZero## IoT:
469*10465441SEvalZero
470*10465441SEvalZero* put more IoT components as packages, for example, MQTT, CoAP, HTTP, TLS etc.
471*10465441SEvalZero
472*10465441SEvalZero# RT-Thread v2.1.0 Change log
473*10465441SEvalZero
474*10465441SEvalZeroThis release is the final release for RT-Thread v2.1.0 branch. This release has been delayed many time. After committed fh8620 and x1000 bsp, we are proud to announce this branch release of the official version.
475*10465441SEvalZero
476*10465441SEvalZeroThe change log since last stable version:
477*10465441SEvalZero
478*10465441SEvalZero## Kernel:
479*10465441SEvalZero
480*10465441SEvalZero* Move the init component to the kernel.
481*10465441SEvalZero* Fix the device open flag issue.
482*10465441SEvalZero* Add assertion hook.
483*10465441SEvalZero* Better application module support.
484*10465441SEvalZero* Does not lock scheduler when invoking soft-timer timeout function.
485*10465441SEvalZero
486*10465441SEvalZero## Board Support Package:
487*10465441SEvalZero
488*10465441SEvalZero* fh8620, which is provided by Shanghai Fullhan Microelectronics Co., Ltd. It's a IP camera chip with ARM1176, 300MHz, 16KB I-Cache and 16kB D-Cache.
489*10465441SEvalZero* x1000 bsp. The CPU is a XBurst CPU 1.0GHz, MIPS-based, from Ingenic Semiconductor Co.,Ltd.
490*10465441SEvalZero* imx6sx bsp, only the Cortex-A9 core porting in the NXP i.MX6 solox. BTW, another full Kinetis series porting was created in rt-thread_fsl, which is maintained by NXP employee.
491*10465441SEvalZero* lpc5410x bsp, only the Cortex-M4 core porting.
492*10465441SEvalZero* ls1cdev bsp for Loogson1C board.
493*10465441SEvalZero* dm365 bsp.
494*10465441SEvalZero* nRF51822/nRF52832 bsp.
495*10465441SEvalZero* stm32f7-disco bsp, the first ARM Cortex-M7 porting in RT-Thread.
496*10465441SEvalZero* stm32f411-nucleo bsp.
497*10465441SEvalZero* Add IAR compiler support in beaglebone bsp.
498*10465441SEvalZero
499*10465441SEvalZero## Components:
500*10465441SEvalZero
501*10465441SEvalZero* Add more socket fd operators in DFS with a virtual lwIP file system ops.
502*10465441SEvalZero* Add CAN/Hardware Timer device drivers.
503*10465441SEvalZero* Fix the SDIO issue to support sdio wifi device.
504*10465441SEvalZero* Add eMMC support in SD/MMC device drivers;
505*10465441SEvalZero* Fix the NAT configured enter reset issue in lwIP NAT.
506*10465441SEvalZero* RTGUI come back, but as a UI engine for blend point/line/rect and bitmap etc.
507*10465441SEvalZero* Add nanopb porting, a small code-size Protocol Buffers implementation;
508*10465441SEvalZero* Add paho-mqtt porting, the Eclipse Paho MQTT C/C++ client for Embedded platforms;
509*10465441SEvalZero* Update freetype to 2.5.4 version.
510*10465441SEvalZero* Enhance msh for file operations.
511*10465441SEvalZero* Split the exported commands of finsh shell to a standalone section: ".rodata.name"
512*10465441SEvalZero
513*10465441SEvalZero# RT-Thread v2.1.0 beta版本更改说明
514*10465441SEvalZero
515*10465441SEvalZero## BSP部分
516*10465441SEvalZero
517*10465441SEvalZero* BeagleBone加入GPIO驱动;
518*10465441SEvalZero* 京微雅格M7,更新驱动库并改进EMAC驱动程序;
519*10465441SEvalZero* 新加入dm365移植(包括EMAC、GPIO、I2C、MMC/SD、SPI等驱动);
520*10465441SEvalZero* LPC4088加入EMC、硬件定时器、CAN驱动;
521*10465441SEvalZero* 新加入龙芯1C,智龙v2开发板移植(包括多串口驱动);
522*10465441SEvalZero* 更改mini2440移植为applications/drivers等的目录方式;
523*10465441SEvalZero* 更新simulator在MS VC++上的移植,处理好初始化代码工作,完善UART控制台驱动;
524*10465441SEvalZero* 新加入stm32f7-disco移植;
525*10465441SEvalZero* 在stm32f10x中新加入CAN驱动及应用代码示例;
526*10465441SEvalZero* 在stm32f40x中加入硬件定时器驱动,RTC驱动;
527*10465441SEvalZero* 调整stm32f107为新的串口驱动框架;
528*10465441SEvalZero
529*10465441SEvalZero## 组件
530*10465441SEvalZero
531*10465441SEvalZero* DFS的struct stat定义中移除st_blksize成员(可以兼容于VC++中的stat定义);
532*10465441SEvalZero* 修正DFS中select实现的问题;
533*10465441SEvalZero* 修正DFS中文件操作出错、关闭时的fd处理问题;
534*10465441SEvalZero* 修正DFS中mkdir和lseek出错时的fd处理问题;
535*10465441SEvalZero* 修正lwIP中SYS_ARCH_PROTECT/SYS_ARCH_UNPROTECT保护的问题;
536*10465441SEvalZero* 增加CAN驱动框架;
537*10465441SEvalZero* 增加硬件定时器驱动框架;
538*10465441SEvalZero* SD/MMC驱动框架中增加eMMC支持;
539*10465441SEvalZero* 修正注册SDIO驱动时驱动关联的问题;
540*10465441SEvalZero* 修正串口驱动框架DMA发送时激活标志的问题;
541*10465441SEvalZero* SPI Flash驱动中加入对GD25Q spi flash芯片支持;
542*10465441SEvalZero* 增加paho-mqtt组件移植;
543*10465441SEvalZero* 增加msh的脚本执行能力,可以在msh下执行*.sh脚本;
544*10465441SEvalZero* 增加msh下的mkfs命令;
545*10465441SEvalZero* 修正在Linux Telnet下使用finsh shell回车符处理的问题;
546*10465441SEvalZero* 增加应用模块在使用armcc、gnu gcc编译器时的libc符号导出;
547*10465441SEvalZero* 在以太网网卡驱动框架中增加ETHIF_LINK_AUTOUP/PHYUP参数用于指定初始时的链路Up/Down状态;
548*10465441SEvalZero* 在组件初始化中导出log_trace组件;
549*10465441SEvalZero
550*10465441SEvalZero## 内核
551*10465441SEvalZero
552*10465441SEvalZero* 更改UNUSED/USED等更改成RT_UNUSED/RT_USED553*10465441SEvalZero* 链接时增加.rodata.name section,当空间资源受限时可以把它放到性能低的内存区域;
554*10465441SEvalZero* 完善IAR编译器下的组件自动初始化;
555*10465441SEvalZero* 增加rt_assert_hook,在触发断言时可以执行这个钩子函数;
556*10465441SEvalZero* 修正应用模块分散加载情况下的问题;
557*10465441SEvalZero
558*10465441SEvalZero## 工具
559*10465441SEvalZero
560*10465441SEvalZero* scons中定义Group时加入了本Group内的编译参数定义;
561*10465441SEvalZero* 修正了如果Group中即包含代码,也包含二进制库时,生成的Keil MDK工程文件有两个重名Group的问题;
562*10465441SEvalZero
563*10465441SEvalZero版本: RT-Threadv2.0.1及v2.1.0 alpha
564*10465441SEvalZero
565*10465441SEvalZeroRT-Thread v2.0.1是2.0这个系列的bug修正版,而v2.1.0 alpha则是当前开发主干的一个技术预览版本,它给出了v2.1.0这个版本系列的技术预览情况,不建议用于实际产品中,因为它可能存在大量的一些bug。
566*10465441SEvalZero
567*10465441SEvalZero# RT-Thread v2.0.1更改说明
568*10465441SEvalZero
569*10465441SEvalZero*  IAR用的dlib,加入THREAD_SUPPORT 和 FILE_DESCRIPTOR的支持;
570*10465441SEvalZero*  修正finsh中echo回显模式的问题;
571*10465441SEvalZero*  修正USB host代码的编译错误;
572*10465441SEvalZero*  修正sensor框架回调函数的问题;
573*10465441SEvalZero*  修正pin设备注册时的设备名称问题;
574*10465441SEvalZero
575*10465441SEvalZero而v2.1.0 alpha这个技术预览版则沿着最初设定的roadmap技术路线进行,这其中主要包括:
576*10465441SEvalZero
577*10465441SEvalZero*  lwip更深度的集成:把它集成到RT-Thread的文件系统接口中,这样Linux/Unix下的一些socket网络应用能够更顺利的移植到RT-Thread上,也为以后可以应用到更多地方的select接口铺路。
578*10465441SEvalZero
579*10465441SEvalZero*  这部分是和RT-Thread发布本身无关,但也是这个版本系列设定的目标之一:开启一个云端集成开发环境的时代!云端会是什么样的,请用现代化的浏览器打开[CloudIDE](http://lab.rt-thread.org/cloudide/simulator/index.html)
580*10465441SEvalZero
581*10465441SEvalZero# RT-Thread 2.0.0正式版更改说明
582*10465441SEvalZero
583*10465441SEvalZero经历了大约1年的时间,RT-Thread v2.0.0的最终版本终于发布出来了。自这个版本开发以来,引入了多项功能、修改、增强等。感谢参与的诸位开发人员!
584*10465441SEvalZero以下是自v2.0.0 RC版本以来的详细更改记录。后续我还会给出v2.0.0版本自v1.2.x版本的主要不同、看点,以及给出下一个版本的roadmap规划。
585*10465441SEvalZero
586*10465441SEvalZero## 内核
587*10465441SEvalZero
588*10465441SEvalZero*  console以RT_DEVICE_FLAG_STREAM参数打开字符设备;
589*10465441SEvalZero*  在rt_memheap_free中加入更多的断言检查;
590*10465441SEvalZero
591*10465441SEvalZero## 组件
592*10465441SEvalZero
593*10465441SEvalZero*  更新RW009驱动以支持Wi-Fi SoftAP模式(aozima);
594*10465441SEvalZero*  修正sensor框架的一些问题,并加入C API接口(睿赛德服务公司提供);
595*10465441SEvalZero*  加入MPU6050 sensor的代码(bernard, Coing);
596*10465441SEvalZero*  加入BMI055 sensor的代码(Coing);
597*10465441SEvalZero*  当未使能heap时,修正finsh/msh中list_memheap的问题;
598*10465441SEvalZero*  修正LIBC编译的警告;
599*10465441SEvalZero*  加入IAR dlib相关的移植,使得应用能够使用标准的API接口;
600*10465441SEvalZero*  修正YMode握手时可能引起的竞争问题(grissiom);
601*10465441SEvalZero*  更新FreeType版本到2.5.4
602*10465441SEvalZero*  单独把C++的全局对象初始化放到cplusplus_system_init函数中,并在初始化线程中调用;
603*10465441SEvalZero*  finsh中以RT_DEVICE_FLAG_STREAM参数打开字符设备;
604*10465441SEvalZero*  添加VBUS组件用于Linux与RT-Thread系统之间,RT-Thread与RT-Thread系统之间通信(睿赛德服务公司捐赠);
605*10465441SEvalZero*  增加lwIP/NAT组件,可以做多个网口间的地址转换(Hicard);
606*10465441SEvalZero*  增加lwIP/DHCP服务端,用于向客户端分配IP地址(睿赛德服务公司提供);
607*10465441SEvalZero
608*10465441SEvalZero## BSP
609*10465441SEvalZero
610*10465441SEvalZero*  修正LPC4357串口驱动初始化时过早打开中断的问题(nongxiaoming);
611*10465441SEvalZero*  重写LPC4357串口驱动,并让芯片上M4/M0核心分别都执行RT-Thread系统,两核心之间以VBUS组件进行系统间通信(睿赛德服务公司捐赠);
612*10465441SEvalZero*  新增RX移植(limxuzheng);
613*10465441SEvalZero*  新增NuMicro M051 Series移植,支持GCC、Keil MDK编译器(bright-pan);
614*10465441SEvalZero*  新增LPC54102移植(Coing);
615*10465441SEvalZero*  移除STM32F4 BSP中不需要的RT_TIMER_TICK_PER_SECOND配置(pangweishen);
616*10465441SEvalZero*  在Linux Clang编译分析中,强制以32位模式进行编译(grissiom);
617*10465441SEvalZero*  修正STM32F103中串口驱动中断过早打开的问题(armink);
618*10465441SEvalZero
619*10465441SEvalZero## 工具
620*10465441SEvalZero
621*10465441SEvalZero*  增加scons中的MD5支持(bright-pan);
622*10465441SEvalZero
623*10465441SEvalZero# RT-Thread 2.0.0 RC 更改说明
624*10465441SEvalZero
625*10465441SEvalZero发布时间:2014/11/4
626*10465441SEvalZero
627*10465441SEvalZero随着RT-Thread功能越来越多,如何发布版本也成为一件头疼的事情,因为需要仔细对比最近三个月来的修改记录。这次的发布距离上一次beta版本依然是三个月的时间,但按照发布计划已然推迟了一个月进行发布。
628*10465441SEvalZero
629*10465441SEvalZero在这三个月中,开源社区上也发生了很多有趣的事情:
630*10465441SEvalZero
631*10465441SEvalZero阿嘉的使用RT-Thread的四轴飞行器毕业设计惊艳亮相,采用了1个STM32F4 + 8个STM32F1进行飞行控制,总计9个MCU的另类实现方式;沿循四轴飞行器的路线,与国内匿名团队合作,采用RW009 Wi-Fi控制的迷你四轴飞行器也在稳步推进过程中。
632*10465441SEvalZero
633*10465441SEvalZeroRT-Thread做为一个开源组织参与的CSDN开源夏令营结出了丰硕的果实:
634*10465441SEvalZero由hduffddybz参与的IPv6协议栈移植(最新版本的lwIP-head版本移植)在这次发布中已经包括进来,从而能够在使用RT-Thread的小型设备上实现TCP/IP v4/v6双栈的支持;
635*10465441SEvalZero由wzyy2参与的GDB stub实现,也完美的支持BeagleBoneBlack开发板和STM32F4平台;
636*10465441SEvalZeroCSDN开源夏令营其他的成果,例如bluedroid移植也有了初步的成果,希望能够在后续的版本(可能会是2.1.0系列版本?)包含进来。CSDN开源夏令营是一次非常棒的活动,能够让学生提前进入实战,了解软件开发的初步知识。对开源社区来说,也是一次非常有益的社区互动活动。希望明年这个活动可以继续,关注RT-Thread、嵌入式开发的同学可以关注明年的动向。
637*10465441SEvalZero
638*10465441SEvalZero当前智能化设备是一个备受关注的领域,针对这一领域的特点,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++底层的一些基础支撑。
639*10465441SEvalZero
640*10465441SEvalZero这个版本是RT-Thread 2.0.0系列正式版本的候选版本,正式版本预计会在年底正式发布,距离正式版本还会加入更完善的一些支撑(例如各种传感器驱动)。也计划2014年11月22日,在上海浦东举行RT-Thread嵌入式系统沙龙活动,欢迎大家关注并参与进行RT-Thread方方面面的技术交流。
641*10465441SEvalZero
642*10465441SEvalZero以下是这个版本的更改记录:
643*10465441SEvalZero
644*10465441SEvalZero## 内核
645*10465441SEvalZero
646*10465441SEvalZero* 修正当采用高级别优化编译时,idle任务中查询是否有僵尸线程的潜在bug;
647*10465441SEvalZero
648*10465441SEvalZero* 修正memory pool中的竞争问题;
649*10465441SEvalZero
650*10465441SEvalZero* 在console中打开设备时,加入流标志进行打开;
651*10465441SEvalZero
652*10465441SEvalZero## 组件
653*10465441SEvalZero
654*10465441SEvalZero* 加入C++基础支撑组件。C++组件依赖于RT_USING_LIBC库,当使用GCC编译器时请注意查看其中的说明文档并更改ld script;
655*10465441SEvalZero* 修正DFS中NFS打开目录的bug;
656*10465441SEvalZero* 更改DFS ROMFS默认romfs_root为弱化符号;
657*10465441SEvalZero* 添加DFS中dfs_file_lseek接口中关于fs的检查;
658*10465441SEvalZero* 移除I2C core中无用的core lock锁;
659*10465441SEvalZero* 添加sensor framework(采用C++的方式支持各种sensor);
660*10465441SEvalZero* 修正serial框架中DMA发送的bug(heyuanjie87);
661*10465441SEvalZero* 移除SPI框架中不必要的device初始化代码;
662*10465441SEvalZero* 完善SPI Wi-Fi网卡RW009驱动并提供RSSI相关的命令;
663*10465441SEvalZero* 修正MSH中未定义DFS_USING_WORKDIR时更改当前目录的bug;
664*10465441SEvalZero* 修正MSH中未定义RT_LWIP_TCP时依然定义了netstat命令的bug;
665*10465441SEvalZero* 修正MSH中未定义RT_USING_HEAP时依然定义了free命令的bug;
666*10465441SEvalZero* 修正finsh中FINSH_USING_HISTORY相关的裁剪;
667*10465441SEvalZero* 加入gdb stub组件,当前支持ARM Cortex-A8和Cortex-M3/4(wzyy2);
668*10465441SEvalZero* 统一不同编译器下使用LIBC的宏为RT_USING_LIBC,原有的宏定义RT_USING_NEWLIB/RT_USING_ARM_LIBC需要从rtconfig.h中移除,并替换成RT_USING_LIBC;
669*10465441SEvalZero* 加入最新的lwIP分支:lwip-head,以提供IPv4/v6双栈的功能(hduffddybz);
670*10465441SEvalZero* YMode中打开串口设备时,添加open flag(armink);
671*10465441SEvalZero
672*10465441SEvalZero## bsp
673*10465441SEvalZero
674*10465441SEvalZero* 加入北京京微雅格的M7(华山)低功耗FPGA的ARM Cortex-M3移植(aozima);
675*10465441SEvalZero* 加入北京京微雅格的M7 EMAC以太网驱动(aozima);
676*10465441SEvalZero* AT91SAM9260分支中更改RT_USING_NEWLIB为RT_USING_LIBC;
677*10465441SEvalZero* BeagleBoneBlack分支中加入gdb stub支持(wzyy2);
678*10465441SEvalZero* LPC176x分支中加入C++支持;
679*10465441SEvalZero* LPC176x分支中修正SD卡驱动返回卡信息的bug;
680*10465441SEvalZero* 修正LPC408x分支中GCC编译时的问题;
681*10465441SEvalZero* LPC408x分支中加入C++支持;
682*10465441SEvalZero* 龙芯1B分支中加入UART3驱动;
683*10465441SEvalZero* 加入飞索半导体的MB9BF568 FM4分支移植(yangfasheng);
684*10465441SEvalZero* mini2440分支中更改RT_USING_NEWLIB为 RT_USING_LIBC;
685*10465441SEvalZero* stm32f0x分支中移除不同编译器下的LIBC定义,统一更改为RT_USING_LIBC;
686*10465441SEvalZero* stm32f0x分支中加入串口接收溢出中断处理(armink);
687*10465441SEvalZero* stm32f40x分支中加入gdb stub支持并添加UART6驱动(wzzy2);
688*10465441SEvalZero* zynq7000分支中更改RT_USING_NEWLIB为RT_USING_LIBC;
689*10465441SEvalZero* 加入ARM Cortex-M4芯片指令级的ffs实现;
690*10465441SEvalZero* 修正MB0BF618S分支中缺少timer初始化的bug(mike mao);
691*10465441SEvalZero
692*10465441SEvalZero## 工具
693*10465441SEvalZero
694*10465441SEvalZero* 移除Python 2.6中未支持的语法(xfguo);
695*10465441SEvalZero* 移除Windows平台中的startupinfo信息(对Python版本兼容性更好);
696*10465441SEvalZero* 修正CPPPATH被打乱的bug;
697*10465441SEvalZero
698*10465441SEvalZero# RT-Thread 2.0.0 Beta更改说明
699*10465441SEvalZero
700*10465441SEvalZero发布时间:2014/8/1
701*10465441SEvalZero
702*10465441SEvalZerov2.0.0这个版本系列是RT-Thread当前的开发分支,如果要上新项目,建议使用这个版本来进行,预计这个版本的正式版会在年底发布。欢迎对这个版本进行测试、并反馈问题,能够早日进入到稳定版。
703*10465441SEvalZero
704*10465441SEvalZerov2.0.0版本的开发相对活跃些,开源社区提供了强有力的支持:如Arda贡献的TM4C129x移植,Romeo贡献的frdm-k64f移植,xiaonong的LPC4300移植等,以及睿赛德服务公司捐赠的Zynq7000移植,MB9BF618S移植,以及SPI WiFi网卡的驱动代码等。
705*10465441SEvalZero
706*10465441SEvalZero更改记录
707*10465441SEvalZero
708*10465441SEvalZero## 内核
709*10465441SEvalZero
710*10465441SEvalZero* 移除rt_device_init_all()函数:在系统启动时不需要再调用这个函数来初始化驱动,而是由上层应用执行rt_device_open时自动进行设备初始化;
711*10465441SEvalZero* 修正设备对象引用计数在打开设备失败依然递增的问题;
712*10465441SEvalZero* 增加WEAK宏用于定义/声明弱符号;
713*10465441SEvalZero* 在执行静态内存块分配前,重置线程的errno;
714*10465441SEvalZero* 修正timer未打开调试选项时,无用的静态函数定义(导致编译警告);
715*10465441SEvalZero* 启动timer前,对timer进行强制移除;
716*10465441SEvalZero* 在执行soft timer超时函数时,打开调度器锁;
717*10465441SEvalZero* 新增块设备的自动刷新参数,RT_DEVICE_CTRL_BLK_AUTOREFRESH;
718*10465441SEvalZero
719*10465441SEvalZero## 工具
720*10465441SEvalZero
721*10465441SEvalZero* 修正scons命令编译时,选择keil mdk (armcc)编译器时,命令行太长编译失败的问题;
722*10465441SEvalZero
723*10465441SEvalZero## 移植
724*10465441SEvalZero
725*10465441SEvalZero* 移除rt_device_init_all()相关的调用;
726*10465441SEvalZero* 根据串口框架调整相关的驱动代码;
727*10465441SEvalZero* 新增frdm-k64f移植(FreeScale K64芯片);
728*10465441SEvalZero* 移除K60Fxxxx移植;
729*10465441SEvalZero* 新增LPC43xx移植(NXP LPC4357芯片);
730*10465441SEvalZero* 移除LPC176x中的组件初始化配置;
731*10465441SEvalZero* 修正龙芯1B移植(ls1bdev)中链接脚本关于组件初始化部分的配置;
732*10465441SEvalZero* 修正STM32F40x中UART3的配置;
733*10465441SEvalZero* 修正STM32F40x中GNU GCC连接脚本中ROM/RAM大小的配置;
734*10465441SEvalZero* 移除STM32F107中的组件初始化配置;
735*10465441SEvalZero* 增强STM32F107 EMAC驱动性能,同时加入自动查找PHY芯片地址功能;
736*10465441SEvalZero* 重写xplorer4330(NXP LPC4330芯片)移植(xiaonong完成);
737*10465441SEvalZero* 新增Zynq7000 ARM Dual Cortex-A9移植;
738*10465441SEvalZero* 新增MB9BF618S移植;
739*10465441SEvalZero* 新增tm4c129x移植,并加入相应的EMAC以太网驱动;
740*10465441SEvalZero
741*10465441SEvalZero## 组件
742*10465441SEvalZero
743*10465441SEvalZero* DFS: 新增根据设备对象获得其上装载文件系统路径的函数:dfs_filesystem_get_mounted_path(struct rt_device* device);
744*10465441SEvalZero* DFS: 修正readdir在GNU GCC下的编译警告;
745*10465441SEvalZero* DeviceDrivers:新增workqueue实现;
746*10465441SEvalZero* DeviceDrivers: 修正USB Device栈中的一些拼写错误;
747*10465441SEvalZero* DeviceDrivers: 重写serial框架,能够让串口设备驱动同时支持三种模式:poll、interrupt、DMA。模式选择需要在执行rt_device_open时,由open flags指定;
748*10465441SEvalZero* DeviceDrivers: 加入更多的SPI设备驱动,例如RW009的SPI WiFi网口驱动(2.4G 802.11 b/g/n,WEP/WPA/WPA2SoftAP/Station),SPI NorFlash块设备驱动,ENC28J60以太网网卡驱动;
749*10465441SEvalZero* Finsh: list_device()命令中增加refcount的信息;
750*10465441SEvalZero* Finsh: 修正'0'零常量无法识别的错误;
751*10465441SEvalZero* Finsh: mv命令,实现把一个文件移动到一个目录中;
752*10465441SEvalZero* Finsh: ifconfig命令支持对一个网络接口的基本配置;
753*10465441SEvalZero* Finsh: 新增netstat命令,用于显示当前系统中TCP连接的状态;
754*10465441SEvalZero* Finsh: 修正当命令行太长导致的缓冲区移除的问题;
755*10465441SEvalZero* libc: 修正arm libc中未使用DFS时的编译警告;
756*10465441SEvalZero* libc: 修正newlib中使用DFS时的系统调用编译警告(GNU GCC下);
757*10465441SEvalZero* lwIP 1.4.1: 默认打开LWIP_SO_SNDTIMEO以支持连接发送超时;
758*10465441SEvalZero* lwIP 1.4.1: 修正MEMP_NUM_TCP_SEG定义错误的问题;
759*10465441SEvalZero* lwIP 1.4.1: 加入RT_LWIP_REASSEMBLY_FRAG选项定义以支持IP分组及合并;
760*10465441SEvalZero* lwIP 1.4.1: ethnet网络接口支持定义LWIP_NO_TX_THREAD/LWIP_NO_RX_THREAD,以关闭etx/erx线程;
761*10465441SEvalZero* lwIP 1.4.1: 用户可以重新定义RT_LWIP_ETH_MTU,以修改网络中的MTU值;
762*10465441SEvalZero* lwIP 1.4.1: 修正LWIP_NETIF_LINK_CALLBACK条件编译的问题;
763*10465441SEvalZero* lwIP 1.4.1: 完善移植相关的注释;
764*10465441SEvalZero* log trace: 增加log_session_lvl接口;
765*10465441SEvalZero* log trace: log trace中的session引用更改成常量形式;
766*10465441SEvalZero* ymodem: 增强数据接收的稳定性;
767*10465441SEvalZero
768*10465441SEvalZero# RT-Thread 2.0.0 Alpha更改说明
769*10465441SEvalZero
770*10465441SEvalZero发布时间:2014/4/8
771*10465441SEvalZero
772*10465441SEvalZeroRT-Thread 2.0.0分支的第一个技术预览版本,仅用于展示2.0.0发展分支的演化动向(按照roadmap,2.0.0这个分支会有一部分RT-Thread和Linux互补性的技术,为Linux增加更好的实时性,为RT-Thread增加更多的功能性,这份技术预览版正是朝着这个目标而努力),欢迎反馈建议和问题。
773*10465441SEvalZero
774*10465441SEvalZero## 组件
775*10465441SEvalZero
776*10465441SEvalZero* msh: bugfix 和功能性增强。新的 msh 在调用外部模块方面更加方便。
777*10465441SEvalZero* DFS: nfs 的 bugfix 和内置命令的增强。ELM FatFS加入对扇区不匹配情况下的信息输出,这样能够及时定位问题。
778*10465441SEvalZero* JS:新添了轻量级Javascript引擎,可以在RT-Thread中直接运行javascript脚本。
779*10465441SEvalZero* VMM:可以在qemu中运行的 Virtual Machine Module 组件。暂时只支持 realview-pb-a8 的 bsp。
780*10465441SEvalZero* CMSIS:版本更新至 3.20
781*10465441SEvalZero* drivers:USB 协议栈的重构。新的框架中编写驱动变得更加容易了。
782*10465441SEvalZero
783*10465441SEvalZero## BSP
784*10465441SEvalZero
785*10465441SEvalZero* beaglebone:串口驱动更新
786*10465441SEvalZero* realview-a8:添加了 VMM 组件
787*10465441SEvalZero
788*10465441SEvalZero## 工具
789*10465441SEvalZero
790*10465441SEvalZero* 固件加入scons --target=ua -s,用于准备用户应用环境;
791*10465441SEvalZero
792*10465441SEvalZero[发布后记]
793*10465441SEvalZero
794*10465441SEvalZeroRT-Thread 2.0.0. Alpha版本相比于RT-Thread 1.2.1,新的特性主要有两部分:
795*10465441SEvalZero- RT-Thread + Linux双系统,这部分以RealView-A8处理器(ARM Cortex-A8单核)为蓝本,给出一个简单的双系统并行运行的demo;在没有硬件的环境下,可以使用QEMU软件虚拟方式的执行。这个链接中包含一个编译好的Linux及RT-Thread二进制包,可以直接下载进行体验。
796*10465441SEvalZero
797*10465441SEvalZero目录中有 Linux 的内核镜像 zImage,ramdisk rootfs.cpio.gz。可以用
798*10465441SEvalZeroqemu-system-arm -M realview-pb-a8 -kernel zImage -initrd rootfs.cpio.gz -serial vc -serial vc
799*10465441SEvalZero来启动。启动之后 Linux 的控制台在第一个串口上(Atl + Ctrl + 3),可以直接无密码以 root 用户登录。登录之后加载内核模块:
800*10465441SEvalZeroinsmod rtvmm.ko
801*10465441SEvalZero来启动 RT-Thread。RT-Thread 启动之后控制台在第二个串口上(Atl + Ctrl + 4)。第一个串口Linux shell依然可以使用,第二个串口则是RT-Thread的shell。
802*10465441SEvalZero- JavaScript解析器,这个是由牛头哥移植的,可以在一个非常小资料的MCU上以JavaScript脚本方式进行编程、开发。根据这种方式,也提供了RN001JS的以太网硬件模块:以JavaScript脚本语言作为二次开发,提供在线web(即WebIDE)进行编程并运行JavaScript程序。JavaScript作为一门轻量级、解释型的语言,更容易上手,配合WebIDE、及提供的一些example可以使得开发变得非常的轻松,也包括一些传感器的JavaScript例子,让做网页的人也可以玩硬件了!
803*10465441SEvalZero
804*10465441SEvalZero# RT-Thread 1.2.1更改说明
805*10465441SEvalZero
806*10465441SEvalZero发布时间: 2014/4/8
807*10465441SEvalZero
808*10465441SEvalZero在原有的1.2.0版本的bug修正版本,也是1.2.0系列的第一个修正版本,原则上不添加任何的新功能,我们尽量会按照每个季度一个修订版本的方式推进。大家在使用的过程中有什么问题还请反馈给我们,这些问题很可能会在下个版本中修正!
809*10465441SEvalZero
810*10465441SEvalZero以下是更改记录:
811*10465441SEvalZero
812*10465441SEvalZero## 内核
813*10465441SEvalZero
814*10465441SEvalZero* 用户应用,增加用户应用命令行参数支持;
815*10465441SEvalZero* 在挂起一个任务时,把相应的定时器也关闭;
816*10465441SEvalZero
817*10465441SEvalZero## BSP
818*10465441SEvalZero
819*10465441SEvalZero* BeagleBone,加入更多串口驱动支持;
820*10465441SEvalZero* 移除BSP中rt_device_init_all函数调用,改成打开设备时自动进行初始化;
821*10465441SEvalZero* LPC176x,移除components初始化管理器;
822*10465441SEvalZero* LPC4088,修正LED驱动的问题;
823*10465441SEvalZero* STM32F107,移除components初始化管理器;
824*10465441SEvalZero
825*10465441SEvalZero## 组件
826*10465441SEvalZero
827*10465441SEvalZero* 文件系统,ELM FatFS加入对扇区不匹配情况下的信息输出,这样能够及时定位问题;
828*10465441SEvalZero* 文件系统,NFS网络文件系统修正相关的一些编译警告信息;
829*10465441SEvalZero* 文件系统,copy命令加入文件夹方式复制功能;
830*10465441SEvalZero* 文件系统,RAMFS,加入到components初始化管理器中;
831*10465441SEvalZero* 文件系统,ROMFS,用于转换文件的工具mkromfs.py,增加Linux主机的支持;
832*10465441SEvalZero* CMSIS更新到3.2.0版本;
833*10465441SEvalZero* 串口驱动框架加入serial->ops->control的调用;
834*10465441SEvalZero* 命令行系统,优化msh,支持用户应用的命令行参数;
835*10465441SEvalZero* 命令行系统,当使用msh时,默认使用msh >的命令行提示符;
836*10465441SEvalZero* TCP/IP协议栈,导出更多的lwIP接口给用户应用;
837*10465441SEvalZero* POSIX thread,修正了同时使用lwIP组件时的编译警告;
838*10465441SEvalZero* 第三方组件,加入TJPGD的移植,加入libpng的移植;
839*10465441SEvalZero
840*10465441SEvalZero## 工具
841*10465441SEvalZero
842*10465441SEvalZero* 固件加入scons --target=ua -s,用于准备用户应用环境;
843*10465441SEvalZero
844*10465441SEvalZero[发布后记]
845*10465441SEvalZero* RT-Thread携带了众多的BSP,不一定能够一一保证每个分支上把RT-Thread上相应的功能使用起来。所以针对这种情况,我们有一款评估用的硬件开发板:RealBoard 4088,在上面力求把一些相关例程都添加上,这样在一个基本的BSP基础上,可以对照着把其他的组件、功能添加进去;
846*10465441SEvalZero* RealBoard 4088使用的RT-Thread版本主要以RT-Thread 1.2.1版本为主。
847*10465441SEvalZero
848*10465441SEvalZero# RT-Thread 1.2.0正式版本更改说明
849*10465441SEvalZero
850*10465441SEvalZero发布时间: 2014/1/6
851*10465441SEvalZero
852*10465441SEvalZero实现roadmap中提到的大部分内容
853*10465441SEvalZero
854*10465441SEvalZero1,文档方面已完成《RT-Thread编程手册》,同时还有论坛上jiezhi童鞋的《一起来学RT-Thread系列连载教程》
855*10465441SEvalZero2,BSP分支方面新增cortext-A8(beaglebone),cortext-R4(rm48x50),UNITY-2(SEP6200),lpc408x的移植
856*10465441SEvalZero3,组件方面:
857*10465441SEvalZero- 加入msh(类似linux shell的风格),能够直接执行应用程序
858*10465441SEvalZero- 新增freemodbus 1.6.0的移植
859*10465441SEvalZero- 新增开源的嵌入式关系数据库SQLite 3.8.1的移植
860*10465441SEvalZero- 新增Ymodem协议
861*10465441SEvalZero- 默认使用lwIP 1.4.1
862*10465441SEvalZero
863*10465441SEvalZero下面是自RT-Thread 1.2.0 RC版本发布以来具体的变更履历:
864*10465441SEvalZero
865*10465441SEvalZero## 内核
866*10465441SEvalZero
867*10465441SEvalZero* timer.c - 使用跳跃表(skip list)实现系统定时器链表,并在bsp中的startup.c中重新加入定时器初始化函数rt_system_timer_init()
868*10465441SEvalZero* rtdebug.h - 新增宏定义RT_DEBUG_IN_THREAD_CONTEXT
869*10465441SEvalZero* idle.c - 在函数rt_thread_idle_excute()中一次清除所有的死线程
870*10465441SEvalZero* scheduler.c - 新增API rt_critical_level()返回调度器上锁次数
871*10465441SEvalZero
872*10465441SEvalZero## 移植
873*10465441SEvalZero
874*10465441SEvalZero* cortex-m0 - 修正 cortex-m0 GCC移植中hardfault的问题点
875*10465441SEvalZero* cortex-r4 - 在startup后释放IRQ堆栈空间
876*10465441SEvalZero* cortex-r4 - 按字节长度分配堆栈空间
877*10465441SEvalZero
878*10465441SEvalZero## BSP分支
879*10465441SEvalZero
880*10465441SEvalZero* 新增lpc408x移植
881*10465441SEvalZero* bsp/stm32f0x - 增加USART1,USART2驱动,支持finsh,支持组件初始化
882*10465441SEvalZero* bsp/simulator - 当RTGUI配置无效时打印错误信息
883*10465441SEvalZero* bsp/simulator - 默认情况下关闭RTGUI选项
884*10465441SEvalZero* bsp/simulator - 增加createdef.py文件来生成VS的def文件
885*10465441SEvalZero* bsp/simulator - 当使用VC++编译时去除_TIME_T_DEFINED的定义
886*10465441SEvalZero* bsp/xplorer4330 - 重命名文件Retarget.cretarget.c,否则linux系统中编译会报错
887*10465441SEvalZero* bsp/xplorer4330 - 修正GCC编译链接时关于ENTRY的警告
888*10465441SEvalZero* bsp/rm48x50 - 新增GCC的移植
889*10465441SEvalZero* bsp/K60Fxxxx - 修正一个编译错误
890*10465441SEvalZero
891*10465441SEvalZero## 组件
892*10465441SEvalZero
893*10465441SEvalZero* dfs - 正确处理mkfs未实现的情况
894*10465441SEvalZero* dfs - 使用指针代替index变量
895*10465441SEvalZero* dfs - 在函数dfs_filesystem_lookup()将含义模糊的指针变量名称empty重命名为fs
896*10465441SEvalZero* dfs - 修正dfs_unmount问题点
897*10465441SEvalZero* dfs - 在设备打开错误时令挂载失败
898*10465441SEvalZero* dfs/elmfat - 令elmfatfs每次都检查扇区大小
899*10465441SEvalZero* net - 新增freemodbus 1.6.0的移植
900*10465441SEvalZero* finsh - 新增FINSH_USING_MSH_ONLY选项
901*10465441SEvalZero* finsh - 只有当shell设备为空时调用rt_console_get_device()
902*10465441SEvalZero* finsh - 修正FINSH_USING_SYMTAB未定义的错误
903*10465441SEvalZero* finsh - 重构control按键的处理
904*10465441SEvalZero* msh - 增加文件和路径名称自动补全的功能
905*10465441SEvalZero* msh - msh内增加执行module的功能
906*10465441SEvalZero* msh - msh内增加更多的命令
907*10465441SEvalZero* libc - 修正 _sys_read()/_sys_write()问题点
908*10465441SEvalZero* external - 增加开源的嵌入式关系数据库SQLite 3.8.1的移植
909*10465441SEvalZero* pthreads - 避免ESHUTDOWN重复定义
910*10465441SEvalZero* mtd_nand - 在MTD nand中增加更多的调试措施
911*10465441SEvalZero* mtd_nand - 修正操作MTD nand时起始块错误的问题
912*10465441SEvalZero* lwip-1.4.1 - 在lwIP内加入更多的RT-Thread选项设置
913*10465441SEvalZero* log_trace - 修正函数memmove()参数使用错误的问题
914*10465441SEvalZero* drivers/pipe - 增加一个control命令来获得pipe剩余的空间
915*10465441SEvalZero* drivers/serial - 如果读写长度为0,则立即返回
916*10465441SEvalZero
917*10465441SEvalZero## 例程
918*10465441SEvalZero
919*10465441SEvalZero* examples - 用rt_sem_control()中的RT_IPC_CMD_RESET命令rt_sem_trytake()来清除信号量
920*10465441SEvalZero* examples - 始终打印输出测试结果
921*10465441SEvalZero* examples - 在所有的测试结束后打印输出简报
922*10465441SEvalZero* examples - 在TC线程中清除变量_tc_stat的TC_STAT_RUNNING状态
923*10465441SEvalZero* examples - 重新实现loop功能,并新增finsh命令tc_loop
924*10465441SEvalZero* examples - 在tc_stop中增加延时,由原来的延时RT_TICK_PER_SECOND/2调整为10 * RT_TICK_PER_SECOND
925*10465441SEvalZero* examples - 在SConscript中判断TC如果被使能,在CPPPATH中增加TC路径
926*10465441SEvalZero* examples - 新增一个in-mem-log的例子
927*10465441SEvalZero* semaphore_priority.c - 在cleanup时释放信号量
928*10465441SEvalZero* heap_realloc.c - 检查调用realloc(ptr, 0)是否成功
929*10465441SEvalZero* thread_delete.c - tc线程的延时应该比tid2的延时长,保证其测试过程中正常运行
930*10465441SEvalZero* thread_delay.c - 放宽超时判断条件,因为当RT_TICK_PER_SECOND为1000时,容易产生1个tick的误差
931*10465441SEvalZero* semaphore_static.c - 放宽超时判断条件,因为当RT_TICK_PER_SECOND为1000时,容易产生1个tick的误差
932*10465441SEvalZero* semaphore_dynamic.c - 放宽超时判断条件,因为当RT_TICK_PER_SECOND为1000时,容易产生1个tick的误差
933*10465441SEvalZero
934*10465441SEvalZero其他:
935*10465441SEvalZero* 更新README.md
936*10465441SEvalZero
937*10465441SEvalZero# RT-Thread 1.2.0RC更改说明
938*10465441SEvalZero
939*10465441SEvalZero发布时间: 2013/10/10/ 10:19
940*10465441SEvalZero
941*10465441SEvalZero主要说明: 该版本新增ARM Cortex-A8的支持(BeagleBone),新增UNITY-2内核的支持(SEP6200),新增Ymodem协议。
942*10465441SEvalZero
943*10465441SEvalZero变更履历
944*10465441SEvalZero========
945*10465441SEvalZero
946*10465441SEvalZero[内核]
947*10465441SEvalZero
948*10465441SEvalZero* 修正rtdef.h中的拼写错误(_MSC_VER_ -> _MSC_VER)
949*10465441SEvalZero* 修正scheduler.c中的调试打印输出错误
950*10465441SEvalZero* ipc - 在函数rt_event_recv()中增加对参数option有效性的检查
951*10465441SEvalZero* device - 增加统计设备引用次数的变量ref_count
952*10465441SEvalZero* memheap - 修正内存块分割问题点
953*10465441SEvalZero* memheap - 优化函数rt_memheap_realloc()
954*10465441SEvalZero* kservice - 函数声明使用rt_vsnprintf代替vsnprintf
955*10465441SEvalZero
956*10465441SEvalZero
957*10465441SEvalZero[组件]
958*10465441SEvalZero
959*10465441SEvalZero* dfs - 修正dfs_file.c中一处变量参数类型错误的问题
960*10465441SEvalZero* dfs - 增加mount table
961*10465441SEvalZero* dfs - 在building脚本中加入ramfs的支持
962*10465441SEvalZero* dfs - 修正ramfs中O_APPEND write的问题
963*10465441SEvalZero* dfs/elm - 在mkfs中加入device_open/close
964*10465441SEvalZero* dfs/jffs2 - 修正jffs2_opn/opendir中的f_flag初始化问题
965*10465441SEvalZero* dfs/jffs2 - 修正jffs2卸载问题
966*10465441SEvalZero* pthread - 修正一处编译警告
967*10465441SEvalZero* drivers/pipe - 增加rt_pipe_init/rt_pipe_detach
968*10465441SEvalZero* drivers/pipe - 增加非阻塞读写和强制写模式
969*10465441SEvalZero* drivers/pipe - 当恢复读的时候调用函数rx_indicate()
970*10465441SEvalZero* drivers/pipe - 增加一个设备类型(pipe类型)
971*10465441SEvalZero* drivers/portal - 实现portal设备类型
972*10465441SEvalZero* drivers/ringbuffer - 修改一些模糊不清的函数名称
973*10465441SEvalZero* drivers/ringbuffer - 新增put_force和putchar_force接口函数
974*10465441SEvalZero* finsh - 当set_device时增加设备检查
975*10465441SEvalZero* finsh - 在rx_ind中增加对shell设备的自动设置
976*10465441SEvalZero* finsh - 增加pipe和portal设备的描述
977*10465441SEvalZero* finsh - 在变量定义时使用别名
978*10465441SEvalZero* finsh - 当关闭设备时注销rx_indicate
979*10465441SEvalZero* finsh - 修正命令行太长的问题
980*10465441SEvalZero* finsh/msh - 只有当DFS_USING_WORKDIR使能时才声明cd/pwd
981*10465441SEvalZero* init - 为新的组件初始化机制更新连接脚本
982*10465441SEvalZero* init - 增加组件初始化调试代码
983*10465441SEvalZero* logtrace - 整理代码,去除编译警告
984*10465441SEvalZero* logtrace - 增加LOG_TRACE_VERBOSE
985*10465441SEvalZero* logtrace - 调整log values
986*10465441SEvalZero* logtrace - 只有当finsh使能的时候才声明cmd
987*10465441SEvalZero* libc/minilibc - 在sys/time.h中增加gettimeofday的声明
988*10465441SEvalZero* utilities - 新增ymodem
989*10465441SEvalZero
990*10465441SEvalZero工具:
991*10465441SEvalZero
992*10465441SEvalZero* building.py - 增加clang静态缝隙器的支持
993*10465441SEvalZero* building.py - 为Keil MDK增加buildlib功能
994*10465441SEvalZero* building.py - 在clang-analyze中执行'clang -Wall -fsyntas-only'
995*10465441SEvalZero* clang-analyze.py - 增加一个定制工具实现clang静态分析
996*10465441SEvalZero
997*10465441SEvalZero分支:
998*10465441SEvalZero
999*10465441SEvalZero* 新增BeagleBone的移植
1000*10465441SEvalZero* 新增SEP6200的移植
1001*10465441SEvalZero* 新增K60Fxxxx的移植
1002*10465441SEvalZero* 修正Linux中的编译错误(lm4f232, stm32f40x, xplorer4330)
1003*10465441SEvalZero* cortex-m3 - 加强hard fault的异常处理函数
1004*10465441SEvalZero* at91sam9260 - 更新串口驱动,使用组件中的通用串口驱动
1005*10465441SEvalZero* at91sam9260 - 更新工程目录结构
1006*10465441SEvalZero* at91sam9260 - 修正编译错误
1007*10465441SEvalZero* at91sam9260 - 内嵌GPLv2许可
1008*10465441SEvalZero* stm32f10x - 删除无用的文件
1009*10465441SEvalZero* stm32f10x - 更新工程目录结构
1010*10465441SEvalZero* stm32f10x - 更新工程文件
1011*10465441SEvalZero* stm32f10x - 为使用新的组件初始化更新连接脚本
1012*10465441SEvalZero* stm32f10x - 为使用新的组件初始化更新SD card驱动
1013*10465441SEvalZero* stm32f10x - 为使用新的组件初始化更新DM9000驱动
1014*10465441SEvalZero* stm32f10x - 更新串口驱动,使用组件中的通用串口驱动
1015*10465441SEvalZero* stm32f10x - 修正rtgui初始化问题
1016*10465441SEvalZero* simulator - 为使用新的组件初始化更新代码,以便支持mingw
1017*10465441SEvalZero* simulator - 支持Linux系统
1018*10465441SEvalZero* simulator - 修正Linux系统中的SDL初始化问题
1019*10465441SEvalZero* simulator - 在rt_components_init之后初始化SDL
1020*10465441SEvalZero* simulator - 将对SDL设置的内容移入drivers/SConstruct
1021*10465441SEvalZero* simulator - 在env中获得CORSS_TOOL和EXEC_PATH的值
1022*10465441SEvalZero* simulator - 支持clang-analyze
1023*10465441SEvalZero* simulator - 增加tap netif driver
1024*10465441SEvalZero
1025*10465441SEvalZero//----------------------------------------------------------------------------------------
1026*10465441SEvalZero
1027*10465441SEvalZero//----------------------------------------------------------------------------------------
1028*10465441SEvalZero
1029*10465441SEvalZero//----------------------------------------------------------------------------------------
1030*10465441SEvalZero
1031*10465441SEvalZero
1032*10465441SEvalZero版本: RT-Thread 1.2.0 Beta 版本
1033*10465441SEvalZero
1034*10465441SEvalZero发布时间: 2013/6/30
1035*10465441SEvalZero
1036*10465441SEvalZero进过开发人员三个月的努力,RT-Thread 1.2.0 Beta 版本如期发布。
1037*10465441SEvalZero该版本默认采用lwIP 1.4.1协议栈,USB device stack也进一步完善。加入 log_trace 子系统,加入组件初始化升级版本,加入 ARM Cortex-R 的移植。
1038*10465441SEvalZero
1039*10465441SEvalZero主要变化:
1040*10465441SEvalZero
1041*10465441SEvalZero* 1,新增组件初始化功能
1042*10465441SEvalZero- 详情请看论坛帖子[新功能] 组件初始化
1043*10465441SEvalZero* 2,支持ARM Cortex-R系列处理器
1044*10465441SEvalZero- Grissiom 完成 ARM Cortex-R 的移植,目前BSP中已有TI RM48x50分支(仅支持TI CCS开发环境)
1045*10465441SEvalZero* 3,文件系统中新增 RAMFS
1046*10465441SEvalZero* 4,加入 log_trace 子系统
1047*10465441SEvalZero* 5,优化Cortex-M4线程上下文切换,使用了浮点运算的线程才保存及恢复FPU寄存器
1048*10465441SEvalZero- 详情请看论坛帖子[优化]cortex-m4f线程切换,优化FPU寄存器
1049*10465441SEvalZero* 6,新增API rt_memheap_realloc()
1050*10465441SEvalZero* 7,重新实现ringbuffer,采用镜像的方法区分“满”和“空”,同时支持任意大小的buffer
1051*10465441SEvalZero* 8,内核中加入RT_KERNEL_MALLOC/RT_KERNEL_FREE/RT_KERNEL_REALLOC宏。
1052*10465441SEvalZero如果用户未定义这些宏,将默认指向rt_malloc/rt_free/rt_realloc1053*10465441SEvalZero同时内核仅局限于使用这些宏来使用动态内存
1054*10465441SEvalZero* 9,在 building.py 中新增生成 cscope database 的选项
1055*10465441SEvalZero* 10,USB组件新增reset函数,支持热插拔
1056*10465441SEvalZero* 11,scons编译系统支持CCS开发环境
1057*10465441SEvalZero* 12,USB组件新增状态信息(USB_STATE_NOTATTACHED,USB_STATE_ATTACHED,USB_STATE_POWERED...)
1058*10465441SEvalZero
1059*10465441SEvalZero修复问题点:
1060*10465441SEvalZero
1061*10465441SEvalZero* 1,USB组件HOST可以挂起endpoints
1062*10465441SEvalZero* 2,simulator分支,修复 serial_write 问题
1063*10465441SEvalZero* 3,udisk可以被弹出
1064*10465441SEvalZero* 4,iar.py中修复绝对路径的问题
1065*10465441SEvalZero* 5,dfs_fs.h内增加dfs_mkfs()函数的申明
1066*10465441SEvalZero* 6,生成MDK工程文件的时候加入library文件
1067*10465441SEvalZero* 7,当PC不再接受数据的时候,重置VCOM相应的状态
1068*10465441SEvalZero* 8,USB组件:返回正确的LangID字符串长度给HOST
1069*10465441SEvalZero* 9,Cortex-M0,Cortex-M3,Cortex-M4上下文切换时,回收系统初始化时用到的栈空间
1070*10465441SEvalZero
1071*10465441SEvalZero//----------------------------------------------------------------------------------------
1072*10465441SEvalZero
1073*10465441SEvalZero//----------------------------------------------------------------------------------------
1074*10465441SEvalZero
1075*10465441SEvalZero//----------------------------------------------------------------------------------------
1076*10465441SEvalZero
1077*10465441SEvalZero
1078*10465441SEvalZero
1079*10465441SEvalZero版本: RT-Thread 1.2.0 Alpha版本
1080*10465441SEvalZero
1081*10465441SEvalZero发布时间: 2013/4/10
1082*10465441SEvalZero
1083*10465441SEvalZero遵循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系列的文档情况。当然也有一些功能、代码方面的增强。
1084*10465441SEvalZero
1085*10465441SEvalZero伴随着新版本的到来,RT-Thread有几个重大的转变:
1086*10465441SEvalZero1,代码托管从google code(SVN)迁移到github(GIT)
1087*10465441SEvalZero2,RT-Thread与RTGUI区分开来,并成为两个独立的开发分支
1088*10465441SEvalZero3,重视文档,将文档建设作为1.2.0版本的首要任务来抓
1089*10465441SEvalZero
1090*10465441SEvalZero内核主要变化:
1091*10465441SEvalZero1,加入__rt_ffs函数用于实现32位整数中获取第一个置1的位;同时调度器中位图相关算法直接使用__rt_ffs函数;CPU移植时,可定义RT_USING_CPU_FFS,使用芯片指令完成。
1092*10465441SEvalZero
1093*10465441SEvalZero2,新的中断注册机制
1094*10465441SEvalZeroweety加入interrupt description功能,用于为interrupt增加更多的信息,同时中断服务例程也可以携带用户自定义的参数类型。
1095*10465441SEvalZero* 这部分对ARM7、ARM9、MIPS等影响很大,需要对CPU移植做相应的一些修改。
1096*10465441SEvalZero* 这部分对ARM Cortex-M系列芯片没有影响。
1097*10465441SEvalZero
1098*10465441SEvalZero3,调整定时器插入位置,为相同超时定时的后面。
1099*10465441SEvalZero
1100*10465441SEvalZero组件主要变化:
1101*10465441SEvalZero1,添加lwIP 1.4.1。
1102*10465441SEvalZero2,在finsh shell中加入module shell功能。finsh shell本身是一个C语言表达式的shell命令行,而module shell更类似于一个传统的命令行,由命令,参数等方式构成。
1103*10465441SEvalZero
1104*10465441SEvalZero分支主要变化:
1105*10465441SEvalZero1,完善simulator分支,支持RTGUI,支持应用模块。
1106*10465441SEvalZero2,完善at91sam9260分支的移植及驱动更新。
1107*10465441SEvalZero
1108*10465441SEvalZero编译系统主要变化:
1109*10465441SEvalZero1,开启省略编译时长命令特性,如果需要查看编译时命令行,可以使用scons --verbose查看。
1110*10465441SEvalZero2,加入生成CodeBlocks工程特性。
1111*10465441SEvalZero3,修正当系统安装使用Keil MDK 4.6+版本的问题。
1112*10465441SEvalZero
1113*10465441SEvalZerogithub主要提交履历:
1114*10465441SEvalZero5646189b29: elm fatfs支持mkfs,并且无需提前执行dfs_mount; mount/umount/mkfs操作也不会引起reset
1115*10465441SEvalZero22786f8817: 允许用户自定义PID和VID
1116*10465441SEvalZero0001344105: 更明确的定时器运行机制,如果两个定时器在同一个时刻发生超时,那么先开始的定时器先处理
1117*10465441SEvalZero5d68ef8ec1: 修正使用64位GCC时编译finsh过程中发生错误的问题
1118*10465441SEvalZeroa4d661dcf1: 修正dfs_elm.c中一处内存泄露,并且在mount fatfs失败时执行 umount fatfs操作
1119*10465441SEvalZero43228aeb9c: 修正list_tcps问题:ipaddr_ntoa不是可重入的函数。
1120*10465441SEvalZero3de4b92a68: 修正AT91SAM9260分支中PHY link状态错误的问题。
1121*10465441SEvalZero1abaa0492d
1122