嵌入式操作系统通用性

2024-05-30

嵌入式操作系统通用性(精选9篇)

嵌入式操作系统通用性 第1篇

关键词:LED图文显示ARM核,FLASH区域控制算法

1、LED显示屏存在的问题

LED显示屏近几年得到了飞速的发展,但在技术上也存在着诸多的问题厄待解决。

1.1 字库问题

LED显示系统中, 要涉及到字符和图像的显示, 其中包括西文、符号及汉字显示。对于传统的单片系统汉字显示, 一般的做法是用一片ROM来做一个字模库, 通过对字模库的检索来取得所需汉字的点阵信息, 或者对于英文字符或少量汉字的系统, 直接将字符点阵信息写入程序中。而对于某些应用, 如新闻信息显示和图像显示, 其特点是与上位PC机通信, 所需字符可能包括汉字、符号或英文字母, 且字符数量、字形和字体都不固定, 用上述做法就显得字体单一, 字符量太少[1]。

1.2 传输速度问题

图像显示作为LED现实内容变得越来越多,如果目前采用的都是显示屏与上位机同步通信的方式,由上位机发送数据,控制器接受数据,然后送到驱动电路进行显示。图像的数据量大,实时性要求高,一般视频图像都要求大于等于25帧/秒,这样数据量就非常的大,用传统的RS232接口很显然满足不了要求。

1.3 通信方式问题

目LED条屏由于数据量小,采用的通信方式大都为485总线异步通信,及在控制器中设计有存储器,上位机将数据下传后,存到控制器的存储器中,这样上位机关机后显示屏还能继续工作。然而在全彩的通信当中,由于数据量,目前采用的都是视频卡同步通信,及上位机一边送数据,显示屏一边显示,这样的话,如果上位机出现问题,显示屏则不能进行显示。

1.4 远距离分布式系统问题

目前的电子显示屏的应场合越来越多,很多场所涉及到分布式的显示,例如医院,车站等单位,显示屏分布在各个出入口,要想进行统一的管理目前做起来几乎是不可能的,因为每个显示屏都是由一台单独的电脑来进行控制,要想联动控制要在控制技术上做很大的努力,系统也容易出现问题。

1.5 布线问题

随着LED显示的广泛应用,其布线也成为一个难题,例如在交通路口挂一个显示屏,电源线不成问题,可是数据线的布线就非常的麻烦了,现有的做法是在就近设上位机。这样的话,每个路口都要有电脑,非常的浪费资源。

1.6 屏幕大小随意可变问题

各个工程由于客户需求和现场尺寸的问题,对显示屏的大小的要求各不相同,目前大部分的做法是在设计显示屏的时候需要对软件进行定制,也就是需要修改底层软件来达到要求,。这样的话就显得费时费力。

2、基于ARM嵌入式系统的LED图文显示系统设计

2.1 硬件设计

为了解决上述的几个问题,从问题的根源着手,对传统的LED显示屏控制系统进行了如下的改进。

A、随着大容量存储器的价格的降低,在控制器中设置大容量存储器变得非常的经济。考虑到实用性,为控制器配上128M的内存和8G的FLASH存储器,数据只要一次性传输,就可以满足连续4小时不同内容的视频内容的播放。这样就解决了数据库容量不足和依赖上位机的问题。

B、在传统的RS485接口的基础上增加10M/100M自适应网络接口,控制器可以方便的介入局域网和互联网,实现远程控制。这样可以方便的解决传输速度问题,和分布式传输问题和布线的问题。

C、有上面的两个设想之后,控制器的选择就尤为重要了,在处理速度上要足够的快,满足对图像数据的处理,同时性价比要高,ARM芯片的高性价比成了首选,综合考虑选择AM1808-456作为主控制器[2]。

2.2 控制器软件设计

用户需求的LED显示器点阵规格是不确定的, 如何驱动不同点阵的LED显示器这是开发通用控制器卡着重要解决的问题之一。下面以设计最大点阵范围为1024×1024点阵双基色 (红色和绿色) 的LED大屏幕显示器控制器卡为例。

在存放显示数据的A体和B体里, 红色数据存储在由00000H到1FFFFH的地址里, 绿色数据存储在由20000H到3FFFFH地址里,蓝色数据存储在由40000H到5FFFFH地址里。一个地址里的数据即一个字节数据可以代表8个象素点, 所以横向128byte数据可表示1024个象素点。显示存储器红色数据对应显示屏的位置如图2所示, 数字表示红色数据的存储地址, 对绿色数据来说, 数据从20000H开始存储, 所以显示存储器20000H、40000H和00000H地址里存放的数据在显示屏显示的位置是相同的, 20001H、40001H里的数据在图2中1位置显示, 20002H、40002H里的数据在图2中2位置显示。图2阴影部分表示LED大屏幕显示器实际大小, 所以只要在图中阴影部分显示屏对应的显示存储数据存上显示数据, 阴影部分对应大小的显示屏就能完整地显示了。换个思维方式:一块正常显示的1024x1024点阵的LED大屏幕显示器, 由于显示屏是一块块的单元板拼接而成的, 只需要把图中非阴影部分的单元板拆去就得到用户想要的显示屏大小, 而拆去部分单元板对应的显示数据存储地址是无效数据[3]。

基于上述思考, 要使所设计的控制器能够驱动各种点阵的LED显示器, 关键在于正确存储显示数据。

控制器接收到数据, 都要根据显示屏的点阵多少来推算显示数据的存储位置。假设显示屏控制机传过来的点阵规格参数是M×8N, 则显示屏的第m行, 第n个8列存放红色数据的存储地址为[4]:

同一位置绿色数据的存储地址为:

同一位置蓝色数据的存储地址为:

2.3 上位机软件设计

上位机软件采用VC++6.0进行设计, 通过调用库函数、插件实现多元化的功能, 支持文本文件、WORD文件、所有图片文件 (BMP/JPG/GIF/PCX...) 、所有的动画文件 (MPG/MPEG/MPV/MPA/AVI/VCD/SWF/RM/RA/RMJ/ASF...) 等的显示。如下为控制卡的基本信息设置程序和显示屏显示区域控制程序[5]]:

3. 通用LED图文显示系统的应用

本通用控制显示系统的布线方式标准化,接口标准化,灵活性非常的强,目前已经实现批量化生产,能够很好的满足交通诱导,高速公路信息牌、医院信息板、学校信息板等各种场合的应用,可以实现显示屏的群控,远程控制,信息联动。

同时由于进行了智能化软件设计,控制器不再受到各种不同规格的显示尺寸的局限,所有参数在上位机设置即可实现,真正做到一卡通用,大大的减少了后续维修维护工作。

4. 结论

本文所设计的通用LED图文显示系统改变传统的显示控制系统的设计思路, 采用高速ARM处理器, 引入了标准化的互联网络接口, 设置了大容量的存储器, 并在软件上采用智能化显示区域控制算法, 一举解决了目前存在的字库少, 传输速度慢, 通信方式不灵活, 远距离控制难、多屏群控不易实现, 布线复杂, 控制卡不通用等问题。目前系统已经得到了很好的应用, 为LED显示屏的发展具有积极的意义。

参考文献

[1]熊雨凯, 吴光敏.嵌入式大屏幕LED显示屏的设计与实现.现代电子技术, 2006, 237 (22) :43-45

[2]Texas Instruments Incorporated.am1808 arm microprocessor.Pdf[Z].www.ti.com.cn

[3]叶树江, 韩喜春, 徐泽清.基于LPC2292和FPGA的LED显示屏设计.黑龙江工程学院学报, 2007, 21 (2) :1-3

[4]邓春健、肖传武等.基于FPGA和ARM-μClinux的LED大屏幕显示器通用脱机控制卡的设计和应用[J].电子器件, 2005, 28 (4) :710-714

嵌入式操作系统课程报告 第2篇

North China University of Water Resources and Electric Power

嵌入式操作系统课程报告

题目 嵌入式系统课程综和论述

学 院 物理与电子学院

专 业 电子信息工程

姓 名 李天泽

学 号 201816516

组 员

完成时间 2020.12.22

目 录

一、嵌入式系统的介绍

(1)、嵌入式系统的概念……………………………………3

(2)、嵌入式系统的特点……………………………………4

二、嵌入式系统的发展和应用……………………………5

三、总结和心得……………………………………………7

参考文献……………………………………………7

附录…………………………………………………8

摘要:

如今,嵌入式系统经过半个多实际的发展和革新,在各个产业都可以看见它的身影。在电子消费领域,它已经广泛应用于手机、VCD、数字电视和路由器等常见家用电器和电子产品,或许在你的家里有着几十甚至几百个微型嵌入式计算机无时无刻地不在为你服务。

在工业控制方面,一辆豪华轿车的控制系统就包含着至少50个嵌入式微处理器,它们分布于火花塞、传动轴和安全气囊等等。而一架先进的飞机,一台人造卫星就可能包含着几十套嵌入式系统和上百台微型嵌入式计算机,没有这些装载,飞机和卫星的控制系统就不能有效地工作,它们的导航系统就不能满足严格的要求。

在通信领域也有着数不胜数的嵌入式系统的应用,由于带宽网络的发展,交换机、路由器和各种传输设备等都逐渐需要更多的嵌入式系统来满足它们互联的需求,而这些基于32位的嵌入式系统品种多样,绝大多数都价格低廉,能够为企业和家庭的网络选择提供更加廉价而多样的方案。

一、嵌入式系统的介绍

1、嵌入式系统的概念:

上世纪的40年代人类社会诞生了当时最伟大的发明之一——计算机。1946年宾夕法尼亚大学研制出了世界上第一台计算机“ENIAC”,吹响了人类向信息时代进发的号角。如今半个多世纪过去了,总体来看,计算机已经经历了两个大的发展阶段:大型计算机阶段和个人中小型计算机阶段。而今后,计算机技术将迈入下一个充满机遇和挑战的新阶段—— “无处不在的计算机”阶段,即“后PC发展阶段”。“无处不在的计算机”是指在数以千计乃至万计的计算机之间彼此相互关联,其与使用者的比例高达100%,这些计算机中包括有传统的通用式计算机和嵌入式计算机,而后者占绝大多数,可以达到95%的比例。

施乐公司研究中心的主任Mark Weiser 认为:“以长远的发展来看,PC和计算机工作站将逐渐衰落,因为计算机将会变得无处不在,它们会在墙上,在手腕上,在口袋里等等,计算机将会像手写纸一样,随用随取,伸手可得。”

目前全世界范围的计算机研究者都在逐步形成一种共识,那就是在计算机将来的发展中,它必然不会成为像科幻电影中的那种会背叛人类,伤害人类的机械怪物,恰恰相反它们将变得小巧玲珑而且无处不在。它们会出现在任何你能看的见、听得到、摸得着的地方,功能强大而且随处可用,这就是“无处不在的计算机”。

嵌入式计算机系统就是所谓的“看不见的计算机”,一般情况下它只是运行平台,并不能作为独立的开发平台来使用。而且它不能够被用户编程,对用户的I/O接口是专用的。所以不严谨地说:任意包含可编程计算机的设备而且这种设备不是作为通用计算机而设计的都可以称作嵌入式系统。

时至今日嵌入式系统已经逐渐渗透到人们的日常生活中,但因为其不同的应用形式和相异的名称,目前对嵌入式系统还没有一个统一的定义。但一般认为,它有以下概念:

