当前位置:首页 > > 充电吧
[导读]嵌入式OS入门笔记-以RTX为案例:一.简介         最近在做OS相关的项目,一方面涉及到大量(通用)操作系统的概念和理解,另一方面要深入到一个小实时操作系统的源代码中,并在此操作系统上开发应

嵌入式OS入门笔记-以RTX为案例:一.简介

 

        最近在做OS相关的项目,一方面涉及到大量(通用)操作系统的概念和理解,另一方面要深入到一个小实时操作系统的源代码中,并在此操作系统上开发应用。虽然说内容上并不难,但是操作系统本身是一个非常基础,影响深远的计算机科技的小分支,所以把操作系统的知识重新整理一遍,同时结合实时操作系统的实际情况,形成这样一套笔记,一是对项目的一个回顾,另外也方便将来回来查阅吧。

 

1.操作系统的角色

        OS其实是一个很宏大的概念,不好捉摸。根据维基百科的定义,OS是一组管理硬件和为应用软件提供服务的软件。这个说法很精练但依然抽象。我觉得大部分OS扮演着两个最主要的角色:硬件的抽象表达者和资源的管理者。

 

硬件的抽象

        如果要读取硬盘中的某一个数据,首先得确定盘片,然后确定磁道和扇区,最后通过磁头读取进内存。这实际上是一系列复杂的机械和电子的操作,虽然说复杂,但是影响最终运作结果的因素(读写地址)不多,大部分操作是对于不同的读写都是相同的。如果每一次执行读写硬盘操作,应用程序都要明确地对硬件作出准确的指示,那么应用程序会臃肿无比,程序员也会为编写这样的程序感到非常无趣。

 

        正如David Wheeler的那句名言:“Any problem in computer science can besolved with another layer of indirection.”OS的首要任务正是把这些繁杂的底层硬件的执行细节隐藏,提供给程序和用户一个相对抽象的概念。例如把一系列的机械和电子操作转化为简单的一句代码-读取硬盘(地址)。

 

        一般普通计算机使用者之所以不熟悉底层的这些细节,也正是因为有OS,这个硬件的抽象的存在。他们对计算机运作的认识,只是一个建立在OS基础之上的心理模型(mental model)。

  

Hard  Disk Driver - 《Operating System Concepts》

 

资源的管理

        最早期的计算机是没有操作系统的,一般会有一个操作人员(operator)负责给程序排序,安排下一个时间段运行何程序。其实这就是操作系统的雏形,而这时这个操作人员的主要任务就是分配计算机资源。操作系统的核心其实就是资源的分配和管理,特别是在多程序(multiprogramming)的环境下。如何优化资源的分配,减少有害的竞争,提高某些资源的共享效率,都是操作系统关心的核心话题。这里说的资源主要指的是硬件资源,例如内存,CPU,网络带宽和I/O等等。

  

        其实纵观很多OS的教科书的组织,一般主要的讨论话题不外乎进程,内存和外设。这些话题都离不开OS的这两个角色,例如进程管理,很大一部分就是关于资源的分配,而进程本身又是OS对程序的一个抽象。所以我觉得具体学习研究OS时,只要能够抓住1.它抽象的对象和抽象的程度;2.如何合理的优化资源的安排,就能够达到学习研究的目的。

 

2.实时操作系统

        其实嵌入式操作系统不一定就是实时操作系统(RTOS),反之亦然。但很多场合下嵌入式开发应用都对实时性的要求很高,所以这两个概念经常混用。RTOS最突出的就是它要在deadline之前完成任务,其中又分两种,一种是硬deadline,如果不能在规定deadline前完成,那么后果会很严重甚至产生一些致命的错误;而软deadline则稍微宽松一点,即使不能够在deadline前完成,deadline后继续完成任务直至完成也是可以接受的。

 

        一个很通常的误区就是,RTOS和通用OS的最大差别是RTOS要快。虽然速度快很重要,但这不是RTOS的核心特征。RTOS最为重要的是其行为的决定性(determinism)和可预测性(Predictability),同时RTOS对系统的响应速度要求也很高。当然,RTOS的容错,纠错能力也要足够强。

 

        这些特性其实都是一些极端工业环境下对OS的要求,例如在核反应和化学反应中,非常精确的控制,特别是在时间上的控制,往往决定了整个工业过程的成败,而且失败的代价往往非常高。所以一个好的RTOS,虽然没有一些通用的操作系统全面,但其行为的差异(variance)会比通用OS小得多。


3.RTX

我会以Keil开发的RTX实时操作系统作为主要的参考操作系统。这里面有几个原因:

RTX五脏俱全,是个完整且优秀的实时操作系统 RTX对ARM设备Cortex-M系列的芯片有比较好的支持(自家产品) 更重要的是,RTX不仅免费,而且其代码是开放的,是可以自由查阅的!


这些基本情况就写到这里,下次我会更具体地介绍一下RTX和其他涉及到的工具。


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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