单片机实时操作系统RTOS
实时操作系统FreeRTOS+CANopen功能探索
实时操作系统F r e e R T O S+C A N o p e n功能探索姚家亮,王树磊,王昊(常州工学院民航与机械工程学院,常州213000)摘要:首先对C A N o p e n协议和F r e e R T O S操作系统进行简单介绍,以S TM32F429开发板为硬件平台,以F r e e R T O S为软件平台,在此基础上研究了当下流行的C A N o p e n的移植过程㊂将C A N中断接收到的报文存放在F r e e R T O S的消息队列中,并建立一个任务从消息队列中获取接收到的C A N报文,然后调用C a n F e s t i v a l中的 C a n D i s p a t c h 函数完成处理;采用F r e e R T O S的软件定时器功能定时地调用C a n F e s t i v a l中的 T i m e D i s p a t c h 函数,从而实现C A N o p e n协议中定时事件的处理㊂最后,设计了相关实验,对移植的正确性和稳定性进行了验证㊂关键词:F r e e R T O S队列;软件定时器;C A N o p e n;S TM32F429中图分类号:T N964.3文献标识码:AF u n c t i o n o f R e a l-t i m e O p e r a t i n g S y s t e m F r e e R T O S+C A N o p e nY a o J i a l i a n g,W a n g S h u l e i,W a n g H a o(C h a n g z h o u I n s t i t u t e o f T e c h n o l o g y,C h a n g z h o u213000,C h i n a)A b s t r a c t:F i r s t l y,t h e C A N o p e n p r o t o c o l a n d F r e e R T O S o p e r a t i n g s y s t e m a r e b r i e f l y i n t r o d u c e d.T h e S TM32F429d e v e l o p m e n t b o a r d i s u s e d a s t h e h a r d w a r e p l a t f o r m a n d F r e e R T O S i s u s e d a s t h e s o f t w a r e p l a t f o r m.B a s e d o n t h i s,t h e p o p u l a rC A N o p e n m i g r a t i o n p r o c e s s i s s t u d i e d.T h e m e s s a g e r e c e i v e d b y t h e C A N i n t e r r u p t i s s t o r e d i n t h e m e s s a g e q u e u e o f F r e e R T O S,a n d e s t a b l i s h a t a s k t o o b t a i n t h e r e-c e i v e d C A N m e s s a g e f r o m t h e m e s s a g e q u e u e,a n d t h e n c a l l t h e"C a nD i s p a t c h"f u n c t i o n i n C a n F e s t i v a l t o c o m p l e t e t h e p r o c e s s i n g.T h e F r e e R T O S s o f t w a r e t i m e r f u n c t i o n p e r i o d i c a l l y c a l l s t h e"T i m D i s p a t c h"f u n c t i o n i n C a n F e s t i v a l t o h a n d l e t h e p r o c e s s i n g o f t i m e d e v e n t s i n t h e C A N o p e n p r o t o c o l.F i n a l l y,r e l e v a n t e x p e r i m e n t s a r e d e s i g n e d t o v e r i f y t h e c o r r e c t n e s s a n d s t a b i l i t y o f t h e t r a n s p l a n t.K e y w o r d s:F r e e R T O S q u e u e;s o f t w a r e t i m e r;C A N o p e n;S TM32F429引言随着计算机技术和微电子技术的推进,嵌入式系统具备了处理复杂的传感或控制任务的能力㊂在这种情况下,引入操作系统可以合理有效地对整个系统的硬件和软件资源进行管理,能够极大地提高嵌入式系统的模块化程度,从而简化应用软件的设计,缩短开发周期,保证系统的可靠性和实时性㊂F r e e R T O S是一个迷你的实时操作系统内核,作为一个轻量级的操作系统,F r e e R T O S提供的功能包括:任务管理㊁时间管理㊁信号量㊁消息队列㊁内存管理㊁记录功能等,可基本满足较小系统的需要㊂F r e e R T O S内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,C P U总是让处于就绪态的㊁优先级最高的任务先运行㊂F r e e R T O S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享C P U的使用时间㊂C A N o p e n协议是在C A N总线的基础上定义的应用层协议,是具有高度灵活配置能力的标准化嵌入式网络协议㊂因其协议精练㊁透明㊁便于理解,又具有实时性和可靠性高㊁数据传输速度快㊁组网成本低等优点,在多个领域中得到了广泛的应用,因其拥有良好的传输速度以及开源的特性被广泛用于各个工业领域,尤其在机器人㊁高铁等伺服机构中有着十分优良的表现㊂本文的背景是开发一款支持C A N o p e n协议的无刷直流电机控制器,限于篇幅,此处仅介绍C A N o p e n协议在F r e e R T O S实施操作系统下的移植,选择的单片机为S TM32F429㊂1C A N o p e n协议简介C A N报文由7个不同的位域组成,C A N网络中各个从节点的I D用节点I D(6~0位)表示,最多可以有127个从节点㊂简单来说,C A N o p e n就是对其中的仲裁域(11位标识符)和数据域(8字节数据)进行了更为详细的定义㊂11位标识符和8字节数据在C A N帧中的位置如图1所示㊂图1 C A N o pe n 的标识符和数据在C A N 帧中的位置C A N o pe n 协议中的各种通信对象通过11位标识符中的功能码部分(10~7位)进行分别,比如主节点发送NM T 控制命令功能码为0000,S D O 的功能码为1011(发送)和1100(接收)㊂不同通信对象对8字节数据的使用及各字节代表的意义不同,例如:①过程数据对象(P D O ):8个字节全部用来传输实时数据㊂②服务数据对象(S D O ):使用8个字节,各字节表示的意义如下:字节0字节1~2字节3字节4~7S D O 命令字对象索引对象子索引数据值③网络管理对象(NM T ):NM T 对象使用2字节数据,心跳报文使用1字节数据,NM T 对象数据字节表示的意义如下:标识符字节0字节10x 000命令字从节点I D心跳报文数据字节表示的意义如下:标识符字节00x 700+D o d e _I D从节点状态C A N o pe n 协议作为C A N 总线的应用层协议,主要对C A N 报文中可用于报文控制的11/29位C A N I D 和8字节数据进行定义,实现应用层功能㊂C A N o p e n 协议使用11/29位C A N I D 对报文进行分类,协议支持的报文有以下几类:①S D O (服务数据对象)报文㊂S D O 报文的主要用途是主从节点的数据交互,使用S D O 报文进行通信时,接收报文的节点需要回送报文进行应答,因此S D O 报文实现的是一种面向连接的可靠性通信㊂②P D O (过程数据对象)报文㊂P D O 报文的主要用途与S D O 报文类似,也是用于主从节点数据交互㊂与S D O 报文的主要区别在于使用P D O 报文通信时,接收报文的节点不需要回送应答;另外P D O 报文对数据的访问方式与S D O 报文不同,P D O 报文的数据访问效率比S D O报文更高,因此P D O 报文常用于需要频繁操作的数据,以及需要高效率传输的数据㊂P D O 报文可采用同步方式或者异步方式进行传输㊂当需要同步传输P D O 报文时,设备的对象字典需要支持同步周期字典项(索引值为0x 1006)㊂③NM T (网络管理)报文㊂该报文的主要功能是进行网络管理,C A N o pe n 主节点通过发送NM T 报文控制从节点的启动㊁停止㊁运行等状态切换,从节点通过NM T 报文来通知主节点自己上线或者下线㊂2 移植过程F r e e R T O S 用户可配置内核功能,且它目标代码小,简单易用,遵循M I S R A C 标准的编程规范,具有强大的执行跟踪和堆栈溢出检测功能,它没有限制的任务数量和优先级,多个任务可以分配相同的优先权㊂本文中,C A N o p e n 的报文处理和定时事务的管理主要是通过F r e e R T O S 的消息队列和软件定时器两大功能来完成的,下面将对具体的移植过程进行介绍㊂2.1 基于消息队列的C A N 报文接收和处理机制在没有操作系统的C A N o pe n 协议中,C A N 报文的接收函数体会根据接收数据的长度信息来一个字节一个字节地接收传输来的数据,并将其放入程序指定的缓存空间中㊂最后,如果接收数据成功存入了缓存空间,那么就会将接收数据的长度作为返回值返回给调用者㊂下面研究的是将报文存储在队列之中㊂在使用队列前必须先创建队列,使用动态方法,用函数x Q u e u e C r e a t e ()来创建队列,此函数本质上是宏,真正完成队列创建的函数是x Q u e u e G e n e r i c C r e a t e()㊂下面以默认的动态分配队列存储空间方式讲述队列创建过程㊂首先调用函数p r v A l l o c a t e Q u e u e M e m o r y 分配队列结构体和队列项存储空间,结构体和队列项在存储空间上是连续的,如果队列内存申请成功,接下来会初始化队列结构体成员,先是p c H e a d 成员,然后是u x L e n g t h 和u x I t e m S i z e 成员,最后调用函数x Q u e u e G e n e r i c R e s e t ()初始化剩下的结构体成员㊂创建队列成功后,就可以使用队列了㊂首先使能C A N 接口的接收中断,在接收中断级服务函数中,调用函数x Q u e u e S e n d F r o m I S R ()向队列存储数据,发送的数据是向后入队,即将新的消息插到队列后面,此函数本质也是宏,需要调用函数x Q u e u e G e n e r i c S e n d F r o m I S R ㊂这个函数用在中断服务程序中㊂根据参数的不同,可以从队列尾入队㊁从队列首入队也可以覆盖式入队㊂覆盖式入队用于只有一个队列项的场合,入队时如果队列已满,则将之前的队列项覆盖掉㊂但是当队列满时不会阻塞,直接返回一个错误码,表示队列满(相当于阻塞时间为0),因为没有阻塞,所以当成功入队后,如果有因为等待出队而阻塞的任务,现在可以将其中最高优先级的任务解除阻塞,在执行解除阻塞操作之前,会判断队列是否上锁㊂如果没有上锁,则解除被阻塞的任务,还会根据需要设置上下文切换请求标志;如果队列已经上锁,则不会解除被阻塞的任务,取而代之的是将x T x L o c k 加1,表示队列上锁期间入队的个数,也表示有任务可以解除阻塞了㊂向队列发送消息成功后,C A N 需要读取数据时便使用函数x Q u e u e R e c e i v e F r o m I S R ,读取成功后会将队列中这条数据删除,此函数在读取消息时采用拷贝方式,所以用户需要提供一个数据组或缓冲区来保存读取到的数据,所读取的数据长度是创建队列的时候所设定的每个队列的长度㊂返回值为p d T U R E ,则读取数据成功,返回值为p d F A L S E ,则读取数据失败㊂图2为邮箱出入队列示意图㊂图2 邮箱出入队列示意图最后,通过调用函数C a n D i s pa t c h ,来根据对象字典中设置内容对C A N 报文进行处理㊂2.2 基于软件定时器的C A N 时间管理软件定时器相较于硬件定时器而言,需要占用C P U时间,但它资源多,定时时间长,使用灵活,占用内存少㊂F r e e R T O S 提供的软件定时器支持单次模式和周期性模式,单次模式就是用户创建了定时器并启动定时器后,定时时间将不再重新执行,这就是单次模式软件定时器的含义㊂周期模式就是定时器会按照设置的时间周期重复去执行,这就是周期模式软件定时器的含义㊂另外就是单次模式或者周期模式的定时时间到后会调用定时器的回调函数,用户可以在回调函数中加入需要执行的工程代码㊂首先,使用函数x T i m e r C r e a t e ()来创建一个软件定时器,它所需要的内存通过动态内存管理方法分配㊂新创建的软件定时器处于休眠状态,需要调用函数,使它进入活动状态,使用函数x T i m e r S t a r t ()来开启软件定时器,此函数为宏,真正执行的函数为x T i m e r G e n e r i c C o mm a n d ()㊂当需要停止软件定时器时,便使用函数x T i m e r S t o p (),此函数也是个宏,真正执行的函数是x T i m e r G e n e r i c C o m -m a n d()㊂软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数,被定时器调用的这个功能函数叫做定时器的回调函数㊂回调函数的两次执行间隔叫做定时器的定时周期,简而言之,定时器的定时周期到了以后就会执行回调函数,在回调函数中调用T i m e D i s pa t c h 进行处理㊂3 C A N o pe n 通信实验测试在本次实验中用到的程序下载模块是S T L I N K ,并且根据C A N 正常通信模式的要求(即需要两台C A N 通信设备)将U S B C A N I I P r o 与S TM 32型单片机通过C A N 1接口连接㊂当连接好端口之后,就能通过S TL I N K 将程序代码写入S TM 32型单片机中,在程序下载界面提示程序下载成功后,即可进行C A N 通信实验㊂图3为实物连接图㊂图3 C A N 通信的硬件连接由于软件并不会自己主动识别从站设备,因此在实验前必须在软件上进行从站配置㊂首先打开E c a n t o o l s 软件,选择匹配的设备型号及通信波特率(本节实验中用到的波特率是250k b p s ),点击确认键进入报文管理界面㊂其次,点击C a n O p e n M a s t e r ,将其中的I D 改为2,再点击添加从站㊂最后,点开从节点2列表,选择NM T 选项并通过下方的NM T 指令选项发送启动远程节点命令㊂至此,S M T 32型单片机已经被编入了C A N 通信网络中㊂服务数据对象(S D O )是C A N o pe n 协议中较为重要的一个环节,通过它可以读写访问对象字典㊂具体到本节实验,可以通过对C a n O p e n M a s t e r 的S D O 报文内容进行编辑来获得所需的对象内容㊂例如,如果想查看对象字典中的设备类型,则需要选择S D O 读参数选项,并且设定所读对象的索引值为0x 1000(子索引值为0),点击S e n d 键即可发送S D O 请求报文㊂从图4可以看到帧I D 为702和282的报文每隔0.5s 和1s 队列接收一次报文㊂从图中可以看出心跳报文的帧I D 是0x 282和0x 702,这是因为对于NM T 报文来说,所有的C O B I D 值(帧I D 值)都是在0x 280和0x 700的基础上与从节点号相加所得,而本次实验的从节点编号是2,所以可以看出图4 通过C a n O pe n M a s t e r 中的S D O 模块发送的请求命令此帧I D 无误㊂结 语本文对C A N o pe n 在实时操作系统F r e e R T O S 下的移植进行了探索,先将C a n F e s t i v a l 移植到S T M 32,主要是在具体的硬件平台上实现几个函数:v o i d s e t T i m e r (T I M E -V A L v a l u e );T I M E V A L g e t E l a ps e d T i m e (v o i d );定时器的设置以及定时器的中断处理函数㊂然后加入F r e e R T O S,主要包括创建定时器和C A N o pe n 数据包处理两个线程㊂参考文献[1]李秉璋,景征骏,潘瑜,等.数据可信平台关键技术研究[J ].计算机工程与设计,2011,32(3):849852.[2]徐喆,闫士珍,宋威.基于散列表的C A N o p e n 对象字典的设计[J ].计算机工程,2009,35(8):4446.[3]李志明,擅永,徐石明.S TM 32嵌入式系统开发实战指南[M ].北京:机械工业出版社,2013.[4]金超,夏继强,满庆丰.C A N o pe n 对象字典的分析与具体实现[J ].单片机与嵌入式系统应用,2012(8):1214.[5]邓遵义,宁祎.基于C A N o pe n 协议的主节点通讯实现[J ].微计算机信息,2008(23):6263.[6]刘仲杰.C A N o pe n 协议在嵌入式系统中的应用研究[D ].哈尔滨:哈尔滨理工大学,2013.[7]孙铁兵,鞠宁.C A N 总线及其高层协议[J ].微处理机,2006(1):2426.[8]徐征辉,刘凤秋,张梦博,等.基于S TM 32的C A N o pe n 协议的实现[J ].电子设计工程,2016(8):113116.[9]陶秋红,张伟龙.C A N 总线技术及发展[J ].商场现代化,2007(9):45.姚家亮(本科生),主要研究方向为现场总线技术与嵌入式系统;王树磊(博士),主要研究方向为导航㊁智导控制;王昊(硕士研究生),主要研究方向为C A N o p e n 协议的移植以及C A N o pe n 通信对象㊂(责任编辑:薛士然 收稿日期:2019-03-18)A r m 与中国联通成功部署物联网设备管理平台解决方案A r m 宣布,与中国联通旗下联通物联网有限责任公司(简称 物联网公司 )的合作取得了最新进展,A r m 已成功部署基于A r m P e l i o n 设备管理平台与M b e d O S 操作系统所打造的全新物联网平台,加速推进和完善中国物联网生态发展㊂A r m 预测,到2035年,从受限设备到全功能终端节点或网关等物联网设备数量将达到1万亿台,所有设备都将需要安全的远程管理㊂为此,A r m 推出P e l i o n 物联网平台,整合设备管理㊁连接管理㊁数据管理功能,加上专为物联网设计的M b e d O S 操作系统,支持任意设备进行灵活的云端部署,进一步消除物联网复杂性与碎片化的阻碍㊂A r m 于今年2月首次公开与中国联通物联网的深度合作㊂经过四个多月的共同协作发展,如今A r m P e l i o n 设备管理技术已经成功导入联通物联网全新平台,协助中国联通物联网实现灵活㊁高效㊁安全的解决方案,通过多样化设备以及广大的应用生态系统,为中国企业以及在中国的外企提供完整的物联网设备管理服务㊂截至目前,该平台已经吸引包括海尔数字科技㊁天正电气㊁暨联牧科㊁鲁邦通在内的众多合作伙伴加入,全力推进物联网在公共设施㊁智慧城市㊁资产管理㊁零售等重点应用领域的发展,赋能中国强大的物联网生态系统㊂在可预见的未来,随着物联网的蓬勃发展,物联网设备的种类和数量将随之激增,设备管理的复杂性与安全性也将备受挑战㊂A r mP e l i o n 设备管理平台具备设计和连接上的灵活性,支持从I P 到非I P 连接,再到受限或高带宽网络等多种设备类型,并远程为这些设备提供持续的固件更新㊂此外,它还可以通过安全设备访问㊁无线(O T A )更新㊁安全连接协议及数据加密,达到设备㊁通讯和数据的安全性㊂。
TOS的原理与实现
嵌入式操作系统FreeRTOS的原理与实现在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。
采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。
由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。
相对于C/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,其最新版本为2.6版。
1 FreeRTOS操作系统功能作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。
FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。
FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。
FreeRTOS的内核可根据用户需要设置为可剥夺型内核或不可剥夺型内核。
当FreeRTOS被设置为可剥夺型内核时,处于就绪态的高优先级任务能剥夺低优先级任务的CPU使用权,这样可保证系统满足实时性的要求;当FreeRTOS被设置为不可剥夺型内核时,处于就绪态的高优先级任务只有等当前运行任务主动释放CPU的使用权后才能获得运行,这样可提高CPU的运行效率。
2 FreeRTOS操作系统的原理与实现2. 1任务调度机制的实现任务调度机制是嵌入式实时操作系统的一个重要概念,也是其核心技术。
对于可剥夺型内核,优先级高的任务一旦就绪就能剥夺优先级较低任务的CPU使用权,提高了系统的实时响应能力。
实时多任务操作系统(RTOS)引入单片机开发领域的研究
消息 ( es e 和邮箱 ( abx 是 R O M s g) a M io) T S中任 务之 间 l
数据传递的载体和渠道。一个任务可以有多个邮箱。通
过 邮箱 , 个 任 务 之 间 可 以异 步 地 传 递 信 息 , 有 占 用 各 没 C U时间 的查询 和 等 待。 当 R O P T S包 含 片 上 总线 接 口驱 动 功能 时 , 个单 片机之 间的通信 也通过 邮箱 的方 式来 进 各
0 引 言
传统 的单 片机 系统 通 常是 基 于 单任 务 机 制 的。单 任 务机制具 有简单 直 观 , 于控 制 的优 点 。但 是 , 易 程序 只能
务, 休眠的任务则在存储器中保 留其执行上下文背景, 一
旦 切换 为 当前 任务 即可从 上次执行 的末尾继 续 执行 任 务 。
序结构 , 多任务机制的具体实现由调度程序完成 。 ” 多任务机制是现代操作系统具有的突出优点。在多
任务 系统中 , 以同时 执行 多 个并 行 任 务 , 务之 间可 以 可 任 相互跳转 。在单 片机系统 中引入 多任 务机 制 , 以有效 改 可 善程序结 构 , 满足复 杂系统 的要求 。
i) n 和优先抢占式(re pi ) Pem te 三种, v 不同的 R O T S可能支
持其中的一种或几种 , 其中优先抢 占式对实时性 的支持最
・
【 收稿日 20—0一l 期】07 4 0 【 基金项 目】 l 四J省教育厅资助科研项目 基于多任务机制的5 单片机在微型智能控制系统中的应用研究》 项 目编 l 《 1 (
【 作者简介】 户永清(99 ) 男, l 16 一 , 四J达县人, l 副教授 , 工程硕士, 主要从事应用电子技术研究。
单片机在嵌入式系统中的实时操作系统应用
单片机在嵌入式系统中的实时操作系统应用嵌入式系统是指在一定范围内执行特定功能,具有实时性、可靠性、可控性、成本低、功耗低的设备。
嵌入式系统使用的核心部件是单片机,在其中,实时操作系统(RTOS)又是至关重要的部分。
本文将讨论单片机在嵌入式系统中运用实时操作系统的应用。
第一部分:什么是实时操作系统?实时操作系统(RTOS)是一种多任务嵌入式操作系统,它旨在为实时应用程序提供一种高效稳定、预测性强的任务处理方式。
RTOS通常需对处理器进行裁剪化,以实现高效的,有限的任务数处理能力[1]。
RTOS对于诸如机器人控制、无人机或自动驾驶汽车等实时应用程序而言特别重要。
第二部分:实时操作系统的分类有两种常见的RTOS分类:硬实时系统和软实时系统。
硬实时系统必须在特定的时间限制内执行任务,如果任务在其规定的时间内无法得到完成,则系统将会无法正常工作。
软实时系统不是特定的时间限制内执行任务,但也需要保证任务在其规定的时间内完成,否则系统可能会在一定程度上失真。
第三部分:单片机在嵌入式系统中的应用在嵌入式系统中,单片机广泛运用RTOS。
这种应用通常被用于需要高度可靠且时间预测能力的系统,如工业、航空航天及医疗设备。
由于单片机本身体积较小,成本低,功耗低等特点,员处理器设计使用RTOS可以有效的节省开发成本。
单片机所运行的实时操作系统可提高系统稳定性和性能,满足模糊控制,遥控控制等受时间和精度要求高的任务。
第四部分:如何选择RTOSRTOS在系统中的选择是由工程师依据应用程序的特点而决定的。
在选择RTOS时应充分考虑设备成本和性能需求。
对于非常受时间限制任务的系统,通常需要硬实时系统,而对于不需要特定时间限制但需要高度稳定性的系统,软实时系统则更加适合[2]。
结论本文介绍了单片机在嵌入式系统中运用实时操作系统的应用。
实时操作系统使单片机能够更好地实现机器人控制、无人机、自动驾驶汽车等实时应用程序。
在选择合适的RTOS时需要充分考虑应用程序的特点,以确保实时计算和正确性。
在386单板机上实现非抢先式消息驱动机制实时操作系统(RTOS)
多 任 务 操 作 系 统 , 作 系 统 提 供 给 用 户 的服 务 主要 有 3 : 统 服 j 消 息 服 务 和 功 能 接 口 . 个 任 务 之 间 的参 数 传 递 是 通 过 邮箱 操 类 系 ,、 各 操 作 来 实 现 的 。但 是 二 者 对 于 作 者 的 工 程 应 用 来 说 都 相 对 复 杂 一 . 且 要 求 的 内 存 资 源 太 多 , 于 只有 5 2 的 3 6计 算 机 板 来 而 对 1K 8 说 根 本 不 可能 实现 。 S C 8 E 系 列计 算 机 板 提 供 B r n + . 而 B 36 X o a d C +31为开 发 环 境 , 按 照 系统 服 务 、 l 使 消息 服 务 和 功 能 调 用 的结 果 利
1应 用 背 景
受 到对 华 武 器 禁 运 及 军 工 技 术 封 锁 , 国军 用 计 算 机技 术 ( 别 是 军用 嵌 入 式单 板 计 算 机 ) 展 非 常缓 慢 。 智 明 达公 司生 产 的 我 特 发
基 于 D S62 O . 2的 S C 8 E 系 列计 算 机 板 由 于成 本 低 廉 、 列 完 整 , 军 工 机 载 产 品 中应 用 广 泛 。 B 36 X 系 在
用 C + 发 自 己的 R S成 为可 能 。 +开 TO
2 RToS简 介
通过 查 阅 资 料 , 者 在 某 刊 物 上 看 到对 一 种 5 作 1单 片 机 R O T S的介 绍 , 际上 就是 设 置 几 个 标 志 位 , 中 断 产 生 的 标 志 作 为 消 实 将
单片机嵌入式操作系统选择指南 适合你的系统
单片机嵌入式操作系统选择指南适合你的系统在嵌入式系统领域,单片机是一种重要的组成部分,而选择合适的操作系统对于单片机的功能和性能起着决定性的作用。
本文将介绍一些常见的单片机嵌入式操作系统,并针对不同应用场景提供一些建议,以帮助选择适合你的系统。
一、嵌入式操作系统的重要性嵌入式系统通常用于控制和管理各种设备,如智能家居、医疗设备、交通工具等。
选择合适的嵌入式操作系统可以提升系统的稳定性、安全性和性能。
以下是一些常见的嵌入式操作系统。
二、常见的嵌入式操作系统1. 实时操作系统(RTOS)实时操作系统(RTOS)是一种专门设计用于处理实时任务的操作系统。
它具有以下特点:高度可靠、响应时间短、实时性强。
常见的RTOS有嵌入式Linux、FreeRTOS、uC/OS等。
2. 裸机编程裸机编程是指直接在单片机上编写程序,不依赖于操作系统。
这种方式效率高,资源占用少,但对开发者的要求较高。
3. 嵌入式Linux嵌入式Linux是一种基于Linux内核的操作系统,具有强大的功能和广泛的应用领域。
它支持多线程、网络连接、文件系统等特性,适用于对功能要求较高的嵌入式系统。
4. uC/OSuC/OS是一种采用优先级调度算法的实时操作系统,具有较小的内存占用和快速的响应时间。
它适用于对实时性要求较高的系统,如工业自动化和航空航天。
5. FreeRTOSFreeRTOS是一种开源的实时操作系统,具有小巧、高效、可靠的特点。
它适用于资源受限、对实时性要求较高的系统,如传感器节点和嵌入式设备。
三、选择适合的操作系统在选择嵌入式操作系统时,需要考虑以下几个因素:1. 功能需求首先需要明确系统的功能需求,包括任务调度、网络连接、文件系统等。
根据需求选择适合的操作系统。
2. 系统的资源限制考虑系统的处理能力、内存大小等资源限制。
对于资源受限的系统,选择轻量级的操作系统或裸机编程可能更为合适。
3. 开发人员的经验和技术开发人员的经验和技术能力对选择操作系统也起着关键的作用。
嵌入式实时操作系统的现状和未来
嵌入式实时操作系统的现状和未来嵌入式实时操作系统的现状和未来嵌入式实时操作系统(RTOS)是一种特殊的操作系统,设计目的是为了在实时环境中控制实时系统。
实时系统的要求是时间约束性和可靠性,所以RTOS要求具有响应及时、能够在特定时间完成任务、具有高可靠性等特点。
目前,嵌入式实时操作系统已经被广泛使用在通信、显示、交通、医疗、军事和航空等领域。
在这篇文章中,我们将讨论嵌入式实时操作系统的现状和未来。
嵌入式实时操作系统的现状随着技术的发展和门槛的降低,嵌入式实时操作系统的市场已经变得非常庞大。
各大公司开始涉足市场,推出了各种类型的嵌入式实时操作系统,例如Real-time Linux、QNX、VxWorks、FreeRTOS等。
这些RTOS都有各自的特点和优势,但是主要的目标是解决实时系统的各种问题。
随着智能化设备的发展,嵌入式实时操作系统的应用范围也越来越广泛,如物联网、5G、人工智能等技术的发展,将嵌入式实时操作系统带入了一个全新的阶段。
现在,RTOS可以为各种硬件平台和各种控制应用提供支持,从单片机到工业计算机,从空调控制器到科学仪器,从车辆底盘控制到机床控制,它们都可以使用RTOS来实现实时控制。
嵌入式实时操作系统的未来嵌入式实时操作系统的未来是非常光明的。
随着科技的发展,RTOS正在被更多的人认可和使用。
在未来,RTOS将会更多地应用于物联网、5G等领域。
当前,物联网的不断发展为嵌入式实时操作系统提供了更广大的应用场景。
例如,物联网需要嵌入式实时操作系统来实现数据采集和处理、通信模块、控制模块等功能。
同时,嵌入式实时操作系统也能够支持人工智能技术,提供更高级的应用程序功能和性能,从而更好地满足用户需求。
另外,随着新型技术的不断涌现,嵌入式实时操作系统也在不断发展,例如AI、机器学习、自动化等技术的引入,为嵌入式实时操作系统带来了更多的机会。
这些技术可以使嵌入式实时操作系统实现更加智能化和自主化的功能,进一步支持实时系统的精细化调度。
单片机常见英文缩写(二)2024
单片机常见英文缩写(二)引言概述:本文将介绍一些与单片机相关的常见英文缩写。
这些缩写是在单片机领域中使用较为频繁的,了解并熟练运用这些缩写有助于我们更好地理解和应用单片机技术。
正文内容:一、单片机内部组成1.1 MCU:Microcontroller Unit,意为微控制器单元,是指能够完成微处理器和外围器件集成在一块芯片上的单片机。
1.2 CPU:Central Processing Unit,中央处理器,是单片机内部用来执行指令和处理数据的核心部件。
1.3 RAM:Random Access Memory,随机存储器,是单片机内部用来存储数据和程序的临时存储器件。
1.4 ROM:Read-Only Memory,只读存储器,是单片机内部用来存储程序固化后的指令和数据的非易失性存储器件。
1.5 Flash:一种可擦写和重新编程的存储器技术,常用于单片机中存储程序代码。
二、通信相关缩写2.1 UART:Universal Asynchronous Receiver and Transmitter,通用异步收发器,是常用的串行通信接口。
2.2 SPI:Serial Peripheral Interface,串行外围接口,是一种用于单片机和外围设备之间进行通信的接口协议。
2.3 I2C:Inter-Integrated Circuit,集成电路互联总线,是一种常用的串行通信协议,用于连接多个设备。
2.4 CAN:Controller Area Network,控制器局域网,是一种广泛应用于汽车、工控等领域的串行通信协议。
2.5 USB:Universal Serial Bus,通用串行总线,是一种用于连接计算机和外围设备的通信接口标准。
三、外设和模块缩写3.1 ADC:Analog-to-Digital Converter,模数转换器,用来将模拟信号转换为数字信号的电路。
3.2 PWM:Pulse Width Modulation,脉宽调制技术,用于控制模拟电路的输出功率。
分时操作系统和实时操作系统
分时操作系统和实时操作系统一、实时操作系统1.实时操作系统定义实时操作系统RTOS是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。
因而,提供及时响应和高可靠性是其主要特点。
实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。
我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
实时操作系统是保证在一定时间限制内完成特定功能的操作系统。
例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。
在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。
在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。
一些实时操作系统是为特定的应用设计的,另一些是通用的。
一些通用目的的操作系统称自己为实时操作系统。
但某种程度上,大部分通用目的的操作系统,如微软的WindowsNT或IBM的OS/390有实时系统的特征。
这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。
2.实时操作系统的特征1多任务;2有线程优先级3多种中断级别小的嵌入式操作系统经常需要实时操作系统,内核要满足实时操作系统的要求。
3.实时操作系统的相关概念1基本概念代码临界段:指处理时不可分割的代码。
一旦这部分代码开始执行则不允许中断打入;资源:任何为任务所占用的实体;共享资源:可以被一个以上任务使用的资源;任务:也称作一个线程,是一个简单的程序。
每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。
典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;任务切换:将正在运行任务的当前状态CPU寄存器中的全部内容保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。
单片机指令的实时操作系统与任务调度
单片机指令的实时操作系统与任务调度在单片机应用中,实时操作系统(RTOS)和任务调度是关键的技术。
实时操作系统是一种能够及时响应和处理任务的操作系统,而任务调度是指根据优先级和时间限制来合理地分配任务执行的过程。
本文将探讨单片机指令的实时操作系统与任务调度的相关内容。
一、实时操作系统的概念与特点实时操作系统是一种能够在特定时间范围内完成任务的操作系统。
它具有以下几个特点:1. 响应时间可预测:实时操作系统能够在规定的时间内响应各类任务,保证任务的及时执行。
2. 任务优先级管理:实时操作系统能够根据任务的优先级来进行合理的任务调度,确保高优先级任务优先执行。
3. 任务同步与通信:实时操作系统能够实现任务之间的同步与通信,使得各个任务能够协调工作。
二、单片机指令的实时操作系统设计原则在设计单片机指令的实时操作系统时,需要考虑以下几个原则:1. 系统可靠性:实时操作系统需要具备高度的可靠性,保证任务的及时响应和正确执行。
2. 系统效率:实时操作系统需要尽可能地提高任务的执行效率,减少系统开销和响应时间,提高系统的吞吐量。
3. 任务调度策略:实时操作系统需要设计合适的任务调度策略,根据任务的优先级和时间限制合理分配任务的执行顺序。
三、任务调度算法任务调度算法是实时操作系统中的核心内容,常用的任务调度算法有以下几种:1. 固定优先级调度(Fixed-Priority Scheduling):根据任务的优先级进行调度,具有简单和高效的优点。
2. 循环调度(Round-Robin Scheduling):按照任务的到达顺序和时间片轮转进行调度,公平而灵活。
3. 最早截止时间优先调度(Earliest Deadline First Scheduling):根据任务的截止时间进行调度,保证任务的及时完成。
四、实时操作系统在单片机应用中的实践实时操作系统在单片机应用中具有广泛的应用,例如嵌入式系统、物联网设备等。
在这些应用中,实时操作系统的任务调度发挥着重要的作用。
STM32F407VET6基于FreeRTOS实时操作系统和LAN8720网卡移植LwIP协议栈
STM32F407VET6基于FreeRTOS实时操作系统和LAN8720⽹卡移植LwIP协议栈本次实验是在STM32F407VET6单⽚机上实现FreeRTOS实时操作系统加LwIP协议栈驱动LAN8720⽹卡,板⼦是购买的最⼩系统开发板,⽹卡是购买的LAN8720模块。
使⽤的LwIP内核版本为 lwip-1.4.1,FreeRTOS内核版本为 FreeRTOSv10.2.1。
使⽤上⼀篇博客中移植好的FreeRTOS⼯程。
1、STM32F407VET6单⽚机引脚与LAN8720⽹卡的物理连接如下: a、ETH_RMII_REF_CLK-------> PA1--------->nINT/RETCLK b、ETH_MDIO --------------------> PA2--------->MDIO c、ETH_RMII_CRS_DV --------> PA7--------->CRS d、ETH_RMII_TX_EN ----------> PB11------->TX_EN e、ETH_RMII_TXD0 ------------> PB12------->TX0 f、ETH_RMII_TXD1 -------------> PB13------->TX1 g、ETH_RESET-------------------> PC0-------->NC h、ETH_MDC ---------------------> PC1-------->MDC i、ETH_RMII_RXD0 -------------> PC4-------->RX0 j、ETH_RMII_RXD1 -------------> PC5-------->RX1 注:在⽹卡模块上RESET引脚为NC,未连接,但在实际项⽬中把RESET引脚连接起来使⽤效果更好,LAN8720⽹卡的电源建议加⼀个电源控制,如:三极管或MOS管,在复位前先断⼀下电源,再复位,因为实际中我遇到过软复位不成功的情况。
什么是RTOS
什么是RTOSRTOS的定义实时系统(Real-time operating system,RTOS)的正确性不仅依赖系统计算的逻辑结果,还依赖于产生这个结果的时间。
实时系统能够在指定或者确定的时间内完成系统功能和外部或内部、同步或异步时间做出响应的系统。
因此实时系统应该在事先先定义的时间范围内识别和处理离散事件的能力;系统能够处理和储存控制系统所需要的大量数据。
为了便于理解,机场的售票系统就是一个典型的实时系统。
什么是RTOS1.RTOS是一个内核典型的单片机程序在程序指针复位后,首先进行堆栈、中断、中断向量、定时器、串行口等接口设置、初始化数据存储区和显示内容,然后就来到了一个监测、等待或空循环,在这个循环中,CPU可以监视外设、响应中断或用户输入。
这段主程序可以看作是一个内核,内核负责系统的初始化和开放、调度其它任务,相当于C语言中的主函数。
RTOS就是这样的一个标准内核,包括了各种片上外设初始化和数据结构的格式化,不必、也不推荐用户再对硬件设备和资源进行直接操作,所有的硬件设置和资源访问都要通过RTOS核心。
硬件这样屏蔽起来以后,用户不必清楚硬件系统的每一个细节就可以进行开发,这样就减少了开发前的学习量。
一般来说,对硬件的直接访问越少,系统的可靠性越高。
RTOS是一个经过测试的内核,与一般用户自行编写的主程序内核相比,更规范,效率和可靠性更高。
对于一个精通单片机硬件系统和编程的“老手”而言,通过RTOS对系统进行管理可能不如直接访问更直观、自由度大,但是通过RTOS管理能够排除人为疏忽因素,提高软件可靠性。
另外,高效率地进行多任务支持是RTOS设计从始至终的一条主线,采用RTOS管理系统可以统一协调各个任务,优化CPU时间和系统资源的分配,使之不空闲、不拥塞。
针对某种具体应用,精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的效率;但是对于大多数一般用户和新手而言,采用RTOS是可以提高资源利用率的,尤其是在片上资源不断增长、产品可靠性和进入市场时间更重要的今天。
单片机 os 类型
单片机 os 类型
单片机可以使用多种不同类型的操作系统(OS),具体选择取
决于应用需求和资源限制。
以下是一些常见的单片机操作系统类型:
1. 实时操作系统(RTOS),RTOS是专门设计用于处理实时任
务的操作系统。
它们提供了精确的任务调度和响应能力,适用于需
要严格时间限制的应用,例如汽车电子系统、医疗设备和工业自动化。
2. 嵌入式操作系统(Embedded OS),这类操作系统专门为嵌
入式系统设计,通常包括针对特定硬件的驱动程序和优化的内核。
常见的嵌入式操作系统包括uC/OS-II、FreeRTOS和ThreadX等。
3. 轻量级操作系统,针对资源受限的单片机,一些轻量级操作
系统如Contiki、TinyOS和Mbed OS等提供了简化的内核和功能,
以适应有限的存储器和处理能力。
4. 无操作系统(Bare-Metal),在一些资源较为有限的应用场
景下,开发人员选择在单片机上直接编写应用程序而不使用操作系统。
这种方法可以减少系统开销,但也需要开发人员自行处理任务
调度和硬件驱动等问题。
总的来说,选择哪种类型的单片机操作系统取决于应用的实时性要求、资源限制以及开发人员的经验和偏好。
每种类型都有其优势和局限性,需要根据具体情况进行权衡和选择。
单片机中的实时操作系统RTOS概述
单片机中的实时操作系统RTOS概述在单片机应用中,实时性是至关重要的要素之一。
实时操作系统(Real-Time Operating System,RTOS)是一种专门设计用于满足实时性需求的操作系统。
本文将对RTOS进行概述,并介绍其在单片机应用中的重要性和优势。
一、RTOS的定义和特点实时操作系统(RTOS)是一种操作系统,其设计和实现旨在保证任务以可预测和保证的时间内得到正确执行。
实时任务是对时间敏感的任务,其输出结果必须在特定的时间限制内得到响应。
真正的实时操作系统能够保证任务满足其时间约束,并且具有可预测性、可信性、可靠性、高效性等特点。
二、RTOS的应用RTOS在单片机应用中具有广泛的应用。
无论是工业控制、汽车电子、医疗设备还是消费电子产品,都可以利用RTOS来实现任务的调度和管理。
RTOS的应用可以提高系统的实时性、可预测性和稳定性,满足多任务处理的需求。
三、RTOS的重要性1. 实时性要求:在很多单片机应用中,任务需要在特定的时间内完成,例如工业自动化控制中的传感器数据采集和实时控制。
RTOS具备优秀的实时性能,能够满足任务的时限要求,保证系统的可靠性和稳定性。
2. 多任务处理:单片机应用往往需要同时运行多个任务。
通过RTOS可以方便地进行任务调度和管理,提高系统运行效率和资源利用率。
RTOS的多任务处理机制能够按照优先级或其他调度算法合理分配任务的执行顺序,实现任务之间的协调和同步。
3. 硬件抽象:RTOS可以提供丰富的硬件抽象层,与底层硬件进行适配,简化单片机应用的开发过程。
通过RTOS的硬件抽象接口,开发者可以屏蔽底层硬件的差异,快速实现面向任务的高层应用程序。
四、RTOS的优势1. 可靠性:RTOS具备良好的容错和错误处理机制,能够保证任务的可靠性和系统的稳定性。
当出现异常情况时,RTOS能够及时检测和响应,进行错误恢复和处理。
2. 简化开发:RTOS提供全面和易用的任务管理、通信和同步机制,使开发者能够更高效地开发单片机应用。
单片机的实时操作系统
单片机的实时操作系统单片机作为嵌入式系统的核心部件之一,广泛应用于各种电子设备中。
为了更好地满足实时性要求,单片机常常需要搭载实时操作系统(RTOS)。
本文将就单片机实时操作系统的原理、应用以及实现方式进行探讨。
一、实时操作系统的原理实时操作系统是一种能够满足任务严格的时序要求的操作系统。
它能够保证任务的及时响应,并在规定的时间内完成任务。
单片机实时操作系统的核心原理主要包括以下几个方面:1. 任务管理:实时操作系统能够对任务进行管理,按照优先级进行调度。
高优先级的任务将优先执行,保证了对实时任务的及时响应。
2. 中断服务机制:实时操作系统通过中断来实现对任务的及时响应。
当有高优先级任务到达时,操作系统会中断当前任务的执行,处理高优先级任务,然后再返回原任务的执行。
这样可以保证实时任务的执行不受阻塞。
3. 时钟管理:实时操作系统需要准确地控制任务的执行时间,因此需要精确的时钟管理。
单片机实时操作系统通常会使用定时器来提供时钟源,通过定时器中断控制任务的执行时间。
二、实时操作系统的应用单片机实时操作系统广泛应用于需要满足实时性要求的系统中,如航空航天、医疗器械、工业自动化等领域。
以下是实时操作系统在不同领域的应用实例:1. 航空航天领域:实时操作系统被广泛应用于飞行控制系统中,保证飞行器的稳定性和安全性。
它能够及时响应飞行器的各种传感器数据、控制指令,实时调整飞行参数。
2. 医疗器械领域:实时操作系统在医疗器械中的应用主要涉及到对患者生命体征的监测与控制。
例如,心电监护仪、呼吸机等设备需要通过实时操作系统及时获取患者的生理信号,并做出相应的处理和控制。
3. 工业自动化领域:实时操作系统在工业自动化中起到了至关重要的作用。
它能够实时响应各种传感器信号,控制工业设备的运行和生产流程,提高生产效率和质量。
三、实现单片机的实时操作系统目前,市场上有很多针对单片机的实时操作系统可以选择,例如RT-Thread、FreeRTOS等。
Small RTOS(51) 1.12.1v 说明文件
1.10.2版 2002年9月9日
更正OSWait()的Bug,在极端情况下,这个Bug可能造成可能锁死任务。
修改OSQIntPost()的Keil C51特殊代码,它会造成阅读障碍。
0.52版 2002年5月9日
用户手册增加for keil c51的一些说明。
更正函c51 移植的堆栈在某种情况下初始值错误。
0.51版 2002年3月10日
1.10.1版 2002年9月4日
更正OSTimeTick的Bug,它在keil c51中不会有问题,但移植的其它系统可能出错。
1.10版 2002年9月1日
增加Small RTOS 对消息队列(简化的)和信号量的支持;改变了开关中断的方式;增加可移植的变量定义;修正一些Bug。
Small_RTOS1.12.1是周立功公司陈明计先生编写的可以在51单片机上运行实时操作系统。
Small RTOS(51) 1.12.1v 说明文件
编写动机:
就像在嵌入系统中使用C语言替代汇编一样,在嵌入系统中使用RTOS是大势所趋。原因主要是现在在大多数情况下编程效率比执行效率重要(单片机便宜嘛)。但纵观51的RTOS,keil c51 所带的RTX Full 太大(6k多),且需要外部ram,又无源代码,很多时候不实用。RTX Tiny虽然小(900多字节),但是任务没有优先级和中断管理,也无源代码,也不太实用。而ucosII虽有源代码,但是它太大,又需要外部ram,所有函数又必须是重入函数,用在51这类小片内RAM的单片机上有点勉强。于是,我借鉴ucosII和RTX Tiny编写了Small RTOS 51,虽然它为51系列编写,但是它还是比较容易移植到其它CPU上。
嵌入式实时操作系统1
嵌入式实时操作系统嵌入式实时操作系统(Embedded Real-time Operation System,RTOS)。
1 嵌入式实时操作系统概念当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。
2 嵌入式实时操作系统特点1)多任务;2)有线程优先级3)多种中断级别3 嵌入式实时操作系统应用在工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。
采用嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。
4 实时操作系统的必要性:首先,嵌入式实时操作系统提高了系统的可靠性。
其次,提高了开发效率,缩短了开发周期。
实时操作系统的优缺点:在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。
通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。
通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。
但是,使用嵌入式实时操作系统还需要额外的ROM/RAM 开销,2~5% 的CPU 额外负荷,以及内核的费用。
5 实时系统与非实时系统的根本区别实时系统与非实时系统的根本区别在于:实时系统具有与外部环境及时交互作用的能力。
也就是说实时系统从外部获取信息以及系统得出结论要在很短的限制时间内完成。
它具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点;实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等。
实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。
可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。
Small RTOS51系统及实时系统的相关概念
Small RTOS51系统笔记及实时系统的相关概念Veiko2011-4 Small RTO51简介Small RTOS51的特点1、公开的源代码:只要遵循许可协议,任何人可以免费获得源代码。
2、可移植性:作者尽量把与CPU相关部分压缩到最小,与CPU无关的代码部分用ASIC C编写。
3、可固化:Small RTOS51为嵌入式系统设计,如有固化手段,可以嵌入到产品中成为产品的一部分。
4、占先式:Small RTOS51可以管理16个用户任务,每个任务优先级不同。
Small RTOS51总是运行就绪条件下优先级最高的任务。
5、中断管理:中断可以使正在执行的任务挂起。
如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。
中断嵌套层数可达255层。
如果需要,可以禁止中断嵌套管理。
6、RAM要求小:Small RTOS51为小RAM系统设计,因而RAM需求小,相应的系统服务也少。
Small RTOS51的动行条件首先,必须有一个基于51系列单片机的C语言编译器。
如果需要直接使用这些代码,则就需要Keil C51编译器了。
当不使用消息队列时,需要Keil C51V6.14以上版本;当使用消息队列时,需要Keil C51V6.23以上版本。
特别注意:当程序复杂时不能用9级优化。
其次,必须有一个完全兼容51的单片机;当然,也可以使用软件仿真运行。
Small RTOS51的存储器需求Small RTOS51可以在没有任何外部数据存储器的单片8051系统上运行,但应用程序仍然可以访问外部存储器。
Small RTOS51可以使用C51支持的全部存储器模块,选择记忆模型仅影响应用目标的位置。
一般来说,Small RTOS51应用程序工作于小模式下。
Small RTOS51没有按照bank switching程序来设计,不能使用code banking程序。
Small RTO51的任务堆栈的计算为了节省RAM,Small RTOS51把所有自由内部RAM分配给当前任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机实时操作系统作者:徐少伟日期:2013年12月07日摘要本文着重介绍了运行在51单片机上基于片轮询式实时操作系统RTOS的构建,讨论了实时操作系统的运行原理和设计思路。
关键词:51单片机、片轮询、实时操作系统RTOS1前言随着计算机技术的发展,计算机已经被广泛地应用到各个领域中。
而在控制领域,人们更多地关心计算机的低成本、小体积、运行的可靠性和控制的灵活性。
特备是智能仪表、智能传感器、智能家电、智能办公设备、汽车及军事电子设备等应用系统要求计算机嵌入这些设备中。
而作为嵌入式计算机的单片机因其体积小、可靠性高、控制功能强以及非凡的嵌入式应用形态,使得单片机应用技术已经成为电子应用系统设计中最为常用的技术手段。
在工业控制方面,因工业环境对计算机的可靠性和实时性的要求特别高,而诸如51系列的单片机的片上资源比较有限,因此开发并构建一种应用于单片机上的实时多任务操作系统已成为一种迫切的需求。
2实时操作系统设计概述2.1实时多任务操作系统(RTOS)简介过去一个单片机应用程序所控制的任务和外设不多,采用一个主程序和几个子程序模块的调用,即可满足要求。
但随着应用的复杂化,对单片机软件提出了更高的要求。
一个控制器系统可能需要同时控制或监控很多外设,要求有实时响应;有很多处理的任务,各种任务之间有信息的传递。
如果仍采用原来的程序设计方法,将会存在两个问题。
一是中断可能得不到及时响应,处理时间过长。
二是系统任务多,要考虑的各种可能也多,各种资源如调度不当就会发生死锁,降低软件的可靠性,程序编写的任务量成指数增加。
实时操作系统是一段系统启动后首先执行的背景程序,用户的应用程序是运行在RTOS之上的各个任务。
RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度、异常处理等工作。
实时多任务操作系统,以分时方式运行的多个任务,看上去好像是多个任务“同时”运行。
标准的RTOS应具有任务调度、中断处理、事件管理、定时器管理、循环队列管理、资源管理、存储管理、自动掉电管理等功能,基于优先服务方式的RTOS才是真正的实时操作系统。
本文主要讨论了基于时间分片轮询方式,即片轮询方式的多任务操作系统,重点介绍多任务实时操作系统的原理和构建方法,为深入研究真正意义上的实时多任务操作系统RTOS奠定一定的理论和思想基础。
2.2实时多任务操作系统(RTOS)任务切换在实时操作系统RTOS中,任务的切换方式有三种:协同方式、时间片轮询方式以及抢占优先级方式。
2.2.1协同方式所谓“协同方式”,是指一个任务在持续运行而不释放资源,其他任务是没有机会获得运行的,除非此任务主动释放所占用的资源。
一个运行着的任务主动释放所占资源,是依靠TASK_SWTICH:函数(任务调度器)实现的。
在任务程序必要的地方,调用函数TASK_SWITCH:就可以将CPU切换到其他的任务中。
下面利用汇编指令CALL和JMP来进一步说明TASK_SWITCH:的工作原理。
1)指令CALL和RETCALL addr11;SP←(SP)+1,(SP)←(PC.L);SP←(SP)+1,(SP)←(PC.H);PC←addr11RET;(PC.H)←((SP)),SP←(SP)-1;(PC.L)←((SP)),SP←(SP)-1从以上命令中可以看出,当执行指令CALL后,指令计数器PC的当前值被压入了堆栈(堆栈指针SP)。
程序末尾调用指令RET 后,PC的值从堆栈中弹出,从而结束子程序,继续执行原来的程序。
如果在指令RET前,将存储在堆栈中的指令计数器PC的值更改为另一个程序的地址,执行指令RET后,程序就会跳转到该程序上去执行,而不限于CALL 里压入的地址。
这个过程可以视为是任务调度器TASK_SWICH:的基本工作原理。
2)指令JMPJMP addr11;(PC)←(PC)+2,PC←addr11从此命令可以看出,当执行指令JMP之后,指令计数器PC的值更改为新程序的地址,但当前PC的值(即原来程序的地址)没有被保存,故执行完新地址的程序后,指令计数器PC不会跳转回原来的程序地址,也就是说程序将继续往下执行而不会再返回。
2.2.2时间片轮询方式所谓时间片轮询方式,是指CPU让每个任务都处于平等的地位,然后给每个任务相同的时间片(如10ms)。
当一个任务的运行时间用完了,操作系统就马上把CPU切换给下一个需要的任务。
这种方法的实时性不高,但它确保了每个任务都有相同的执行时间。
该方式的时间片产生是利用定时器实现的,一般定时时间为10ms。
时间太小,系统在各个任务之间来回切换,浪费了CPU的资源;时间太长,任务切换不及时,从而致使任务的实时性降低。
时间片轮询方式在启动任务后,就立即启动CPU的定时器。
当定时时间到了之后,系统会自动调用任务调度器TASK_SWITCH:将CPU切换到下一个需要运行的任务。
2.2.3抢占优先级方式所谓抢占优先级方式,是指操作系统在任何时候都要保证拥有最高优先级的那个任务处于运行状态。
如系统正在运行着优先级=2的任务,但因一信号的到达,优先级=1的那个任务解除了阻塞,处于就绪状态,这时操作系统就必须马上停止优先级=2的任务,切换到优先级=1的任务,切换的时间越短越好。
2.3实时多任务操作系统(RTOS)任务调度器与任务切换有关的事情都要调用到任务调度器。
当操作系统需要将CPU从正在运行的任务1切换到任务2时,就要调用任务调度器TASK_SWITCH:才能实现任务之间的这种切换。
任务调度器主要完成以下功能:1、所有寄存器全部入栈;2、保护当前任务的动态断点;3、切换到下一任务;4、将下一任务被保护的寄存器弹出栈。
2.3.1当前任务的所有寄存器全部入栈将当前任务的所有寄存器全部入栈,是为了保护当前任务程序的出口,以便之后CPU能够正确地返回到该任务程序的断点处,继续执行该任务未被执行的部分。
寄存器入栈用到的是指令PUSH。
具体的入栈操作如下:TASK_SWITCH:PUSH ACC/*断点入栈*/PUSH BPUSH PSWPUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7以上程序完成了11个寄存器的入栈操作。
在51单片机中,它们都是经常被使用到的寄存器资源,具体可以分为四类。
1)ACC:累加器累加器ACC用于向算术/逻辑运算单元ALU提供操作数和存放运算的结果,是51单片机中最常被使用的寄存器。
2)B:寄存器在乘、除运算时用来存放一个操作数,也用来存放运算后的一部分结果。
在不进行乘、除运算时,可以作为普通的寄存器使用。
3)PSW:程序状态字寄存器程序状态寄存器PSW用来保存算术/逻辑运算单元ALU运算结果的特征(如:结果是否为0,是否有溢出等)和处理器状态。
4)R0~R7:工作寄存器工作寄存器R0~R7共占用32个片内RAM单元。
分成4组,每组8个单元。
当前工作寄存器组由PSW的RS1和RS0位指定。
2.3.2保护当前任务的动态断点当当前任务的出口(所有工作寄存器)被保护入栈之后,接下来要做的是保存入栈的地址,即栈底。
保存所有寄存器(即当前任务出口)的内存(RAM空间)是单独开出来给每一个任务的。
也就是说每一个任务都有一块单独的内存以保护任务断点的信息,而这块内存的起始地址就是栈底,内存的最大值为栈顶,内存空间即栈底至栈顶的空间大小就是栈深,这块内存被称为任务的私栈。
保护当前任务的动态断点,其实是将任务对应的这块内存的栈底地址保存到内存RAM里,以便通过它找到任务断点(所有寄存器)被保存的内存空间(私栈)的位置。
保护当前任务动态断点的操作,具体如下:MOV A,#50H;设置存储栈底的起始地址ADD A,TASK_IDMOV R0,AMOV A,SP;经过PUSH断点入栈后,SP增加了11ADD A,#-11;调整堆栈指针:PUSH命令使SP增加,故需相应调整SP,即减栈MOV@R0,A;以(50H+任务号)为地址将SP保存在此段程序中,TASK_ID是当前任务的任务号,每一个任务都被赋予一个相应的任务号(如任务1的任务号为00),而这部分操作则是在主程序里完成的。
运行完这段程序之后,保护任务断点的内存空间(私栈)的栈底就被保存在(50H+任务号)的地址里了(50H为存储私栈栈底的起始地址,可被自定义)。
2.3.3切换到下一任务切换到下一任务实质是将任务号(TASK_ID)赋给对应要切换的任务。
在任务调度器中,找到要切换任务对应的任务号,是为了通过任务号找到要切换任务之前被保护的断点,再将断点取出并恢复。
基于时间片轮询方式的实时系统是通过将任务号(TASK_ID)依次加“1”来实现对应任务的任务号赋值和任务切换的。
当然也可以依据其他原则来赋值任务号,如抢占优先级式的实时系统就是通过任务的优先级来赋值相应的任务号和任务切换的。
具体的操作如下:INC TASK_ID;任务号+1MOV A,TASK_IDCJNE A,#04,ORI;通过任务号(<=3)判断任务是否全部执行完毕CLR AMOV TASK_ID,AORI:MOV A,#50HADD A,TASK_ID;指向50H+(任务号+1)MOV R0,AMOV A,@R0ADD A,#11;因为下面有POP出栈命令,需调整SP,即增栈MOV SP,A;将下一任务的私栈取出2.3.4将下一任务的断点出栈通过“切换到下一任务”的操作,系统找到下一任务断点被保存的内存空间的栈底,并经过堆栈指针的SP的调整,找到该内存空间的栈顶,从栈顶开始将所有寄存器依次弹出栈。
寄存器出栈用到的是指令POP,具体的操作如下:POP7/*断点出栈*/POP6POP5POP4POP3POP2POP1POP0POP PSWPOP BPOP ACC执行完断点的出栈之后,堆栈指针SP正好指到内存空间的底部即栈底,而栈底的2字节保存的就是下一任务的程序断点地址,执行指令RET(或RETI)后,断点地址就被弹出栈,CPU就被切换到下一任务去执行。
2.4任务装载任务装载的实质是将各个任务的函数地址的高、低字节分别装入分配给任务的私栈(内存空间)当中,并将指向该私栈的地址信息保存在(50H+任务号)的地址里(50H为存储私栈栈底的起始地址,可被自定义)。
任务装载函数为TASK_LOAD:。
2.4.1保存私栈的地址信息任务装载函数TASK_LOAD:首先将任务的私栈(内存空间)的地址信息保存在(存储栈底的起始地址+任务号)的地址里,如(50H+任务号00)。
具体操作如下:TASK_LOAD:MOV A,TASK_IDMOV B,#18;栈深为18MUL AB;槽号ADD A,#12;私栈栈底MOV R4,A;R4中暂时存放着栈深地址MOV A,#50HADD A,TASK_IDMOV R0,AMOV@R0,0x04;以(50H+任务号)为地址存放栈深地址单元2.4.2装入任务函数的高、低字节将任务函数的高、低字节装入私栈(内存空间)里才是任务装载函数TASK_LOAD:最主要做的事情。