(1)嵌入式系统的中心是应用功能,基础是计算机技术,其软件和硬件可以裁剪,对应用系统的功能、可靠性、成本、体积大小和功率损耗都有十分严格的要求和指标。

(2)国际电气和电子工程师协会认为嵌入式系统的定义是“Device used to control, monitor, or assist the operation of equipment , machinery or plants.”

(3)嵌入式系统是计算机技术、半导体技术、电子技术等与各个行业的具体应用相结合后的产物,是一个技术集中、资源集中、应用高度分散、技术不断革新的集成系统。

2、嵌入式系统的特点:

1)嵌入式系统通常都是多样的有特定应用功能的软硬件综合体,用于特定的任务,其硬件和软件设计都是高效而简洁的。其中嵌入式软件的应用程序和操作程序是一体化的,不同于传统的通用计算机操作系统和应用程序有着分明的界限。

2)嵌入式系统能够受到多个处理器和体系结构的支持,不同于通用的计算机只能够使用少数的处理器类型和体系结构。目前已经生产有上千种嵌人式微处理器和几十种微处理器的体系结构,其中比较主流常见的有ARM,MIPS, PowerPC,X86和SuperH等。

4)嵌入式系统有实时性和可靠性的特点,其主要表现在:目前绝大多数实时操作系统都是嵌人式系统;嵌人式系统都有实时性的要求,其软件通常都是固化或直接加载到内存中运行的,启动十分快速

另外,嵌人式系统通常都有处错能力和自动复位的功能,目前在绝大多数嵌式系统中都包含着用于保证系统运行可靠性的软硬件处理机制,比如看门狗定时器和内存保护重启机制等。

5)嵌入式系统通常都使用可以适应多种类型处理器、可裁剪量轻、实时性和可靠性高以及可以固化的。同嵌入式微处理器,嵌入式的操作系统也是多种多样的,不仅可以支持多种处理器,还可以进行裁剪量轻来匹配应用的功能,而且规模较小,能够节省资源等等。

二、嵌入式系统的发展和应用

第一代电子计算机体积大,耗电快,而且可靠性和实时性都无法满足嵌入式计算的要求。到了20世纪60年代,由晶体管、磁芯存储制造的第二代计算机开始用于航海航空等领域,它的CPU能够处理从电子系统传来的信号,具有了数据总线的一些基本特性。而与此同时,嵌人式计算机也逐步应用于工业和制造等方面。

至60年代末,采用集成电路的第三代计算机问世,1965年发射Gemini3号是人们第一次使用机载数字计算机。而后的阿波罗探测飞船则使用了嵌人式计算机系统来提供和保障人机的交互功能来用于引导飞行。1963年DEC公司推广了第一台商用小型机,它具有嵌入式系统的结构,具备单总线结构、高速寄存器和实时性、可靠性强的中断系统以及交叉存取功能,标志着嵌入式系统的兴起。

1971 年,英特尔公司成功推出了世界上第一片微处理器Intel 4004。它的体积小、质量轻、价格实惠、使用方便,在当时销量很好,Intel公司将它进一步改进后推出了4位的微处理器4040和8位的8008。

1973-1977 年短短四年之间全球许多厂家推出了各种各样的8位微处理器,其中比较流行的有英特尔公司的8080/ 8085系列,摩托罗拉公司的6800/6802系列,齐洛格公司的Z80和罗克韦尔公司的6502等。这些微处理器的广泛应用为嵌入式系统开辟了广阔的市场,促成了嵌入式系统的快速发展。计算机厂商开始以插件的形式为用户提供所需的OEM产品,并构成符合用户要求的微型控制计算机,嵌入到系统设备中。

嵌入式系统的大发展还要归功于20世纪80年代软件技术的进步。最初的嵌入式计算机的软件都是十分专用的,其程序也只能用汇编语言来编写,因此嵌入式系统的开发周期过长,效率太低,不利于广泛地推广和应用。得益于微电子技术的进步,嵌入式计算机的软件开发不再局限于汇编语言,可以使用C或PL等高级语言,是编程更加多样和简洁化,加快了嵌入式系统的开发效率。时间步入20世纪90年代,当时对分布控制、柔性制造和数字通信电等技术有着巨大需求,而这种需求也刺激着嵌人式系统的软硬技术的革新和发展,促进了嵌入式系统的应用扩大化。

如今,嵌入式系统经过半个多实际的发展和革新,在各个产业都可以看见它的身影。在电子消费领域,它已经广泛应用于手机、VCD、数字电视和路由器等常见家用电器和电子产品,或许在你的家里有着几十甚至几百个微型嵌入式计算机无时无刻地不在为你服务。

在工业控制方面,一辆豪华轿车的控制系统就包含着至少50个嵌入式微处理器,它们分布于火花塞、传动轴和安全气囊等等。而一架先进的飞机,一台人造卫星就可能包含着几十套嵌入式系统和上百台微型嵌入式计算机,没有这些装载,飞机和卫星的控制系统就不能有效地工作,它们的导航系统就不能满足严格的要求。

在通信领域也有着数不胜数的嵌入式系统的应用,由于带宽网络的发展,交换机、路由器和各种传输设备等都逐渐需要更多的嵌入式系统来满足它们互联的需求,而这些基于32位的嵌入式系统品种多样,绝大多数都价格低廉,能够为企业和家庭的网络选择提供更加廉价而多样的方案。

时至今日,嵌入式系统的应用已经从微至著,广泛分布。但它还在不断地更新发展,其构成的计算机也会变得更小巧,更灵敏,更高效,更智能,相信在未来的某一天,会如Mark Weiser所说的那样:“它们会在墙上,在手腕上,在口袋里,就像手写纸一样,随用随取,伸手可得。”

三、总结和心得

嵌入式系统作为一门计算机开发的学科,有着不同于传统通用计算机系统的特点和概念,具有独特长处。同时它的应用遍布于电子消费、通信工程、工业控制和军事国防等多种领域,其发展前景是非常广阔的,是一门十分值得深入学习和研究的学科。

通过一个学期的学习,我了解了许多嵌入式实时操作系统的应用知识,比如“任务的管理和调度”、“同步、互斥与通信”以及“中断和时间管理”等全新的理论知识,同时也通过多次的实验操作理解了对嵌入式系统软硬件工作方式和应用。所谓温故而知新,通过撰写课程报告,我对嵌入式系统的各个方面有了新的了解,大大提高了对这门学科的兴趣,在今后的学习中,我也会更加深入地去学习这门课程的相关内容,丰富自己的知识领域,开阔眼界,掌握更多的技能,为自己将来的发展做好铺垫。

参考文献:

甄鹏------《嵌入式实时Linux的移植及应用技术的研究》2008,(02)

郭军------《基于Petri网的嵌入式系统高层级设计方法与技术研究》2007,(04)

吴敏------《基于嵌入式的家庭网关控制平台的研究与设计》2007,(05)

刘青云;焦铬-------《嵌入式Web Service模型实现及应用》2019,(01)

田婧---------《嵌入式μCOSⅡ在DSP中的移植与应用研究》2007,(04)

附录

附查重报告:

嵌入式操作系统通用性 第3篇

实时嵌入式数据库 (Real-Time Embedded DataBases, 以下简称RTEDB) 主要用于对可靠性和性能有较高要求的嵌入式系统, 如网络通讯系统、工业控制系统、机载飞控与导航系统等。与普通嵌入式数据库相比, RTEDB不仅具有体积小、可移植性好、直接与应用集成等嵌入式数据库的普遍特性, 而且为了满足实时性要求, 通常采用内存数据库, 并且对索引、事务管理等数据处理策略进行了优化。

上述嵌入式系统中的数据库除了要满足实时性要求外, 往往还需要具备高可用性 (High Availability) 。高可用性数据库能够不间断地运行, 不因软硬件故障而停止服务或丢失数据。本文依据RTEDB的高可用性需求以及嵌入式系统环境和RTEDB本身的特点, 从基本思想和策略设计两个方面对基于RTEDB的高可用性策略进行了研究。

1 嵌入式数据库高可用性策略

1.1 总体架构

大型数据库系统, 如Oracle等, 运用了多种技术来保证其高可用性, 包括RAID技术、集群技术、数据库复制、硬件复制等。上述方法中, RAID、数据库复制以及硬件复制技术需要大量冗余的硬件和额外的软件服务作为支撑, 对于体积和资源都受限的嵌入式系统而言难以接受。相比较而言, 集群技术的思想更适合嵌入式系统。高可用性实时嵌入式系统通常由多个计算单元或模块组成, 相互之间通过数据总线或网络进行连接。在多个计算单元或模块部署数据库, 可以很方便地组成数据库集群, 而且不需要额外的硬件和集群管理软件。在此基础上, 嵌入式数据库可以自己管理数据库集群, 形成多个数据库之间的主备或互为备份的关系, 保证数据库服务和数据的高可用性。

1.2 配置方案

基于集群的高可用性方案有主备模式、互备模式等多种配置方案。由于实时嵌入式系统通常对并行性的要求较低, 为了节省资源, RTEDB可采用主备模式实现高可用性。

在该模式中, 一个数据库应用同时具有多个数据库实例, 每个数据库实例都拥有相同的功能和数据拷贝。主数据库实例直接为用户提供数据库服务, 执行用户提交的数据库事务请求;备份数据库实例在主数据库实例正常的情况下不向用户提供服务, 只作为主数据库实例的备份, 一个主数据库实例可以同时对应多个备份数据库实例。

主数据库实例和各个备份数据库实例分别部署在不同的物理空间, 比如部署在不同的计算单元或模块上, 相互之间通过调用内部总线或者网络通信机制进行通信, 保持数据一致, 互为镜像。当主数据库实例所在的硬件或软件出现故障, 造成主数据库实例失效, 备份数据库实例可以在短时间内发现主数据库实例失效, 并自动取代主数据库实例, 继续为用户提供服务。通过以上配置, 用户便能够不间断地使用数据库服务, 保证了数据库系统的高可用性。

1.3 关键技术

高可用性RTEDB的关键问题在于如何保持位于不同计算单元或模块的数据库实例完全一致, 并可以相互替代。数据库实例的一致性可以通过数据库复制的方式来实现。数据库复制实际上是对事务的复制, 其过程如图1所示, 当用户向主数据库实例发起数据库事务T时, 主数据库实例收到T后, 不仅要自己执行事务T, 还要将T复制到所有的备份数据库实例, 让所有的备份数据库实例均执行事务T。各个备份数据库实例自己执行事务T并将提交的结果如成功、失败或者超时等反馈给主数据库实例, 只有当所有备份数据库实例执行事务T均返回成功时, 主数据库实例的事务T才被确认为执行成功并进行提交。这样, 通过事务的复制, 主数据库实例将自己的更新复制到了所有的备份数据库实例, 确保了数据更新在主、备两端同时成功或失败, 从而保持了数据库实例的一致性。

在数据库复制过程中, 除了要考虑如何保持数据库实例一致, 还需要考虑如何保证该过程的实时性。高可用性策略的实时性保证面临的最大挑战是主、备数据库实例间通信延迟的不可预测, 这样, 需要用相应的超时设置来保证整个数据库复制过程的执行时间可预测, 并能够将超时信息及时通知给用户。

