当前位置:首页 > 单片机 > 单片机
[导读] 一、闲扯之前看完了sdcc man和datasheet之后,用sdcc写了几个小程序。大部分时间都在干一些调式代码的事,就趁这段时间把UCOS复习一下吧。由于这是UCOS的第一篇,就来扯点闲话吧。对于UCOSii,我其实没

一、闲扯

之前看完了sdcc man和datasheet之后,用sdcc写了几个小程序。大部分时间都在干一些调式代码的事,就趁这段时间把UCOS复习一下吧。由于这是UCOS的第一篇,就来扯点闲话吧。

对于UCOSii,我其实没有在实际的项目中用到过。只是记得在以前看过一本UCOS作者自己写的书,书名已经忘记了。这种语言或者系统架构的设计者写的书往往看起来很有意思,因为作者不仅会给你解释代码,还会告诉你他为什么要这么做。这比生硬得给出流程图和注释的参考类书要更有趣味,不得不说国内的一些书看起来就像是使用说明,在网络日益发达的今天这些书的作用越来越小。比如我想知道一个基类的具体功能,搜索要比翻书快上许多。

UCOS的本名是μ/cOS,用希腊字母μ表示它的轻量级。其实它并不是一个免费的RTOS,只有当被用作教育用途时(往往被用来供大家学习操作系统),才可以有免费的授权。但是在目前的环境下,大家用μ/cOS来进行开发应该还是不要紧的。据我所知,我还没有听说过有使用未授权μ/cOS被起诉的。又由于μ/cOS的相关文档以及结构性代码库还算比较完善,因此也算是个在嵌入式设备上较为流行的操作系统。

二、如何取得UCOS

UCOS的官网上有很多移植好的工程,还有一些相应的APP和Drive,这可以给大家节省不少时间。

UCOS下载中心:

http://micrium.com/downloadcenter/

三、系统初始化3.1 UCOS的任务

作为一个可移植的嵌入式实时操作系统,μ/cOS的任务应该仅仅被限定为用户进程管理。它应该将硬件层尽量抽象掉,所以在main入口以前的芯片初始化(初始化系统时钟、初始化Flash读取,初始化芯片工作模式等等)、板卡初始化以及C环境的初始化都交于用户自己来进行。这个部分,通俗的做法是载入芯片厂商提供一些已经标准化的库函数,许多编译器也会在编译工程时自动链接一些startup_函数以引导C环境的运行。

3.3 时钟节拍

要进行任务调度,内核的优先级必然要在各用户进程之上。它定期的打断各个任务运行,使自己突然占用CPU,并进行各种针对进程的操作。

这很自然让我们联想到中断,的确在Ucos中,常常用时钟中断来完成进程的管理工作。如果你不想在时钟中断里做太多的事,那么可以在中断产生时启动一个被注册为最高优先级的进程,由该进程来做调度工作。

3.4 UCOS的初始化流程

对UCOS内核来说,所有的进程都是一个对象,所以要有描述进程属性的数据结构,以供内核控制进程。内核还要创建另外一些数据结构来作为标记各种自身需要记录和调用的属性,还有一些数据结构被创建用以算法辅助。

UCOS运行的第一步,就是初始化这些数据结构。

给这些数据结构分配空间以及设初值之后,用户可以注册几个最开始的用户进程。紧接着内核对刚注册的这几个进程进行初始化,系统就进入了一个多任务运行的常态。

UCOSii初始化的伪代码:

int main (void)

{ /* 关闭系统中断,防止在初始化时去跑中断服务程序而造成难以预料的问题。OS_ENTER_CRITICAL()宏*/


/* 初始化内核的数据结构 OSInit()函数 */


/* 注册用户进程 OSTaskCreate()函数*/


/* 系统启动 OSStart()函数 */}12345678910


3.3 OSInit初始化的数据结构

OSInit会初始化内核用到的数据结构,了解这些数据结构对理解UCOS是必须的,这些数据结构这里只做个简要的描述,在之后的文章里再详细解释。

普通全局变量

用于描述一些内核的属性。一些计数器(比如计算一共进行了几次中断),状态器(比如是否已经进入多任务环境)。

OSPrioCur
OSPrioHighRdy
OSTCBCur
OSTCBHighRdy
OSTime
OSIntNesting
OSLockNesting
OSCtxSwCtr
OSTaskCtr
OSRunning
OSCPUUsage
OSIdleCtrMax
OSIdleCtrRun
OSIdleCtr
OSStatRdy
OSIntExitY

数组

就绪队列,用于调度算法。

链表

这个描述进程属性的数据结构一般叫做PCB(Process control block),UCOS里叫作TCB(Task control block)。所有的操作系统都会定义这样一个数据结构。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