This action will force synchronization from RT-Thread/rt-thread, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
版本: RT-Thread 2.0.0 RC
发布时间:2014/11/4
随着RT-Thread功能越来越多,如何发布版本也成为一件头疼的事情,因为需要仔细对比最近三个月来的修改记录。这次的发布距离上一次beta版本依然是三个月的时间,但按照发布计划已然推迟了一个月进行发布。
在这三个月中,开源社区上也发生了很多有趣的事情:
阿嘉的使用RT-Thread的四轴飞行器毕业设计惊艳亮相,采用了1个STM32F4 + 8个STM32F1进行飞行控制,总计9个MCU的另类实现方式;沿循四轴飞行器的路线,与国内匿名团队合作,采用RW009 Wi-Fi控制的迷你四轴飞行器也在稳步推进过程中。
RT-Thread做为一个开源组织参与的CSDN开源夏令营结出了丰硕的果实: 由hduffddybz参与的IPv6协议栈移植(最新版本的lwIP-head版本移植)在这次发布中已经包括进来,从而能够在使用RT-Thread的小型设备上实现TCP/IP v4/v6双栈的支持; 由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-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增加更多的功能性,这份技术预览版正是朝着这个目标而努力),欢迎反馈建议和问题。
[组件变更]
[BSP 变更]
[编译脚本]
[发布后记]
RT-Thread 2.0.0. Alpha版本相比于RT-Thread 1.2.1,新的特性主要有两部分:
目录中有 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。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 1.2.1 发布时间: 2014/4/8
在原有的1.2.0版本的bug修正版本,也是1.2.0系列的第一个修正版本,原则上不添加任何的新功能,我们尽量会按照每个季度一个修订版本的方式推进。大家在使用的过程中有什么问题还请反馈给我们,这些问题很可能会在下个版本中修正!
以下是更改记录: [内核]
[BSP]
[组件]
[编译脚本]
[发布后记]
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: 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,组件方面:
下面是自RT-Thread 1.2.0 RC版本发布以来具体的变更履历: 内核:
移植:
BSP分支:
组件:
例程:
其他:
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 1.2.0RC 发布时间: 2013/10/10/ 10:19
主要说明: 该版本新增ARM Cortex-A8的支持(BeagleBone),新增UNITY-2内核的支持(SEP6200),新增Ymodem协议。
[内核]
[组件]
工具:
分支:
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
版本: 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 的移植。
主要变化:
修复问题点:
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------
版本: 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增加更多的信息,同时中断服务例程也可以携带用户自定义的参数类型。
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: 在kservice.c中增加__rt_ffs的实现。 ec6f9e3b5a: 修正在dfs.c中一处空指正的问题。 92d4c1939b: 修正at91sam9260分支上下文切换问题点,避免idle任务堆栈溢出。 fb9ea5eada: 在at91sam9260分支中使能MMU,并且更新SDIO和EMAC驱动。 009eccf640: 修正函数list()中错误使用strncpy的问题点。 83751c63e3: 在dlopen.c中增加出错处理。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.1.1稳定版本 发布时间: 2013/6/30
这个版本是一个基于RT-Thread 1.1.0正式版的bug修正版,相比于1.1.0版本,基本上没有添加什么新的功能,以下是修改记录: 内核:
组件:
分支:
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 1.1.0 正式版发布 发布时间: 2012/12/31
2012年玛雅人预言的世界末日没有到来,但是我们的 RT-Thread 1.1.0 正式版却如约而至。
看看 1.1.0 突出的更改及改进情况,首先 1.1.0 版本是 1.0.x 系列的一个升级版本,并未包括实质性、大的改动,改动主要体现在: 内核:强化应用模块。通过 1.1.0 开发时主要使用的平台:ART、realtouch-stm32f4,对应用模块进行相应的修正,并真正的在 Cortex-M 系列上使用起来。
驱动框架:这部分是 1.1.0 分支所主要新增的部分,包括: =>USB device/host stack; =>SDIO 框架(支持 SDIO 设备、SD/MMC 设备) =>SPI BUS,IIC device; =>WDT、RTC 等设备; =>MTD NOR 及 Nand 设备;
文件系统部分也有显著的更改:由 prife 移植了 JFFS2、UFFS 以及 YAFFS2。这部分已经比国外的 ecos、RTEMS 支持更广泛。 YiHui 加入并验证了 LUA 脚本的功能。 prife 新增了全面的 Windows Simulator 的分支,并把内核,shell,各个文件系统,TCP/IP 以及 GUI 组件都运行通过。 现在虽然已经出了 1.1.0 RC 版本,但在 1.1.0 正式版出来前,还会新加一个功能:scons 前端工具。 这个增加的是工具部分,对 RT-Thread 代码的修改尽量少,它主要通过使用图形界面的方式来动态生成 RT-Thread 的各个工程文件,当然也包括编译功能。目的是方便于(新)用户使用,而不是直接面对命令行(命令行模式还会保留,以方便例如 RT-Thread 开发人员这样的尽情进行 Hacking)。 以上摘录自《写在 RT-Thread 1.1.0 发布之前》
新版的 RTGUI 仍需要完善,此次 1.1.0 正式版本中暂不包括,之后会有单独的 RTGUI 版本发布。 想获取更多 RTGUI 信息的同学,请关注 https://github.com/RT-Thread/RTGUI
新增 PPC405 分支
新增 NXP LPC4330 分支
新增 win32 的 simulator 分支 --完善对编译环境 Visual Studio 2005 及以上版本的支持 --支持 finsh --支持 LWIP --支持 jffs2,elm fatfs,uffs
mini2440 分支 -- 支持 SDHC
efm32 分支 --修正 ubuntu 下 GCC 编译的错误
sam7x 分支 --修正使用Lwip后,编译错误的问题
以下是此次版本发布时的测试环境: windows 7 ubuntu 10.04 LTS 64-bit python 2.7.3 scons 2.1.0 IAR 6.30 MDK 4.53 arm-2011.09-69-arm-none-eabi.exe mips-2011.09-86-mips-sde-elf.exe 以下是 google code SVN 中自 RT-Thread 1.0.0 发布后的统计数据,感谢各位同学做出的努力,使得 RT-Thread 1.1.0 正式版顺利发布
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.1.0 RC 发布时间: 2012/10/12
原计划在2012年9月30日发布的 RT-Thread 1.1.0 Beta2 版本变更为 RT-Thread 1.1.0 RC 现在发布了。 RC 版本的发布意味着离 RT-Thread 1.1.0 正式版的发布已经不远了,在RC版本之后,将不再有新功能加入。欢迎大家测试,让我们一起迎接 RT-Thread 1.1.0 正式版的到来。
此次发布主要是加入了 USB device stack;RTGUI 组件与 github 上的 RTGUI 开发分支保持同步;
m16c62p 分支 --修正任务堆栈初始化时未设置任务返回地址的问题
upd70f3454 分支 --修正任务堆栈初始化时未设置任务返回地址的问题 --整理 BSP 目录结构,统一划分为 application 和 drivers 目录 --支持 scons + IAR 编译 --增加 IAR 工程模版
stm32f0x --libcpu 移植代码中增加 r8 - r11 出栈,入栈操作
mini2440 --使用新的 RTGUI
以下是此次版本发布时的测试环境: windows 7 ubuntu 10.04 LTS 64-bit python 2.7.3 scons 2.1.0 IAR 6.30 MDK 4.53 arm-2011.09-69-arm-none-eabi.exe mips-2011.09-86-mips-sde-elf.exe
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.1.0 Beta1 发布时间: 2012/6/30 按照 2012 年 RT-Thread roadmap,经过各位同学的努力,RT-Thread 1.1.0 Beta1 版本按时发布了,此版本依然是技术预览版,展示 RT-Thread 未来的发展方向,但不适合用于产品开发。 该版本主要是全面更新了 RTGUI 组件;加入了新的驱动框架(usb host, i2c,serial, rtc);组件中新增官方的 CMSIS 库;新增 Blackfin BF533 的移植,成为 RT-Thread 支持的第一个 DSP 分支。
同时恭喜 prife 同学成为 RT-Thread DFS 虚拟文件系统组建维护人
支持 Blackfin DSP 的移植,新增加 BF533 分支
新增加 stm32f0x 分支
at91sam9260 分支 --新增 i2c 驱动
efm32 分支 --新增 emu 驱动 --更新 CMSIS 版本到 3.01
lpc176x 分支 --rtconfig.h 中增加 CMSIS 选择项,选择使用 BSP 内的 CMSIS 或者是 RTT 组件中的 CMSIS --更新 IAR 工程模版 --修正 IAR 工程使用的 link 文件内容
lpc178x 分支 --修正 GCC 编译错误的问题 --配合 RTGUI 的更新,在 application.c 中作相应的调整
ls1bdev --规范移植分支目录结构,分为 applications 和 drivers 两个目录 --调整 rtconfig.h,支持 eclipse 的可视化配置
m16c62p 分支 --规范移植分支目录结构,分为 applications 和 drivers 两个目录 --增加 IAR 工程模版
mb9bf500r 分支 --配合 RTGUI 的更新,在 application.c 中作相应的调整
mb9bf506r 分支 --rtconfig.h 中增加 CMSIS 选择项,选择使用 BSP 内的 CMSIS 或者是 RTT 组件中的 CMSIS --规范移植分支目录结构,分为 applications 和 drivers 两个目录
mini2440 分支 --更新 keil project --修正 mini2440 移植中,上下文切换时的 bug,由 yuxun2k 提交补丁 --配合 RTGUI 的更新,在 application.c 中作相应的调整 --配合 RTGUI 的更新,在 calibration.c 中作相应的调整
mini4020 分支 --规范移植分支目录结构,分为 applications 和 drivers 两个目录
sam7x 分支 --规范移植分支目录结构,分为 applications 和 drivers 两个目录
stm32f10x 分支 --rtconfig.h 中增加 CMSIS 选择项,选择使用 BSP 内的 CMSIS 或者是 RTT 组件中的 CMSIS --配合 RTGUI 的更新,在 application.c 中作相应的调整 --增加 IAR 工程模板
stm32f20x 分支 --规范移植分支目录结构,分为 applications 和 drivers 两个目录
stm32f107 分支 --rtconfig.h 中增加 CMSIS 选择项,选择使用 BSP 内的 CMSIS 或者是 RTT 组件中的 CMSIS
以下是此次版本发布时的测试环境: windows 7 python 2.7.3 scons 2.1.0 IAR 6.30 MDK 4.53 arm-2011.09-69-arm-none-eabi.exe mips-2011.09-86-mips-sde-elf.exe //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.1.0 Alpha 发布时间: 2012/4/16
完成components init模块,通过 API rt_componets_init(void),统一组建初始化流程,参考 lpc176x
src/kservice.h 移动并重命名为 include/rtservice.h
新增rt_malloc_align/rt_free_align接口用于分配、释放对齐的内存
打开kservice.c中的RT_PRINTF_PRECISION宏以支持rt_kprintf中的带精度格式输出
新增 memheap用于在额外连续内存块上构建一个内存堆,提供新API rt_memheap_init(),rt_memheap_detach(),rt_memheap_alloc(),rt_memheap_free()
修正函数 rt_mp_init() 和 rt_mp_create() 中内存对齐的问题
finsh/cmd.c 中删除函数 rt_list_isempty(),统一使用 rtservice.h
修正动态加载模块 module.c 中 module unload 问题
新增宏 RTTHREAD_VERSION,版本1.1.0的格式是10100
minilibc/stdint.h 中,新增 int64_t 和 uint64_t
1.1.0 版本后弃用函数 rt_system_tick_init()
新增 buildbot 模块,实现批量编译 scons 工程
新的 DeviceDriver 框架:
支持 FPGA 软核的移植,新增加 microblaze 分支,nois-ii 分支
新增加 pic32ethernet 分支
at91sam9260 分支 --更新网络驱动,新增 sido 驱动
efm32 分支 --新增 key 和 joystick 驱动,更新 usart 驱动
lm3s8962 分支 --更新 ethernet 驱动,Enable reception of multicast packets
m16c62p 分支 --支持 SCONS/GCC 编译
fujistu fm3 分支 --拆分 fm3 分支为 mb9bf506r 和 mb9bf500r 两个独立的分支
stm32f40 分支 --更新 usart 驱动,更新 STM32F4xx_StdPeriph_Driver 到版本 V1.1.0
mini2440 分支 --新增 keil project
x86 分支 --支持 SCONS/GCC 编译
lpc178x 分支 --新增 LCD 驱动,增加 SDRAM 初始化
lpc176x 分支 --树立 RT-Thread 1.1.0 BSP 示范分支 --提供全套编译方案(KEIL 工程,IAR 工程,SCONS/GCC,SCONS/KEIL,SCONS/IAR) --提供 IAR 工程模板和 KEIL 工程模板,可以通过 scons --target=iar -s 自动生成 IAR 工程 --重新定义 rtconfig.h 文件结构,实现 eclipse 中可视化配置 rtconfig.h 选项 --调整 BPS 目录结构,应用相关归入 applications 目录,驱动相关归入 drivers 目录,库相关归入 CMSIS 目录
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 1.0.4 发布时间: 2012/12/30
RT-Thread 1.0.4 是 1.0.0 版本的 bug 修正版,也是 1.0.0 系列的最终版本。 RT-Thread 1.0.x 自正式版本发布到现在已经维护了一年整时间,期间发布了 4 个修订版本,目前已经趋于成熟、稳定,完全满足商用需求。 后续的重点我们会转移到 RT-Thread 1.1.0 版本的维护以及 RT-Thread 1.2.0 版本的开发。
1.0.4 版本仅在原来的基础上对已有的功能进行修正(新功能基本上没有),相对于 1.0.3 版本的更改如下:
1,修正 DFS 中 O_APPEND 和 lseek 问题点 2,在设备注册时增加设备检查步骤 3,finsh shell 中支持行注释 4,修正函数 clock_time_system_init() 中对变量 _timevalue.tv_usec 初始化错误的问题点 5,在函数 fd_get() 中增加对 dfs_fd 的合法性检查 6,删除 rtthread.h 中 rt_sprintf() 函数的重复声明
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.0.3 发布时间: 2012/10/12
RT-Thread 1.0.3 是 1.0.0 版本的 bug 修正版,仅在原来的基础上对已有的功能进行修正(新功能基本上没有)。 1.0.3 版本相对于 1.0.2 版本的更改:
1,lm4f232 分支更新 rtconfig.ph 2,修正 timer control 中 timer 标志设置错误的问题点 3,修正模块组件卸载问题点 4,修正当 multi-drivers 使能后 dfs_elm_open()调用失败后存在的一处内存泄露问题点 5,在 ELM FatFs 文件系统中增加 mount 检查 6,修正 f_seekdir 中存在的问题点 7,修正 finsh_var_delete 中的问题点 8,修正 LPC178x 分支中 scons 配合 armcc 编译时发生错误的问题点 9,修正 LPC176x 分支中 scons 配合 gcc 编译时发生错误的问题点 10,LWIP 中函数 eth_device_init() 中当定义 LWIP_IGMP 时,设置 NETIF_FLAG_IGMP 标志
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.0.2 发布时间: 2012/6/30 RT-Thread 1.0.2 是 1.0.0 版本的 bug 修正版,仅在原来的基础上对已有的功能进行修正(新功能基本上没有)。 1.0.2 版本相对于 1.0.1 版本的更改:
1,DFS 组件中,修正 fd 引用越界判断错误的问题 2,DFS posix API 中,错误返回时设置正确的 errno 3,LWIP 组件中,发送 mail 到 TCP 线程,用 rt_mb_send_wait() 代替 rt_mb_send() 4,在 rtthread.h 中新增两个 API:rt_timer_check(), rt_timer_next_timeout_tick()
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.0.1 发布时间: 2012/4/16
RT-Thread 1.0.1是1.0.0版本的bug修正版,仅在原来的基础上对已有的功能进行修正(新功能基本上没有)。1.0.1版本相对于1.0.0版本的更改: 内核
文件系统
shell
libc
分支
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 1.0.0正式版 发布时间: 2011/12/31
RT-Thread从2006年诞生到现在已经5年了,历经多次版本更迭(0.2.x,0.3.0,0.3.3,0.4.0 beta1,0.4.0 beta2,0.4.0 RC1) 内核更稳定: 增强上下文检查的功能,更多的错误检查
组件更丰富: 有文件系统,有RTGUI,支持TCP/IP协议栈,支持动态模块加载,支持posix,在使用GCC时可以打开newlib选项,支持全套C标准运行库
分支移植更完善: 支持ARM7,ARM9,ARM Cortex-M3,ARM Cortex-M4,MIPS,AVR32,V850E等32位MCU,同时也支持瑞萨的16位MCU M16C系列
所以我们很高兴可以发布RT-Thread 1.0.0版本了,此次正式版的发布离不开各位同学的支持, 感谢李恒发起的线下网友聚会 感谢上海浦东软件平台公司提供主题沙龙场地 感谢grissiom翻译的coding style文档,及提交的RTGUI相关补丁 感谢onelife维护EFM32分支 感谢。。。
与RT-Thread 0.4.0 RC1比起来,RT-Thread 1.0.0主要有以下的更新内容:
---- RTGUI例程中增加notebook的demo ---- 新增mem_test例程 ---- 更新kernel测试例程
ARM Cortex-M3系列芯片的移植统一使用/libcpu/cortex-m3 ARM Cortex-M4系列芯片的移植统一使用/libcpu/cortex-m4
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 0.4.0 RC1 发布时间: 2011/10/1
RT-Thread经过三个月时间的开发测试(SVN有100多次更新),RT-Thread 0.4.0 beta2顺利演变为RT-Thread 0.4.0 RC1。
RC版本的发布意味着离RT-Thread 0.4.0 正式版的发布已经不远了,在RC版本之后,将不再有新功能加入。欢迎大家测试,让我们一起迎接RT-Thread 0.4.0 正式版的到来。
Lwip -- 重新设计Lwip 1.4.0 ethernetif接口函数及初始化流程 -- 新增eth_device_linkchange()函数 -- 修正在中断处理中调用rt_mb_send()时,当前任务的error会被修改的问题 -- 重写sys_arch_protect()函数,在该函数内关中断并且关调度 -- 修正Issue 11(http://code.google.com/p/rt-thread/issues/detail?id=11) -- 优化netio代码 -- 新增finsh shell命令list_tcps() -- 更新Lwip 1.4.0,兼容旧的驱动程序
RT GUI -- 修正画点时坐标超出DC缓存的问题 -- 修正函数dc_buffer_fill_rect()中,前后背景颜色显示错误的问题 -- 修正hz字体解除问题 -- 修正中文字体显示错误问题 -- 修正list控件的键盘事件处理问题
dfs -- 修正dfs_romfs_lookup(), dfs_romfs_open()及dfs_romfs_lseek()实现中的问题
finsh -- 修正node分配失败的问题
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 0.3.4 发布时间: 2011/12/31
0.3.x系列的又一修订版本
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 0.3.3 发布时间: 2011/9/30
与上一版本比较RT-Thread 0.3.3版本内核只有一处修改,该版本的发布只有一个目的:稳定! 建议所有使用RT-Thread 0.3版本的用户升级到RT-Thread 0.3.3。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread 0.3.2正式版 发布时间: 2011/7/4
RT-Thread 0.3.2是RT-Thread 0.3.0发布以来的第二次修订版本,虽无新特性增加,但稳定性有所提高,建议用户及时更新。
这个版本支持的硬件平台数量与0.3.0正式版本的一致:
修正的问题包括:
RT-Thread在Google SVN服务器上的开发分支亦做了相应调整: 原来的branches/rtt_0_3_2分支更改为branches/rtt_0_3_3。
代码:http://code.google.com/p/rt-thread/downloads/detail?name=RT-Thread-0.3.2.zip
文档: RT-Thread实时操作系统编程指南与0.3.0正式版的相同,以后会逐渐由API说明文档替代,朝着正规化的方向发展。
(*) 希望使用新特性的开发人员请关注后续0.4.0版本的发布情况,0.4.0版本添加了很多的新特性,例如:16位的瑞萨M16分支,大端模式的AVR32分支,以及MIPS分支等。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 0.4.0 beta2 发布时间: 2011/7/4
这是RT-Thread 0.4.x系列的第二个测试版本。这个测试版本,依然更多的面向测试目的,不建议直接应用到实际的产品中。RT-Thread 0.4.0的非正式版本依然沿用GPL v2许可证进行发布,欢迎测试。
RT-Thread 0.4.0版本初始提出的几个功能亦基本达到,提供了相对完善的POSIX thread接口,动态库载入接口libdl以及应用模块支持。这些新功能的加入使得RT-Thread能够初步的兼容于POSIX标准。
自RT-Thread 0.4.0 beta1版本以来的更改: 内核:
组件:
分支: 在原有的基础上(ARM7,ARM9,ARM Cortex-M3, IA32),新增了MIPS,AVR32(大端模式),瑞萨M16C/62P(16位),瑞萨(原NEC)V850E
tools:
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 0.4.0 beta1 发布时间: 2010/11/30 自RT-Thread 0.3.0正式版发布以来,经过开发人员密集的整8个月开发,大众用户的积极反馈、测试,终于完成了RT-Thread 0.4.x系列的第一个测试版本。这个测试版本,依然更多的面向测试目的,不建议直接应用到实际的产品中。RT-Thread 0.4.0的非正式版本依然沿用GPL v2许可证进行发布,欢迎测试。 RT-Thread 0.4.0版本初始提出的几个功能亦基本达到,提供了相对完善的POSIX thread接口,动态库载入接口libdl以及应用模块支持。这些新功能的加入使得RT-Thread能够初步的兼容于POSIX标准。 自RT-Thread 0.3.0版本以来的更改: 内核:
组件:
分支: STM3210
<其他分支,例如avr32,瑞萨m16,SEP4020等分支,由于分支维护人来不及准备,此次发布未包括在内,可以自行从RT-Thread的google svn中获取>
移植的组件:
文档: RT-Thread 0.4.0在线API文档 下载: RT-Thread 0.4.0 beta1下载
【RT-Thread 0.4.x分支的额外说明】似乎很多人误以为0.4.x分支是面向资源丰富的平台,不太适合类似STM32这样的CM3平台。这里要说的是,0.4.x分支绝大部分是兼容0.3.x分支,并且也非常适合于STM32等面向微控制器的硬件平台。例如POSIX thread部分,它能够运行于STM32平台,如果使用Code Sourcery GCC工具链,同样能够支持其中的newlib C库。这部分同样对内存的需求非常少,并且后续会移植到其他编译环境下。0.4.x分支一些特性不适合于微控制器的包括:
对于Cortex-M3等平台,我们目前也在对 应用模块特性 进行评估,看看从技术上是否能够从另外的途径解决动态运行速度慢的问题。 //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 0.3.1正式版 发布时间: 2010/9/29 是发布0.3.1正式版的时候了:在0.3.1的维护过程中,得到了大家很多的反馈,其中一些bug及修正也是由大家指出,这里感谢大家一直以来的支持,RT-Thread的发展进步离不开大家的帮助,谢谢! 相较RT-Thread 0.3.0版本,0.3.1版本是一个bug修正版,并无添加新的特性(*),使用上与0.3.0版本完全兼容。建议使用RT-Thread 0.3.0版本的用户,如果需要长时间不间断运行(大于1年),请切换到0.3.1正式版本来。
这个版本支持的硬件平台数量与0.3.0正式版本的一致:
修正的问题包括:
修正OS Tick溢出的问题。
修正定时器有时会被延期操作的问题。
修正heap分配器尾部数据浪费的问题。
修正rt_realloc时内存可能被浪费使用的问题。
调整各内核对象结构使得内存布局更合理。
修正ELM FatFs接口中rename的问题。
修正LwIP中IGMP的问题。
完善当发送mail失败时LwIP的处理。
增强、完善RT-Thread/GUI的功能。
RT-Thread在Google SVN服务器上的开发分支亦做了相应调整: 原来的branches/rtt_0_3_1分支更改为branches/rtt_0_3_2。
代码:见附件。
文档: RT-Thread实时操作系统编程指南与0.3.0正式版的相同,以后会逐渐由API说明文档替代,朝着正规化的方向发展。
请注意STM32分支的工程文件组织方式和0.3.0版本中的不一样,原来的几个目录是不相独立的工程,而0.3.1中为了避免混淆,把它们变成了独立的工程(注:因为0.3.1与0.3.0是完全兼容的,所以不一定要更新BSP目录)。
project_107是针对STM32F107芯片的工程,project_valueline是针对STM32F100芯片 STM32 Discovery开发版的工程,其余的芯片默认是STM32F103ZE。如果要修改成自己所需要的芯片,请遵循一下步骤:
另外,STM32分支支持IAR编译器,在使用IAR ARM时,如果你使用了finsh,请注意,最好在链接配置文件中加入 keep { section FSymTab }; keep { section VSymTab }; 它的作用是为了保留finsh中使用到的符号表,因为这些符号表仅在命令行被调用,所以他们可能在最后生成目标文件时被优化掉。
具体请看stm32f10x_flash.icf文件。
LM3S分支默认采用LM3S8962芯片,针对的是TI这次发的48¥ 8962开发板。
工程默认包括finsh shell,文件系统,网络协议栈的支持。
(*) 希望使用新特性的开发人员请关注后续0.4.0版本的发布情况,0.4.0版本添加了很多的新特性,例如:16位的瑞萨M16分支,大端模式的AVR32分支,以及MIPS分支等。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread 0.3.0正式版 发布时间: 2010/3/30
相较以前的RT-Thread 0.3.0 RC版本,无大的修改(console调整为支持设备的模式),但依然建议所有使用0.2.x、0.3.0 beta/rc版的用户都开始使用0.3.0正式版。当前版本支持如下移植分支:
RT-Thread在Google SVN服务器上的开发分支亦做了相应调整: 原来的开发主干(trunk)更改为branches/rtt_0_3_1 当前的开发主干(trunk)作为当前的RT-Thread 0.4.x开发分支继续前进。
RT-Thread 0.3.1版本将在目前的0.3.0正式版上进行补丁修正,并且当0.4.x分支一些有用的、稳定功能也会迁移会0.3.x 分支。
后续会陆续加入一些AppNotes。
补充说明: STM3210分支 Keil MDK工程文件位于bsp\stm3210目录下,仅是基本的led工程; 系统默认采用STM32F103ZE芯片,其他芯片需要修改的位置:
同时在bsp\stm3210目录下还存在多个以project_开头的目录,这些相应的针对不同类型的工程,例如project_finsh针对在RT-Thread中使用finsh shell的情况。当需要使用这些工程时,需要把相应project_xxx目录中的文件都复制到 stm3210目录中(直接同名覆盖的方式),然后再行打开stm3210目录下的工程文件。
LM3S分支 LM3S的Keil MDK工程文件放在bsp\lm3s目录下;针对LM3S8962芯片(因为这个TI送的是带这个芯片的开发板),需要在 board.h中 // For lm3s8962, it should be SYSCTL_XTAL_8MHZ #define LM3S_XTAL_TYPE SYSCTL_XTAL_6MHZ
把如上这个定义更改为SYSCTL_XTAL_8MHZ,否则得话会锁死JTAG。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread/LM3S 0.3.0 RC1版发布 发布时间: 2010/1/4
实时线程操作系统是一款面向实时领域的操作系统,这个和通常的通用操作系统有着很大的不同。通用操作系统通常面对的是日常应用,例如打开浏览器上网,播放音乐,采用字处理软件编辑文档。 在古老的时代,通用操作系统一般只能处理一件事,而随着计算机技术日新月异的发展,硬件更新换代,上GHz主频、上GB内存、多核技术走进普通人的生活中,通用操作系统也就朝着并行化计算的方向发展。通用操作系统更多讲究的是,对这并行事务处理的公平性上,例如一个个民工在不同的窗口进行排队购买火车票,好的调度系统能够保证每个民工的公平性。 实时系统和这种通用系统有很大的差别。实时系统指的是,当外界有系统关注的相应事件发生时,系统能够在指定的时间内(deadline)进行正确的响应。用于实时系统的操作系统就叫做实时操作系统。从系统的定义也可以看得出,实时操作系统和通用操作系统在事务的处理上有明显的区别,实时操作系统有非常强的针对性,对相应的事件力求做到这固定的时间内进行响应;而通用操作系统则需要努力地做到各个事务的公平性(某些系统也会非常注意数据的吞吐量,例如网络服务器)。 实时线程操作系统(英文名RT-Thread)面向的正是这么一类的实时系统,因为其小型的特点也可以看成是一个嵌入式操作系统(嵌入式系统一般是针对一些专有目的而存在,比较吝啬于成本。而基于专有目的的特点,也注定了嵌入式系统或多或少的具有一些实时性的特点)。这种系统可以用于自动售票机,税控机,移动通信设备,mp3/mp4等便携式音乐设备,飞行器控制,车体导航控制,打印机,复印机,各类监控设备,路由器,ADSL,机顶盒等网络设备,医疗设备等等。 TI流明LM3S系列芯片是基于ARM Cortex M3 v7构架的32位芯片,其中LM3S S6000,S8000,S9000系列芯片携带网络功能。RT-Thread的标准内核可以运行在除LM3S S100系列外的所有系列芯片上。这次RT-Thread针对于LM3S进行移植验证并经过压力测试的是LM3S6918芯片,芯片携带64K片内静态内存,256K闪存,频率是50MHz。在这个平台上,RT-Thread支持的特性包括: ? 完善的实时核心
? FinSH shell命令行
? 面向小型设备的虚拟文件系统
? LwIP轻型TCP/IP协议栈
? 开发环境支持:
以上是RT-Thread/LM3S 0.3.0的特性,这些特性在RT-Thread 0.3.x分支中不会有大的改变。
技术指标及优势 看完RT-Thread的特性后,看看一些其他有吸引力的地方。
首先是体积。看网上有网友说,RT-Thread是否是基于Linux,或者直接使用Linux,这里不得不说,Linux并不是任何事情都做得到,它做不到在数KByte的内存占用上依然能够非常好的运行,而这类设备非常多。例如LM3S这类芯片,本身只有大约64K或更少的片内静态内存,另外就是闪存(通常在128K - 512K之间)。外扩内存基本上不太可能,这类芯片是完全的成本敏感型芯片,硬件决定了它已经不能外扩内存(LM3S最新款的已经支持能够外扩内存了,不过手上还没拿到)。
看几个体积指标: RT-Thread标准Kernel(标准Kernel指得是没经过剪裁的内核): 9.5K只读数据和执行代码占用,1.5K内存占用(通常只读数据和执行代码放置在闪存中)
包括上面说的完整组件,即标准Kernel,finsh shell,文件系统,网络协议栈: 80K只读数据和执行代码占用,13.5K内存占用,当运行时,会有5K左右的动态内存占用。即当系统运行时,大约剩余45K内存给用户使用。
和LM3S提供的无操作系统LwIP,FatFS文件系统比较: 120K只读数据和执行代码占用,35K内存占用。即当系统运行时,大约剩余20K内存给用户使用。
再看看针对网络的一些性能指标 对比情况采用了相同的netio测试得到的数据统计 RT-Thread/LM3S NETIO - Network Throughput Benchmark, Version 1.26 (C) 1997-2005 Kai Uwe Rommel TCP connection established. Packet size 1k bytes: 704 KByte/s Tx, 5131 Byte/s Rx. Packet size 2k bytes: 704 KByte/s Tx, 1950 KByte/s Rx. Packet size 4k bytes: 704 KByte/s Tx, 2197 KByte/s Rx. Packet size 8k bytes: 704 KByte/s Tx, 2200 KByte/s Rx. Packet size 16k bytes: 706 KByte/s Tx, 2196 KByte/s Rx. Packet size 32k bytes: 709 KByte/s Tx, 2136 KByte/s Rx. Done.
TI/无操作系统情况下的LwIP NETIO - Network Throughput Benchmark, Version 1.26 (C) 1997-2005 Kai Uwe Rommel TCP connection established. Packet size 1k bytes: 870 KByte/s Tx, 5187 Byte/s Rx. Packet size 2k bytes: 870 KByte/s Tx, 2463 KByte/s Rx. Packet size 4k bytes: 870 KByte/s Tx, 3322 KByte/s Rx. Packet size 8k bytes: 870 KByte/s Tx, 3239 KByte/s Rx.
(上面的是PC端NETIO输出的结果,Tx对应LM3S开发板上的接收,Rx对应LM3S开发板上的发送) 从上面可以看出,在大数据块发送时,RT-Thread/LM3S的移植会有一些损耗,但总的来说损耗不算太大,特别是报文在1k - 2k范围时数据相差不大。如何看待这个差异:通常没有操作系统时,系统能够更专注的做一件事。而有操作系统的情况下,它能够额外的做一些事务,这些事务在进行切换时,会产生一定的系统资源开销。总的来说,体积上的改善一定程度上弥补了性能的差距(例如RT-Thread/LM3S能够支持16k、32k bytes大小的网络包发送接收,而无操作系统的LwIP则不能)。
最后看看一些实时性能指标 这组数据是与著名的开源实时操作系统ecos的比较。测试代码完全相同,硬件平台相同(采用的是PXA310),编译器相同(GNU GCC),编译参数相同: 基本任务测试 RTT/ecos 1.40倍 协作调度测试 RTT/ecos 1.20倍 抢占调度测试 RTT/ecos 1.33倍 同步处理测试 RTT/ecos 1.86倍 内存分配测试 RTT/ecos 2.50倍
当一个实时操作系统能够做到稳定运行、性能比拟普遍运行的系统有一定优势、后续能够稳定发展时,那么她将是一款能够得到普遍使用的系统,而事实也正是如此:在中国,已经有十来家公司采用RT-Thread运用于他们的产品中,而后续打算在产品中采用RT-Thread的公司还有更多。
许可证 作为一套基础组件,就例如电脑中的中文输入法一样,它不应该收费,因此它能够免费的使用于商业产品中(0.3.x系统仅需要在我们这边进行产品信息备案,更换GPLv2许可证为商业许可证!0.4.x将更换产品许可证为BSD或Apache开源许可证)。
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
版本: RT-Thread RTOS v0.2.3版本 发布时间: 2008/10/6
更新记录
//---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- 版本: RT-Thread v0.2.2 发布时间: 2008/6/12 RT-Thread v0.2.2单内核正式版发布,这个版本主要是增加更多的BSP移植:
以下的移植仍然是试验性质的
以下是各个移植的一些说明: AT91SAM7S64: (系统资源:16k RAM,64k ROM Flash) 为配合小内存情况,RT-Thread 0.2.2支持任务最大优先级为32的情况,以保证内存占用更小(所有二进制代码小于10k) 在AT91SAM7S64移植中,串口并没打开,finsh也没启用。 在bsp/icdevs64/build目录下附带uVision的工程文件,需要机器上安装有keil的gcc编译器
ia32: 支持i386-elf-gcc for windows的编译,linux下的还没试,应该也可以顺利编译。 编译完成后在bsp/qemu目录下生成rtthread-qemu.elf 把这个elf文件配置到grub的配置文件中,具体的grub配置请参看grub文档
Sign in for post a comment
Comment ( 0 )