- 1、本文档共150页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一章 RT-THREAD简介
RT-Thread是一款来自中国的开放源代码实时操作系统,并且是一款商业许可证非常宽松的实时操作系统。下图是RT-Thread及外围组件的基本框架图:
RT-Thread Kernel内核部分包括了RT-Thread的核心代码,包括对象管理器,线程管理及调度,线程间通信等的微小内核实现(最小能够到达2.5k ROM,1k RAM体积占用)。内核库是为了保证内核能够独立运作的一套小型类似C库实现(这部分根据编译器自带C库的情况会有些不同,使用GCC编译器时,携带更多的标准C库实现)。CPU及板级支持包包含了RT-Thread支持的各个平台移植代码,通常会包含两个汇编文件,一个是系统启动初始化文件,一个是线程进行上下文切换的文件,其他的都是C源文件。
1.1 实时内核
1.1.1 任务/线程调度
在RT-Thread中线程是最小的调度单位,线程调度算法是基于优先级的全抢占式多线程调度算法,支持256个线程优先级(也能通过配置文件更改为最大支持32个或8个线程优先级,针对STM32通常配置是32个线程优先级),0优先级代表最高优先级,255优先级留给空闲线程使用;支持创建相同优先级线程,相同优先级的线程采用可设置时间片的轮转调度算法;调度器寻找下一个最高优先级就绪线程的时间是恒定的(时间复杂度是1,即O(1))。系统不限制线程数量的多少,只和硬件平台的具体内存相关。
1.1.2 任务同步机制
系统支持信号量、互斥锁作为线程间同步机制。互斥锁采用优先级继存方式以解决优先级翻转问题。信号量的释放动作可安全用于中断服务例程中。同步机制支持线程按优先级等待或按先进先出方式获取信号量或互斥锁。
1.1.3 任务间通信机制
系统支持事件、邮箱和消息队列等通信机制。事件支持多事件”或触发”及”与触发”,适合于线程等待多个事件情况。邮箱中一封邮件的长度固定为4字节,效率较消息队列更为高效。通信设施中的发送动作可安全用于中断服务例程中。通信机制支持线程按优先级等待或按先进先出方式获取。
1.1.4 时间管理
系统使用时钟节拍来完成同优先级任务的时间片轮转调度;线程对内核对象的时间敏感性是通过系统定时器来实现的;定时器支持软定时器及硬定时器(软定时器的处理在系统线程的上下文中,硬定时器的处理在中断的上下文中);定时器支持一次性超时及周期性超时。
1.1.5 内存管理
系统支持静态内存池管理及动态内存堆管理。从静态内存池中获取内存块时间恒定,当内存池为空时,可把申请内存块的线程阻塞(或立刻返回,或等待一段时间后仍未获得内存块返回。这取决于内存块申请时设置的等待时间),当其他线程释内存块到内存池时,将把相应阻塞线程唤醒。动态堆内存管理对于不同的系统资源情况,提供了面向小内存系统的管理算法及大内存系统的SLAB内存管理算法。
1.1.6 设备管理
系统实现了按名称访问的设备管理子系统,可按照统一的API界面访问硬件设备。在设备驱动接口上,根据嵌入式系统的特点,对不同的设备可以挂接相应的事件,当设备事件触发时,通知给上层的应用程序。
1.2 虚拟文件系统
RT-Thread提供的文件系统称为设备文件系统,它主要包含了一个非常轻型的虚拟文件系统。虚拟文件系统的好处就是,不管下层采用了什么文件系统,例如内存虚拟文件系统,FAT32文件系统还是YAFFS2闪存文件系统,对上层应用程序提供的接口都是统一的。
1.3 轻型IP协议栈
LwIP 是瑞士计算机科学院(Swedish Institute of Computer Science)的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈,它在包含完整的TCP协议实现基础上实现了小型的资源占用,因此它十分适合于使用到嵌入式设备中,RT-Thread 采用LwIP 做为默认的TCP/IP 协议栈,同时根据小型设备的特点对其进行再优化,体积相对进一步减小, RAM 占用缩小到5kB附近(依据上层应用使用情况会有浮动)。
1.4 shell系统
RT-Thread的shell系统——FinSH,提供了一套供用户在命令行操作的接口,主要用于调试、查看系统信息。由于系统程序大多数采用C语言来编写,FinSH命令行的设计被设计成类似C语言表达式的风格:它能够解析执行大部分C语言的表达式,也能够使用类似于C语言的函数调用方式(或函数指针方式)访问系统中的函数及全局变量。
1.5 图形用户界面
RT-Thread/GUI组件是一套完全针对嵌入式系统而进行优化的图形用户界面,它在保留通常意义的多窗口的前提下,提出了面板,工作台,视图的概念,通过一个个视图的渲染展现出图形用户界面绚丽的外观。它同样也包括了基本控件的支持、中文显示的支持、多线程的支持;针对嵌入式系统计
文档评论(0)