操作系统(OS)(共12篇)
操作系统(OS) 篇1
0 引言
计算机OS的安全性和保护已成为计算机技术的重要领域, 目前的OS都必须对计算机内的信息提供不同程度的保护。本文主要是从OS文件系统的保护入手, 浅谈一下文件系统的安全问题。
1 文件系统基础
1.1 文件系统的基本知识
在文件系统中, 它把相应的程序和数据看作文件, 并把它们存放在存储介质上, 从而实现对程序和数据的透明存取。为此, 文件系统必须完成下列工作:
(1) 为了合理的存放文件, 必需对文件空间进行统一管理;
(2) 为了实现按名存取, 需要有一个用户可见的文件逻辑结构;
(3) 为了便于存放和加工信息, 文件在存储设备上应按一定的顺序存放;
(4) 完成对存放在存储设备上的文件信息的查找;
(5) 完成文件的共享和提供保护功能。
1.2 OS的保护方法
在计算机系统中, 共享与保护是共存的, 当OS承担起控制相关资源 (信息) 的共享的责任时, 它就必须保护这些资源 (信息) 。由于计算机系统中可共享的资源涉及到各种不同的软、硬件 (如:存储设备、I/O设备、数据、程序等) , 则计算机系统也应为这些资源提供相应的保护——尤其是数据的保护。如何有效防止计算机内的数据被无意破坏或被恶意窃取和修改, 是设计安全的OS必须考虑的问题。
OS的安全性可以通过不同类型的隔离来实现, 但不同类型的隔离所提供的安全性级别不同。一般OS可以提供这样几种安全级别的保护:无保护;隔离;共享;目标的有限使用。OS会对不同的信息、用户提供相应级别的保护, 而且有的高安全性又以牺牲资源利用率为代价。OS对文件的保护是指文件本身需要防止文件的用户有意或无意的修改和破坏文件内容, 它由文件的存取控制机制来实现。
2 文件系统的安全与保护
2.1 文件存取控制
文件的存取控制是和文件的共享、保护紧密相关的, 而这些问题最终又转化为用户对文件的使用权限, 即读、写、执行的许可权问题。具体来说, 文件的存取控制部分要做到如下几点:
(1) 对拥有相应权限的用户, 应让其对文件进行相应的操作;
(2) 对没有拥有相应权限的用户, 应禁止其对文件进行相应的操作;
(3) 应防止某用户冒充某一合法用户对文件进行相应权限的操作;
(4) 应防止拥有相应权限用户的误操作。
文件存取控制的这些功能由一组称为存取控制验证模块的程序提供, 它们分步验证用户的存取操作, 而其用来验证文件存取操作的方法有:
(1) 访问控制矩阵:以二维表来进行访问控制。该矩阵的一维是所有用户, 另一维是所有文件, 对应的元素则是用户对文件的访问控制权。当用户向文件系统提出访问要求时, 由存取控制验证模块根据该矩阵的内容对本次操作进行比较, 若不匹配则系统拒绝进行相应操作。
(2) 访问控制表:以文件为单位, 所有用户组对某文件操作权限的集合形成该文件的访问控制表。每个文件均有一个访问控制表, 该表置于文件说明内, 可随文件一起被调入内存中。
(3) 口令:有系统口令与文件口令之分。系统口令验证用户的合法性, 文件口令验证该用户是否有权使用该文件, 只有两个验证均通过才能实现对文件的正确操作。
(4) 密码:将文件写入存储设备时对文件进行编码加密, 读出文件时对其进行译码解密。该方法保密性强, 但由于编码解码须占用大量的处理时间, 故该方法以牺牲系统开销为代价。
2.2 文件的保护机制
(1) 基础保护
所有的多用户OS都必须对文件提供某种最低的保护, 以防止一用户有意或无意的修改或破坏另一用户的文件。随着用户数目的增加, 保护方案的复杂性也在增加。
在最初的OS中, 一般文件都默认为公开的, 即任一用户可以读、修改或删除属于其他任何用户的文件, 对文件的基本保护是信赖加上互不干预。对于少数敏感的系统文件, 系统管理员可用通行字来保护他们。但是, 首先由于用户数目的增加, 并不是所有用户间都存在信赖;其次即使某一用户知道存在一组值得信赖的用户, 也没有办法只允许他们访问自己的文件;再次由于用户对其他的、不受保护的文件的好奇心及系统的复杂性, 使得文件仅靠信赖加上互不干预的保护是无法保证其安全性的。
在其后的OS中, 引入了“组”的概念, 有共同性的用户组成“组”。系统内的全部用户分为:用户、组、全部。一个组的成员具有某种共同的特性, 因此他们有与组内其他成员共享的文件, 换言之, 选择组的基础是“共享”。任何用户都不属于一个以上的组。当新建一文件时, 该文件的用户为组和其他用户 (组外用户) 分别定义对该文件的访问权。但是, 首先由于一用户隶属于一组的限制, 使得用户只能共享该组内的文件而不能共享组外的文件, 限制了用户对某些文件的操作权限;其次若用户希望能以自己的每个文件为基础区分文件的共享者, 如与A用户共享此文件而与B用户共享彼文件是不可行的。
(2) 单独的允许权
即允许用户将文件的控制权与单个文件联系起来。
早期的OS中, 使用到简单的通行字保护方式。用户可在文件上给予一通行字, 当然, 可要求其他用户对该文件执行某操作 (如读) 时提供正确的通行字, 也可要求其他用户对该文件进行修改操作时提供正确的通行字, 任何能打开该文件并提供正确通行字的用户均可对该文件进行相关操作。然而, 由于文件通行字存在丢失、泄露等情况, 使得文件的保护存在漏洞。
UNIX操作系统提供了临时获得许可证的保护方案。该方案中除了拥有用户、组、全部的概念外, 还增加另一种重要的许可权——设置用户标识符 (Set Use Id (Suid) ) 。若该保护方式是为即将执行的文件设置的, 则就是文件“拥有者”的保护组, 而不是“执行者”的。也就是说, 如果A拥有一个文件并允许B执行该文件, 当B执行该文件时他拥有A的保护权, 而不是他自己的。这种保护机制对那些一般用户只能以规定的方式执行系统功能较方便。例如:系统能修改用户通行字文件, 但是少数用户也应能在某时改变自己的通行字。利用SUID的特点, 改变通行字的程序可由系统拥有, 即系统对通行字表有全部访问权, 改变通行字的程序有SUID保护, 当用户执行它时, 程序可以代表用户以仔细限定的方式修改通行字文件。
(3) 每个文件和每个用户的保护
该保护方式下, 每个用户属于一个组, 系统管理员还可以通过定义“一般标识符”来建立有效的组。例如:某文件可能允许某组的A、另一组的B访问, 则系统管理员可以定义一个新的一般标识符S, 它只包括这两个人。用户可以允许在一般标识符下的用户访问某文件, 而不允许同组的任何其他用户访问。
2.3 Windows NT文件系统的安全保护
Windows NT中建立文件的权限时, 必须先实现Windows NT的文件系统格式 (NTFS) , 再通过Windows NT的资源管理器直接管理目录或文件的安全。使用NT资源管理器, 就可设置目录或文件的权限, 详细权限设置情况如表1所示。
实际上通常在分配权限的时候, 采用组合权限而不是使用单独的权限, NT有几种有关权限的标准, 详细情况如表2所示。
在这些权限的基础上, 可以达到根据需要来访问控制, 而确定什么是需要的最小权限较为困难。
3 结束语
目前通用的OS对文件的保护均是从文件的访问控制入手, 采用不同的保护机制保护文件正确使用。但是, 再缜密的设计也会存在漏洞, 最高明的保护措施也可能被人破坏, 只是所需要破坏的工作量和时间不同, 因此看似完善的保护机制并不能保护OS文件系统的绝对安全。
参考文献
[1]张尧学, 史美林.计算机OS教程.北京:清华大学出版社.2002.
[2]蒋继洪, 黄月江.计算机系统、数据库系统和通信网络的安全与保密.电子科技大学出版社.1995.
[3]Andrew S.Tanenbaum等著.王鹏等译.OS设计与实现.北京:电子工业出版社.1998.
[4]Helen Custer著.程渝荣译.Windows NT技术内幕.北京:清华大学出版社.1993.
操作系统(OS) 篇2
苹果os x怎么修改分区 os x10.10分区删除与增加方法如下:
1、重新启动电脑, 按住 Command-R 进入系统恢复分区.
选择中文语言进入.
2. 点击进入磁盘工具。 3. 当你发现无法修改分区大小或者删除分区的时候 . 你会发现你的硬盘类型是: 逻辑卷宗组 Logical Volume Group, 4. 为了确保操作正确先对磁盘进行修复错误, 然后修复磁盘文件权限.后退出磁盘工具, 在菜单栏上选择 工具- 打开终端. 5. 输入
diskutil corestorage list
对现有磁盘分区进行列表. 用来查看磁盘的 ID
6 , 输入 diskutil corestorage revert 分区ID
将逻辑分区转换为普通分区.
操作系统(OS) 篇3
2月25日,老牌浏览器公司Mozilla在2013年巴塞罗那世界移动大会(MWC)上发布Firefox OS移动操作系统。据一些国外媒体分析,这款颇具革新意味的操作系统具有两个优势:极大地照顾第三方开发人员的利益,他们不会像iOS或Android那样受到谷歌和苹果专有技术的限制,在出售应用程序时也无需与系统开发商分成;其次,Firefox OS对于硬件配置的要求很低,这将大大节省硬件生产商的成本。
不过,知名科技媒体Engadget撰稿人泰伦斯·奥布莱恩对于Firefox OS的前景却并不看好,他认为目前基于网页技术开发的应用存在严重的缺陷,而且还必须在有互联网连接的情况下才能运作正常功能。
相比于技术分析人士略显担忧的态度,直面消费者的运营商们对Firefox OS则表现出极大的热情。在Mozilla公司的新闻发布会上,至少有5家运营商的高管为Mozilla首席执行官加里·科瓦奇捧场。并且,表态支持该系统的运营商有18家之多,其中不乏中国联通、西班牙电信(Telefonica)、美洲电信(AméricaMóvil)、意大利电信(Telecom Italia)等重量级企业。
尽管在如今的移动操作系统市场,iOS和Android双寡头垄断的局面愈发明显,但Mozilla公司依然相信自己仍有生存空间。“行业中诞生一款开源操作系统是战略需要,这将带来新的选择和竞争。”该公司产品高级副总裁杰伊·萨利文表示,首批搭载Firefox OS的设备将于今年7月正式上市。
就一款新的操作系统而言,对用户与开发者的吸引力始终是决定其成功与否的关键。IDC分析师约翰·杰克逊就表示:“(Firefox OS)真正的障碍并不在于技术,而是规模。”因此,即便得到了运营商的鼎力支持,未来Firefox OS是否真正具备挑战苹果和谷歌的能力,仍有待市场的检验。
押宝HTML 5
尽管HTML5被热炒已不是一两天的事了,但此前人们所谈论的都是其在浏览器下的各种可能,一旦这种技术被应用在系统中,它可能带来一场革命性的改变。
最为运营商看中的是Firefox OS将给予开发者极大的开放性。目前,包括谷歌的Android操作系统,开发者要针对某个系统开发应用必须先学会该系统编程语言。而在Firefox OS中,任何开发人员都可以为其开发应用而不会受到任何限制。并且,Firefox OS中的开发应用能够实现跨系统平台的功能。这就意味着用户可以在任何一台设备中通过互联网运行该应用,包括手机、平板电脑、笔记本、智能电视,甚至智能手表、智能家电。
此外,新的技术特性可以将对硬件的需求压至较低的水平。Firefox OS的这一特性无疑有助于中低端移动设备的开发,从而推动移动互联网的普及。
从这些方面来看,Firefox OS的发展前景有一定的乐观性,如果它一旦成功,整个移动互联网市场无疑将变得更加开放,用户、开发者、硬件厂商和运营商都将从中获益。
不过,新的网页开发技术是否真能帮助Firefox OS达到期望的目标,一些业内分析人士并不如此想。他们认为至少就现在来看,这种技术还算不上完美。
奥布莱恩在撰文中指出,移动网页通常还无法达到传统网站同样的访问速度、稳定性和功能性,因此Firefox OS所推出的网页即应用(web-as-app)的方式恐怕很难带来出色的表现。此前,Facebook也曾试图通过HTML5技术来开发应用程序,但他们很快发现这些应用难以达到预期的质量。
Firefox OS的另一个缺点是对网络连接的严重依赖。尽管Mozilla公司宣称Firefox OS已有上千个应用,但这些应用大部分只有在联网状态下才能使用,这就要求用户需要为此消耗大量的数据流量,无形之中推高了该系统的使用成本,分析认为这会影响人们对它的兴趣,尤其是在基础设施不够完善的发展中国家,而这些地区正是中低端移动设备的主要市场,Firefox OS低配置需求的优势也将因此大打折扣。
当然,依照Mozilla公司的战略思想,押宝HTML5技术或许并没有错,但它必须做好应对困难的准备,想方设法令Firefox OS变得更加完善。
联手运营商
Firefox OS甫一面世便获得了如此多的关注,除了技术上确有一定特性,也不能忽略了众多运营商的大力支持。
作为非盈利性组织,Mozilla基金会的战略目标原本是与运营商背道而驰,它的目的不在于赚取巨额的利润,而是促进和推动Web标准。不过,当下Firefox OS的首要任务是在要移动操作系统市场先站稳脚跟,因此跟运营商合作不失为一个最有效的手段。
两年前,惠普收购的同样是基于Web标准开发的WebOS操作系统因为缺少有力的支持者,而导致惠普平板电脑TouchPad遭遇严重失败,Firefox OS显然不愿重蹈惠普覆辙。为此,Mozilla开出诱人条件:允许运营商推出自己的应用商店,这正是运营商们求之不得的。
对不少运营商来说,苹果iOS和谷歌Android在移动操作系统市场上的垄断局面正越来越让它们感到不安。苹果和谷歌通过各自移动生态系统赚得盆满钵满的同时却拒绝与运营商分享营收,这让运营商只能收取微薄的数据流量费,它们无法从移动软件和服务中获得任何收入,自己的用户还不断被撬走。
由于苹果谷歌在移动领域的强势地位,中国联通和西班牙电信等电信业巨头也没有什么筹码可以威胁到它们,因此,运营商们一直都迫切地希望改变这种不利的局面,任何一个有可能挑战iOS和Android操作系统的推出都会让它们趋之若鹜,所以此番众多运营商与Firefox OS的一拍即合也在情理之中。
不过,就以往经验来看,由运营商管理的应用商店大多很难让用户买账,反而给用户对操作系统的好感度带来负面影响,因此,Firefox OS与运营商携手,表面风光的背后,却也隐藏着不小的风险。
角逐第三极
在今年的MWC上,除了被运营商一致看好的Firefox OS,其他几款操作系统的发布也比较引人关注。
相比于Firefox OS,由英国Canonical公司开发的同样可以在各类移动设备上运行的开源操作系统Ubuntu就得到了更多分析人士的好评。科技媒体CNET认为,在运行的流畅度以及界面设计方面,Ubuntu要明显好于本次MWC上发布的其他操作系统。不过,目前尚未有运营商和硬件厂商宣布支持该款系统。
值得一提的是三星,韩国人这次带来了其与英特尔共同开发的Tizen系统。尽管三星已是Android阵营的优势厂商,但这家公司显然希望加强其在移动操作系统领域的控制力。不过,业界对于Tizen的评价并不高,它目前的表现难以承担三星的期望。
有分析人士认为,近期内多款移动操作系统的推出或将给市场带来不小的变化,但谁能成为苹果和谷歌之外的“第三极”力量尤为令人期待。
由于微软Windows Phone与黑莓公司Blackberry 10的表现一直难以令人满意,Firefox OS、Ubuntu等新系统自然被业界寄予了更多的期望,但这也同时意味着未来该领域的竞争将变得愈发激烈。
操作系统(OS) 篇4
μCOS-Ⅱ操作系统是一个多任务系统, 它最多可以管理64个任务, 但两个优先级最低的任务已被系统占用, 一个是统计任务, 一个是空闲任务。空闲任务的作用为当操作系统没有其它任务执行时, 就转入空闲任务而不使系统没事可做。
1.1 任务的结构
每一个任务都有如下结构。它由任务控制块T C B, 任务代码, 任务堆栈组成, 多个任务控制块形成一个任务控制块链表。每一个任务在创建时都被分配有一个任务优先级, 优先级序号从0到63, 优先级数值越大则表示优先级越低, 最高的优先级是优先级序号为0的任务, 最低的优先级是优先级为63的任务。操作系统可以设定管理的任务数, 在O S_C F G.H文件中, 可以定义O S_L O W E S T_P R I O值, 该值最大为63。每一个任务都有唯一的任务优先级, μCOS-Ⅱ操作系统任务切换的关键就是该任务的优先级, 操作系统总是运行处于就绪状态的最高优先级的任务。创建任务主要完成四项任务, 一是指出任务代码存放的地址, 二是指明任务参数指针, 也即任务参数地址, 三是指明任务堆栈栈顶指针, 在进行任务切换时保存或恢复与任务相关的寄存器的值, 四是确定任务的优先级, 优先级的高低决定了任务的紧迫性和重要性。任务创建的代码如下。
1.2 任务堆栈
每一个任务都有一个私有的堆栈空间, 在任务切换时保存C P U寄存器现场 (R0~R12、LR、SPSR等) 和本任务的私有数据。任务的堆栈的增长方向有向高地址与向低地址两个方向, 堆栈存储数据遵循后进先出的规则。
1.3 任务控制块
任务控制块是μCOS-Ⅱ操作系统任务管理与切换的关键。任务控制块是一个C语言的自定义结构体, 主要包含有任务堆栈栈顶地址、任务的优先级、上下任务控制块的地址、任务的状态等相关信息。任务控制块由上下控制块地址指针与上下任务控制块之间形成一个双向链表。一个任务控制块的结构的主要成员如下:
任务控制块的管理主要有以下几个变量, 一是OSTCBTbl[]—任务控制块数组;二是OSTCBPrioTbl[]—任务控制块优先级数组, 以Prio为下标存放已使能的TCB指针。用于加速T C B的访问。O S T C B C u r—全局系统变量, 指向当前正在运行的任务的T C B。
2 任务就绪表及任务进入、脱离就绪状态
2.1 任务就绪表的结构
为了能够使系统清楚地知道, 系统中哪些任务已经就绪, 哪些还没有就绪, μC/OS_II在RAM中设立了一个记录表, 系统中的每个任务都在这个表中占据一Bit的位置, 并用这个位置的状态 (1或者0) 来表示任务是否处于就绪状态, 这个表就叫做任务就绪状态表, 简称叫任务就绪表。由一个8位的数组OSRdyTbl[]充当, 该数组最多8个元素, 可以标示64个任务。
任务就绪表就是一个二维数组OSRdyTbl[], 如果某一位为1, 则表明该优先级的任务已就绪, 可以进行调度, 否则该任务还没有处于就绪状态, 系统还不能直接运行该项任务。例如OSRdyTbl[2]的D3为1则表示任务优先级为1 9的任务已处于就绪状态, 可以被系统运行。为加快访问任务就绪表的速度, 系统定义了一个变量OSRdyGrp来表明就绪表每行中是否存在就绪任务。
根据任务的优先级prio、优先级就绪数组OSRdyTbl[]、任务就绪组OSRdyGrp。系统就可以对任务进行管理与控制。
μCO S-Ⅱ可以管理的6 4个任务的优先级prio值为0~63 (000000~111111) , 由任务的优先级就可以找到该任务在任务就绪表中所对应的位, 优先级prio除以8取整, 也就相当于优先级prio右移三位, 代表该任务在任务就绪表中的组号x, 也即OSRdyTbl[]数组的下标等于prio.[5:3]。优先级prio的低三位prio.[2:0]代表在任务优先级组中的位y。为了加快任务的调度及保证任务切换时间一致性, μCOS-Ⅱ操作系统预先定义了一个数组OSMapTbl[],
通过查表法, 操作系统就可以知道该优先级在任务就绪表中哪一组, 对应OSRdyGrp的哪一位, 在该组中处于哪一位。例如:如果任务优先级prio为21的任务处于就绪状态, 十进制21转换为二进制则为10101, 该数值右移三位为010, 010表示十进制的2, 查表OSMapTbl[2]=00000100B知道OSRdyTbl[2]有任务进行就绪状态。10101的低三位为101, 101表示十进制5, 查表O S M a p T b l[5]=0 0 1 0 0 0 0 0 B可确定OSRdyTbl[2]的第五位为1。
2.2 任务进入就绪状态
只有进入就绪状态的任务才能被调度, 从而被CPU执行。一个任务如何才能处于就绪状态呢?只要在对应的任务就绪表中登记该任务, 就使该任务处于就绪状态。如果该任务的优先级为prio, 首先使该优先级对应的就绪组置位,
2.3 任务脱离就绪状态
与任务进入就绪状态相反, 使该优先级的任务对应的位复位, 如果该就绪组没有任务处于就绪状态, 就使该任务就绪组对应的位复位。首先使该任务对应的位复位,
如果该就绪组没有任务处于就绪状态, 则该就绪组对应的位复位,
3 任务调度
任务调度, 也就是找到优先级最高的任务, 然后转到该任务的代码段并执行该项段代码。
3.1 找到优先级最高的任务
根据任务就绪表的结构, 任务就绪组中最低为1的位所对应的组中最低为1的位所对应的优先级就是处于就绪状态的最高优先级的任务。
如果OSRdyGrp=01011010, 则说明四个组中有任务处于就绪状态, 而OSRdyTbl[1]这一组优先级别最高。如果OSRdyTbl[1]=10010010, 则说明该组有三个任务处于就绪状态, 从右数第二个1所代表的优先级是所有就绪的任务中优先级最高的。为了快速得到优先级最高的任务, μCOS-Ⅱ仍然采用查表的方式, μCO S-Ⅱ操作系统预先定义了一个数组OSUnMapTbl[256]
设最高优先级组为y, 该组内优先级最高的位为x, 则y=O S U n M a p T b l[OSRdyGrp], x=OSUnMapTbl[OSRdyTbl[y]], 与由优先级找到就绪组和该组内的位的方法相反, 则最高优先任务的优先级p r i o=y*3+x。当OSRdyGrp=01011010b=0x5a, OSRdyTbl[1]=10010010=0x92时,
也就是说优先级为4的任务是当前优先级最高的任务。知道了最高优先级的任务, 由OSTCBPrioTbl[prio]就可以得到该任务的任务控制块的地址。
3.2 切换任务上下文。
这里有四个工作要做, 第一五保存当前任务的CPU的格寄存器内容到当前任务的私有堆栈中, 第二保存当前任务的堆栈的栈底地址到当前任务的任务TCB中, 第三由最高任务的控制块TCB得到该任务的私有堆栈地址sp, 第四根据该任务的堆栈地址sp, 装入该任务的中断的数据。
3.3 运行最高优先级的任务代码。
经任务调度后, PC已指向最高优先级的代码段的位置, 该任务获得了CPU的使用权, 从而实现了任务的切换工作。
结语
μCOS-Ⅱ操作系统是一个多任务占先式的实时操作系统, 其对任务的管理依靠任务控制块T C B, 任务控制块TCB保存有任务的私有堆栈地址、任务的代码段地址、上下任务控制块TCB的地址及任务的优先级等信息。所有就绪的任务在任务就绪表中都有登记, 根据任务就绪表就可以找到最高优先级的任务, 任务的切换就是保存原来任务的数据到该任务的私有堆栈中, 从最高优先级的任务堆栈中获得其被中断的数据, P C指向该任务的代码段并运行该段代码。
参考文献
[1]任哲.嵌入式实时操作系统μCOS-Ⅱ-II原理及应用 (第二版) [M].北京:北京航空航天大学出版社, 2009.
[2]王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社, 2003年10月.
操作系统(OS) 篇5
有时候想知道自己的 Mac 的 CPU 占用率,那么要如何操作才能在桌面随时显示 CPU 的占用情况呢,今天的 Mac 基础教程会告诉大家,
打开 Mac 的系统自带软件 “活动监视器”(找不到的点击屏幕右上角放大镜按钮搜索),把它最小化到 Dock 上,右击 Dock 图标,选择 “显示 CPU 使用率”,这样就能随时看到苹果电脑 CPU 情况了,而且是分核心显示的。 当然你也可以让活动监视器的 Dock 图标显示内存、硬盘、网卡等硬件的工况,不过大多数人在意的应该是 CPU 占用率。 除了监控 CPU 占用率,当你发现 CPU 狂飙的时候,也可以退出狂占资源的进程。点开活动监视器,点一下顶部的 “CPU” 标签,让进程按 CPU 占用率排序。针对那些占用 CPU 较高的项目,选中然后点击左上角的 “退出进程” 就行了。
操作系统(OS) 篇6
【关键词】Cortex-M3;?C/OS-II;嵌入式系统开发与应用;本科教学
1.引言
ARM是目前嵌入式领域应用最广泛的RISC微处理器,它以低成本、低功耗、高性能等优点占据了嵌入式系统应用领域的领先地位。当前ARM系列的处理器有ARM7、ARM9、ARM9E、ARM10、ARM11等多个产品。Cortex-M3内核是ARM公司于2006年推出的一款高性能处理器内核,是ARM新型V7指令集结构系列的微控制器版本,可用于企业应用、汽车系统、家庭网络和无线技术等领域。其主要特点是:
(1)功耗低;
(2)内核的门数少,具有优异的性价比;
(3)中断延时短;
(4)调试成本低;
(5)具有嵌套向量中断控制器(NVIC),与处理器内核紧密结合实现低延迟的中断处理;
(6)具有可裁减的存储器保护单元(MPU),用于对存储器进行保护。
Cortex-M3内核的处理器本身的资源不是特别复杂,特别适合高等院校本科生对ARM的体系结构学习,可移植小型开源操作系统UCOS-II,能加深学生对嵌入式操作系统认识。
2.Cortex-M3+?C/OS-II嵌入式系统开发与应用教学内容
《Cortex-M3+?C/OS-II嵌入式系统开发与应用》课程是电子信息类的一门专业课。该课程的主要任务是:通过本课程的学习,使学生对嵌入式系统原理与技术有系统的、全面的了解;掌握嵌入式处理器的概念、组成和体系结构特点;通过对?C/OS-II详细剖析,掌握RTOS实时操作的原理,对其内核结构、任务调度等有深入的了解,培养嵌入式系统的设计和开发应用能力。
通过学习本课程后,应达到下列基本要求:
(1)具有一定的计算机体系结构、操作系统、接口与通信等专业基础理论知识;
(2)熟悉基于Cortex-M3架构的微处理器体系结构及应用特点,用?C/OS-II进行应用开发的技术点;
(3)了解LCD、UART、IIS、I2C等常用外设的设计和开发,为实际应用开发打下基础。
3.Cortex-M3+?C/OS-II嵌入式系统开发与应用教学的难点
学习嵌入式的重点和难点关键在操作系统,如果没有掌握操作系统,笔者认为很难把握一个嵌入式系统。即使在做嵌入式开发中,作应有层的开发几乎可以不知道操作系统也可以开发,那是浮在表面的,很难深入和提高自己的层次。选择μc/os-II这样的小型操作系统,对本科教学最为合适。本课程教学的难点在于:
(1)Cortex-M3指令集
ARM7、ARM9内核都支持有ARM指令集和Thumb指令集,目前的Cortex-M3内核是Thumb-2指令集。了解Thumb-2指令集,可以更深层次的理解Cortex-M3的启动过程。
(2)μc/os-II操作系统
实时操作系统μC/OS-II是一个基于优先级的抢占式实时内核,程序可读性强,移植性好,代码固定,可裁剪,非常灵活。至今,从8位到64位,μC/OS-II已在超过40种不同架构的微处理器上运行。μC/OS-II的主要特点有:是优先级可剥夺的实时多任务操作系统;可处理和调度56个用户任务,任务的优先级可以动态调整;提供任务间通信、同步使用的信号量、邮箱和消息队列;具有良好的可裁剪性,可尽量减小系统的ROM和RAM大小。
(3)寄存器配置
Cortex-M3系列微处理器,可以有众多的片内外设。不同的需求有不同的配置,它的寄存器配置是学习中的重点与难点。
4.Cortex-M3+?C/OS-II嵌入式系统开发与应用教学与实验方法
首先改善教学方法。考虑到目前的本科课程门类已大为增加,任何一门非公共课的学时都不会很多。显然,突出要点才能更有效。建议这门课可安排32学时理论课,另加16学时实验课。这就要求主要以引导性教学为主。例如对嵌入式系统的教学就不能像C或汇编语言那样逐条语句讲授,而是应结合具体实例讲解寄存器配置与片内外设接口。
其次是注重教学实践性。本课程具有很强的实践性。针对性强的实验应该是教学的重要环节,嵌入式系统实验更应注重实验质量,而决非仅使用ARM开发软件。先熟悉开发环境,但这并非嵌入式系统实验的关键。因为ST公司对Cortex-M3的大力开发,有很多库文件,给开发者带来很大的便利。如全国大学生电子设计竞赛时间短,编程量大,程序结构让参赛者陷入困境,选择Cortex-M3的系统可以加快开发速度。因此,嵌入式系统课程的实验,除了必须完成的基础性项目外,引导学生完成一些传统单片机不能实现的内容,从而突出Cortex-M3系统设计的优势。例如TFT LCD显示+触摸屏,重点在人机界面;UART、PS/2或USB接口,关注通信协议与寄存器配置;μC/OS-II应用突出了实时操作系统的多任务操作实现等。在这些实践过程中,会使学生发现,诸如ISP下载方式、ARM指令与寄存器等本身都成了配角,而唯有更高质地完成实验项目而不懈追求的设计能动性和创造性成了主角,从而有效提高这门以培养工程实践能力为主的教学效果。
再次就是注重实用。教学内容上,在讲清内容的同时,对每部分内容均需安排有针对性的教学实验。对设置的大部分的实验除给出详细的实验目的、实验原理、实验思考题和实验报告要求外,还应包含3种实验项目,即:基础实验项目是与该部分内容相关的接口实验,对于该部分实验,学生只须将提供的程序输入到计算机,并按要求进行编译通过,并在实验系统上实现即可;功能实验项目是在上一实验基础上进一步发挥性实验;系统实验项目属于自主设计或创新性质的实验。这样,学生就可以循序渐进进行多层次的实验项目。
最后,注重系统调试。一般认为嵌入式系统技术难点和学习费时的根源在于存储器配置。对此,根据电子类专业的特点,教师需放弃流行的ARM的教学模式,放弃常规的教学思路,以ARM体系结构为基点,从实例介绍中引出寄存器配置内容,通过少数几个简单、直观、典型的实例将寄存器配置中最核心、最基本的内容解释清楚,使学生在很短的时间内就能有效地把握片上外设的配置,而不必花费大量的时间去“系统地”学习ARM指令与接口内容。要求教师从时间中抓效益,从效益中提高学生学习与研究能力的培养。
总之,高校教师需力争在不增加课时的情况下,保持嵌入式系统教学内容的系统性和完整性,使学生通过大量寄存器配置,掌握嵌入式系统开发方法。通过接口实验,初步掌握ARM技术最基本的内容。同时通过向几个典型实用示例的设计练习,使学生在只有微处理器基础知识的条件下即能迅速学会使用Cortex-M3库文件编程的设计方法和学会利用μc/os-II完成较复杂系统的多任务设计实验真正达到培养创新型人才培养的目的。
参考文献
[1]陈瑶等.Cortex-M3 +μC/OS-II嵌入式系统开发入门与应用[M].人民邮电出版社,2010.
[2]李宁.基于MDK的STM32处理器开发与应用[M].北京航空航天大学出版社,2008.
[3]李宁.ARM开发工具RealView MDK使用入门编著[M].北京航空航天大学出版社,2008.
[4]ARM Limited.Cortex-M3 Technical Reference Manual.2005.
本文获2012年上海理工大学重点课程建设基金资助(NO:20090702)。
操作系统(OS) 篇7
操作系统是计算机学科最重要的专业基础课程之一,所有高等院校中的计算机科学与技术专业都把它作为专业核心课程给予重点建设。然而近年来操作系统在理论和技术上都有很多发展,教学内容与方法的改革滞后于当今社会对计算机专业人才需求的变化,因此进行《操作系统》课程教学的改革非常必要。
该课程是一门综合性课程,包含许多抽象的概念、算法,学生在学习过程中不仅要有很强的抽象思维能力,还必须具有深厚的程序设计语言功底、扎实的《数据结构》基础和一定的硬件知识。大部分学生在本课程的学习过程中不明确学习本课程的真正意义,对操作系统的学习停留在理论层面上,缺乏学习主动性和学习兴趣。因此有必要在操作系统教学过程中引入一个小型的嵌入式操作系统,同时加强操作系统实验课的教学。引导学生理解操作系统在嵌入式系统设计中是一个不可缺失的重要部分,从而理解掌握操作系统原理的重要意义。
嵌入式计算机系统是后PC时代IT领域的主流研发技术之一,嵌入式应用构成了无所不在的计算机时代。嵌入式系统通常由嵌入式硬件和嵌入式软件组成,而嵌入式操作系统是嵌入式软件的重要部分。uC/OS-Ⅱ是常用的嵌入式实时操作系统之一,同台式机上的操作系统不同的是嵌入式操作系统和应用程序彼此更加紧密地结合在一起。
2嵌入式实时操作系统uC/OS-Ⅱ简介
uC/OS-Ⅱ是Jean Labrosse (美国)开发的原码公开的实时嵌入式操作系统,目前已经移植到多种不同的CPU上,有着广泛的应用。uC/OS-Ⅱ是一个微型的实时操作系统(RTOS),该系统通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。商业RTOS价格昂贵,而uC/OS-Ⅱ用于学习用途是免费的。系统代码完全开放,简单明了的结构和严谨的代码风格,非常适合用来学习,可以让学生以最快的速度来了解操作系统的概念、结构和模块工作原理。
uC/OS-Ⅱ是一段嵌入在目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其它程序都建立在RTOS之上。uC/OS-Ⅱ采用微内核结构,包括任务管理、任务之间的通信与同步、时间管理、中断管理和内存管理五个模块。这些功能通过内核函数的形式交给用户调用。而将文件系统、网络通信、设备管理等作为内核之上可配置的部分,可根据用户的配置需求进行裁剪。
3 uC/OS-Ⅱ在操作系统教学中的应用
目前操作系统课程教材主要是对操作系统的进程管理、处理机调度、存储器管理、文件管理、设备管理等主要功能进行原理性的阐述,内容相对抽象。大多数教师授课时只是对各种原理和算法进行罗列,缺乏生动性,教学手段单一,教学内容与方法滞后于当今社会对计算机专业人才需求的变化,很难提高学生的学习兴趣,使得操作系统课程的教与学两方面过于乏味。
针对以上一些问题,本文提出在操作系统教学过程中,将一个具体简单的RTOS引入到操作系统教学课堂,在操作系统的授课过程中,通过uC/OS-Ⅱ的原代码,具体讲解教科书中相关的原理和算法,并且通过嵌入式系统试验平台给与验证。
如在讲解操作系统进程管理中进程同步和进程通信的概念时,配合使用嵌入式系统试验平台。在平台上建立一个相关的工程项目,加入操作系统的内核代码,在MAIN函数中创建一个主任务,然后在主任务中定义一个消息队列,两个任务通过消息队列来实现相互间的通信。指导学生在MAINTASK中创建两个任务,SCANTASK用于扫描键盘的输入,DISPTASK用于将输入的键符ASCⅡ码显示在LCD上。
在程序中定义如下的数据:
在MAINTASK中创建两个任务,SCANTASK和DISPTASK。SCANTASK主要负责键盘扫描,同时将扫描到的键符对应的ASCⅡ码字符送到消息队列,代码如下:
最终编译、链接该项目,生成映象文件,下载到实验系统中运行。在发送和接收消息的代码处设置断点,观察消息队列的变化,同时查看输入与显示的字符是否一致。在试验中可以比较信号量和消息队列在uC/OS-Ⅱ操作系统中的用途和异同点。从而达到掌握操作系统中进程管理中进程同步和通信的基本概念。
同样方法,在嵌入式平台上,创建相应的工程项目,通过对uC/OS-Ⅱ的原代码的理解,帮助学生尽快地理解并掌握操作系统课程中所有重点的知识内容,使之变得生动有趣。实践证明,促进了学生对操作系统的理解和掌握,而且掌握了一个典型实用的RTOS,对嵌入式系统的设计有了一定的理解,提高了相应的技能。
4 总结
本文在《操作系统》课程的教学改革方面,尝试了把教学内容和教学方式与当今后PC时代对嵌入式系统设计人才需求相结合,把一个具体的RTOS:uC/OS-Ⅱ引入操作系统教学中,同时通过嵌入式系统平台对本课程的的基本原理、算法进行验证,促进学生对操作系统知识的理解和掌握,并且对嵌入式计算机系统的设计有了一定的理解,提高了教学质量。学生在学习操作系统的过程中,不仅提高了学习兴趣,明确了学习本课程了目的,而且培养了学生在嵌入式系统设计方面的能力,为进一步的深造和就业奠定了扎实的基础。
参考文献
[1]季赛,岳键.《操作系统》课程教学改革的探讨[J].气象教育与科技,第31卷第1期.2008:18-22
[2]汤子赢等.计算机操作系统[M].西安:西安电子科技大学出版社,2006.
[3]Labrose Jean J,μC/OS-Ⅱ—嵌入式实时操作系统[M].邵贝贝译.第2版.北京:北京航空航天大学出版社,2003.
[4]David E.Simon著,陈向群等译.嵌入式系统软件教程[M].北京:机械工业出版社.2005,9.
操作系统(OS) 篇8
嵌入式系统是一个分散的工业, 充满了竞争、机遇与创新, 没有哪个系列的处理器和操作系统能够垄断全部市场, 因此留给各个公司的创新余地很大。研究嵌入式系统, 一个必不可少的基础工作就是实现嵌入式操作系统在相关处理器平台上的移植。本文基于目前应用非常广泛的ARM处理器体系结构, 对μC/OS-II嵌入式实时操作系统内核的移植工作做了分析和介绍, 并对代码移植的正确性进行验证。
2 μC/OS-Ⅱ操作系统简介
μC/OS-Ⅱ是一个著名的源代码开放的嵌入式实时操作系统 (RTOS) , 由美国人Jean J.Labrosse编写出来。μC/OS-Ⅱ读作"micro controller OS 2", 意为"微控制器操作系统版本2"。μC/OS-Ⅱ结构小巧, 适合小型控制系统, 具有执行效率高, 占用空间小, 实时性能优良和可扩展性能强等特点, 具有可剥夺实时内核, 提供了实时系统所需的基本功能, 其中包括任务的调度与管理, 时间管理, 任务间同步与通信, 内存管理和中断服务等功能。
μC/OS-Ⅱ可用于8位、16位和32位单片机或DSP。良好的持续发展能力、高性能的内核以及友好的用户开发坏境, 使其迅速在嵌入式实时操作系统领域占据一席之地。
3 ARM7微处理器简介
ARM (Advanced RISC Machines) , 是英国Advanced RISC Machines Limited公司设计开发的通用32位RISC微处理器体系结构。ARM处理器因其卓越的性能和显著优点, 已成为高性能、低功耗、低成本嵌入式处理器的代名词, 成为32位嵌入式应用领域、全球范围内最广泛使用的处理器。ARM7系列微处理器采用亚微米制造工艺, 是一种低电压、低功耗的32位RISC处理器, 其内核基于ARMV4T (冯·诺依曼) 体系结构, 分为3级流水线, 最高时钟频率为66MHz, 使用3V/5V供电模式, 最适合用于对价位和功耗要求较高的消费类应用。ARM7系列微处理器具有如下特点:具有嵌入式ICE-RT逻辑, 调试开发方便;极低的功耗, 适合对功耗要求较高的应用, 如便携式产品;能够提供0.9MIPS/MHz的三级流水线结构;代码密度高并兼容16位的Thumb指令集;对操作系统的支持广泛, 包括Windows CE、Linux、Palm OS等;指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容, 便于用户的产品升级换代;主频最高可达130MIPS, 高速的运算处理能力能胜任绝大多数的复杂应用。
4 实时操作系统μC/OS-Ⅱ在ARM上的内核移植
4.1 移植的条件
处理器的C编译器能产生可重入代码;在程序中用C语言就可以打开或关闭中断;处理器支持中断, 并且能够产生定时中断;处理器能够容纳一定数量的硬件堆栈;处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈 (或者内存) 的指令。
4.2 移植μC/OS-Ⅱ主要包括的内容
重新定义一系列与编译器相关的数据类型。具体定义代码如下:
设置一个常量来标识堆栈增长方向。
typedef unsigned int OS_STK/*堆栈的单位, 堆栈入口宽度为16位*/
#define OS STK GROWTH 1/*定义堆栈的增长方向, 1表示高地址向低地址增长*/声明用于开关中断和任务切换的宏。具体代码如下:
为了方便移植, 大部分的μC/OS-Ⅱ代码是用C语言写的, 但仍需要用C和汇编语言写一些与处理器相关的代码, 这是因为μC/OS-Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。它包括以下四个子函数:OSStartHighRdy () 是运行优先级最高的就绪任务、OSCtxsw () 是任务级的任务切换函数、OSIntCtxSw () 是中断级的任务切换函数、OSTickISR () 是系统时钟节拍中断服务函数
5 用C语言编写6个与操作系统相关的函数 (OS_CPU_C.C)
OSTaskInit:OSTaskCreate () 和OSTaskCreateExt () 通过调用OSTaskStkInit () 来初始化任务的堆栈结构。在用户建立任务的时候, 用户传递任务的地址, pdata指针, 任务的堆栈栈顶和任务的优先级给OSTaskCreate () 和OSTaskCreateExt () 。一旦用户初始化了堆栈, OSTaskStkInit () 就需要返回堆栈指针所指的地址。OSTaskCreate () 和OS-TaskCreateExt () 会获得该地址并将它保存到任务控制块 (OS_TCB) 中。
OSTaskCreateHook:当用OSTaskCreate () 和OSTaskCreateExt () 建立任务时就会调用OS-TaskCreateHook () 。当μC/OS-Ⅱ设置完自己内部结构以后, 会在调用任务调度程序之前调用OS-TaskCreateHook () 。当OSTaskCreateHook () 被调用时, 会收到指向已建立任务的OS_TCB指针, 这样可访问所有的结构成员。
OSTaskDelHook:当任务被删除时会调用OSTaskDelHook () 。该函数在任务从μC/OS-Ⅱ的内部任务链表中解开之前被调用。当它被调用时, 会收到指向正被删除任务的OSJCB指针, 这样可访问所有的结构成员。
OSTaskSwHook:当发生任务切换的时候就会调用OSTaskSwHook () 。OSTaskSwHook () 可以直接访问OSTCBCur和OSTCBHighRdy, 因为它们是全局变量。OSTCBCur指向被切换出去的任务的OS_TCB, 而OSTCBHighRdy指向新任务OS_TCB。
OSTaskStatHook:OSTaskStatHook () 每秒钟都会被OSTaskStat () 调用一次。用户可以用OS-TaskStatHook () 来扩展统计功能。
OSTimeTickHook:OSTimeTickHook () 在每个时钟节拍都会被OSTaskTick () 调用。OSTimeT-ickHook () 是在节拍被μC/OS-Ⅱ真正处理并通知用户的移植实例或应用程序之前被调用的。
完成了上述工作以后, μC/OS-Ⅱ就可以正常的运行在ARM处理器上了
结束语
μC/OS-II作为一个优秀的实时操作系统已经被移植到各种体系结构的微处理器上, 而ARM体系结构在嵌入式领域也获得了广泛的应用和支持。将μC/OS-II移植到ARM平台上, 能够使我们更深入地了解实时操作系统的构造, 加快在ARM平台上的应用和开发, 并为更高层次上的扩展和改进打下基础。
摘要:本文研究了实时操作系统μC/OS-Ⅱ在ARM微处理器上的内核移植。首先介绍了实时操作系统μC/OS-Ⅱ和ARM7微处理器, 在此基础上, 分析了内核移植的条件和主要内容, 最后对代码移植的正确性进行测试。
关键词:ARM,μC/OS-Ⅱ,移植
参考文献
[1]Jean J, 邵贝贝译.Labrosse.嵌入式实时操作系统μC/OS-Ⅱ.北京航空航天大学出版社.2003.
操作系统(OS) 篇9
嵌入式操作系统通常分为商用和源码公开两种。前者的主要代表有VXWORKS,PSOS等,特点是性能优良,使用方便但价格十分昂贵。后者由于代码是公开的,具有性能和价格两方面的优势。其中μC/OS-II是一个不错的选择。
μC/OS-II是由Labrosse编写的一个源码公开的嵌入式操作系统,这一点对于用户来说可谓利弊各半:好处在于,它是免费的,而且用户可以根据自己的需要对它进行修改;缺点在于,它缺乏必要的支持。它没有功能强大的软件包,用户通常需要编写自己的驱动程序,有时甚至还必须编写相关的移植程序。
1 μC/OS-II实时操作系统及性能
1.1 μC/OS-II系统的特点
(1)μC/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常都是在中断服务程序中使高优先级任务进入就绪态(例如使用发送信号的方法),退出中断服务程序后,将进行任务切换,高优先级任务被执行。
(2)μC/OS-II和大家所熟知的Linux等分时操作系统不同,它不支持时间片轮转法。它是一个基于优先级的实时操作系统。每一个任务必须具有不同的优先级(分析它的源码会发现μC/OS-II把任务的优先级当作任务的标识来使用,如果优先级相同,任务将无法区分)。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以只能说它是多任务,不能说是多进程,至少不是人们所熟悉的那种多进程。
(3)μC/OS-II对共享资源提供了保护机制。μC/OS-II是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。对于共享资源(例如串口)。μC/OS-II也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量。而一旦它得到了此信号量,那就只有等它使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个问题。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-II中称为优先级反转。简单地说,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以使用μC/OS-II时,必须对所开发的系统了解清楚,才能选择对某种共享资源是否使用信号量。
1.2 μC/OS-II性能特点
μC/OS-II是源代码公开的实时嵌入式操作系统,在第1版的基础上做了重大的改进与升级,它的主要特点如下:
(1)公开源代码
源代码公开,并且可以从有关出版物上找到详细的源代码讲解和注释,这样使得系统变得透明,很容易就能把操作系统移植到各个不同的硬件平台上。
(2)可移植性(Portable)
μC/OS-II绝大部分源代码是用C语言写的,而与微处理器硬件相关的那部分是用汇编语言写的,使得μC/OS-II便于移植到其他微处理器上。
(3)可固化(ROMable)
μC/OS-II是为嵌入式应用而设计的,这就意味着,只要开发者有固化手段(即:C编译,连接,下载和固化),μC/OS-II可以嵌入到开发者的系统中。
(4)可裁剪性(Scalable)
开发者可以有选择的使用μC/OS-II中应用程序需要的哪些系统服务,这样可以减少μC/OS-II所需的存储空间。
(5)占先式(Preemptive)
μC/OS-II完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务。
(6)多任务(Mult-Task)
μC/OS-II可以管理64个任务,但目前的版本保留了8个给系统,应用程序最多有56个任务,赋予每个任务的优先级必须是不同的。μC/OS-II不支持时间片轮转调度法(Roand-roblin Scheduling)。
(7)可确定性(Affirmable)
全部μC/OS-II的函数调用与服务的执行时间具有其可确定性,即μC/OS-II系统服务的执行时间不依赖于应用程序任务的多少。
(8)实用性和可靠性
μC/OS-II自1992年以来,已经被移植到几乎所有嵌入式应用类CPU上,移植范例的源代码可以从因特网上下载。许多行业都有成功应用该实时内核的实例,这些应用的实践是该内核实用性和可靠性的最好证据。
2 嵌入式操作系统μC/OS-II的移植探讨
2.1 移植中的问题
所谓移植,就是使一个实时内核能在其他的微处理器(MPU)或微控制器(MCU)上运行。整个嵌入式系统分为两大层:硬件层和软件层。在移植时,这两个层都要考虑。硬件层主要是处理器,对μC/OS-II进行移植到不同处理器平台时,需要解决的主要问题有:
(1)数据类型的重定义。
对于一个操作系统来说,基于其上进行开发的应用系统一般都使用高级语言,高级语言都有自己的数据类型。但对于不同的处理器由于字长不相同,造成同一数据类型在不同处理器中会有不同的解释,所以对不同的处理器应该重新进行数据类型的定义。
(2)堆栈结构的设计。
当同一个操作系统应用于不同处理器或同一处理器的不同应用系统时,由于各应用系统所追求的性能各有特点,就会要求与性能有很大关系的堆栈结构尽可能与本系统所追求的性能一致。
(3)任务切换时的状态保存与恢复。
这是多任务操作系统最主要的工作,也是最频繁的工作。所以任务切换在实现时的正确与否是操作系统运行时的基本保证,同时它的简洁与否决定操作系统的效率。
2.2 移植μC/OS-II的条件
硬件层主要是处理器,移植μC/OS-II对目标处理器有一定要求,要求如下:
处理器的C编译器能产生可重入代码;处理器支持中断,并且能产生定时中断;用C语言能开、关中断;能支持一定数量的数据存储硬件堆栈;处理器有将堆栈指针以及其他CPU寄存器的内容读出、并存储到堆栈或其他内存中去的指令。
软件层主要分为四个部分:实时操作系统内核,与处理器相关部分,与应用相关部分,用户的应用系统。下面针对移植问题简述这四个部分:
(1)实时操作系统内核
实时操作系统对系统资源进行管理。主要包括任务分配和调度、系统时钟服务、内存管理、消息机制、异常处理等。μC/OS-II所有系统服务均由内核提供,内核将应用系统和底层硬件结合成一个完整的实时系统。
移植的时候内核是不变的,开发者根据自己应用系统的需要来选择实时操作系统内核,开发者不能对内核随意访问,只能使用内核提供的功能服务来开发自己的应用系统。内核确定,那么所提供的系统管理能力,系统服务也就被限定。开发者只能在规定的范围内对系统作些改动。
(2)与处理器相关的代码
这是移植中最关键的部分。内核将应用系统和底层硬件有机结合成一个实时系统。要使同一个内核能适用于不同的硬件体系,就要在内核和硬件之间有一个中间层,这就是与处理器相关的代码。处理器不同,这部分代码也不同。
包括了用#define定义的与处理器相关的常量、宏和类型定义。具体来讲有系统数据类型定义、栈增长方向定义、关中断和开中断定义、系统软中断的定义等。
这部分需要对处理器的寄存器进行操作,所以必须用汇编语言来编写。它包括四个子函数:
μC/OS-II中共定义了6个函数在该文件中。但是最重要的是OSTask Stk Init(),其他都是对系统内核的扩展时用的。
OSTask Stk Init()是在用户建立任务时系统内部自己调用的,对用户任务的堆栈进行初始化。使建立好的进入就绪态任务的堆栈与系统发生中断并将环境变量保存完毕时的栈结构一致。这样就可以用中断返回指令使就绪的任务运行起来。具体的入栈方式要根据不同处理器而定。
(3)与应用相关的代码
这一部分是用户根据自己的应用系统来定制合适的内核服务功能,包括两个文件:O S_C F G.H,INCLUDES.H。
OS_CFG.H来配置内核,用户根据需要对内核进行定制,留下需要的部分,去掉不需要的部分,设置系统的基本情况。比如系统可提供的最大任务数量,是否定制邮箱服务,是否需要系统提供任务挂起
功能,是否提供任务优先级动态改变功能等。
INCLUDES.H系统头文件,整个实时系统程序所需要的文件,包括了内核和用户的头文件。
(4)用户应用系统
这是整个实时系统的最高层,用户可通过利用实时操作系统提供的服务来开发自己的具体应用程序。
3 结束语
在嵌入式应用中,使用实时操作系统(RTOS)是当前嵌入式应用的一个特点,一种时尚,尤其在工业控制系统中,像μC/OS-II这样短小精湛的实时内核,更有用武之地。另外,μC/OS-II开放的、免费嵌入式实时操作系统的应用与推广,不仅缩短开发周期,而且会研发出质量更高,性能更好,更容易维护的应用软件。
从以上的分析中不难看出,对于实时性、可靠性要求较强的项目,特别是大型项目,最好使用μC/OS-II。而对于一些简单的、成本要求低的项目来说,就没必要这么麻烦了。需要指出的是,μC/OS-II的特点远不止这些,应用开发中需要注意的问题也很多,需要用户自己不断地探索和研究。μC/OS-II的移植很具有实际意义,是在嵌入应用系统开始开发之前必须要做的工作。
参考文献
[1][美]Jean J Labrosse.嵌入式实时操作系统μC/OS-II[M].北京:北京航空航天大学出版社,2003.
[2]邵贝贝.译μC/OS-II源码公开的实时嵌入式操作系统.中国电力出版社.
操作系统(OS) 篇10
随着变电站自动化系统对数字化要求的提高,使得继电保护装置上集成的功能越来越多,对应的软件设计越来越复杂和繁琐,传统的单线程软件设计方法存在明显的不足:程序中任何一部分运行异常都可能导致系统锁死,这对继电保护装置来说是绝对不允许的[1,2,3,4]。特别是对于网络化的继电保护装置,需要嵌入式网络协议栈的支持,如果没有操作系统,网络协议栈的实现将十分困难。针对这些问题,本文采用嵌入式实时操作系统(Real-Time Operating System,RTOS)作为继电保护装置的软件平台。在RTOS基础上实现多任务(多进程)编程,各任务独立运行且可以互相通信,通过任务调度为各任务分配C P U,一个任务被破坏不会使其它任务异常。使用RTOS还可以提高开发效率,缩短开发周期。一个复杂的应用程序可分解为多个任务,每个任务模块的调试、修改几乎不影响其它模块[5,6]。
μC/OS-II是专门为计算机的嵌入式应用而设计的实时操作系统,是基于静态优先级的抢占式(preemptive)多任务实时内核。该内核不大,但具有一般多任务实时操作系统内核所具有的如可移植、可固化、可裁剪、可剥夺之类的全部特性,适于作为微机继电保护装置的软件平台[7]。本文以基于TMS320F2812 DSP的中低压输电线路继电保护装置为例,详细描述了各种保护功能和TCP/IP网络协议栈在μC/OS-II实时操作系统上的实现。通过介绍10kV微机保护装置的开发来说明在μC/OS-II基础上开发继电保护装置的一般流程和可能遇到的问题。
2 μC/OS-Ⅱ实时操作系统介绍
2.1 实时操作系统的基本概念和原理
实时操作系统(RTOS)实质上是一段在嵌入式系统启动后执行的后台程序。用户的应用程序是运行于RTOS上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度和异常处理等工作。在RTOS支持的系统中,每个任务均有一个优先级,RTOS根据各个任务的优先级,动态的切换各个任务,保证对实时性的要求。实时多任务操作系统以分时方式运行多任务,看上去好像多个任务在“同时”运行。任务之间的切换是以优先级为根据,只有具有优先服务方式的RTOS才是真正的实时操作系统,而时间分片方式和协作方式不是真正的“实时”。
实时内核可分为占先式内核和非占先式内核。非抢先式内核的任务调度方法称为合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断来处理的;对于占先式内核而言,当一个运行的任务使一个比它优先级高的任务进入了就绪状态时,当前任务的CPU控制权就被剥夺了,那个高优先级的任务立刻得到了CPU的控制权。如果中断服务程序使一个高优先级的任务进入了就绪态,则当中断完成以后中断了的任务就被挂起,优先级高的那个任务就开始运行了,μC/OS-Ⅱ实时操作系统即采用这种内核。
实时内核另外一个重要的概念就是任务间的通信。在本实时内核下,任务间的通信是通过信号量和消息队列来实现的。信号量就是通行证,且通行证的数量使有限的,任务要运行下去,要先拿到通行证。如果信号量已被别的任务占用,则该任务将被挂起,直到信号量被当前使用者释放掉。消息队列用于给任务发消息,通过内核提供的服务,任务或中断服务程序可以将一条消息放入消息队列。同样,一个或多个任务可以通过内核服务从消息队列中得到消息。消息队列一般采用F I F O方式来收发数据,即先发送的数据先收到。这种通信方式非常适合于构成数据FIFO,例如在一些突发性数据发送和接收场合,就可采用消息队列来收发这些突发性数据。
2.2 μC/OS-Ⅱ实时操作系统内核的结构和各个模块的主要功能
μC/OS-Ⅱ实时操作系统由任务调度器,任务间通信模块,以及中断模块3个大部分组成,它们和用户任务的关系如图1所示。
任务调度器:它的作用是对各个任务进行切换,并负责任务环境的保护和载入。当任务A的使用权被任务B占有,这时任务调度器先将任务A的环境(当前CPU的各个寄存器值以及任务变量)压入任务A的堆栈中接着就将任务B的环境从任务B的堆栈中弹出来,这样就实现了任务的切换。
任务间通信模块:由它实现任务间的通信,并可以由它调用任务调度器来实现任务的实时切换。当任务A或者中断模块要向任务B发送信号量以通知某个资源现在处于可用状态,并且此时任务B正等待该资源,这时任务A或者中断模块就要调用任务间通信模块,由任务调度器来实现任务的切换,即使任务B得到CPU的全部资源。
中断模块:一般情况下,实时操作系统要提供中断宏,来简化用户中断程序。只要用户在中断程序中调用该中断宏,就可以方便的将中断服务程序嵌入到实时操作系统中。在该模块中,要明确一个问题,就是当中断返回时,它不一定就是回到当前被中断的任务中。也就是说,当任务A被中断时,当中断返回时,它有很大可能切换到任务B,这是实时操作系统必备的特性。
3 μC/OS-II实时操作系统的移植
3.1 目标硬件平台的介绍
TMS320F2812是TI公司最新的用于工业控制的DSP芯片,它们一直采用哈佛总线结构,内部SRAM和FLASH都采用多条总线来实现一个指令周期的对内存的多次访问。不仅如此,为迎合数字信号处理的需要,的DSP里面都有硬件乘TI法器,配合其先进内部硬件结构,能在一个指令周期内来实现一个乘累加运算。该款DSP目前国际市场上最先进、功能最强大的32位定点DSP芯片。它既具有数字信号处理的能力,又具有强大的事件管理能力和嵌入式控制功能,适于作为继电保护装置的中央处理器。该芯片的指令周期为6.67ns,片内有18K×16SRAM,片内有128K×16的FLASH,配有事件管理器A和B,4个通用定时器,12位的高速ADC并配有两个异步串口。
3.2 μC/OS-II的移植
目前,可供选择的操作系统很多,如vx Works、pSOS、nuclear、QNX、WinCE等,其中μC/OS-II具有源代码公开、可移植性、可固化性、可裁剪性、可剥夺性、多任务、可确定性、有任务栈、系统服务、中断管理、稳定性与确定性等优点[7],用作继电保护装置的操作系统可开发出高效稳定的软件,提高装置的可靠性,降低开发成本,缩短开发时间和调试时间。虽然在DSP系统中嵌入μC/O S-I I会增加系统开销,即额外的ROM/RAM开销和CPU负荷,但μC/OS-II引起的CPU额外负荷一般在5%以下,而且系统中使用了外扩的RAM和ROM,因此使用μC/OS-II不存在问题。
在基于实时操作系统的微机继电保护装置的开发中,最重要的工作之一就是操作系统对CPU的移植。μC/OS-II大部分源代码用标准C语言编写,只有很少一部分用汇编语言编写,移植工作比较简单。源代码中与CPU相关的文件主要有4个:C语言文件OS_CPU_C33.C、INCLUDES.H头文件、头文件OS_CPU_C33.H和汇编文件OS_CPU_C33.ASM,移植工作就是针对这些文件做一些改动。下面以OS_CPU_C33.H为例简要介绍μC/OS-II对TMS320F2812的移植:对于OS_CPU_C33.H文件,需要改动的有数据类型定义、堆栈增长方向和任务切换入口函数OS_TASK_SW()等部分。由于TMS320F2812本质上只有4种数据类型:32位的无符号整数、32位的有符号整数、32位的单精度浮点数、40位的扩展精度浮点数,因此移植中定义的8位、16位数据实际上都是32位的,此外C33中的堆栈都是按32位数据类型进行操作的,因此堆栈数据类型OS_STK声明为32位无符号整数。TMS320F2812处理器的堆栈是由低地址向高地址递增,因此应将OS_STK_GROWTH设为1。任务切换入口函数OS_TASK_SW()实际上是一个宏定义为汇编语句的伪函数,通过汇编语句产生软中断,模拟一次中断过程,在中断服务程序中实现任务的切换。TMS320F2812共有28个软中断可供使用,通过执行汇编指令TRAP0-TRAP27来产生软中断,这里可选择其中任意一个,但其中断服务程序的入口必须指向任务级切换函数OSCtxSw()。
4 软件设计
4.1 任务划分和调度
实时系统中的任务也称进程,是一段独立的程序,该程序可认为CPU完全属于本程序。每个任务被赋予唯一的优先级,有自己的一套CPU寄存器(可被存入任务控制块)和栈空间。每个任务都是一段无限循环,有5种状态:休眠态、就绪态、运行态、挂起态及被中断态。任务可调用各种子程序并使用各种系统资源如中断、外设等,以完成某种选定的功能。
软件设计时,任务的划分和优先级的分配将直接影响任务的软件实现难易程度和装置的性能,是十分重要的环节。任务主要按功能的不同来划分;而优先级的分配要综合考虑任务的重要程度和任务的运行时间,原则是重要任务优先级高,运行时间长的任务优先级不宜过高。综合分析系统的各种功能后对任务进行划分并根据任务重要程度分配优先级,如表1所示。
μC/OS-Ⅱ可管理多达64个任务,并从中保留4个最高优先级和4个最低优先级的任务供自己使用,因此用户可使用的任务有56个。任务的优先级越高反映优先级的值越低。任务的优先级数也可作为任务的标识符使用,这里将最低优先级OS_LOWEST_PRIO定义为20。所有任务都在Main函数中创建,Main函数的流程图如图2所示。
执行OSStart(),将CPU控制权交给μC/OS-II,就绪的最高优先级(优先级最小)的任务将得到执行,直至该任务执行延时函数或发生中断。若执行了延时函数,该任务交出CPU使用权,让下一个就绪的最高优先级任务得以执行;若发生了中断,如果中断服务子程序使得某些更高优先级的任务达到就绪态,则中断服务程序(Interrupt Service Routine,ISR)结束时将做任务切换,更高优先级的任务将得到执行。
μC/OS-II按传统方式对硬件中断进行响应,进入中断后只要完成识别中断和触发任务即可返回,此后,由此被触发的任务去完成具体的处理工作。因此中断服务程序可以极其精炼,提高了系统的实时响应能力。
4.2 任务实现
(1)采样任务
本装置的采样A/D转换用2片MAX125芯片实现,可以有16路模拟输入。采样流程如图3所示,具体说明如下:(1)由DSP的Timer0产生823.333μs的定时中断(每周波采样24点);(2)中断服务子程序发出信号量;(3)等待信号量的采样任务转入就绪态;(4)采样任务向模数转换器(Analog-to-Digital Converter,ADC)写控制字选中第0通道;(5)ADC转换该通道模拟量,转换结束产生中断;(6)中断服务子程序发出信号量;(7)采样任务等待信号量(利用超时);(8)采样任务读取转换后的数据;(9)采样任务将数据存储在R A M中为该通道开辟的循环储存区中。此过程之后采样任务再向ADC写控制字选中第1通道,开始第二路信号的采样转换,如此循环直至最后一路输入转换完成。
(2)保护任务
保护任务采用时间驱动方式,由5 m s的定时中断激活。中断由Timer0产生,在ISR中有一个每次中断加1的计数器,当计数值能被6整除时发一次保护信号量。通常所有的保护任务都在等待此信号量,优先级最高的任务获得此信号量进入运行态。当前保护任务完成判断并判断线路为正常运行状态时交出此信号量,由下一优先级的任务获得。保护任务流程如图4所示,具体说明如下:(1)Timer0产生823.333μs的定时中断;(2)中断服务程序每6次中断发一次保护信号量;(3)等待该信号量的最高优先级的保护任务获得信号量;(4)任务从采样循环储存区读出最新采样值;(5)任务调用傅氏算法函数计算出电量幅值和相位角,调用动作判据函数判断是否动作或报警;(6)若需动作或报警,写继电器控制字。
(3)基于TCP/IP协议的网络通信任务
TCP/IP/协议实质上是一系列协议的总称,包含十几个协议标准。在现有的硬件水平下,在保护装置中实现所有的协议中的所有内容是不现实的,也是没有必要的。根据实际需要,主要实现的内容有:因特网控制报文协议(ICMP)、地址解析协议(ARP)、网际层协议(IP)传输控制协议(TCP)、用户数据报协议(UDP)等。基本上由这五个协议组成了一个小型化的TCP/IP协议,并且根据实际的情况,对上述的五个协议也进行了适当的简化,在满足可以完成通讯功能的情况下,保证系统的实时性和可靠性[8,9]。
TCP/IP的传输层为应用层提供2种类型的服务:一、面向连接的可靠传输服务协议(TCP),通信的发起节点在每次发起通信时在传输层都必须与通信接收方事先建立3次握手连接之后才能发送;二、无连接的通用数据报协议(UDP),这种传输方式由于不需要事先建立“握手”联系,所以效率很高,并且有单播、分组广播和广播3种方式。
继电保护装置中以太网通讯主要是采用UDP协议来传输数据。协议能够实现可靠的数据传输,但是延时不易把握,不易于数据的实时传输。协议传输数据实时性强,效率高,而且能够在同一时间向所有节点传输数据。电力系统对实时性的要求,决定了将主要采用UDP协议来传输数据。
在实时操作系统中,整个以太网通讯部分作为系统的一个任务。该任务的优先级低于采样任务、保护任务的优先级,但是要高于键盘、显示等任务的优先级。以太网通讯任务和其它保护任务之间的切换,主要依靠两个与以太网通讯相关的信号量棗发送数据包信号量TxTSem与接收数据包信号量RxTSem。
图5描述了实时操作系统如何依靠信号量完成对中断和任务的调度。
当网卡接收到一个完整的以太网数据包后,向DSP发送中断请求,中断请求获得响应以后进入中断服务子程序,在中断服务子程序中数据包的接收并发信号RxTSem。中断服务子程序结束后,将进行任务调度,如果此时没有更高优先级的任务处于就绪状态,就将执行以太网通讯任务,在以太网通讯任务中将完成数据包的处理,数据处理完成后将信号量RxTSem挂起,任务进入等待状态,等待信号量RxTSem的再次有效。
如果要发送以太网包,就必须等待信号TxTSem有效。可以发出信号量TxTSem的地方比较多,任何需要发送以太网包的场合都能够对它进行操作,可能是继电器动作后,也可能是某一特定的时候到了,或者是收到外部指令要发送数据。当TxTSem有效后,如果没有其它更高优先级的任务就绪,也同样进入通讯任务。在通讯任务中完成数据的处理,发送数据包。发送完毕后将挂起,任务进入等待状态。
4 讨论
采用定时中断激活保护任务从某种程度上看不是事件驱动的,即不是由故障发生来激活保护任务,这从原理上看似乎降低了保护的实时性,但实际上以目前的D S P速度来说,每个采样周期都处理采样数据会使CPU负荷过重,从而影响其它任务的响应,而采用5ms的定时中断来激活保护任务也可满足保护的速断性要求。此外,在采用嵌入式实时操作系统的情况下,任务间的切换需要一定的时间来进行当前任务现场保护和激活任务现场恢复,但这一时间很短,不会明显增加CPU负荷。
5 结束语
(1)μC/OS-II实时操作系统采用基于优先级的可剥夺式调度策略,可按功能来划分任务,一个任务完成一种功能。通过在TMS320F2812 DSP硬件平台上移植μC/OS-II实时操作系统,既能够很好地满足系统对实时性的要求,又可以有效防止单线程软件设计方法造成的系统锁死。
(2)随着数字化变电站的逐步实现,对变电站间隔层设备网络化的要求越练越高,使得继电保护装置必须具备TCP/IP网络通信功能,通过在μC/OS-II实时操作系统里嵌入TCP/IP网络协议栈,保证了以太网通讯的实时性、可靠性。
(3)μC/OS-II是性能优良的嵌入式操作系统,在世界范围内得到了广泛应用,但在继电保护领域应用很少,本文所做的工作为μC/OS-II在电力行业的应用提供了参考。
参考文献
[1]张壬寅,夏锦胜.基于DSP平台的中低压微机保护装置[J].电力自动化设备,2005,25(9):80-83.
[2]周芸,杨奖利,路青起.基于TMS320F2812的线路保护系统[J].高压电器,2005,41(4):289-291.
[3]荣彩霞,张哲,潘军军等.新型高压线路微机保护装置研制[J].电力自动化设备,2005,25(12):55-58.
[4]魏宜华,焦彦军,张新国等.通用继电保护微机型实验装置的设计[J].电力系统及其自动化学报,2005,17(3):95-98.
[5]沈金荣,刘翔.μC/OS-II内核结构分析及多任务调度实现[J].计算机工程,2006,32(23):85-87,113.
[6]徐天奇,游大海,李程等.基于μC/OS-II实时操作系统的发电机微机继电保护装置[J].电网技术,2005,29(16):71-75.
[7]周俊华,李正明,钱小荣.基于TMS320F2812的微型实时内核的实现[J].计算机工程与设计,2006,27(23):45435-4546.
[8]谢玉冰,游大海,罗强等.继电保护装置中基于μC/OS-II实时操作系统的嵌入式以太网[J].继电器,2005,33(18):20-22,60.
Ubuntu:重新定义OS 篇11
美国东部时间4月23日12点,北京时间24日凌晨,素有“Linux操作系统里的Windows”,之称的Ubuntu发布了新品——Ubuntu桌面版本9.04,用户可以自由下载此产品。此外,Ubuntu的商业赞助方Canonical公司同时宣布发布Ubuntu服务器版本9.04和Ubuntu上网本特别定制版9.04。
Ubuntu来源于南非祖鲁语,意为“人道待人”。canonical公司的首席运营官Jane Silber表示:“通过每个版本,我们可以看到Ubuntu桌面版本在吸引主流计算机用户方面取得的进步。通过获得最新的办公套件、对Skype和Adobe Flash的支持、更快的启动速度,我们相信将会有更多的人加入Ubuntu桌面版本9.04的数百万用户群体,并转移到一个开放式平台”。
Linux使者
ubuntu作为开源操作系统,自从2004年发布第一个版本4.10以来,就保持了每半年一次的新产品发布周期。canonical公司中国区首席代表于立强对记者表示,保持半年一次的产品发布节奏保证了把最新的研发成果和最新的外设驱动应用到产品之中。
而针对Windows的病毒,Linux可以做到“免疫”。频繁的更新可以有效切断安全隐患。“即使你自己的用户系统出现问题,也不会影响底层的根系统,用户可以重新建立新的用户系统而不至于整个软件系统崩溃。”于立民说。
对于用惯了微软视窗系统的用户来说,这种把U盘插到电脑上就能运行的操作系统体验的确是一种革命。
中国开源软件推进联盟副秘书长袁萌教授表示,商业软件和自由软件的最大不同就在于一个是软件和计算机一对一绑定,一个是对软件资源的自由配置和分享。
据于立民介绍,Ubuntu9.04比起以前的版本启动的速度有很大的提高,在大多数的机器上,在25秒以内就能够启动起来。另外,ubuntu内置了火狐浏览器,新版本上的应用软件更加丰富。通过与Adobe Flash等软件公司达成战略联盟,把相关应用整合到系统里。而Ubuntu 9.04预装了OpenOffice,org 3.0办公套件,实现了与MicrosoftOffice完全兼容。Ubuntu 9.04首次出现了新的集成通知系统。增加了包括邮件提醒、播放音乐名称显示等人性化的功能。而上百个硬件驱动程序,免去了用户安装外接设备的麻烦。
OS乌托邦
开源精神吸引着越来越多“Ubuntu迷”。canonical运营着ubuntu社区及一家提供ubuntu技术咨询、定制开发、培训的商业公司。在全球,Ubuntu有170个以上叫“网上协作”的开发模式小组,并且还在以每月超过1500人的加入速度扩张。Ubuntu的开发形式和环境,决定了自由软件和其他版权销售操作系统的本质不同——来自各地的高手在开源社区里面协同工作,开发新的版本和应用。
几年间,ubuntu社区快速成长,全球1000万用户在使用ubuntu桌面端操作系统,而至少100万台服务器用的是Ubuntu的操作系统。惠普、戴尔、东芝,宏碁都有基于Ubuntu操作系统的终端。在上网本市场,除了有惠普、东芝,据悉,戴尔公司三分之一的上网本都运行着Ubuntu操作系统。
对于用户群体的拓展,于立民认为“只是时间问题”。目前,支付宝、腾讯QQ都有支持ubuntu系统的版本。而3G的热潮给Ubuntu在上网本市场带来了机会。
操作系统(OS) 篇12
目前, 嵌入式实时操作系统的应用非常广泛。它具有非常高的实用性, 能使复杂的软件功能简单化, 使大规模的硬件驱动模块化; 具有较高的实时性, 在关键事件触发或者紧迫性任务的处理上响应速度快, 处理机制非常合理。在众多的嵌入式实时操作系统中, 比较常见和实用的是 μC /OS-Ⅱ。它是一种可剥夺型实时操作系统, 具有移植简单、大小可剪裁、代码开源等特点, 由于在实际应用中有着良好的稳定性和可靠性, 已经取得了美国联邦航空管理局应用于某商用直升机的认证。在该软件基础上, 针对农业灌溉系统中的各种功能需求, 设计了一种基于 μC /OS-Ⅱ的农业灌溉系统的方案, 利用PID算法和相关的控制策略来实现对农业灌溉的智能控制。实践证明, 这种方案在应用中具有非常好的稳定性和实时性。设计中, 首先对系统硬件简单介绍; 然后, 对系统硬件完成的功能进行分析后, 采用相应的控制策略和算法来完成整个系统软件设计; 最后, 对实际应用的过程中遇到的问题提出解决方法。这种新型的基于 μC /OS-Ⅱ农业灌溉控制系统具有一定的参考价值, 可推广到多种控制对象中使用。
1系统硬件设计
在农业自动化控制方面, 农业灌溉一直是研究比较广泛的课题。目前, 控制系统中使用的硬件控制核心多种多样, 从8位到64位的微处理器或者PLC等都有实际应用。由于不同的控制系统都具有不同的控制功能和控制特点, 所以硬件基础也不尽相同。 本设计主要采用ARM cortex - M3内核的STM32F103ZET6作为整个控制系统的p H值及湿度信号采集、处理和控制电磁阀动作的控制核心。 STM32F103系列内部具有非常强的12位A / D转换器, 支持高达72MHz的工作频率, 并且对于外部存储器 ( 如NOR, NAND, SD) 等支持非常稳定。另外, 设计过程中使用的DMA控制器也可以实现控制核心与外部设备之间的通信, 如使用SPI, I2C和USART等方式通信可以大大减少硬件设计的复杂性。最后, 对于软件来说, STM32F103系列32位处理器支持 μC /OS-Ⅱ 的移植和使用, 运行非常流畅、可靠并且稳定, 如图1所示。
1. 1数据采集
设计中主要对灌溉中水的p H值进行检测, 实时监控灌溉中p H值的波动情况, 并对所栽培的土壤进行湿度检测, 以便对当前的浇灌时间进行调整。p H值的测量采用带p H电极的传感器, 电极采用玻璃敏感薄膜构成的低阻抗材质, 可以多次测量, 耐碱性强, 并具有再现性好、响应速度快、低温度漂移等优点。 p H值电压信号检测电路如图2所示。由于p H电极的基本原理是根据原电池的原理工作的, 主要将化学反应能量转换成电能, 这样原电池内部的电动势EMF电位就与离子活度有关。根据NERNST方程, 电动势计算公式为
其中, a Me为离子活度。那么, 利用电位的波动就可以测量p H值。电位的变化通过STM32F103ZET6的A /D转换器转换成数字变化量, 经过一系列分析后由LCD输出和控制电磁阀。由于电位的变化是微弱的电信号, 还需将此信号放大后转换成电压信号。使用OP07可以将此模拟电压信号放大, 输入到12位A / D转换器中进行处理。
湿度的检测为采用SHT11数字温湿度传感器多点测量, 如图3所示。其通信方式和DS18B20一样, 采用单总线方式通信 ( 即1根SCK和1根DATA控制总线) , 但不同的是SHT11不能通过1根数据线实现多个节点通信, 更不能以寄生电源方式供电。所以, 在设计上需要考虑如何配置GPIO。在实际应用中, 多个SHT11使用1根SCK共同发出时钟信号, 每个SHT11使用1个DATA数据线, 从而可以节省I / O口, 也能实现多点同时数据采集的功能。
1. 2人机交互设计
由于STM32F103系列微处理器的运行速度快, 运行 μC /OS -Ⅱ可剪裁的嵌入式实时操作系统非常流畅, 所以设计中使用了基于ILI9325驱动的240RGB× 320的TFT LCD显示设备, 移植 μC / GUI3. 9以上版本驱动TFT显示当前p H值和湿度数据等。由于 μC / GUI要与 μC / OS - Ⅱ 配合使用, 因此两个软件驱动的版本都不能太低或者太高, 否则会出现兼容性报错, 如 μC /OS-Ⅱ钩子函数的错误。另外, 采用菜单选项式的液晶图形驱动, 容错性好, 减少按键的使用, 简化了电路板的设计, 无需使用专门的键盘驱动芯片, 直接使用按键与I /O口连接即可。
1. 3外围基本电路设计
主控制核心的外围电路包括基本的时钟电路、复位电路及系统电源电路等。由于需要对灌溉信息实时控制和记录, 还需有数据存储器和非易失性存储器, 设计中采用外接SD卡记录控制信息和状态信息。 设计之初, 对系统硬件和软件的调试一般采用JTAG接口与JLINK连接仿真调试, 因此对于JTAG的设计也是必不可少的。
2系统软件设计
软件设计中主要使用PID控制器对幅度波动较大的信号消除偏差, 进行实时控制。由于控制程序设计繁琐, 需要有较强的实时性, 所以移植 μC /OS-Ⅱ简化程序设计难度, 通过任务的设计理念对各个硬件进行管理和控制, 如对土壤液体的p H值的实时监控及电磁阀的反馈等。
2. 1 PID控制算法
设计中是实时对多点的温湿度进行采集, 主控制核心对采集的数据进行处理后对灌溉电磁阀进行控制。由于温湿度信号具有较大的惯性和迟滞性, 且灌溉后的土壤湿度波动较大, 曲线变化呈指数型增长后缓慢下降, 是一种非线性曲线, 采用传统的PID调节控制即可满足设计中的智能检测和控制的要求。系统中使用的电磁阀带4 ~ 20m A的信号反馈, 根据电磁阀的反馈信号变送给主控制核心, 将此信号输入到PID控制器当中和湿度信号进行分析, 可得到一个比较合适的控制算法。
由于湿度变化的非线性的缘故, 在设计中对此PID模型的积分环节重新设定必将对输出控制造成巨大偏差, 所以采用积分分离方法对偏差进行取消积分环节进行控制, 设定一个比较适合的阈值适当分离积分作用。理论公式为
其中, T为采样时间, β 是积分系数。
对于阈值的选择, 根据不同的应用环境, 凭借操作人员的经验来选择阈值, 以满足精度要求。PID的比例积分微分参数是互相独立的参数, 对应着各自的调节作用, 所以在本设计系统中单独使积分环节分离, 配合PD调节, 可以使系统更加稳定和准确地工作, 从而得到一个不错的控制效果。控制程序如下:
2. 2 μC / OS-Ⅱ的移植与应用
对于 μC /OS-Ⅱ的移植, 到 μC /OS -Ⅱ的官方网站中找到针对主控制核心STM32F103的移植范例, 不用过多修改就可以方便移植, 具体修改本文不再赘述。由于 μC /OS-Ⅱ是多任务实时操作系统, 根据系统所要完成的功能, 具体对温湿度监测、p H值扫描、 键盘扫描、LCD驱动、PID算法、电磁阀反馈监测等建立任务, 并对各个任务设定响应的优先级。一般来说, 对于监测任务设定较高的优先级, 扫描任务一般延迟几毫秒都不会产生影响, 优先级低一些。系统软件流程如图4所示。
对于各个任务之间的信息同步和通信, 一般采用消息信箱或者消息队列在多个任务之间相互同步或者数据通信。另外, 对系统任务运行时间的管理, 如果是精度要求不高的场合, 使用时间函数; 如果精度要求较高, 则使用中断函数。在p H值检测任务中采用延时函数对采样任务进行设计, 设计的主要思路是调用A /D转换任务, 然后将处理信号量保存并发送到外部存储设备中, 完成后调用延时函数, 以保证其他任务的进行; 从内核运行来看, 调用延时函数实际上就是将此任务挂起, 然后转向其他优先级程序中, 等待延时函数时间到, 再回到任务判断运行。其流程图如图5所示。
3结语
提出了一种基于 μC /OS-Ⅱ的农业灌溉系统的设计方案, 阐述了 μC /OS-Ⅱ在系统中的具体作用, 为新型农业灌溉提供了一种参考方案。在实际应用中, 对PID各个参数的选择要以经验值为主, 以使稳态控制精度高于0. 5以上, 调节时间少, 满足对农业灌溉的控制的实时性。另外, 设计中还对灌溉中需要检测的p H值、电磁阀输出进行监控, 满足农业灌溉的一些基本功能, 对节水和节能都有明显的作用, 降低了种植成本。同时, 由于采用了TFT的LCD显示设备, 人机交互界面易上手操作, 大大降低了操作难度, 适合推广应用。
参考文献
[1]刘媛媛, 朱路, 黄德昌.基于GPRS与无线传感器网络的农田环境监测系统设计[J].农机化研究, 2013, 35 (7) :229-232.
[2]裴素萍, 吴必瑞.基于物联网的土壤含水率监测及灌溉系统[J].农机化研究, 2013, 35 (7) :106-109.
[3]岳学军, 王叶夫, 刘永鑫, 等.基于总线技术嵌入式轮灌控制系统的设计[J].农机化研究, 2013, 35 (7) :139-144.
[4]纪建伟, 赵毅勇, 栗庆吉.基于太阳能加热的水稻灌溉自动控制系统研究[J].农机化研究, 2013, 35 (7) :246-248.
[5]钱梦清, 于泓川, 苏中滨.稻田节水灌溉系统的研究与设计[J].农机化研究, 2012, 34 (12) :128-131.
[6]杜云明, 盖丽娜, 颜兵兵.基于单片机的温室灌溉控制系统设计[J].农机化研究, 2012, 34 (12) :88-91.
[7]吕家圣, 袁军.丘陵山区枇杷园水肥集成自动灌溉控制系统研究[J].农机化研究, 2013, 35 (2) :159-162.