版本: RT-Threadv2.0.1及v2.1.0 alpha
RT-Thread v2.0.1是2.0这个系列的bug修正版,而v2.1.0 alpha则是当前开发主干的一个技术预览版本,它给出了v2.1.0这个版本系列的技术预览情况,不建议用于实际产品中,因为它可能存在大量的一些bug。
而v2.1.0 alpha这个技术预览版则沿着最初设定的roadmap技术路线进行,这其中主要包括:
lwip更深度的集成:把它集成到RT-Thread的文件系统接口中,这样Linux/Unix下的一些socket网络应用能够更顺利的移植到RT-Thread上,也为以后可以应用到更多地方的select接口铺路。
这部分是和RT-Thread发布本身无关,但也是这个版本系列设定的目标之一:开启一个云端集成开发环境的时代!云端会是什么样的,请用现代化的浏览器打开CloudIDE
经历了大约1年的时间,RT-Thread v2.0.0的最终版本终于发布出来了。自这个版本开发以来,引入了多项功能、修改、增强等。感谢参与的诸位开发人员! 以下是自v2.0.0 RC版本以来的详细更改记录。后续我还会给出v2.0.0版本自v1.2.x版本的主要不同、看点,以及给出下一个版本的roadmap规划。
发布时间: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中打开设备时,加入流标志进行打开;
发布时间:2014/8/1
v2.0.0这个版本系列是RT-Thread当前的开发分支,如果要上新项目,建议使用这个版本来进行,预计这个版本的正式版会在年底发布。欢迎对这个版本进行测试、并反馈问题,能够早日进入到稳定版。
v2.0.0版本的开发相对活跃些,开源社区提供了强有力的支持:如Arda贡献的TM4C129x移植,Romeo贡献的frdm-k64f移植,xiaonong的LPC4300移植等,以及睿赛德服务公司捐赠的Zynq7000移植,MB9BF618S移植,以及SPI WiFi网卡的驱动代码等。
更改记录
发布时间:2014/4/8
RT-Thread 2.0.0分支的第一个技术预览版本,仅用于展示2.0.0发展分支的演化动向(按照roadmap,2.0.0这个分支会有一部分RT-Thread和Linux互补性的技术,为Linux增加更好的实时性,为RT-Thread增加更多的功能性,这份技术预览版正是朝着这个目标而努力),欢迎反馈建议和问题。
[发布后记]
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。
发布时间: 2014/4/8
在原有的1.2.0版本的bug修正版本,也是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版本发布以来具体的变更履历:
其他:
发布时间: 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
以下是自 RT-Thread 1.1.0 RC 版本发布后,详细的更新内容:
新增 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 虚拟文件系统组建维护人
以下是详细的更新内容:
新增加 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
按照 2012 年 RT-Thread roadmap,RT-Thread 1.1.0 Alpha 版本发布,此版本为技术预览版,展示 RT-Thread 未来的发展方向,但不适合用于产品开发,此版本主要是新增了组件初始化模块,加入了新的驱动框架(SPI,SDIO),新增 jffs2,yaffs2 文件系统的移植,eclipse 可视化配置 rtconfig.h 选项,具体的更新内容如下:
新增 buildbot 模块,实现批量编译 scons 工程
新的 DeviceDriver 框架:
SPI BUS及SPI Device
SD卡及面向非存储类型的SDIO卡
MTD Nand设备及MTD NorFlash设备
新增加 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
帖子由 lgnq ? 2011年 7月 4日 15:46
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分支等。
发布时间: 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:
发布时间: 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等平台,我们目前也在对 应用模块特性 进行评估,看看从技术上是否能够从另外的途径解决动态运行速度慢的问题。
发布时间: 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正式版本的一致:
修正的问题包括:
调整各内核对象结构使得内存布局更合理。
修正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分支
请注意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分支 - LM3S分支默认采用LM3S8962芯片,针对的是TI这次发的48¥ 8962开发板。
LPC176x分支 - 工程默认包括finsh shell,文件系统,网络协议栈的支持。
(*) 希望使用新特性的开发人员请关注后续0.4.0版本的发布情况,0.4.0版本添加了很多的新特性,例如:16位的瑞萨M16分支,大端模式的AVR32分支,以及MIPS分支等。
发布时间: 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。
发布时间: 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命令行
命令即C代码的命令行方式;
直接在命令行中调用系统内核函数;
直接在命令行中访问系统全局变量;
历史记录及命令自动补全;
面向小型设备的虚拟文件系统
向上层应用提供POSIX风格的API接口;
支持多种具体文件系统实现;
LM3S分支内置SD卡驱动程序;
LwIP轻型TCP/IP协议栈
标准的BSD Socket接口;
IP、ICMP、UDP、TCP标准协议支持;
DNS,DHCP,PPP协议支持;
TFTP、HTTP、FTP应用协议支持(见netutil组件);
LM3S分支内置以太网驱动;
开发环境支持:
GNU GCC (scons做为构建工具)
Keil MDK
以上是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开源许可证)。
发布时间: 2008/10/6
更新记录
发布时间: 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文档