本节通过对现有高可用性技术的分析, 明确了RT-EDB高可用性策略的基本思想, 为RTEDB高可用性策略设计提供了指导。

2 基于RTEDB的高可用性策略设计

2.1 数据库复制过程

依据数据库复制的思想, 数据库实例保持一致的过程实际上是主数据库实例不断地将自身的事务操作复制给备份数据库实例并共同执行的过程。该过程划分为主、备数据库实例的初次数据复制和事务复制两个子过程。完整的数据库复制过程如图2所示。其中, 初次数据复制只发生在备份数据库实例创建之初, 而事务复制则伴随着主、备数据库实例的整个生命周期。

在主数据库实例已创建和启动后, 当有新的备份数据库实例加入时, 首先要进行主、备数据库实例间的初次数据复制。在此过程中, 主数据库实例将现有数据复制到备份数据库实例中, 使主、备数据库实例间的数据保持一致。

初次数据复制的过程见图2。主数据库实例首先发起一个事务T1, 专门用于管理数据复制。同时, 备份数据库实例也发起一个事务T2用于管理该过程, 并等待主数据库发送数据。T1开始后, 主数据库开始读取现有的数据, 并向备份数据库实例发送。备份数据库实例收到主数据库实例发来的数据, 写入自己管理的数据库中。主数据库的数据发送完毕, 开始等待备份数据库实例对数据复制的确认。当备份数据库实例数据库写入完毕, 提交事务T2, 若T2提交成功, 则向主数据库实例发送对数据复制的确认。主数据库实例收到确认信息, 提交事务T1, 此时, 数据库实例间的初次数据复制完成。

在上述过程中, 主数据库实例的事务T1要等到备份数据库实例的事务T2提交成功后才进行提交, 确保了数据从主数据库实例正确地复制到了备份数据库实例。

主、备数据库实例在初次数据复制过后, 主数据库实例继续进行正常的事务操作。为了继续保持主、备数据库实例的一致性, 还要不断地进行事务复制。事务复制有同步事务复制和异步事务复制两种方式。同步复制的过程见图2, 其过程与初次数据复制基本相同:主数据库实例收到用户的事务请求T后, 在执行的同时, 将T通过通信的方式复制到各个备份数据库实例, 然后等待所有的备份数据库实例执行T并返回执行成功, 当所有的备份实例都执行T成功后, 主数据库实例才向用户返回T执行成功。

同步事务复制可以完全保证主、备数据库实例间的数据一致。对用户而言, 由于要进行数据传输和等待备份数据实例执行完毕, 事务处理速度会受到影响, 但对于影响整个系统成败的关键任务而言, 仍然是十分必要的。并且, 对于非关键任务而言, 还可以采用异步事务复制。与同步事务复制相比, 异步事务复制中主数据库实例的事务T不需要等待所有备份数据库实例执行T成功即可进行本地提交, 备份数据实例也各自提交事务T。异步事务复制不能够保证主、备实例完全一致, 但可以提高性能, 减少资源消耗, 对于非关键任务也是可以接受的。

2.2 实时性

高可用性RTEDB数据库复制过程的实时性也非常关键。为了保证实时性, 实时嵌入式系统中的所有关键任务都有严格的截止期限制, 在高可用性RTEDB中, 主数据库实例和备份数据库实例的本地事务处理的实时性由RTEDB的其它功能模块保证。对于高可用性策略而言, 需要考虑的是如何在主数据库实例和备份数据库实例之间通信延迟不可预测的情况下实现两者之间数据交换和处理过程执行时间的确定性。

为此, RTEDB的高可用性策略需要加入相应的超时机制对整个数据复制过程进行控制。该超时机制包括3个基本的超时设置:

(1) 初次同步超时时间INITIAL_TIMEOUT。INI-TIAL_TIMEOUT用于控制整个数据库实例初次数据复制过程, 若初次数据复制耗时超过INITIAL_TIMEOUT, 则主数据库实例认为该备份数据库实例无效, 停止与该备份数据库实例进行数据复制, 同时向数据库报告初次数据复制超时。

(2) 事务复制超时时间REPLICA_TIMEOUT。REPLICA_TIMEOUT用于控制同步事务复制过程中主数据库实例和备份数据库实例间的事务复制。若主数据库实例发送事务T或者备份数据库实例接收T这一过程的时延超过了REPLICA_TIMEOUT的限制, 对于前者, 主数据库实例丢弃并回滚事务T;对于后者, 备份数据库实例丢弃事务T并通知主数据库实例, 主数据库实例回滚事务T。最后由主数据库实例通知用户事务T执行超时。

(3) 同步等待超时时间SYNC_TIMEOUT。SYNC_TIMEOUT用于控制主数据库实例等待备份数据库实例执行从主数据库实例收到的事务T的信息反馈时间。主数据库实例不会一直等待备份数据库实例对事务T的执行, 若超过了SYNC_TIMEOUT所规定的时间, 即使备份数据库实例执行事务T成功, 主数据库实例同样会认为事务T在备份数据库实例执行失败, 回滚事务T的操作, 通知用户事务T执行超时。

一旦在主数据库实例与某个备份数据库实例通信过程中触发了上述3种超时设置中的一种, 主数据库实例可以做出相应的处理, 既可以向用户报告, 也可以认为该备份数据库实例已失效, 并将其排除在整个高可用性框架之外。这样, 整个数据库复制过程的各个操作都有严格的截止期限制, 从而可预测其执行时间。

需要注意的是, 上述超时机制只适用于同步事务复制方式, 本文所设计的高可用性策略对于异步事务复制方式不提供实时性保证。

2.3 主、备数据库实例切换

主、备数据库实例通过心跳机制进行定期联络, 一旦备份数据库与主数据库实例的联络超时, 备份数据库便认为主数据库实例已经失效。若只有一个备份数据库实例, 该实例自动成为新的主数据库实例, 并向主数据库实例发送一个信号, 以“杀死”主数据库实例, 即使主数据库实例实际上还在运行, 也将被强行停止。

当有多个备份数据库实例时, 则需要一种竞争机制来决定选择哪个备份实例作为新的主实例。在本文所设计的高可用性策略中, 备份数据库实例的竞争通过比较各个备份数据库实例的事务序列号来进行, 事务序列号是已提交的事务标识, 由主数据库实例创建和记录。新提交的事务序列号一定大于之前提交的事务序列号, 并由主数据库实例在事务复制时发送到各个备份数据库实例。当有多个备份数据库实例竞争成为主数据库实例时, 数据库会选择当前事务序列号最大的, 即数据最新的备份数据库实例为主数据库实例。若多个备份实例的事务序列号均为最大值, 则在其中随机选择一个, 然后“杀死”主数据库实例。

2.4 可移植性

RTEDB作为嵌入式软件, 应当具有较强的可移植性, 以适应不同的软硬件平台。由于高可用性RTEDB需要主、备数据库实例间进行可靠的通信, 因此, 高可用性策略应当具有较好的针对通信方式的可移植性。

高可用性通信的移植性可通过通信抽象层实现, 通信抽象层介于高可用性功能与底层通信功能之间, 屏蔽了底层通信的细节, 对上层而言, 其功能及相关接口固定, RT-EDB调用通信抽象层即可实现数据的发送、接收等功能。对于底层通信而言, 则需要依据通信抽象层的要求以及实际使用的通信方式, 进行相应的移植工作。这样, 对于当底层通信机制发生变化时, 只需要修改底层通信功能的实现方式, 而不需要对高可用性功能本身进行开发工作。

3 结语

某些嵌入式系统中某些关键的数据应用需要不间断地运行和提供服务, 不允许发生停止服务和数据丢失等情况, 这就要求实时嵌入式数据库具备高可用性。本文在分析了现有大型数据库的高可用性技术的基础上, 提出了一种针对实时嵌入式数据库的高可用性策略。该策略基于大型数据库的集群技术, 采用主备数据库实例模式, 主备数据库实例间采用数据库复制的方式保持数据一致性, 并通过超时机制保证整个数据库复制过程的实时性。在主数据库实例失效, 切换到备份数据库实例时, 采用了记录和比较事务序列号的方法, 保证数据最新的备份实例成为主实例。此外, 还对高可用性功能的可移植性进行了考虑。

摘要:针对实时嵌入式数据库对高可用性的需求, 分析了大型数据库的高可用性解决方案, 并依据嵌入式系统的特点, 确立了实时嵌入式数据库高可用性策略应遵循的基本思想和关键技术。提出了一种适用于实时嵌入式数据库的高可用性策略, 该策略基于集群技术, 采用主备模式, 通过数据库复制的方式确保主、备数据库实例之间的数据一致性, 并对数据库复制过程设置超时机制, 使其具备实时性, 并对主、备数据库实例的切换方式和高可用性的可移植性进行了设计。

关键词:实时嵌入式数据库,集群技术,高可用性策略

参考文献

[1]万玛宁, 关永.韩相军.嵌入式数据库典型技术SQLite和Berkeley DB的研究[J].微计算机信息, 2006 (2) .

[2]史恒亮, 白光一.嵌入式数据库的现状和发展趋势[J].计算机系统应用, 2010 (2) .

[3]于雪平, 孟丹.数据库应用的高可用性及实现技术[J].计算机应用研究, 2004 (5) .

嵌入式操作系统程课程设计报告 第4篇

一、实习任务和目的„„„„„„„„„„„„1

二、实习基本要求„„„„„„„„„„„„„1

三、实习题目„„„„„„„„„„„„„„„1

四、实习地点„„„„„„„„„„„„„„„1

五、实习内容„„„„„„„„„„„„„„„3

六、实习总结、心得体会„„„„„„„„„„8

七、参考资料„„„„„„„„„„„„„„„9

0

一、实习的任务和目的:

本次实习的目的是在学生已掌握了嵌入式操作系统的知识、对当前嵌入式操作系统的主要种类和应用领域有较清晰的概念的基础上,以嵌入式LINUX操作系统教学内容为指导,以S3C2410经典实验箱为平台,使学生掌握配置、裁剪、移植和维护嵌入式LINUX操作系统的技能和相关理论知识,具备一个初级嵌入式LINUX系统程序员的综合技能。

本次实习的任务是通过教师对嵌入式LINUX的配置、裁剪、移植以及文件系统的移植等内容的讲解,让学生掌握如何搭建嵌入式开发环境、嵌入式LINUX系统移植、文件系统移植以及简单的驱动程序的开发。

二、实习基本要求:

1、了解嵌入式操作系统技术前沿、应用领域、发展趋势及相关领域研究成果;

2、熟悉嵌入式操作系统的特点、分类、基本概念;

3、熟悉主流实时操作系统。深入了解嵌入式LINUX,包括系统配置、裁剪、移植;

4、熟悉并掌握嵌入式文件系统的建立、移植;

5、以嵌入式处理器器S3C2410为例,掌握嵌入式LINUX驱动程序开发的一般方法。

三、实习题目:

1、复习LINUX系统基本操作,常用命令;

2、嵌入式LINU开发基础知识;

3、嵌入式LINUX开发环境的建立;

4、Bootloader移植;

5、LINUX内核的配置、裁剪;

6、LINUX内核移植与编译;

7、建立根文件系统;

8、模块方式驱动程序设计;

9、中断、LED驱动程序设计。

四、实习地点:

