自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版本以来的更改:
内核:
- 添加应用模块支持;支持两者应用方式:.mo 符号预解析应用;.so 符号未解析应用。.so应用需要在加载时动态解析符号。能够执行本地文件系统的应用模块,也能够执行网络文件系统上的应用模块。
- 修正在rt_realloc参数中传入一个NULL指针时,分配失败的问题。修正slab管理器中对0xffffffff尺寸内存分配的问题;
- 修正OS节拍数溢出的问题。(charlie weng提供相应的patch)
- 块设备中读写偏移、大小等都更改成按块为单位;
- 更改rt_device中成员private名为user_data;
- 线程TCB中添加cleanup域,它将在线程运行结束时回调。
组件:
- 添加newlib移植,当前仅能够支持GNU GCC编译环境;
- 添加POSIX thread兼容接口(支持barrier,cond,mutex,rwlock,spin,tls等),采用IEEE Std 1003.1, 2004 Edition为参考进行实现;
- 添加libdl兼容接口,能够使用dlopen,dlsym,dlclose等接口动态加载库;
- 文件系统完善
- 对设备虚拟文件系统代码部分进行调整,精简;
- 修正device file system中struct stat的问题(能够兼容于newlib、minilibc、Keil MDK)
- 修正dfs_filesystem_lookup函数中空项操作的问题;
- 增加fstat接口;文件系统实现中增加mkfs,statfs接口以获得文件系统相关的信息。
- 添加romfs文件系统,可以采用mkromfs.py脚本生成相应的ROM文件系统;
- 添加devfs文件系统,增加/dev/console设备,它是一个虚拟设备,用于标准输入、输出、错误等;
- 添加NFS v3客户端文件系统,可以配合FreeNFS/Linux NFS使用,以访问主机上的目录和文件;
- elm fat文件系统
- 添加非512扇区的宏定义;
- 添加卸载的功能。
- 修正重命名的问题;
- RT-Thread/GUI
- 增加bmp图像格式支持;
- 原来的hardware dc更改为client dc;重写新的hardware dc,新的hardware dc绘图速度会更快。
- 加入了非等宽字体支持。
- 加入TTF字体支持,但内存空间占用估计比较大,对于unicode的问题还存在些问题。
- 修正filelist_view控件析构的问题。
- 对DC操作进行调整完善 (由richard lion完成)
分支:
- STM3210
- 完善SDIO驱动,并提供超过4G卡的支持;
- mini2440
- 能够使用0.4.0分支上所有的特性,能够开启newlib支持,能够开启POSIX thread支持,能够开启libdl支持。
- 增加LPC的ARM Cortex-M0/3系列移植分支;
- 增加新唐的ARM Cortex-M0 NU1xx分支;
- 增加龙芯I SoC3210分支(MIPS 32位体系结构)
<其他分支,例如avr32,瑞萨m16,SEP4020等分支,由于分支维护人来不及准备,此次发布未包括在内,可以自行从RT-Thread的google svn中获取>
移植的组件:
- wyoujtg完成国内知名的开源项目FTK移植。FTK是一套极为绚丽,完整的GUI系统。
RT-Thread 0.4.0 在线API文档:这里
RT-Thread 0.4.0 Beta1下载: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分支一些特性不适合于微控制器的包括:
- 应用模块加载。
- FTK GUI。
对于Cortex-M3等平台,我们目前也在对 应用模块特性 进行评估,看看从技术上是否能够从另外的途径解决动态运行速度慢的问题。