Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread发布
RT-Thread/LM3S 0.3.0 RC1版发布
发布于 2010-01-04 10:08:39 浏览:26472
订阅该版
实时线程操作系统是一款面向实时领域的操作系统,这个和通常的通用操作系统有着很大的不同。通用操作系统通常面对的是日常应用,例如打开浏览器上网,播放音乐,采用字处理软件编辑文档。 在古老的时代,通用操作系统一般只能处理一件事,而随着计算机技术日新月异的发展,硬件更新换代,上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支持的特性包括: ? 完善的实时核心 - 面向对象方式的实时核心(但依然保留了C语言的优雅、小巧风格); - 默认32线程优先级的全抢占式实时内核(亦可配置成256线程优先级);相同优先级线程时间片轮转调度; - 相同优先级线程实施时间片可配置的分时时间片轮转调度; - 线程间同步机制:信号量和防止优先级翻转的互斥锁; - 完善高效的线程间通信机制,包括邮箱,消息队列和事件; - 支持线程挂起和唤醒的固定内存块管理及线程安全的动态内存堆管理; - 向上层提供基于名字的统一接口设备驱动模型; ? 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开源许可证)。
下载附件[RT-Thread 0.3.0 概述.pdf]
下载附件[rt-thread lm3s 0.3.0 rc1.zip]
下载附件[LM3S配置指南.pdf]
查看更多
24
个回答
默认排序
按发布时间排序
shaolin
2010-01-04
这家伙很懒,什么也没写!
1 RT-Thread/LM3S配置指南 1.1 LM3S系列芯片概述 LM3S系列芯片是美国德州仪器(TI)为汽车电子,工业控制,医疗电子等低成本嵌入式领域设计的32位计算能力的高性能芯片。 LM3S平台包括S100,S300,S600,S800,S1000,S2000,S3000,S5000,S6000,S8000,S9000几大系列芯片,除S100和S300系列最大支持主频分别在20MHz和25MHz以外,其他所有系列芯片支持最大主频均为50MHz。LM3S系列芯片片内FLASH一般在8KByte,16KByte,32KByte,64KByte,128KByte,256KByte,片内SRAM一般在2Kbyte,8Kbyte,16Kbyte,32Kbyte,64Kbyte不等。此外,S6000,S8000,S9000系列集成了100MHz以太网控制器。 1.2 RT-Thread的典型体积要求 下面看下RT-Thread几组典型的体积要求: 1)RT-Thread/LM3S标准Kernel(标准Kernel指得是没经过剪裁的内核): Program Size: Code=9150 RO-data=478 RW-data=120 ZI-data=1440 9.5K只读数据和执行代码占用,1.5K内存占用(通常只读数据和执行代码放置在闪存中) 从以上数据看出,RT-Thread/LM3S标准Kernel可以运行在除S100系列以外的所有LM3S系列芯片中。 2)RT-Thread/LM3S标准Kernel + Lwip协议栈 Program Size: Code=45654 RO-data=838 RW-data=308 ZI-data=6372 46K只读数据和执行代码占用,7K内存占用,另外,运行时会有5K左右动态内存占用。 从以上数据可以看出,RT-Thread/LM3S标准Kernel + Lwip协议栈可以运行在所有集成以太网控制器的LM3S系列芯片上。 2)RT-Thread/LM3S标准Kernel + Lwip协议栈 + File System + Finsh Shell + LM3S Lib Program Size: Code=78826 RO-data=2298 RW-data=700 ZI-data=12972 标准Kernel,Finsh Shell,文件系统,网络协议栈,需要80K只读数据和执行代码占用,13.5K内存占用,当运行时,会有5K左右的动态内存占用。即如果芯片有64K的SRAM,当系统运行时,大约剩余45K内存给用户使用。 1.3 LM3S芯片类型的配置 当您使用RT-Thread时,请先确定您使用的芯片型号,在软件的配置上主要是选择芯片型号(在工程的选项中):
bernard
2010-01-04
这家伙很懒,什么也没写!
赞!
fengzi
2010-01-05
这家伙很懒,什么也没写!
支持 [s:175] LM3S 0.3.0 RC1中 serial.c中问题仍未修正 [code]Line62: UARTIntStatus(serial->hw_base, true);[/code] 应为 [code]status = UARTIntStatus(serial->hw_base, true);[/code]
ffxz
2010-01-05
这家伙很懒,什么也没写!
呃,我以为shaolin会注意到这个问题,所以没提醒他,我的错。 fengzi你有代码提交权限吗?你来更新上去吧,大家多参与了,问题也就能够早发现早解决。
shaolin
2010-01-05
这家伙很懒,什么也没写!
这个问题没注意到,汗 [s:183]。
fengzi
2010-01-05
这家伙很懒,什么也没写!
[quote]呃,我以为shaolin会注意到这个问题,所以没提醒他,我的错。 fengzi你有代码提交权限吗?你来更新上去吧,大家多参与了,问题也就能够早发现早解决。[/quote] 没有权限,fengzi.rtt@gmail.com,老大开一下吧 能力有限,但希望为RTT添砖加瓦
bernard
2010-01-05
这家伙很懒,什么也没写!
[quote][quote]呃,我以为shaolin会注意到这个问题,所以没提醒他,我的错。 fengzi你有代码提交权限吗?你来更新上去吧,大家多参与了,问题也就能够早发现早解决。[/quote] 没有权限,fengzi.rtt@gmail.com,老大开一下吧 能力有限,但希望为RTT添砖加瓦[/quote] done! 开发者在使用google svn中需要注意的两点: 1. 提交代码,svn链接是以https开头,而不是http。 2. svn提交密码需要到自己google帐号的profile中获得(一个复杂的密码,自己不能修改,只能重新生成)
chenbm2008
2010-01-10
这家伙很懒,什么也没写!
在你的MDK项目中,选择LM3S6432 ,我自己做的LM3S6432的开发板,编译成功后,下载,校验都没有问题,但是, 接着运行马上提示错误,JTAG 被 锁了。 需要解锁后,才能烧写!
bernard
2010-01-10
这家伙很懒,什么也没写!
估计6432和6918的某些pin刚好冲突,所以直接切换过去有些问题,建议仔细比较下不同。另外,也可以从最基础的组件一个个添加:先Kernel,然后finsh shell,。。。
aozima
2010-01-10
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!
STM32这方面要好得多. 只是IO的分布太锤子了....
撰写答案
登录
注册新账号
关注者
0
被浏览
26.5k
关于作者
shaolin
这家伙很懒,什么也没写!
提问
115
回答
444
被采纳
0
关注TA
发私信
相关问题
1
RT-Thread单内核v0.2.2正式版
2
[发布] RT-Thread RTOS v0.2.3版本
3
RT-Thread 0.3.0 beta
4
RT-Thread/STM32 0.3.0 RC1发布
5
建议弄个MIPS版本的。龙芯上用。
6
开源实时操作系统RT-Thread 0.3.0正式版发布
7
关于RT-THREAD的UDP讨论
8
这里是BUG回报板块!
9
rt-thread stm32 0.3.0 rc1 网络问题
10
[公告] 0.4.x中一个比较大的更改
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
五分钟玩转RT-Thread新社区
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
6
国产MCU移植系列教程汇总,欢迎查看!
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RS485驱动包的使用
2
当做一件事,坚持到第二十年 ——Open-SkyEye强势回归!
3
stm32f407zgt6新建工程
4
【github】rt-thread BSP 目录所有支持开发板整理展示
5
使用 D1s (RDC2022 纪念版) 连接 thingspeak
热门标签
RT-Thread Studio
串口
LWIP
SPI
Env
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
stm32
RT-Thread Nano
SCons
MQTT
ESP8266
ota
packages_软件包
UART
rtthread
RTC
freemodbus
I2C
flash
cubemx
W5500
rt-smart
定时器
FAL
PWM
ADC
BSP
SDIO
msh
AB32VG1
Debug
C++_cpp
socket
SFUD
中断
编译报错
MicroPython
keil
LVGL
dfs
本月问答贡献
出出啊
1424
个答案
315
次被采纳
小小李sunny
1327
个答案
262
次被采纳
crystal266
490
个答案
144
次被采纳
whj467467222
1210
个答案
141
次被采纳
张世争
581
个答案
131
次被采纳
本月文章贡献
出出啊
4
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
crystal266
1
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
张世争
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部