应用技术学院五楼四机房。

五、实习内容:

第一部分 嵌入式LINU开发基础知识: 1.1 嵌入式LINUX简介

嵌入式系统的定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,它的主要特点是潜入、专用。本次实训的平台是在LINUX下的ubuntu系统上进行的。

1.2 嵌入式LINUX开发平台简介

本次实训的需要一台主机及一块开发板,它们需要满足一定的硬件要求,主机的硬件要求是:有一个25针的并口接口,它用来连接JTAG连线,有一个9针的串口接口,支持网络,至少20GB的硬盘,用到的开发板是s3c2410,它有如下的部件:64MB SDRAM,1MB NOR Flash,64MB NAND Flash,两个网卡,5个串口(内置3个,外扩2个),音频输入输出。2.5寸IDE接口,标准SD/MMC卡座,GPIO按键,外接I2C接口的实时时钟(RTC)芯片。1.3 嵌入式LINUX开发流程

(1)在主机上编译Bootloader,然后通过JTAG烧入单板,(2)在主机上编译嵌入式LINUX内核,通过Bootloader烧入单板或直接启动,(3)在主机上编译各类应用程序,单板启动内核后通过NFS运行他们,经过验证后再烧入单板。1.4 嵌入式LINUX开发环境的建立

开发环境的搭建:硬件开发环境的搭建很简单,将主机与目标板通过JTAG、串口线(接单板上的串口0)、网线(接单板上的网卡0)连接起来,将各类设备连接到目标板上即可,软件的搭建环境相对要复杂的多,时间也要得多,首先第一步需要移植U—boot,然后再来烧写LINUX内核,再创建根文件系统,最后才可以来写相应的驱动程序来进行开发的!第二部分 嵌入式LINUX系统构建:

2.1 Bootloader移植

u-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, u-boot不仅仅支持嵌入式LINUX系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。u-boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。移植过程:

在主机上创建一个文件夹,把以下四个已下载的文件复制到里面,这四个文件分别为:

u-boot.bin,----LINUX操作系统启动的bootloader;uImage,---LINUX操作系统内核;

root.cramfs,----根文件系统;yaffs.tar.bz2,----应用程序压缩包。运行sjf2410-s命令如下:sjf2410-s /f:u-boot.bin。然后按回车,等待烧写完成后,设置开发板的地址与服务器的地址,命令如下:设置本机服务器IP地址:(根据具体主机环境更改IP)setenv serverip 192.168.1.113,设置ARM设备IP地址:(随意设置成与上面主机同一网段IP即可),setenv ipaddr 192.168.1.199,保存变量设置:saveenv。

2.2 内核裁剪与移植

LINUX本次实验目录下存放着已经修改好的博创经典2410平台的内核源码包,将该源码包拷贝到宿主机LINUX系统中,解压至本次实验目录,配置编译生成内核uImage文件烧写到ARM设备中。在内核根目录下,用命令make menuconfig进入配置界面,对系统进行裁剪,如下:

选择硬件系统

配置LCD驱动

网卡驱动

配置NANF Flash驱动

配置文件系统

然后运行 bootm 启动内核即可。2.3 创建根文件系统

解压busybox源码后,进入busybox源代码目录,打开Makefile,修改两个地方,分别是在Makefile文件中的CROSS_COMPILE=后面添加上arm-LINUX-这一行以及ARCH ?=后面改成arm.然后在busybox根目录下使用命令make menuconfig进入配置界面进行配置,如图:

Busybox截图

退出后,使用命令make,make install。用shell脚本创建根文件系统的目录结构,并在想要运行根文件系统的地方运行脚本,需要创建一个文件夹rootfs,里面包括了一些LINUX下的基本的文件。还需要把busybox源码目录下的/etc 的内容拷贝到此处创建的文件夹的etc下,修改拷贝过来的profile文件,修改初始化文件inittab和fstab,修改初始化的脚本文件,init.d/rcS,创建一个空的mdev.conf文件,在挂载根文件系统时用到,再把本机上的passwd,shadow,group文件拷贝过来,把busybox默认安装目中的文件全部复制到这里的rootfs中,会发现多了LINUXrc->bin/busybox,这是挂载文件系统需要执行的,这时,在rootfs目录下,使用命令cp-rvf /rootfs/busybox-1.12.2/_install/*./,,到此,就用busybox创建了一个基本的文件系统。

第三部分 设备驱动程序设计:

3.1 模块方式驱动实验

在这里,需要有两个程序,一个驱动程序,一个用户程序,驱动程序通过用户程序来调用,完成基本的读写以及注册设备号等,在本程序中,用户程序非常简单,驱动程序的核心部分是如下代码所示:

static struct file_operations demo_fops = { owner: THIS_MODULE, write:demo_write, read: demo_read, ioctl: demo_ioctl, open: demo_open, release: };demo_release, 其他的所有程序都是在这个基础上延伸出来的。还有一个注册设备号的函数如示:

register_chrdev(0, DEVICE_NAME, &pxa270_fops);假设本驱动程序的源代码名字是s3c2410_led.c编译驱动程序模块的方法是把驱动程序复制到内核目录下的drivers/char子目录下,在drivers/char/Makefile中增加一行:obl-m +=s3c2410_led.o,然后在内核根目录下执行make modules.就生成drivers/char/s3c2410_led.ko,再把它复制到开发板上,就可以使用insmod s3c2410_led.ko,rmmod s3c2410_led.ko了,此时,就可以执行本用户程序了,结果如下:

3.2 LED驱动实验

本实验的主要目的是写一个驱动程序来点亮开发板上的一颗LED灯。主要的程序核心还是集中在怎么给led灯引脚一个电平以及用户程序中ioctl程序的使用。程序的核心代码如下:

static struct file_operations s3c24xx_leds_fops = {.owner =

THIS_MODULE,.open

=

s3c24xx_leds_open,.ioctl =

s3c24xx_leds_ioctl, };static int s3c24xx_leds_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg){

if(arg > 4){

return-EINVAL;

}

switch(cmd){

case IOCTL_LED_ON:

s3c2410_gpio_setpin(led_table[arg], 0);

return 0;

case IOCTL_LED_OFF:

s3c2410_gpio_setpin(led_table[arg], 1);

return 0;

default:

return-EINVAL;

} } 编译好模块后,复制到开发板目录下即可在开发板下执行,点亮led灯。

命令led_test 1 off/on,如此,就可以关闭或点亮一个led灯了!3.3 中断按键控制LED实验 核心代码如下:

注册中断:request_irq(button_irqs[i].irq, buttons_interrupt, button_irqs[i].flags,button_irqs[i].name,(void *)&press_cnt[i]);注册备:register_chrdev(BUTTON_MAJOR, DEVICE_NAME, &s3c24xx_buttons_fops);中断函数:

static irqreturn_t buttons_interrupt(int irq, void *dev_id){

volatile int *press_cnt =(volatile int *)dev_id;

*press_cnt = *press_cnt + 1;/*

ev_press = 1;

wake_up_interruptible(&button_waitq);

return IRQ_RETVAL(IRQ_HANDLED);} 同理,把它的目标文件放到内核根目录下的drivers/char编译后,把生成的模块文件复制开发板下,即可完成相应的任务,通过按键可以来控制led灯了,同时,可以通过命令cat /proc/devices, cat /proc/interrupt来查看设备及中断的注册情况!

六、实习总结、心得体会:

通过为期将近几周的嵌入式操作系统实习,我收获颇深。这次实习虽然短,可是收获很大,感觉平时上课学到的东西都没有这几天学到的多。正所谓:“实践是检验真理的唯一标准”。这次实习可以形象的概括为:“山重水复疑无路,柳暗花明又一村”。只有自己经历过才会真正的懂,书本知识还远远不够!

此次嵌入式操作系统实习给我最深的体会就是:理论+细心+实践才能在实际 生产中体现所学知识的价值。

在嵌入式行业发展如此快速完善的今天,理论与细心与实际的完美结合才能让自己在专业领域占有一席之地。在实习中,我初步了解了嵌入式处理器S3C2410的工作原理、也加深了对嵌入式处理器S3C2410的认识;也见识了关于嵌入式处理器的一些工作方式等。

几周的嵌入式操作系统实习结束了,做了好几个小实验,有成功也有失败,然而终究还是学会了很多东西。在整个实习期间,我体会到了自己的进步,并且从中也体会到了它的快乐。实习也让我明白了:第一,通过实践真正觉得自己可以做些什么了有点存在的小成就感;第二,通过嵌入式操作系统实习,加强了我们的动手实践能力和设计创新精神。作为信息时代的大学生基本的动手能力是一切工作和创造的基础和必要条件。第三,在嵌入式操作系统实习的这些日子里,大家的团队精神得到了很大的加强,闭门就会造车那是不可能的事情。

在为期两周的实习当中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,运用所学的知识,一步一步的去探索,是完全可以解决遇到的一般问题的。本次实习的目的主要是:使我们嵌入式操作系统及LINUX相关操作有一定的感性和理性认识,培养和锻炼我们的实际动手能力。使我们的理论知识与实践充分地结合,作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问题的应用型技术人才,为以后的顺利就业作好准备。此次实习学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。在此,感谢老师及其他老师的细心指导,也同样谢谢其他各组同学的无私帮助!

七、参考资料:

1、雅默著.构建嵌入式LINUX系统[M].北京:中国电力出版社.2004年

2、孙琼著.嵌入式LINUX应用程序开发详解[M].北京:人民邮电出版.2003年 3、2410经典实验指导书3.2 北京博创兴业科技有限公司2410经典实验箱配套教材

4、韦东山著.嵌入式LINUX应用开发完全手册

嵌入式操作系统通用性 第5篇

在嵌入式系统的使用过程中,或者在软件开发过程中,系统软件可能经常被损坏。开发人员需要能方便地把嵌入式操作系统、文件系统和用户应用程序下载到特定的硬件平台。目前,通常的做法有:

1)使用专用的仿真器。由于不同的硬件平台都需要不同的仿真器,比如ARM,MIPS等,所以这种方法不仅昂贵,而且也不通用方便。

2)在Bootloader中增加下载的功能。当采用嵌入式Linux、Windows CE等较为复杂的操作系统时,一般需要设计一个独立的Bootloader程序,对系统进行初始化并引导嵌入式操作系统。但由于不同硬件平台的差异,会造成软件开发和移植困难,如果还要实现从U盘或者SD卡上更新目标文件,难度就更大。

所以,笔者针对这两种方法的不便,提出了一种通用的更新机制——基于Bootloader的双系统更新机制。该更新机制是指在嵌入式系统中包含了两个操作系统的映像,一个用于正常工作,而另一个用作软件更新或者存储器分区管理等。

1 基础知识

1.1 嵌入式软件系统架构

嵌入式软件平台由以下几部分组成:Bootloader、嵌入式操作系统内核()和文件系统()。其中文件系统是嵌入式系统软件平台占用存储量最大的一部分,也是与用户开发最相关的一部分。它存储了系统配置文件、系统程序、用户应用程序等。文件系统包括根文件系统映像(例如ramdisk.image.Gz)以及其他类型的文件系统(例如jffs2、cramfs等)[1,2],如图1所示。

1.2 Bootloader

Bootloader是嵌入式软件中研究较多的领域。

1)Bootloader的开发

Bootloader的种类有U-BOOT,BLOB和RedBoot等,基本都支持SCC/FEC以太网、OOTP/TFTP引导、IP和MAC的预置功能[3,4]。其中U-BOOT是功能比较强大,应用较广泛的引导程序,本文中基于STB810的系统也采用U-BOOT。U-BOOT源代码在sourceforge网站的社区服务器中,Internet上有一群自由开发人员对其进行维护和开发。

2)Bootloaderd的移植

Bootloader是依赖于硬件而实现的,每个目标板的硬件配置都不完全相同,因此Bootloader程序也都不会完全一样。关于Bootloader的移植已有大量的研究成果[5,6,7,8]。

除此以外,还有很多成果是基于Bootloader的软件更新机制的[9,10]。其中在参考文献[9]中,提出建立双Bootloader机制实现从SD卡升级软件。

2 系统方案设计

目前,嵌入式系统一般都具有能稳定工作的操作系统,例如Linux,WinCE,uCOS,p SOS等。这些系统根据特定的硬件平台做了性能优化,并且支持的接口丰富、配置完整。所以,可以在不扩充Bootloader的情况下,通过增加一个裁减后的小系统来支持串口、USB、SD、网络接口(http、tftp协议等)等不同方式地下载升级。这样设计,不仅使用方便,而且减小了开发和移植的难度,提高了系统安全性。

具体方法描述如下:修改Bootloader,在系统启动前的一段时间内(通常为0.1~3 s)检测特定条件(通常是串口的按键,或者是特殊按键组合),如果没有按键,正常启动主系统;当有指定的键按下,则进入剪裁后的小系统,从被支持的接口读目标文件并写入FLASH,从而更新主系统。流程图见图2,系统空间分配表见表1。

在剪裁后的小系统中还可以增加分区管理和格式化等命令,方便更新操作。也可以利用操作系统中的LCD驱动以图形方式显示操作页面和操作进度提示等,使方案具有良好的人机接口。

3 基于STB810的实现

STB810是NXP公司的机顶盒产品方案,主芯片PNX8550包含有一个MI/s的CPU和两个TriMedia的DSP处理器,已经移植了嵌入式Linux操作系统,相关驱动也已经基本完成,比如网络、USB、SD、IDE等,应用软件包中包含基本的应用演示程序,比如媒体播放、GUI应用等。系统中也有一个Bootloader,但该Bootloader的功能较弱。所以,在本方案中采用了U-BOOT作为替代,源代码易于获取。

上节已介绍了Bootloaderd的修改。本节主要介绍操作系统的剪裁。而剪裁后的系统使用gzip压缩。

Linux中,一个完整的文件系统主要由/bin,/sbin,/dev,/proc,/etc这几个必不可少的目录和其他一些目录组成(如:/usr,/home,/root,/boot,/lib,/mnt,/tmp,/var等)。

3.1 文件系统分析

为了裁剪文件系统,有必要了解整个文件系统包含的内容及其启动过程。

配置文件/etc/inittab中的指令进行一些初始化工作,如IDE、SCSI、NETWORK、AUDIO、设置系统时钟、设置主机名等;挂载一些必要的文件系统:/proc,/sys,/proc/bus/usb;建立设备节点;网络设置等。

此外,还有动态设备进行管理,当新增加一个设备时,它会在/dev下创建该设备的节点,动态分配设备的主设备号、次设备号;当设备拔下来后,则会删除以上建立的对应东西。例如当需要从U盘更新软件时就可以不剪裁。插入U盘,hotplug自动加载需要的模块,udev创建相应的/dev/sda1等节点,hotplug向HAL发消息,HAL收到消息后,根据配置文件,运行fstab-sync来修改fstab,创建/media的子目录作为挂载点。

另外,在/opt目录中,主要是飞利浦的一些应用程序,如音视频播放等。/lib目录中,有文件系统的一些基本的库和PNX8550芯片相关的一些必要模块。在/usr目录中,有可执行命令、应用程序(音视频播放等)所需要的DirectFB库文件,以及一些测试程序。这些程序或者库文件在更新机制中基本不使用,可以剪裁。

3.2 文件系统编译

文件系统中占空间比较大的主要是/bin,/sbin,/usr/bin,/usr/sbin中的一些可执行文件、库文件以及一些模块。这部分通常通过Busybox来编译,重新配置生成/bin,/sbin,/usr/bin,/usr/sbin中的可执行文件,以减小这些可执行文件的大小。注意,在编译配置中不用动态模块库,只用静态模块。

文件系统采用initramfs,根文件系统(Rootfs)采用Busybox编译成vmlinux,再用gzip压缩,命名为tool.raw(剪裁后的小系统),将Bootloader映像文件命名为boot.raw,将主Linux系统(正常工作时使用的系统)命名为linux.raw,这样Flash的空间映像见表2。

4 结论

基于Bootloader的双系统更新机制是利用了一个裁减的小系统,方便实现各种接口的软件更新机制和存储器分区管理功能。当主文件系统损坏时提供系统恢复能力,提高了系统的安全性,但又不增加成本,并可大大节省软件开发和移植的工作量。

摘要:在嵌入式系统的使用过程中,或者在软件开发过程中,系统软件可能经常被损坏。开发人员需要方便地把嵌入式操作系统、文件系统和用户应用程序下载到特定的硬件平台。目前,通常的做法是使用专用的仿真器,或者在Bootloader中增加下载的功能。针对这两种方法的不便,提出了一种通用的更新机制——基于Bootloader的双系统更新机制,并在飞利浦STB810平台上实现。

关键词:嵌入式系统,更新机制,启动引导程序

参考文献

[1]王亚军,刘金刚.Linux运用于嵌入式系统的技术分析[J].计算机应用研究.2005,22(5):102-104.

[2]詹荣开.嵌入式Bootloader技术内幕[EB/OL].(2006-09-20)[2010-12-20].http://www-128.ibm.com/developerworks/cn/linux/l-loader/.

[3]陈渝,李明,杨晔.源码开放的嵌入式系统软件分析与实践[M].北京:北京航空航天大学出版社.2004.

[4]张和君,张跃.基于GNU工具的嵌入式Bootloader设计与开发[J].计算机工程,2006(8):277-279.

[5]王东,李哲英.U-Boot在S3C44B0上的移植方法[J].北京交通大学学报,2005(4):76-80.

[6]孙棣华,赵君杰.U-Boot引导程序可视化配置[J].计算机应用,2010,6:177-197.

[7]杨洁,赵刚.嵌入式系统中Bootloader的编译与移植[J].四川大学学报:自然科学版,2007(8):835-839.

[8]王亚刚.嵌入式Bootloader机制的分析与移植[J].计算机工程,2010,3(6):267-269.

[9]王恒,王颋,王泉,等.基于Bootloader的可靠嵌入式软件远程更新机制[J].微计算机信息,2007,12(23):57-59.

嵌入式操作系统通用性 第6篇

水电厂计算机监控系统对于诸如调速、励磁、保护等子系统的接入多采用直接的I/O信号连接为主、现场总线形式的通信连接为辅的方式。由于水电厂计算机监控系统的核心控制器多采用通用的PLC,缺乏足够的对外通信扩展能力,因而在监控系统现地设备设计时,需要额外增加通信管理装置以实现和不同子系统间的现场总线形式的互联。随着计算机技术和网络信息技术的进一步发展,电厂分层分布式计算机监控系统中,上位机系统通过以太网互联,现地控制单元(由PLC或其他智能控制设备[1]构成)广泛采用现场总线连接[2]。计算机监控系统内通信网络的多样性,对通信管理装置的要求越来越高。近几年开发的电厂通信管理装置摒弃了可靠性差的通信前置机(工业级PC即一体化工控机),采用可靠性高、适应网络及现场总线技术发展、运行维护简便的通信管理装置。

目前,实际应用的通信管理装置在物理接口上对外提供了诸如以太网、CAN现场总线、RS232/RS485等多种连接形式,在软件方面依托于多任务的嵌入式系统对各个接口独立编程从而实现通信互联。由于目前应用的通信管理装置需要在上位机安装目标机的虚拟环境(占很大的内存)和组态的调试界面需要在虚拟环境下进行等事项,存在着占用上位机很大内存和加大现场运行人员操作难度的缺点。目前应用的通信管理装置在嵌入式系统的驱动软件编程方面,需要由专业的研发人员针对不同厂家的不同产品所支持的软件规约来进行源码级的程序编写、编译及下载。因而,设计研究一种适应网络及现场总线技术发展、运行维护简便(不需要二次开发)的通用通信管理装置称为迫切的需要。本文的通用通信管理装置正是基于此设计理念研究的。该装置采用嵌入式控制PC、独立电路设计的通信通道,充分提高了其工作可靠性;该装置组态采用梯形图进行用户应用层的通信规约编程的手段(内嵌多种规约),进而避免了二次源码级的编程及下载,降低了装置的使用难度;该装置嵌入式控制PC基于Linux操作系统,编写包含适应目标机的编译解释程序的应用软件使其在Windows系统下进行,这样大大增强了该通信管理装置的接口能力和使用灵活性(实现应用软件的跨平台应用),使其成为真正意义上的可供用户直接使用的通用通信管理装置。

1 装置硬件设计

1.1 基本原理

该通用通信管理装置采用工业级PC104嵌入式控制PC作为主处理器,利用嵌入式Linux作为系统软件,对外提供8个独立的标准串行接口、1个以太网接口和1个CAN现场总线接口。其整体硬件结构如图1[3]。

CPU采用盛博的基于X86的CPU模块,该模块提供标准ISA总线,经过CPLD译码,产生CAN控制器、串口控制器、地址芯片等的片选信号。CPLD选用ATELA公司的EPM3256,该器件具有256个宏单元、144个引脚,可以满足设计需要。CAN控制器采用SJA1000芯片,CAN收发器采用82C250。CAN网对外的接口采用光电隔离。电源采用APC086-005A型电源模块,输入为220VDC/AC,输出为5VDC/4A。具体电路框图如图2所示。

1.2 关键技术

该装置硬件具有以下关键技术:

(1)核心采用了高度集成、自栈结构、IBM-PC/AT兼容的PC104嵌入式控制PC,具有体积小、功耗低、工作温度宽的特点并且每个通讯通道均采用独立的中断和收发电路设计具有极高的可靠性;

(2)嵌入LINUX操作系统作为软件平台,充分利用了增强型80X86 CPU的任务切换机制,实现了真正的多任务环境,使运算速度及通信处理能力具有可靠保证;

(3)采用固态电子盘作为存储介质,消除了硬盘转动部件的不可靠性;具有“看门狗”定时器,保证了嵌入式控制PC的运行可靠性;

(4)具有8路标准串行接口、1个CAN现场总线接口(支持CAN2.0B协议)和1个以太网接口(10M/100M),各个通讯接口均能够独立编程,支持多种连接方式,能灵活应用于各种实际需求;

(5)支持在线自诊断、自恢复功能;支持通过局域网进行远方诊断和维护。

2 装置软件平台

通过对应用环境和硬件结构的分析,该装置采用嵌入式Linux作为开发环境,软件平台具有多任务、小内核、运行稳定、开发操作便捷等特点。Linux系统源码公开且内核单一,操作系统中所有的系统相关功能都被封装在内核中,可以动态装入和卸载内核中的部分模块,因而修改和裁减内核很方便。

裁减后的Linux内核由5个部分组成:进程管理、内存管理、文件系统管理、进程间通信和网络接口[4]。本通信管理装置采用的嵌入式Linux系统的构架如图3。

最底层是硬件层,硬件的上面是Linux内核,它是操作系统的核心部分。Linux内核为硬件管理提供一致的方式,为应用程序提供统一的接口,为此内核被分为两个部分:底层接口层和高层抽象层。其中底层接口层专属于硬件配置,内核运行在底层接口层之上,并以与硬件无关的API(高层抽象层)提供对硬件资源的直接控制。

在底层接口层和高层抽象层之间主要是文件系统类型和网络协议,它们构成“解释组件”,以让内核了解如何与特定设备进行结构化数据交互[5]。

内核之上是应用程序,应用程序提供了完整的实时数据库,并针对各个不同的物理接口提供相应的接口交互函数以及实时数据库存取函数。该实时数据库统一管理由各个接口上送上来的实时数据,可按照特定的传输格式,设定某一接口传送实时数据到上级设备。为保证实时数据库各个接口驱动软件的可靠运行,实时数据库管理程序还对各个串口的通信驱动程序进行异常监视,当有驱动软件因故不正常运行时,能够实现驱动软件乃至通信管理装置的重启功能。

2.1 装置软件设计

在软件设计过程中,面对诸多软件模块,本文采用结构化的设计思想。首先是各个硬件模块的驱动程序,其次是增加管理机构来处理和调度一些周期性运行的驱动程序,最后是应用程序。

装置软件有主程序、中断程序以及各个任务模块程序组成。在主程序中,初始化部分完成的工作为:设置通信口、读入原始设置数据、设置中断向量、开辟通信存储缓冲区等。中断程序为:定时中断子程序,从SCADA接受信息的串口中断子程序和从RTU接收信息的串口中断子程序;任务模块则完成系统常规的各项处理以及根据中断消息做相应处理。在通信过程中,主程序通过循环,不断地从各个装置获取数据信息,经过处理后送至各自的缓冲区,然后处理SCADA、RTU的接收数据缓冲区中的信息和命令[6]。

在Windows系统下,利用Visual C++作为开发语言[7]进行梯形图的编写,基于Lex和Yacc集成环境ParserGenerator,利用编译程序构造工具生成该语言的词法和语法分析器,将其集成到VC++6.0开发环境中结合高级语言实现该装置梯形图源语言的编译[8]。装置采用梯形图编程开发外部设备的驱动软件,实现软件跨平台应用。装置应用软件框架如图4所示。

2.2 在线调试与下载

该装置通过以太网接口与PC机连接通信,可分别下载各个串口的配置文件和规约脚本。通过对各通信接口的标准解释进程的控制,间接实现对梯形图的在线调试以及对各个通信接口的规约调试。其调试过程如图5所示。

2.3 跨平台应用的实现

对于一般内部采用嵌入式系统的通讯管理装置,在针对不同的对外接口开发驱动软件时,一般会在上位机Windows操作系统下安装目标机虚拟环境及相应开发语言包,根据待通信设备的通信规约进行驱动软件的源代码编辑之后进行交叉编译生成目标机可执行代码。在应用层方面,由于各个厂家不同,目前尚无完全通用的国际标准或国际规约,因而在实际应用中,需要由专业的研发人员针对不同厂家的不同产品所支持的软件规约来进行源码级的程序编写、编译及下载。基于前述类型的通信管理装置需要二次源码级编程的不足,本文设计的通用通信管理装置提出了采用梯形图的形式进行用户应用层的通信规约编程的手段,内嵌了可以解释执行梯形的进程,用可视化梯形组态编辑待通信设备的驱动,编译梯形图生成二进制代码,之后将代码下载到目标机即可。因此,实现了一种通用的可以跨平台运行(主要为Windows系统和嵌入式Linux系统)的通信规约组态的通用通信管理装置。

3 总结与展望

本文介绍了基于嵌入式编程技术的支持梯形图进行规约编程的通用通信管理装置,该装置可以灵活、方便、可靠、简单地实现与现地功能设备的数据通信,完成各现地设备与现场总线以及以太网的互联。采用符合国际标准的梯形图作为开发语言的通用通信管理装置实现了通用的跨平台软件应用,大大降低了装置的使用难度、提高了编程效率并最终实现为真正意义上的面向用户的通用通信管理装置。

摘要:设计研究了一种采用嵌入式Linux操作系统和PC/104嵌入式控制PC构建的通信管理装置。该装置具有8个独立的标准串行接口,1个CAN现场总线接口和1个以太网接口,可以灵活应用于计算机监控系统中的各个通信环节,实现异种网络间的通信协议转换和数据管理功能。针对不同子设备的通信规约需要进行二次开发的不足,该装置采用符合国际标准的梯形图作为开发语言,采用编译及解释执行的手段,最终实现为真正意义上的面向用户的通信管理装置。

关键词:嵌入式,通信管理装置,通信规约,梯形图

参考文献

[1]陈思宁.智能分布式现地控制装置——SJ-600[J].水电自动化与大坝监测,2002,26(1).

[2]朱辰,施冲,钟敦美,等.水电厂计算机监控系统发展趋势[J].水电厂自动化,2001,(增刊).

[3]李斌,王晓航,施冲.嵌入式通信管理装置的设计和实现[J].水电自动化与大坝监测,2004,28(3).

[4]王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社,2001.

[5]夏明.基于Linux的嵌入式监控系统软件平台研究与设计[D].南京:南京理工大学,2007.

[6]赵兴军.分布式测控系统通信管理机的研制[D].西安:西北工业大学,2004.

[7]胡海生,李生亮.VC++6.0编程[M].北京:清华大学出版社,2003.

嵌入式操作系统通用性 第7篇

PLC在工业控制领域被大量应用, 成为该领域的重要产品之一。PLC是一种数字控制电子系统, 它采用微处理器技术, 可进行逻辑运算、顺序控制、定时、计数、算术运算等操作命令, 并通过数字或模拟接口, 完成对控制对象的控制。PLC可靠性高, 编程简单, 使用方便, 通用性好, 它可以灵活的以不同的组态来适应不同的控制对象、控制规模和控制功能的要求。

梯形图语言以其简单易用, 使用最为广泛。梯形图语言起源于继电器逻辑和执行线图, 它用不同的图符来表示不同的指令, 用串并联等概念组织图符的顺序位置来表述逻辑。这种语言易学易用, 直观明了, 为广大工程技术人员所喜爱。与PLC设备配套的开发工具一般都具备以上的一种或者多种编程语言, 其中梯形图编辑是必备的, 并可以实现的梯形图编辑与其他编程语言的相互转换。

虽然现在各厂商所发布的PLC编程软件都遵循上述标准, 但数据格式并不统一, 用户在使用不同厂商的PLC设备只能采用对应的编程软件, 在升级或代换时往往面临重新编程的问题。

本文提出采用XML作为梯形图编程的标准数据, 该数据的设计符合IEC61131-3标准, 可以实现上述五种PLC编程语言的相互转换。基于IEC标准的XML数据, 可被转换为符合标准规定的任何PLC设备所适用的编程语言。XML具有解释自身数据的能力, 针对各种PLC硬件, 配以相应的XML转换规则, 可以自动完成对应的语言转换。对单片机系统或者基于实时操作系统的软PLC (Soft-PLC) 设备同样也适用。

2、梯形图的树型结构

2.1 梯形图的设计原理

采用梯形图语言设计顺序控制逻辑, 具有方便直观的优点, 将控制系统的开关量逻辑与状态表示成梯形图, 有利于系统维护与快速故障诊断。PLC中的梯形图语言起源于继电器逻辑和执行线圈, 它用不同的节点图符来表示不同的指令, 用串、并联等拓扑关系组织图符的顺序位置来表述逻辑。

如图1为常见PLC控制的梯形图程序, 其中网络1可以完成继电器控制的起、停 (启动、保持和停止) 操作, 网络2则是定时器功能块, 可实现定时功能。

用于梯形图的节点连接关系一般为串联或者并联形式, 如果功能块具有多个连接, 就构成相应功能块的连接形式。节点的拓扑关系可以总括为功能块连接, 功能块的类型反映了块上节点连接的类型, 功能块本身也可以作为一个节点与其他节点进行连接, 如图2, 本概念是以下讨论树型结构的基础。

2.2 梯形图的数据结构

进行梯形图编程的过程中, 编程软件所实现的处理工作, 首先是将梯形图的图形信息进行记录, 然后将梯形图所反应的逻辑关系提取出来, 形成数据文件, 该数据文件反映了用户所编辑的业务逻辑, 最后软件根据数据文件生成PLC的执行代码, 如图3。反映业务逻辑的数据文件是梯形图编辑的核心, 它是梯形图图形的逻辑本质, 也是生成PLC执行代码的数据源。

常见的梯形图数据结构是采用二叉树, 如图2。节点的连接关系分为三类, 构成三种基本二叉树:并联、串联和功能块。二叉树的字节点又可以是并联块、串联块或功能块。由此构成二叉树森林, 可以表示出整个网络的所有节点的连接关系。

二叉树只能记录网络节点的逻辑信息, 作为梯形图逻辑数据的网络部分出现, 而不能描述所有信息。在新的IEC61131标准中, 梯形图程序是一个更大的PLC信息网络系统的一部分, 在程序上面还有组态、资源、任务等模块概念, 梯形图程序只是“任务”模块的子节点。另外, 对于一些特殊结构, 如具有三个以上输入的特殊功能块, 需要对二叉树结构做调整, 这增加了代码实现的难度。可以转而考虑采用更通用的树型数据来解决这些问题。

3、用XML描述梯形图

3.1 XML的语法结构

XML代表扩展标识语言 (e Xtensible Markup Language) , 由W3C (World Wide Web Consortium) 建议XML在1998年成为一个正式的规范。XML不是一种语言, 而是一个定义其他语言的系统。W3C称XML为“表达数据中结构的共同语法”。结构化的数据指的是其内容、意义或应用被标记的数据。

作为一种数据描述语言的XML, 允许我们将数据组织成数据结构, 甚至是很复杂的数据结构, 可以按照自己的需要来剪裁数据。XML最有吸引力的特征是用户可以创建自己的标记, 能在XML文档中以自己的方式组织数据。

根据第2节所述的PLC编程数据的层次结构, 我们可以创建和使用自己的XML标记, 将整个PLC项目的所有数据构成XML文档, 来记录包括从组态到功能块等各个层次的信息。

图5是一个用于描述PLC项目数据的XML的实例。图5 XML文档内容举例

3.2 XML描述梯形图

将第2节梯形图的树型结构描述和第3节XML的树型特征作一个对照, 就可以看出, 采用XML结构来描述梯形图是非常合适的, 事实上, 图5所给出的XML例子文档就是将图1的梯形图放到一个PLC项目中所得到的数据框架。当然一个实际的PLC项目的XML数据文档要比这个框架复杂许多, 但都基于此框架。

通过2.1节的讨论可知, 梯形图节点的拓扑关系可以总括为功能块连接, 功能块的类型反映了块上节点连接的类型, 功能块本身也可以作为一个节点与其他节点进行连接, 功能块包括串连块、并联块和一般功能块, 如图2。由此, 图1中梯形图的网络1可以表示为一个并联块和两个节点串连:

其中, “块”节点也有两个子节点:

该“块”反映的是并联关系, 这个信息可以通过建立块的属性来说明, 如:

上述“网络”也是一个默认连接关系为串连的块。

同样每个“点”也有自己的属性, 如:

上述是图1中“按钮1的常开触点”, 用“编号”和“类型号”两个属性来确定。另外, “坐标X”和“坐标Y”两个属性则可记录梯形图的绘图位置信息。这样, 该点的属性不但记录了触点的类型以及连接关系, 还记录了图形信息。所以不需要单独的图形记录文件来处理梯形图, 所有信息都可以放到X M L的合适位置。只要有需要, 可以任意增加所需的属性。

类似的, 图1中梯形图的网络2可以表示为:

其中, “块”节点是一个定时器, 也可以是具有其他功能的块, 通过属性与串联并联块区分开来:

该“块”没有子节点。

图1的梯形图可以表示为一个编号为“OB1”的功能块:

其中, “OB1”表示为PLC的当前任务内的主循环逻辑。

更详细的转换结果见图5。

4、XML与其他语言的转换

采用XML作为梯形图的数据文件, 实现了图3中由梯形图图形到数据文件的转换步骤。XML数据文件既是梯形图的图形存档文件, 又是实现梯形图到PLC可执行代码转换的中间数据。遍历XML数据的树型结构, 以一定规则将各个功能块和节点翻译成对应的PLC可执行代码, 即可完成图3中由数据文件到PLC可执行代码的转换步骤。

4.1 XML和指令表的互换

下面以IEC61131-3标准所给出的指令表规范为例, 说明由XML数据到指令表的转换原理。

基于XM 数据的树型结构, 通过遍历由根节点出发的各个节点, 可以提取PLC的编程逻辑, 同时转换对应的为指令表语句。以PLC主逻辑部分 (见图5) 为例, 转换规则如下所示:

1) 、由XML数据的根节点出发, 搜索到编号为“OB1”的功能块, 该编号是默认的主循环逻辑编号;

2) 、搜索“OB1”的子节点中名称为“网络”的节点, 开始进行指令表语句的转换;

3) 、遍历“网络”节点的所有子节点, 节点和它前边的节点的连接关系由它们的父节点所确定, 由此生成指令表代码。

如图5中编号为“NET001”的网络, 第一个节点为“块”, 是虚拟的并联块, 继续向下搜索其子节点, 编号为“K001”的“点”为第一个实际触点, 相应指令码为:

(表示装入K001触点的状态)

再往后, 搜索到第二个“点”, 编号为“J001”, 它与前节点的关系由其父节点决定, 为并联关系, 故相应指令码为:

(表示与前一状态取“或”关系)

并联块与其后节点 (编码“K002”) 为串连关系, 得到第三行指令码:

(表示先取K002的反, 再与前一状态取“与”关系)

最后一个节点, 根据其类型号 (这里是051, 由用户指定) 确定为继电器输出,

将前边运算的结果赋值给J001。

4) 、如果节点为功能块, 则根据功能块所实现的功能, 生成相应的功能块调用代码。

如图5中编号为“NET002”的网络, 第一句指令码为:

第二个节点为“块”, 类型为“定时器”, 则定时器功能调用码为:

(调用指令由“类型号”和“设定值”共同确定, 含义为设定100倍时基信号的定时长度)

这里同时隐含了对定时器变量“T1”的赋值。

经过上述对XML结构的遍历, 生成了PLC主循环段的指令表编程语句。对图5中XML结构的各个部分生成相应的编码, 可以构成完整的PLC程序的指令表代码。程序代码经过编译 (由PLC设备配套的编程工具完成) , 就可下装到支持标准指令表语句的PLC设备中运行。

与此类似, IEC标准中的其他集中PLC编程语言, 结构文本、顺序功能图和功能块图, 都可以由XML结构转换得到。

4.2 XML和C语言的互换

XML除了可以被解释为指令表和IEC61131-3标准中的其他几种PLC编程语言, 还可以解释为任何可以表示梯形图逻辑的语言代码。IEC标准中的结构文本与高级语言比较类似, 如C语言。如果PLC底层实现设备是单片机系统, 以8051单片机系统为例, 可以由XML结构生成与PLC逻辑相关的C代码。这样XML数据就可以用于以通用单片机系统为底层硬件的PLC设备。

与上小节类似, 遍历XML树型结构, 可以获得PLC逻辑部分的C代码如下:

C代码实现并不局限于以上语句, 事实上, 上面采用了一种相对简单的实现方式, 带来了功能上的限制。可以根据应用的需要, 设计更加通用或者更适于应用场合的XML到C转换的解决方案。

XML数据文件将PLC的业务逻辑数据与其实现相分离, 底层PLC硬件设备可以是PLC设备、单片机系统、嵌入式系统或基于实时操作系统的软PLC。

5、结论

本文提出采用XML作为PLC梯形图编程的数据文档, 符合IEC61131标准, 可以将记录整个PLC项目的数据。XML通过节点标记来解释数据内容, 在梯形图逻辑部分, XML的数据可以转换为用于PLC设备逻辑编程的任何语言。对不同的PLC底层硬件实现, 配以相应的语言转换规则或程序, 可以实现XML数据到PLC实现代码的自动转换。XML数据是与设备无关的, PLC设备除了可以是PLC设备, 还可以是单片机系统或软PLC等。面向新的IEC61131标准, 采用XML作为与设备无关的PLC的编程数据具有极大的灵活性和扩展性。

摘要:将PLC (Programmable Logic Controller, 可编程控制器) 梯形图逻辑表示为XML (eXtensible Markup Language, 扩展标识语言) 数据, 不同于采用二叉树来描述节点连接结构。根据不同的PLC设备, 配置相应的语言转换程序, 可将XML结构数据自动转换成PLC设备的编程语言, 如指令表或结构文本。以通用嵌入式系统作为底层硬件, 构建软PLC系统, 可将XML数据转换为汇编语言或C语言等, 从而实现PLC功能。针对新的IEC61131-3标准, 采用XML作为与硬件无关的PLC的编程代码具有极大的灵活性和扩展性。

关键词:PLC,梯形图,XML,嵌入式系统,软PLC

参考文献

[1]蒲志新, 熊永超, 段永利, 等.PLC梯形图编辑功能的仿真软件[J].计算机仿真.2003;20 (10) :0143-44

[2]齐中伟.通用PLC仿真与图形编程系统[J].机电工程.1998;14 (1) :38-40

[3]陈忠华.细说IEC61131-3 (第一节) [J].自动化博览.2003;10 (6) :8-9

[4]宋广华, 杨长生.基于事件-条件模式的PLC任务描述[J].计算工程.1999;25 (12) :57-58

[5]崔小乐, 周卓岑.可编程控制器的梯形图语言与语句表语言的互换算法[J].微电子学与计算机.2000;12 (1) :26-30

[6]谭锦洁, 程良鸿.嵌入式PLC梯形图的一种数据结构描述方法[J].计算机工程.2004;30 (10) :85-87

嵌入式实时操作系统分析 第8篇

1.1 什么是嵌入式实时操作系统。

。嵌入式系统 (以应用为中心, 以计算机技术为基础, 并且软硬件可裁剪, 适用于应用系统对功能、可靠性、成本体积、功耗有严格要求的专用计算机系统) 的核心是嵌入式微处理器, 而嵌入式微处理器的最重要的特点之一就是:对实时多任务有很强的支持能力, 能完成多任务并且有较短的中断响应时间, 从而使内部的代码和实时内核的执行时间减少到最低限度。可以说在嵌入式系统的应用中是最具实时性的。在小规模的嵌入式系统中, RTOS并不是必须的, 只有当多个进程, ISR和设备的调度非常重要时, RTOS才是必需的。RTOS必须监控响应时间受控的进程和事件受控的进程。具体说来实时操作系统也称为实时内核或RTOS, 是支持实时应用的计算机操作系统, 是启动后首先执行的背景程序, 用户的应用程序是运行于实时操作系统之上的各个任务, 实时操作系统根据各个任务的要求, 进行资源管理、消息管理、任务调度、异常处理等工作.在实时操作系统支持中, 每个任务均有一个优先级, 系统根据各任务的优先级, 动态地切换各任务, 保证对实时性的要求, 因此, 实时多任务操作系统, 以分时方式运行多个任务, 看上去好像是多个任务“同时”运行。实时性的要求决定了它不存在时间片轮转的情况而必须是抢占式内核。又因为嵌入式实时系统应用的多样性决定了RTOS的微内核设计。目前, 可选择的嵌人式实时多任务操作系统 (RTOS) 有很多种, 如Vx Work pSOS, VRTX, LynxOS, OS-9, Qnx, RTXC, Nucleus PLUS, μC/OS-Ⅱ等。实时操作系统的使用使得实时应用程序的设计和扩展变得容易, 不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务, 使得应用程序的设计过程大为减化;使用可剥夺性内核时, 时间要求较苛刻的事件也能得到尽可能快捷、有效的处理;通过有效的服务, 如信号量、邮箱、队列、延时、超时等, 使得资源得到更好的利用.正因为实时操作系统拥有如此众多优点, 使得人们在嵌人式系统的设计中优先考虑选用合适的实时操作系统, 以提高系统的开发速度、可靠性、可维护性等, 降低开发成本。1.2实时系统的分类。我们可以从不同方面对实时系统进行分类。1.2.1软实时系统和硬实时系统。我们可以将通常人们所说的实时系统可分为两种类型:软实时系统和硬实时系统。在软实时系统中, 系统的宗旨是使各个任务运行得越快越好, 并不要求限定某一任务必须在多长时间内完成, 这类系统并不具有真正实时操作的要求, 其对操作系统的实时性要求较低, 一般的实时操作系统均能满足要求。在硬实时系统中, 各任务不仅要执行无误而且要做到准时, 其对操作系统的实时性要求较严格, 在系统设计时要非常注意实时性性能的满足, 对实时操作系统的伪实时的特征应进行仔细分析, 大多数实际应用的实时系统是以上二者的结合。1.2.2非抢占式内核和抢占式内核。实时内核分为两种非抢占式内核和抢占式内核这两种内核都由中断服务例程 (ISR) 处理异步事件在非抢占式内核中一个ISR使优先级更高的任务就绪并不是返回到被中断的当前任务只有当当前任务执行某种操作明确放弃CPU时优先级高的新任务才得到CPU控制权非抢占式内核对实时事件的响应时间不确定极少在实时应用中使用。1.3使用实时操作系统的意义。嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛, 尤其在功能复杂、系统庞大的应用中越来越显示出其重要意义。1.3.1嵌人式实时操作系统提高了系统的可靠性。在控制系统中, 出于安全方面的考虑, 要求系统起码不能崩溃, 而且还要有自愈能力。不仅要求在硬件设计方面提高系统的可靠性和抗干扰性, 而且也应在软件设计方面提高系统的抗干扰性, 尽可能地减少安全漏洞和不可靠的隐患。长期以来的前后台系统软件设计在遇到强干扰时, 使得运行的程序产生异常、出错、跑飞, 甚至死循环, 造成了系统的崩溃。而实时操作系统管理的系统, 这种干扰可能只是引起若干进程中的一个被破坏, 可以通过系统运行的系统监控进程对其进行修复。通常情况下, 这个系统监视进程用来监视各进程运行状况, 遇到异常情况时采取一些利于系统稳定可靠的措施, 如把有问题的任务清除掉。1.3.2提高了开发效率, 缩短了开发周期。在嵌入式实时操作系统环境下, 开发一个复杂的应用程序, 通常可以按照软件工程中的解耦原则将整个程序分解为多个任务模块。每个任务模块的调试、修改几乎不影响其他模块。商业软件一般都提供了良好的多任务调试环境。1.3.3嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。32位CPU比8、16位CPU快, 另外它本来是为运行多用户、多任务操作系统而设计的, 特别适于运行多任务实时系统。32位CPU采用利于提高系统可靠性和稳定性的设计, 使其更容易做到不崩溃。例如, CPU运行状态分为系统态和用户态。将系统堆栈和用户堆栈分开, 以及实时地给出CPU的运行状态等, 允许用户在系统设计中从硬件和软件两方面对实时内核的运行实施保护。如果还是采用以前的前后台方式, 则无法发挥32位CPU的优势。从某种意义上说, 没有操作系统的计算机 (裸机) 是没有用的。在嵌入式应用中, 只有把CPU嵌入到系统中, 同时又把操作系统嵌入进去, 才是真正的计算机嵌入式应用。

2 嵌入式实时操作系统在国内外使用现状

从20世纪80年代起到现在, 有很多商业公司或开放源码组织在重试嵌入式实时操作系统的开发, 并且涌现出了一系列著名的嵌入式操作系统。

2.1 商业的嵌入式实时操作系统。

2.1.1 VxWork。在这一系列中, 以Wind River公司的VxWorks为代表。Vx Works操作系统是美国Wind River公司于1983年设计开发的一种嵌入式实时操作系统 (RTOS) , 是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境, 在嵌入式实时操作系统领域占据一席之地。Vx Works的造价是十分昂贵的。但它具有良好的可靠性和卓越的实时性, 所以被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中, 如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上, 甚至连1997年4月在火星表面登陆的火星探测器上也使用到了Vx Works。2.1.2 Windows CE。微软这个PC操作系统的霸主也开发了一系列的嵌入式操作系统的产品, 就比如Windows CE。Windows CE是一款为嵌入式市场设计的操作系统。它将一个先进的实时嵌入式操作系统同功能强大的开发工具集合在一起, 用于快速开发下一代智能互连小型设备。Windows CE有一个完整的操作系统特性集和功能全面的开发工具, 包含有供开发者构造、调试和布置定制型设备所需的全部特性。Windows CE的组件化特性是为下一代要求具备丰富的网络和通信标准、硬实时内核、丰富的多媒体和Web浏览能力并且小体积的设备优化设计的。Windows CE现在广泛的应用于多媒体设备和无线通讯领域。2.2开放源码的嵌入式操作系统。μC/OS-Ⅱ是一个著名的源码公开的实时操作系统内核。绝大部分μC/OS-Ⅱ的源码是用移植性很强的ANSI C写的。和微处理器硬件相关的那部分是用汇编语言写的。汇编语言写的部分已经压到最低限度, 使得μC/OS-Ⅱ便于移植到其他微处理器上。如同μC/OS一样, μC/OS-Ⅱ可以移植到许许多多微处理器上。条件是, 只要该微处理器有堆栈指针, 由CPU内部寄存器入栈、出栈指令。另外, 使用的C编译器必须支持内嵌汇编 (inline assembly) 或者该C语言可扩展、可连接汇编模块, 使得关中断、开中断能在C语言程序中实现。μC/OS-Ⅱ可以在绝大多数8位、16位、32位以至64位微处理器、微控制器、数字信号处理器 (DSP) 上运行。

开放源码的嵌入式实时操作系统还有Free RTOS、e COS和嵌入式Linux等, 应用于不同的领域。

3 关注的问题

3.1 嵌入式硬件设备的主流技术有无可能统一。

当前嵌入式系统在各个领域应用的可谓是如火如荼。嵌入式硬件设备, 开发工具的飞速发展导致了现在的嵌入式操作系统的出现和发展。但是可以看得嵌入式操作系统现在还处于百花齐放, 百家争鸣的状态。随着对嵌入式系统产品需求的不断增长, 对其的开发方式、开发周期都有了更高的要求。随着硬件生产工艺的进步, 运行速度、存储器空间、接口的标准化会对嵌入式操作系统的发展方向产生影响。所谓分久必合, 在嵌入式系统领域是否会出现像pc机领域的情况。现在看来这是完全可能的。我们通常所说的ARM微处理器, 已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场, 基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额, ARM技术正在逐步渗入到我们生活的各个方面。这种情况还会向更广泛更深入的发展。3.2嵌入式操作系统的通用性问题。如果嵌入式硬件设备提供了相对统一的设计, 在嵌入式操作系统领域会不会出现统一的可能性或通用的嵌入式操作系统。在开发嵌入式应用产品是首先是硬件选型问题, 在有需求时还要考虑使用何种操作系统的问题。如果能提供一套统一的操作系统配置工具, 那么应用开发者不必因为选择不同的操作系统而重新学习使用新的配置环境, 必然能提高开发效率。这在行业开发中有着重要意义在这方面学习了电子科技大学的李向蔚等在《单片机及嵌入式系统应用》上发表的“嵌入式操作系统定制的通用性研究”一文。文中将软件复用技术用于嵌入式操作系统的定制过程中, 提出了一个嵌入式操作系统定制的通用模型, 并设计了基于嵌入式Linux的配置剪裁器。

4 结论

随着嵌入式设备硬件生产工艺的进步, 在台式机操作系统中的各种技术都会逐步的应用于嵌入式操作系统领域。硬件设备的发展, 嵌入式应用的发展, 嵌入式操作系统的发展必定会相互促进, 给将来的工作和生活带来更大的帮助。

参考文献

[1]张晓.基于嵌入式系统在船舶监控方面应用的研究[J].舰船电子工程, 2005 (6) .

[2]武强.选择嵌入式实时操作系统应注意的几个问题[J].航空计算技术, 2002 (3) .

[3]李哲英, 骆丽, 刘元盛.ARM核嵌入式系统的开发平台ADS[J].半导体技术, 2002 (2) .

[4]沈绪榜.嵌入式计算机系统的展望[J].单片机与嵌入式系统应用, 2001 (1) .

[5]窦振中.嵌入式系统设计方法的演化——从单片机到单片系统[J].单片机与嵌入式系统应用, 2001 (2) .

[6]马忠梅.国际集成电路展中的单片机与嵌入式系统[J].单片机与嵌入式系统应用, 2001 (6) .

[7]刘辉, 孟凡荣, 席景科.嵌入式实时系统中的优先级反转问题[J].单片机与嵌入式系统应用, 2002 (11) .

微型嵌入式实时操作系统文件系统 第9篇

根据Nand Flash的一些特性, 读写速度快, 生产工艺问题或多或少存在坏块, 最小擦除单位为块, 最小读取单位为字节, 并且不能频繁对其进行擦写操作, 最先对Nand Flash支持最好的就是Yaffs文件系统, 但Yaffs文件系统最大支持的页大小为512Byte, Yaffs2支持页大小可以达到2048Byte但针对那些像linux的大型操作系统不管是Rom和Ram的开销确实不算什么, 但如果只是把它应用在ram只有几十Kbyte的单片机上也是经过裁剪再裁剪才能放进去, 这就需要诞生一种集Yaffs优点于一身, 而且对硬件要求很低的文件系统, 这是微型嵌入式实时操作系统文件系统的初衷, 如图1。

2 微型嵌入式实时操作系统文件系统的优点

2.1 需要的Rom少

一千五百多行左右

需要的Ram少:平均需要建立的全局变量不大于10几个字节基本都是用来存储一些使用Tab表的偏移位置及内容存储区的偏移位置等信息, 其他局部变量的最大开销不会超过80Byte。

2.2 文件系统稳定性好

就算文件系统局部出现灾难性的故障, 依然可以读取文件系统中完整的个别文件, 这点是在其他类型文件系统中不具备的。

2.3 对硬件伤害小

在一块格式化完整的Nand Flash上进行写入文件, 在Nand Flash没有写满的情况下, 微型嵌入式实时操作系统是不会对其进行擦出块操作。

2.4 文件大小没有限制

文件最大可以在一个存储设备上存储一个文件, 最小可以存储的文件个数, 理论上是, 一个存储设备上除去Tab占据的一个块外, 剩余块上每页都可以存放一个文件, 不足占据一页的算作一页, 以K9f2g08为例最多可以存放文件为2048*64-64个文件, 每个文件大小为2Kbyte。

2.5 高效率性

存储一个文件不需要整块空间, 当需要对很久以前的文件进行内容追加时, 系统会寻找空白页写新的内容并且与之前的文件通过地址关联链接成一个文件, 删除文件也可以只删除文件头, 文件中间页可以在块回收的时候进行整理,

2.6 文件类型多样性

可以存放的文件类型除了文件夹文件类型还增加了一些特殊类型, 如链接类型和和根目录类型, 可以在文件系统中建立多个根目录, 相当于硬盘中的多个分区一样。

如下是每个存储页的首字节标志, 用来标识该页的内容。利用Nand Flash的擦除过程是从非1擦除到1的过程, 为了避免再次擦除, 文件类型确定了是不能进行修改, 但该页属于整个文件的的组成部分位置可以从文件头, 改为文件按中或文件尾, 但一旦改为文件尾, 该文件的大小就确定了, 不能对其进行追加操作。

2.7 文件系统的可扩展性

该套文件系统架构是在k9f2g08上测试的, 理论上可以兼容所有规模的Nand Flash, 且如果文件TAB表损坏或丢失, 都可以花一些时间去搜索文件存储区来重构文件TAB表。

2.8 文件的坏块管理

文件的坏块管理通过写页的标志位为0x00来却别该页是否是不可用页, 这比传统的坏块管理好在, 如果一个存储设备的某个块并不是全部算坏, 而只是某个页上局部位置损坏, (Nand Flash坏区的定义为, 擦除不为全1的为损坏) , 那么该块的其他页照常可以使用。

2.9 文件的擦除平衡

往文件系统里写入文件是从前往后找可用页一次向后写, 当写到不能再写入内容的时候, 系统会自动启用删除块回收, 回收是也是从前往后的顺序找出所有可擦除块对其进行擦写, 保证了系统不会频繁的对某个特定块进行反复擦写。从而实现了均衡擦除。

2.10 微型嵌入式实时操作系统文件系统底层架构

包含对Nand Flash的整体规划使用区域划分, 文件Tab位置的确定是在格式化Nand Flash的过程中决定的, 通常, Tab的位置被定在首个非坏块上, Tab占用一个存储块, 文件其余块为文件内容存储区, 文件内容存储区的位置都是使用的相对偏移位置, 即认为紧跟Tab所在块后面一个非坏块的位置为基地址, Tab中每页的Data区域 (存放数据内容的区域) 的每个字节对应内容存储区的每页, 且与内容存储区每页的Spare的首字节的内容是保持一致的, Tab实际上是为加快文件搜索和统计的速度而设定的。

2.11 泛型文件管理层

上一篇:她时代下一篇:勘测设计行业