嵌入式系统软件嵌入式系统软件

嵌入式系统软件嵌入式系统软件
嵌入式系统软件嵌入式系统软件

嵌入式系统软件

杨剑锋

1. 嵌入式操作系统

嵌入式操作系统是个集合,而且是个无限集合

–监控程序?常规操作系统

(红外线?紫外线)

–一维和多维

嵌入式操作系统常常有实时要求–早期:嵌入式操作系统= 实时操作系统

–近期:

?1)手持计算机和掌上计算机的出现;

?2)CPU速度的提高;

?3)常规操作系统增加实时进程调度的支持,如

POSIX.4

?嵌入式操作系统<>实时操作系统 许多嵌入式操作系统的内核是微内核结构 许多嵌入式操作系统都不带磁盘

–根本不支持文件系统

–结构上为了设备驱动而支持文件系统,但不

支持文件系统的文件存储功能

许多嵌入式操作系统不采用存储管理技术,即不支持虚拟存储技术

许多嵌入式操作系统不划分“系统空间”和“用户空间”

–操作系统的“内核”与外围应用程序之间不再

有物理的边界;

–系统中所谓“进程”实际上全都是内核线程?静态连接、系统调用、进程调度/切换–对任何一个应用程序做细微的修改,都得重新生成整个系统,并且“下载”之;

–系统调用的界面太庞大;

–共享变量的访问,需要谨慎对待;

–把通用操作系统上的应用移植过来需考虑“可重入”的问题;

不分系统空间和用户空间<>必须静态连接–如DOS、CP/M的INT21

不分系统空间和用户空间<>不能用页面映射技术

–但只用于不同进程之间,而非不同空间之间 即使采用了存储管理,基本上都不采用页面交换技术

重启动技术(watch dog)

2. RTOS

是否实时

–一方面是多大程度上充分发挥硬件潜力,即综合速度快慢的问题;

–另一方面同时也是反映的速度在多大的程度上得到保证的问题

中断延迟(Interrupt Latency)–中断不可嵌套

–LINUX的Bottom Half

–中断可嵌套:优先级中断

?大多微处理器不支持;

?LINUX不支持;

?UNIX支持

–与指令集有关

–DMA操作有关

–保证系统调用的原子性有关 调度延迟(Scheduling Latency)–中断处理程序进程处理

–一般调度算法(Round Robin)不能及时选

–基于优先级调度算法,一般能及时选中?如果目标进程优先级低呢?

–可剥夺调度和不可剥夺调度

?LINUX是属于什么调度?

????????????→

事件或软中断

Linux 既不是完全的可剥夺,也不是完全的不可剥夺

上下文切换延迟(Context Switch Latency)–大小取决于CPU和操作系统

–采用MMU > 不采用MMU 只要发生调度,就能选中目标进程吗?

–根据时间片的耗用调整优先级

–拉开距离,分等级

对实时进程而言,“应该没有问题”不够。 是否可以不用中断、也不用调度,回到

最简单的“监控程序”?

实时性简介

对于什么是实时系统,POSIX 1003.b作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务

实时系统根据其对于实时性要求的不同,可以分为软实时和硬实时两种类型

一个计算机系统为了提供对于实时性的支持,它的操作系统必须对于CPU和其他资源进行有效的调度和管理,即实时调度

实时调度分类

各种实时操作系统的实时调度算法从调度策略上可以分为如下三种类别:基于优先级的调度算法(Priority-driven scheduling-PD)、基于CPU使用比例的共享式的调度算法(Share-driven scheduling-SD)、以及基于时间的进程调度算法(Time-driven scheduling-TD)

从调度方式上来讲可以分为:可抢占、不可抢占;从时间片来分:固定时间片、可变时间片

实时性改造

对操作系统实时性的扩展可以从两方面进行:向外扩展和向上扩展

向外扩展是从范围上扩展,让实时系统支持的范围更广,支持的设备更多

向上扩展是扩充操作系统内核,从功能上扩充系统的实时处理

实时多任务OS-RTOS 单片机

–无os

–主程序

RTOS

–资源包装

–API

–可移植(只要1-4%)

实时系统

在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间

响应时间限定

可预知

实时操作系统与I/O

实时操作系统还需要有效的中断处理能力来处理异步事件和高效的I/O能力来处理有严格时间限制的数据收发应用。就是:

●系统应该有在事先定义的时间范围内识别和处理离散的事件的能力。

●系统能够处理和存储控制系统所需要的大量的数据。

周期性的系统 非周期性系统 硬实时系统

–灾难后果

软实时系统

–性能下降

RTOS与分时系统

事件响应时间限定

事件随机到达

系统可确定性

Rtos的历史 1)早早期的监控系统

–系统init

–时钟

–简单的任务调度

2)专用实时OS

–依赖于特定硬件

–移植性不好

3)通用RTOS

嵌入式软件开发平台

RTOS

标准化

可移植

设备独立

RTOS基本struct

实时多任务core

–任务管理:多任务和基于优先级的任务调度

–定时器:系统的实时时钟服务,以及各个定时任务的调入等

–Mem:管理系统的内存资源,如

DRAM,ROM,FLASHRAM等

–资源管理:管理系统的各种资源如系统的各种设备,端口,中断等;

–事件和消息管理:管理各种系统级的事件,如实时

中断响应,各种异常等;任务间同步和通信(信号

量和邮箱等)以及各种系统消息和应用程序之间的

通讯 RTOS的系统调用

90%以上的设备独立

RTOS的任务---分时系统Process

实时带来的问题1-时间

在实时系统中最基本的是系统应该能够提供对时间正确性进行指定的方法

系统提供一种指定时间尺度的方法

通用系统的延时不能满足

问题2-实时系统的结构 实时系统的体系结构必须满足:

●高运算速度

●高速的中断处理

●高的I/O吞吐率

●合理的处理器和I/O设备的拓扑连接

●高速可靠的和有时间约束的通信

●体系结构支持的出错处理,

●体系结构支持的调度

●体系结构支持的操作系统,

●体系结构支持的实时语言特性。

问题3-容错与分布 稳定性

容错

分布式应用

问题4-实时通讯

●逻辑正确

●要有确定的延迟时间

问题5-其他问题

●时间特性的指定和确正,这点与实际系统设计相同。

●实时的调度理论。由于实时系统应用的特殊性以往通用系统中以大吞吐量为目标的调度算法必须改进以适应实时应用的需要。主要要求是满足时间的正确性,然后提供高度动态的,满足在线需求的,适应性的实时调度。

●实时操作系统的设计和实现。在设计上首要目标是提供保证实时性的方法,包括一系列的经典问题的针对实时系统的解决方案。实现上要求操作系统的低开销,而且必须保证内核以及其他关键的可重入性。 ●实时的编程语言和设计方法。在编程语言级完成或提供实时应用所需要的方法。

比如象Ada语言,FORTH语言。

●分布式的实时数据库。

●系统的容错。

●实时时钟的同步。

●实时系统中的人工智能

与通用计算机区别 通用:

–方便用户管理计算机资源

–追求系统资源最大利用率

RTOS

–调度的实时性

–响应时间可确定性

–高可靠性

性能衡量标准

对传统的通用系统:

–大的系统吞吐量

–合理的响应速度

–对每个系统用户相对公平的进行计算资源的分配 实时系统

–实时的数据吞吐取代了以吞吐量为目标的标准。

–对硬实时应用的优先响应取代了对每个用户的恰当的反应速度。

–系统的计算资源和其他外设资源必须优先满足实时应用的要求

RTOS的衡量指标

●系统响应时间(System response time ):系统发出处理要求到系统给出应答信号的时间;

●任务切换时间(Context-switching time):任务之间切换而使用的时间;

●中断延迟(Interrupt latency time ) :是计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间;

RTOS的任务调度机制

决定了多任务能力与实时性

通用模式:

–调度策略:优先级调度、时间片轮转调度

–调度方式:抢占式、不可抢占式、选择可抢占式

–时间片:定长时间片与变长时间片

RTOS一般使用抢占式任务调度

时间限定的任务调度算法

速度单调算法

–工作由定期任务组织

–任务时间定长度

–使用频率高的优先级高

时限驱动算法

–工作定期与不定期

–执行时长随着时间变化

–下一个要安排执行的任务是时限最早的任务 MMU

实模式

保护模式

Mem管理

最小mem开销

Price

256K RAM

4M

32M RAM

中断禁止时间 用户态->中断态

中断延时时间

确认中断-----?中断服务第一语句执行 三部分

Microprocessor 的硬件延时

RTOS由中断将权利交给相关代码的时间 中断禁止时间

可中断式内核

中断发生时;即使运行核心服务也保证一定时间内响应

缩短中断延时时间

任务切换时间

控制权取回

交给另外一任务

两个主要评价实时性的指标:

最大中断禁止时间

任务切换时间

任务

分时系统以进程(线程)为基本单位 RTOS以任务为基本单位

组成:

–任务控制块

–程序区

–数据区

–堆栈区

?系统堆栈

?用户堆栈

任务的状态

运行

就绪

挂起

休眠

任务的同步与通讯

消息

事件

信号量

信箱

共享内存

消息 系统公用数据交换区

–私有消息缓冲区

–公用消息缓冲池

消息机制

–创建

–删除

–接受消息

–发送消息

–广播消息

–紧急消息

消息可以是定长与不定长

事件

应用于同步,通讯数据量不大 接受事件

发送事件

RTOS一般有15-32个事件

信号量

创建

删除

P操作

V操作

RTOS需要解决优先级倒置问题

优先级倒置问题

条件

–高优先级任务H

–低优先级任务L

–中优先级任务M

–共享内存Y,写操作

–信号量S,互斥

步骤

1)L取得S(P操作),但是未做V操作 2)H中断,H运行态

3)H写Y,但是Y的S被占用 4)L重新取得控制权

5)M出现,取得控制权

结果:

M比H优先

如果不断的M出现,H不能执行

解决方法

1、采用非抢占式任务管理

2、优先级继承

–L抢回控制权后,暂时继承H的优先级

(priority inheritance)

–设S为正占用着某项共享资源的进程P以及所有正在等待占用这个资源的进程的集合;

–找出这个集合中的优先级最高者,其优先级

为P’

–把进程P的优先级设置成P’ 优先级封顶(priority ceiling)

–设S为所有可能竞争使用某项共享资源的进程的集

合。事先为这个集合规定一个优先级上限p’,使得

这个集合中所有进程的优先级都小于p’。注意p’并不一定是整个系统中的最好优先级。

–在创建保护该项资源的信号量或互斥量时,将p’作

为一个参数。

–每当有进程通过这个信号量或互斥量取得共享资源

时,就将此进程的优先级暂时提高到p’,一直到释

放该项资源的时候才恢复其原有的优先级。

可以看出,操作系统的“实时”与否,并不仅仅取决于速度问题,甚至更多的是反应速度和处理时间的可预测性问题。

实时操作系统和通用操作系统

区别

对于通用操作系统,总体的效率是更高

的目标,必要时宁可牺牲个别进程的反

应速度来达到总体效率的提高;而实时

操作系统却反过来,必要时宁可牺牲总

体效率也要保证个别进程的反应速度。

对于通用操作系统,公正性更为重要,

必要时宁可“劫富济贫”。而实时操作系统,高优先级进程的运行更为重要,必要时

宁可“劫贫济富”

对于通用操作系统,性能的分析是统计分析、平均值分析。而实时操作系统性能分析则是“最坏情况”分析。

通用操作系统充分利用CPU处理能力,而实时操作系统有意让CPU处理能力供过于求,以确保反应速度和任务的完成。

3. 微内核与单内核

分层模拟

通用计算机需要“大而全”的内核

–你不需要,别人可能需要

–当局限于某个具体领域时,做些“裁减”

嵌入式系统的用户群以及对功能的要求是相对封闭的

商业上考虑,大而全也不合适

“裁减”或“系统生成”没有根本上解决问题 将内核中的部分内容移到内核外面,作为服务进程运行。

–代表:MACH

把内核中的部分内容移到外面,但不作为独立的进程运行,而是作为让应用程序调用的库函数存在。

–fopen与open

–socket 在微内核中保留哪些东西?

–进程管理

–存储管理

–进程间通信

–中断响应框架

微内核的优先级倒置问题

有A、B两个应用程序,A的优先级比B高,但是A在睡眠,而B在运行。

B需要进行文件操作,发请求给文件服务进程,自己进入睡眠,等待文件操作完成

本来在睡眠的文件服务进程接受到B的请求后开始为B服务。

此时A因某外部事件而变成就绪。

发生调度时,A与文件服务进程都是就绪状态。文件服务进程由于优先级高而更为优先。可是文件服务进程代表的是B,因此发生优先级倒置。以上问题的解决办法是采用“客户驱动优先级”,但是对于LINUX等操作系统,由于是不可剥夺的,因此天生不可解决。

A >

B >

C ,C正在运行

C需要文件操作,发请求给文件服务进程,进入睡眠,等待文件操作完成。

文件服务进程开始为C服务,并将优先级设成与C相同。

此时A被外部时间唤醒,也需要文件操作,发请求,进入睡眠。

A的请求在文件服务进程的等待队列中。发生优先级倒置。 B由于外部事件变成就绪

由于B > C,B会被调度。

对于C是合理的,但是对于A,太不公平。 如果还有B1,B2,B3,B4,噢。。。

微内核的优点

小而且简单,容易理解,容易维护 各模块可以独立开发

系统配置灵活方便

微内核的缺点

效率降低

安全降低

Minux的作者Andy Tanenbaum:“Only because the brain-dead nature of the Intel CPUs makes that difficult to do otherwise”

单一内核的努力:–可安装模块

4 常用的商品嵌入式操作系统

L icense

CE的源代码

VxWorks

美国WindRiver

统一空间

函数接口多(3000多)

是UNIX的远房变种,但区别也很大

为不带MMU的处理器设计的,当然允许可选 可剥夺调度

采用优先级继承方法解决倒置问题

支持消息、信号、管道等进程间通信

支持POSIX

网络支持很全面

新版本:VxWorks AE,分离空间

QNX

加拿大QNX Software System公司

类似于MACH

进程管理、文件系统管理、设备管理、网络管理都在内核之外

符合POSIX

采用消息作为进程间通信

可剥夺

GUI类似于X WINDOWS

支持网络和分布式计算

pSOS

原美国Integrated System公司产品,现被WindRiver收购

接近单一内核的微内核系统

文件系统移到内核外

采用优先级继承和优先级封顶技术

存储管理可以根据需要舍取

消息和事件作为进程间通信

设备驱动留在内核中

S ocket提供网络接口

Windows CE

Microsoft公司的产品

微内核,可剥夺

采用页式存储管理,页面换入技术(可以锁定) 内核映像既可以在ROM中,也可以在RAM中

运行

动态连接DLL

中断处理分ISR与IST,不支持嵌套

设备驱动也分两层

Winsock提供网络接口

GUI丰富

5 开源的嵌入式操作系统

公开源码<> 不是商品

μC/OS

MACH

Carnegie Mellon University RT-MACH

RTLINUX

New Mexico Tech的Victor Yodaiken等人研制

变种:

–RTAI

–ADEOS

KURT

L inux的变种,Kansas University

时钟精度提高

增加一些系统调用

增加针对硬实时进程的调度策略

ARM-LINUX

Preempt Linux

Robert M. Love

针对LINUX的不可剥夺调度 2001年RML补丁

TimeSys Linux

美国公司,原致力于MACH,现转向linux

6 因特网时代应用模型的演变

程序作为动态构件自动加载运行,而不

需要由用户去逐个启动。

构件支持脚本语言控制,多个构件可以

相互操作,交换信息。

以浏览器为交互式操作界面,既便于有

户掌握,又为程序开发提供了统一标准。

网络化资源管理,程序自动下载运行,

不需要用户介入。

因特网时代应用模型的演变

来自不同软件开发商的软件模块动态组织起来运行灵活内核技术浏览器成为统一的用户界面

操作系统对XML的支持

XML文本描述语言的广泛使用将是因特网时代操作系统的另一明显标志

XML的每个标签(tag)都可以由用户定义

XML兼顾了对于人的可读性和计算机的处理效率

XML已经成了因特网信息交换的标准,未来的操作系统内核会对XML进行最有效的支持因特网时代操作系统技术的发

硬件设备即插即用

因特网时代要求硬件设备能即插即用

解决方案只能是在驱动程序对象中加入非执行的描述信息, 这种描述信息就是通常所说的元数据(metadata),它可以“告诉”访问者它有哪些特性和功能。

元数据可以是XML形式、二进制或两者兼有。我们知道对象加上元数据就是构件。

操作系统可以根据构件中的元数据生成中间件。这种在内核里动态生成的中间件是连接驱动构件与用户程序的“桥

梁”,

而这"桥梁"是内核根据硬件设备的元数据动态生成的,此时的新型操作系统仍然是"以不变应万变"

体系结构由固定变为灵活

操作系统体系结构大致分为两种:大内核(Monolithic Kernel)和微内核(Micro Kernel)

大内核操作系统将图形、设备驱动、文件系统等全部功能在操作系统内核中实现,运行在内核状态、同一地址空间。优点是减少进程间通信和状态切换的系统开销,获得较好的运行效率。缺点是内核庞大,占用资源多,剪裁不易,并且一旦个别驱动程序运行出错,就会导致整个系统崩溃,稳定性、安全性不好。

微内核在内核中只实现那些必须由内核实现的基本功能,而将图形、文件系统、设备驱动、通讯等功能放在内核之外,作为系统服务来提供相应的功能,这些程序在用户状态下运行。这样做的优点是有一个精炼的内核,便于剪裁、移植。

服务器-中间件-用户”编程模型操作系统与虚拟机

操作系统可以作为虚拟机,直接提供中

间件的运行环境

操作系统可以对应用程序构件进行各种

各样的控制,使得封装好的构件能够适

应不同的运行环境和用户要求

操作系统利用中间件技术支持和控制应

用程序的运行环境,就形成了因特网时

代操作系统的关键技术

基于中间件技术的嵌入式操作系

操作系统的实现采用构件技术,提供构件运行的虚拟机环境,支持动态加载构件

构件的互操作性定义了编程语言无关、可扩展、跨平台的二进制标准。构件之间的相互作用通过一组称作接口

(interface)的功能实现

提供接口描述语言CDL,为服务器中新功能的实现提供了方便,如脚本语言调用构件对象函数等

运行环境(虚拟机)可以在操作系统上自动生成中间件(代理构件),提供构件定位、调用、管理、中间件自动生成、构件通信(进程内、跨进程、跨网络等不同运行环

境)等机制

件技术保证了软件互操作性、版本升级独立性和运行环境透明性,提供了提高系统安全、软件协同开发、软件容错、可靠性、软件复用、软件升级的有效手段

基于中间件技术的操作系统的技

术优势

提供系统的安全保护机制

硬件设备的即插即用

稳定、健壮的系统特性

灵活内核操作系统体系结构

7.嵌入式Linux

一、嵌入式Linux的定义

嵌入式Linux(Embeded Linux)是指对Linux经过小型化裁剪后,能够固化在容量只有几十万字节或几十亿字节的存储器芯片或单片机中,应用于特定嵌入式场合的专用Linux操作系统

嵌入式Linux的优势

Linux系统是层次结构且内核完全开放

强大的网络支持功能

Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍

Linux具有广泛的硬件支持特性

嵌入式Linux的特点

专用嵌入式实时操作系统嵌入式Linux操作系统版权费每生产一件产品需交纳一份

版权费

免费购买费用数十万元(RMB)免费

技术支持由开发商独家提供有限的技

术支持

全世界的自由软件开发者提供支

持网络特性另加数十万元(RMB)购买免费且性能优异

软件移值难(因为是封闭系统)易,代码开放(有许多应用软件支

持)

应用产品开发周期长,因为可参考的代码有限短,新产品上市迅速,因为有许多

公开的代码可以参考和移植实时性能好须改进,可用PT_Linux等模块弥

补稳定性较好较好,但在高性能系统中须改进

主流嵌入式Linux系统

μClinux

Embedix

RTLinux

RTAI

Monta Vista Linux

Linux的实时性

一般的通用linux已经具备一定的实时性 但无法满足硬实时的要求

–运行于linux内核空间的进程(核心态)不能

被抢先

–在linux中,中断有时候会出于保护临界区操

作的目的而被屏蔽

–通用linux的时间滴答长度为10ms(硬件时钟频率100HZ),但是这对于时间精度要求很

高(微秒级)的实时进程来说是不够的

嵌入式Linux 的实时性改造

可以引入一个双内核结构

对Linux 内核代码作一些修改Linux 本身的任务以及Linux 内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任务以Linux 的内核模块(Loadable Kernel Module ,LKM)的形式存在的

资源核方法:这种方法是为解决传统实时操作系统中固定优先级抢占式调度策略的局限性而产生的

Linux 2.6内核实时性分析

2.6中内核自身是可抢占的,它允许自身在执行任务时被打断

2.6版本的Linux 内核使用了由Ingo

Molnar 开发的新的调度器算法,称为O(1)算法

嵌入式Linux 面临的挑战

1、扩充Linux 的实时系统

–内核不支持事件优先级和抢占实时特性–对Linux 实时性的扩展可以从两方面进行:

?向外扩展(让实时系统支持的范围更广,支持的设备更多)

?向上扩展(扩充Linux 内核,从功能上扩充Linux 的实时处理和控制系统)

RT -Linux 的做法

–Linux 本身的任务以及Linux 内核本身作为一个优先级最低的任务

–实时任务作为优先级最高的任务

–实时任务以Linux 的内核模块(Loadable Kernel Module ,LKM)的形式存在

RTLinux 硬实时操作系统简介

RTLinux 是一硬实时操作系统

实现了一个微内核的小的实时操作系统,而将普通Linux 系统作为一个该操作系统中的一个低优先级的任务来运行

普通Linux 系统中的任务可以通过FIFO 和实时任务进行通信

通过软件来模拟硬件的中断控制器

RT -Linux 通过将系统的实时时钟设置为单次触发状态,可以提供十几个微秒级的调度粒度

RTLinux 内核结构

硬件环境

RTLinux内核

Linux内核

Linux进程

实时任务

2、改变Linux内核的体系结构

Monolithic内核体系

MicroKernel体系

执行效率

内核的体积

升级、维护和移植

微内核技术

缺点:操作系统的服务模块在独立的地址空间运行,使得进程间通信和上下文切换的系统开销大大增加,降低了系统效率。

3、完善Linux的集成开发环境 Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距

POSIX实时扩展

POSIX(Portable Operating System Interface)是为标准化类UNIX操作系统所必须具有的特征和接口而制定,其思想就是为了增强为类UNIX操作系统编写的软件的可移植性

二、嵌入式linux开发

最小的嵌入式Linux 系统仅需要三个基本元素:–引导实用程序

–Linux 微内核,由内存管理、进程管理和定时服务

构成

–初始化过程

?

–硬件驱动程序

–一个或多个应用进程,以提供所需功能

面向嵌入式Linux 系统的图形

用户界面

MicoroWindows/NanoX

–开放源码

–无任何硬件加速能力

–图形引擎中存在许多低效算法

–代码质量较差

OpenGUI

–可移植性稍差

Qt/Embedded

–低的程序效率、大的资源消耗

MiniGUI

嵌入式Linux开发

了解硬件

针对所用CPU的编译器/汇编器/连接器,相应的库工具,目标文件分析/管理工具,符号查看器 编程器,下载工具和查错器

安排内存地址

编写启动代码和机器相关代码:硬件初始化,装载内核及安装根文件系统以及开始内核执行 驱动程序

嵌入式Linux的一般开发步骤:

?精简内核

?系统启动

?驱动程序开发

?界面开发:将X-Window换成MicroWindows

精简内核

? 构造内核的常用命令包括:make config、dep、clean、mrproper、zImage、bzImage、modules、modules_install 。

精简内核的实例?使用make config去掉多余功能。

./Makefile

./arch/i386/kernel/

Makefile

启动优化基本技术

一、固化各种不可扩展硬件的设置,尽量标准化可扩展设备的接口,节约设备检测时间。

二、Lazy Loading,也即不加载当前非必需的

模块,这些模块可以在启动后待机时间内加载,或者在具体用到之后再加载,把启动时间打散,从而缩短对用户来说至关重要的反应时间(Responding Time)。

三、任务并行化,很多系统在启动任务时,是顺序执行,按部就班。为了减少启动时间,我们可以考虑任务的并行化,以减少启动时间的消耗。

嵌入式Linux启动过程分析 在内核运行之前需要系统引导程序(Bootloader)完成加载内核和一些辅助性的工作,然后跳转到内核代码的起始地址并执行。

整个arm linux内核的启动可分为三个阶段:第一阶段主要是进行cpu和体系结构的检查、cpu 本身的初始化以及页表的建立等;第二阶段主要是对系统中的一些基础设施进行初始化;最后则是更高层次的初始化

系统启动

系统启动的相关文件如下:

./arch/$ARCH/boot/

bootsect.s

./arch/$ARCH/boot/setup.s

./init/main.c

bootsect.S 及setup.S

嵌入式Linux的启动优化 系统任务裁减

–裁减不适合本系统的部分任务

系统任务并行

–明确任务依赖关系

–任务并行启动(make -j 工具的使用)

IBM系列PC的启动

?IBM系列PC在电源打开后,由内存中地址FFFF:0000开始执行(这个地址一定在ROM BIOS中,ROM BIOS一般是在

FE000h到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROM BIOS中的位置,开始执行一系列的动作。

紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROM bootstrap routine)。这个程序会将磁盘上的第零轨第零扇区读入内存物理地址07C0:0000(即07C00h处。而位于Linux开机磁盘的boot sector上的是Linux的bootsect程序。

Linux的启动

?Linux是由位于boot sector 的bootsect程序负责把setup及Linux的kernel载入内存中,再将控制权交给setup。

驱动程序

?在Linux系统里,设备驱动程序提供一组入口点,它们由一个结构在设备驱动程序初始化的时候向系统进行登记,以便系统在适当的时候调用。Linux系统里,通过调用

register_chrdev向系统注册字符型设备驱动程序。

添加驱动程序

?1.直接修改系统核心的源代码,把设备驱动程序加进核心里

?2.把设备驱动程序作为可加载的模块,由系统管理员动态地加载它,使之成为核心的一部分。

嵌入式系统软件嵌入式系统软件

嵌入式系统软件 杨剑锋 1. 嵌入式操作系统 嵌入式操作系统是个集合,而且是个无限集合 –监控程序?常规操作系统 (红外线?紫外线) –一维和多维 嵌入式操作系统常常有实时要求–早期:嵌入式操作系统= 实时操作系统 –近期: ?1)手持计算机和掌上计算机的出现; ?2)CPU速度的提高; ?3)常规操作系统增加实时进程调度的支持,如 POSIX.4 ?嵌入式操作系统<>实时操作系统 许多嵌入式操作系统的内核是微内核结构 许多嵌入式操作系统都不带磁盘 –根本不支持文件系统 –结构上为了设备驱动而支持文件系统,但不 支持文件系统的文件存储功能 许多嵌入式操作系统不采用存储管理技术,即不支持虚拟存储技术 许多嵌入式操作系统不划分“系统空间”和“用户空间” –操作系统的“内核”与外围应用程序之间不再 有物理的边界; –系统中所谓“进程”实际上全都是内核线程?静态连接、系统调用、进程调度/切换–对任何一个应用程序做细微的修改,都得重新生成整个系统,并且“下载”之; –系统调用的界面太庞大; –共享变量的访问,需要谨慎对待; –把通用操作系统上的应用移植过来需考虑“可重入”的问题;

不分系统空间和用户空间<>必须静态连接–如DOS、CP/M的INT21 不分系统空间和用户空间<>不能用页面映射技术 –但只用于不同进程之间,而非不同空间之间 即使采用了存储管理,基本上都不采用页面交换技术 重启动技术(watch dog) 2. RTOS 是否实时 –一方面是多大程度上充分发挥硬件潜力,即综合速度快慢的问题; –另一方面同时也是反映的速度在多大的程度上得到保证的问题 中断延迟(Interrupt Latency)–中断不可嵌套 –LINUX的Bottom Half –中断可嵌套:优先级中断 ?大多微处理器不支持; ?LINUX不支持; ?UNIX支持 –与指令集有关 –DMA操作有关 –保证系统调用的原子性有关 调度延迟(Scheduling Latency)–中断处理程序进程处理 –一般调度算法(Round Robin)不能及时选 中 –基于优先级调度算法,一般能及时选中?如果目标进程优先级低呢? –可剥夺调度和不可剥夺调度 ?LINUX是属于什么调度? ????????????→ 事件或软中断 Linux 既不是完全的可剥夺,也不是完全的不可剥夺 上下文切换延迟(Context Switch Latency)–大小取决于CPU和操作系统 –采用MMU > 不采用MMU 只要发生调度,就能选中目标进程吗? –根据时间片的耗用调整优先级 –拉开距离,分等级 对实时进程而言,“应该没有问题”不够。 是否可以不用中断、也不用调度,回到 最简单的“监控程序”?

三种常用的嵌入式操作系统分析与比较

三种常用的嵌入式操作系统分析与比较 摘要:提要三种常用的嵌入式操作系统——Palm OS、Windows CE、Linux;在此基础上、分析、比较这三种嵌入式操作系统,给出它们之间的异同点及各自的适用范围。 1 嵌入式系统与嵌入式操作系统 1.1 嵌入式系统 嵌入式系统是以嵌入式计算机为技术核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、成本、体积、功耗等综合性能有严格要求的专用计算机系统。 嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。 1.2 嵌入式操作系统 嵌入式操作系统EOS (Embedded Operating System)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、调度作,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而方的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下特点: ①可装卸性。开放性、可伸缩性的体系结构。 ②强实时性。EOS实时性一般较强,可用于各种设备控制当中。 ③统一的接口。提供各种设备驱动接口。

嵌入式软件开发流程图

嵌入式软件开发流程 一、嵌入式软件开发流程 1.1 嵌入式系统开发概述 由嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发3大部分,其总体流程图如图1.1所示。 图1.1 嵌入式系统开发流程图 在系统总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择。往往通过硬件实现会增加产品的成本,但能大大提高产品的性能和可靠性。 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择以及开发工具的选择等。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择Vxworks等。

1.2 嵌入式软件开发概述 嵌入式软件开发总体流程为图4.15中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。 由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具做一简单归纳。 嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior(下面要介绍的ADS 的一个工具)等,在调试阶段所用的Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,比如Vxworks有集成开发环境Tornado,WindowsCE的集成开发环境WindowsCE Platform等。此外,不同的处理器可能还有对应的开发工具,比如ARM的常用集成开发工具ADS、IAR和RealView等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。图4.16是嵌入式开发的不同阶段的常用软件。 图1.2 嵌入式开发不同阶段的常用软件 嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为编译和调试两部分,下面分别对这两部分进行讲解。 1.交叉编译 嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。在第3章中已经提到,编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。嵌入式系统交叉编译环境如图4.17所示。

什么是嵌入式软件开发嵌入式系统软件开发所需要学习那些知识_百(精)

什么是嵌入式软件开发?嵌入式系统软件开发所需要学习那些知识? 随着智能化和信息化网络化的不断发展,嵌入式技能已经日趋成为一种新时代新技术革命的关键。对于嵌入式系统和嵌入式软件开发人员来说,这份职业无疑是种高端应用技术的结合。是一个很有前景的职业。 嵌入式趋势来势汹涌,目前为止已经被很多企业所应用,对于这方面人才的需求更是倍感吃紧。关于嵌入式具体应用不做详细的解说,在这里有必要强调一下,嵌入式软件开发是含义,和要想在嵌入式软件开发中取得不菲的成绩所需掌握那些最基础的知识。 嵌入式技术执行专用功能并被内部计算机控制的设备或者系统。嵌入式系统不能使用通用型计算机,而且运行的是固化的软件,嵌入式技术及应用是计算机应用技术的新发展,具有广泛的应用领域和发展前景,就业形势看好。 嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑,笼统地来说,嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。 这么多的应用可见嵌入式系统的前景和人才需求是相当大的,在最近几年中关于这一类的培训也层出不穷,所涉及到的课程和知识点相对来说还是有点差异的,在深圳达内福田培训中心网站上看到了关于嵌入式系统软件开发所需要掌握的几大知识点,感觉划分的很细致。 主要包含以下8个核心部分 1.Linux操作系统核心

嵌入式系统设计师相关资料

嵌入式系统设计师 通过本考试的合格人员能根据项目管理和工程技术的实际要求,按照系统总体设计规格说明 书进行软、硬件设计,编写系统开发的规格说明书等相应的文档;组织和指导嵌入式系统开 发实施人员编写和调试程序,并对嵌入式系统硬件设备和程序进行优化和集成测试,开发出符合系统总体设计要求的高质量嵌入式系统;具有工程师的实际工作能力和业务水平。 报名时间:上半年一般在2-3月之间,下半年一般在7-9月之间 考试时间:上半年一般在5-6月,下半年一般在11月 报考条件:1、遵纪守法,恪守职业道德; 2、具有一定计算机技术应用能力。 不限学历和资历条件。 考试报名办法、时间及要求:采取网上报名、现场确认的报名办法。进行网上报名时报考人员必须登陆浙江软件考试网(网址:) ,按报名流程完整、准确输入本人的真实信息,输入 完成后下载打印《2006年下半年计算机技术与软件专业技术资格(水平)考试报考登记表》 (以下简称“报名表”),在“报名表”上贴上本人同一底版的一寸免冠照片2张(其中一张用于“报名表”,一张备用),并在“报名表”的诚信声明处确认签字,由市(厅、局) 人事部门汇总后统一到省软件考试实施办公室办理现场确认手续,也可个人直接到各市报名 确认点或省软件考试实施办公室确认。 报考费用:现场确认时报考人员须交网上报名时下载的已经过本人签字确认的“报名表”并 交纳报名考务费。考试收费标准按浙价费〔2001〕189号和发改价格〔2003〕2148号规定,系统分析师和信息系统项目管理师级每人177元(含上缴国家27元),其他各级每人118 元(含上缴国家18元) 考试要求: (1)掌握计算机科学基础知识; (2)掌握嵌入式系统的硬件、软件知识; (3)掌握嵌入式系统分析的方法; (4)掌握嵌入式系统设计与开发的方法及步骤; (5)掌握嵌入式系统实施的方法; (6)掌握嵌入式系统运行维护知识; (7)了解信息化基础知识、计算机应用的基础知识; (8)了解信息技术标准、安全性,以及有关法律法规的基本知识; (9)了解嵌入式技术发展趋势; (10)正确阅读和理解计算机及嵌入式系统领域的英文资料。 考试范围: 考试科目1:嵌入式系统基础知识 1.计算机科学基础 1.1数制及转换 o二进制、八进制、十进制和十六进制等常用数制及其相互转换 1.2数据的表示 o数的机内表示(原码、反码、补码、移码,定点和浮点,精度和溢出) o字符、汉字、声音、图像的编码方式 o校验方法和校验码(奇偶验码、海明校验码、循环校验码) 1.3算术和逻辑运算

嵌入式系统与单片机的区别

嵌入式与单片机的异同及其发展趋势 如果说微型机的出现,使计算机进入到现代计算机发展阶段,那么嵌入式计算机系统的诞生,则标志了计算机进入了通用计算机系统与嵌入式计算机系统两大分支并行发展时代,从而导致20世纪末,计算机的高速发展时期。 嵌入式计算机系统走上了一条独立发展的单芯片化道路。它动员了原有的传统电子系统领域的厂家与专业人士,接过起源于计算机领域的嵌入式系统,承担起发展与普及嵌入式系统的历史任务,迅速地将传统的电子系统发展到智能化的现代电子系统时代。 按照历史性、本质性、普遍性要求,嵌入式系统定义为:“嵌入到对象体系中的专用计算机系统”。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的三个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。 嵌入式系统的特点与定义不同,由定义中的三个基本要素衍生出来的。不同的嵌入式系统其特点会有所差异。与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。与“专用性”的相关特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。 嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)、芯片级(MCU、SoC)。 嵌入式系统与对象系统密切相关,其主要技术发展方向是满足嵌入式应用要求,不断扩展对象系统要求的外围电路(如ADC、DAC、PWM、日历时钟、电源监测、程序运行监测电路等),形成满足对象系统要求的应用系统。因此,嵌入式系统作为一个专用计算机系统(满足对象系统要求的计算机应用系统),要不断向计算机应用系统发展。 单片机开创了嵌入式系统独立发展道路. 嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走独立发展道路——芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系统独立发展的单片机时代。 在探索单片机的发展道路时,有过两种模式,即“∑模式”与“创新模式”。“∑模式”本质上是通用计算机直接芯片化的模式,它将通用计算机系统中的基本单元进行裁剪后,集成在一个芯片上,构成单片微型计算机;“创新模式”则完全按嵌入式应用要求设计全新的,满足嵌入式应用要求的体系结构、微处理器、指令系统、总线方式、管理模式等。Intel公司的MCS-48、MCS-51就是按照创新模式发展起来的单片形态的嵌入式系统(单片微型计算机)。MCS-51是在MCS-48探索基础上,进行全面完善的嵌入式系统。历史证明,“创新模式”是嵌入式系统独立发展的正确道路,MCS-51的体系结构也因此成为单片嵌入式系统的典型结构体系。 单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。 SCM即单片微型计算机(Single Chip Microcomputer)阶段.主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM 与通用计算机完全不同的发展道路。

嵌入式系统发展与应用

嵌入式系统发展与应用 引言 不论是日常生活中经常使用的家庭自动化产品、家用电器、手提电话、自动柜员机(ATM),还是各行各业的办公设备、现代化医疗设备、航空电子、计算机网络设备、用于工业自动化和监测的可编程逻辑控制器(PLC),甚至是娱乐设备的固定游戏机和便携式游戏机等都属于嵌入式系统。嵌入式系统始于微型机时代的嵌入式应用,通过将微型机嵌入到一个对象体系中,实现对象系统的智能化控制。随着科技的不断发展,在单片机时代,嵌入式系统以器件形态迅速进入到传统电子技术领域中,以电子技术应用工程师为主体,实现传统电子系统的智能化。而后,随着后PC时代的到来,网络、通信技术得以发展;同时,嵌入式系统软、硬件技术有了很大的提升,形成了基于嵌入式系统软、硬件平台,以网络、通信为主的非嵌入式底层应用的计算机应用模式。 1嵌入式系统的概念与发展 1.1 嵌入式系统的概念 嵌入式系统是以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等4个部分组成,它是集软硬件于一体的可独立工作的“器件”。它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。 1.2 嵌入式系统发展 纵观嵌入式系统的发展历程,大致经历了以下四个阶段: (1)无操作系统阶段 嵌入式系统最初的应用是基于单片机的,大多以可编程控制器的形式出现,具有监测、伺服、设备指示等功能通常应用于各类工业控制和飞机、导弹等武器装备中,一般没有操作系统的支持,只能通过汇编语言对系统进行直接控制,运行结束后再清除内存。这些装置虽然已经初步具备了嵌入式的应用特点,但仅仅只是使用8位的CPU芯片来执行一些单线程的程序,因此严格地说还谈不上系统的概念。这一阶段嵌入式系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简便、价格低廉,因而曾经在工业控制领域中得到了非常广泛的应用,但却无法满足现今对执行效率、存储容量都有较高要求的信息家电等场合的需要。 (2)简单操作系统阶段 20世纪80年代,随着微电子工艺水平的提高,Ic制造商开始把嵌入式应用中所需要的微处理器、I/O接口、串行接口以及RAM、ROM等部件统统集成到一片VLSI中,制造出面向I /0设计的微控制器,并一举成为嵌入式系统领域中异军突起的新秀。与此同时,嵌入式系统的程序员也开始基于一些简单的操作系统开发嵌入式应用软件,大大缩短了开发周期、提高了开发效率。 (3)实时操作系统阶段 20世纪9O年代,在分布控制、柔性制造、数字化通信和信息家电等巨大需求的牵引下,嵌入式系统进一步飞速发展,而面向实时信号处理算法的DSP产品则向着高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模也不断扩大,逐渐形成了实时多任务操作系统(RTOS),并开始成为嵌入式系统的主流。 这一阶段嵌入式系统的主要特点是:操作系统的实时性得到了很大改善,已经能够运行在各种不同类型的微处理器上,具有高度的模块化和扩展性。此时的嵌入式操作系统已经具备了

软件设计说明书嵌入式软件范例

一、XXXXX-XXX 热压机自动控制系统软件的设计 LCD—液晶显示器,因其具有微功耗、平板化等一系列显著特点而广泛应用于仪器仪表、计算机显示终端、各类电子显示装置等各个方面。LCD的后工序生产工艺包括COG、COF、FOG、FOB,XXX-XXX 热压机正是为FOG段工艺而开发设计的。 XXXXX-XXX热压机自动控制动系统软件(以下简称XXX系统)是由PLC、气动元件和电动元件组成,其特点是通过传感器采集外部信号,输入到PLC内部进行计算处理,以控制外部执行元件,使之完成一系统的机构动作,达到生产所需的工艺要求。 ㈠ XXX 系统的性能和结构 XXX 系统主要由PLC、GOT(触摸屏)、伺服电机、气缸电磁阀、电磁继电器、光电传感器、磁性传感器、温度处理器、温度传感器以及各种按钮组成。 1、XXX 系统的主要性能和技术参数 ●主机电源:Vac-----220VAC/50HZ ●传感器电源:Vdd-----+24V ● PLC接口:40位输入、32位输出、1个RS232通信串口 ●工作温度:-10℃~+55℃ ●存储温度:-20℃~+60℃ 2、XXX 系统的内部地址 XXX 系统的内部地址及主要功能部件: ●输入继电器— X ●输出继电器— Y ●辅助继电器— M ●定时器— T ●计数器— C ●数据寄存器— D ●变址寄存器— Z 3、XXX 系统的外部引线功能定义 XXX 系统共有82根引脚,具体定义如下: ㈡指令描述 XXX 系统主要有如下指令: ㈢人机界面(GOT) 1、参数设置

人机界面(GOT)可用于参数设置和数据的显示(如图所示) 2、手动操作 人机界面亦可制作手动调试所需的各种按键,以替代繁琐的按钮(如图) 3、生产信息 人机界面还可用于显示生产时的各种数据以及PLC内部的信息,比如外部引脚的通断 信息、生产时产生的报警信息等(如下图) ㈣ XXX 系统的接口及编程 1、硬件接口 XXX系统与电脑的接口可以有两种方式:直接控制方式和间接控制方式。直接控制方式就是将PLC的RS232接口直接与电脑的RS232接口对接(如图1-1);间接控制方式就是将PLC的RS232接口与触摸屏的RS232接口对接,然后将电脑的RS232接口与触摸屏的RS422接口对接,然后对该外设进行间接操作而实现控制(如图1-2)。 2、程式流程方框图 A、系统回原点流程图 B

(完整版)通用PC系统与嵌入式系统的区别

通用PC系统与嵌入式系统的区别.txt精神失常的疯子不可怕,可怕的是精神正常的疯子!一什么是嵌入式系统 嵌入式系统一般指非pc系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于pc中bios的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。 嵌入式系统几乎包括了生活中的所有电器设备,如掌上pda、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。 嵌入式系统的硬件部分,包括处理器/微处理器、存储器及外设器件和i/o端口、图形控制器等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用eprom、eeprom或闪存 (flash memory)作为存储介质。软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。 二嵌入式处理器 嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般具备4个特点:(1)对实时和多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时操作系统的执行时间减少到最低限度;(2)具有功能很强的存储区保护功能,这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;(3) 可扩展的处理器结构,以能迅速地扩展出满足应用的高性能的嵌入式微处理器;(4)嵌入式微处理器的功耗必须很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,功耗只能为mw 甚至μw级。 据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000种,流行的体系结构有30 多个系列。其中8051体系占多半,生产这种单片机的半导体厂家有20多个,共350多种衍生产品,仅philips就有近100种。现在几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司有自己的处理器设计部门。嵌入式处理器的寻址空间一般从64kb到16mb,处理速度为 0.1~2000mips,常用封装8~144个引脚。 根据现状,嵌入式计算机可分成下面几类: (1)嵌入式微处理器(embedded microprocessor unit, empu) 嵌入式微处理器采用“增强型”通用微处理器。由于嵌入式系统通常应用于环境比较恶劣的环境中,因而嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标准微处理器高。但是,嵌入式微处理器在功能方面与标准的微处理器基本上是一样的。根据实

嵌入式软件系统设计方案案例

待定颜色 修改颜色 疑问颜色 采集器软件系统设计方案 版本历史

目录 1.引言 (5) 1.1 目的 (5) 1.2 背景和范围 (5) 1.3 定义 (5) 1.4 参考资料 (5) 2.系统结构 (5) 2.1 系统功能 (5) 2.2硬件系统框架 (6) 2.2 软件系统框架 (7) 3.上行规约解析模块设计说明 (9) 3.1描述 (9) 3.2功能 (9) 3.3设计思路(算法、流程) (9) 3.4接口 (10) 3.5资源分配、性能 (12) 3.6测试方法 (12) 4.读写参数模块设计说明 (12) 4.1描述 (12) 4.2功能 (12) 4.3设计思路(算法、流程) (13) 4.4接口 (13) 4.5资源分配、性能 (14) 4.6测试方法 (14) 5.周期抄表任务管理 (14) 5.1描述 (14) 5.2功能 (14) 5.3设计思路(算法、流程) (14) 5.4接口 (14) 5.5资源分配、性能 (14) 5.6测试方法 (15) 6.读历史电量数据模块设计说明 (15) 6.1描述 (15) 6.2功能 (15) 6.3设计思路(算法、流程) (15) 6.4接口 (15)

6.5资源分配、性能 (15) 6.6测试方法 (15) 7.数据存储和电表信息存储管理 (15) 7.1描述 (15) 7.2功能 (16) 7.3设计思路(算法、流程) (16) 7.4接口 (20) 7.5资源分配、性能 (20) 7.6测试方法 (20) 8.数据交换模块设计说明 (21) 8.1描述 (21) 8.2功能 (21) 8.3设计思路(算法、流程) (21) 8.4接口 (21) 8.5资源分配、性能 (21) 8.6测试方法 (21) 9.广播校时任务模块设计说明 (21) 9.1描述 (21) 9.2功能 (22) 9.3设计思路(算法、流程) (22) 9.4接口 (22) 9.5资源分配、性能 (22) 9.6测试方法 (22) 10.更改RS485通讯速率设计说明 (23) 10.1描述 (23) 10.2功能 (23) 10.3设计思路(算法、流程) (23) 10.4接口 (23) 10.5资源分配、性能 (23) 10.6测试方法 (23) 11.抄表记录周期任务设计说明 (23) 11.1描述 (23) 11.2功能 (23) 11.3设计思路(算法、流程) (23) 11.4接口 (23) 11.5资源分配、性能 (24)

嵌入式操作系统的种类与特点

1.3.1 嵌入式操作系统的种类、特点与发展 1.嵌入式操作系统的种类 一般情况下,嵌入式操作系统可以分为两类: 非实时操作系统:面向消费电子产品等领域,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书等。 实时操作系统RTOS(Real-Time Embedded Operating System):面向控制、通信等领域,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx等。 (1)非实时操作系统 早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面对裸机及裸设备。在这种情况下,通常把嵌入式程序分成两部分,即前台程序和后台程序。前台程序通过中断来处理事件,其结构一般为无限循环;后台程序则掌管整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度程序。这就是通常所说的前后台系统。一般情况下,后台程序也叫任务级程序,前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运行条件,通过一定的调度算法来完成相应的操作。对于实时性要求特别严格的操作通常由中断来完成,仅在中断服务程序中标记事件的发生,不再做任何工作就退出中断,经过后台程序的调度,转由前台程序完成事件的处理,这样就不会造成在中断服务程序中处理费时的事件而影响后续和其它中断。 实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的任务具有相同的优先级别,即是平等的,而且任务的执行又是通过FIFO队列排队,因而对那些实时性要求高的任务不可能立刻得到处理。另外,由于前台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃,使得整个任务队列中的其它任务得不到机会被处理,从而造成整个系统的崩溃。由于这类系统结构简单,几乎不需要RAM/ROM的额外开销,因而在简单的嵌入式应用被广泛使用。 (2)实时操作系统 所谓实时性,就是在确定的时间范围内响应某个事件的特性。而实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计算机系统。其操作的正确性不仅依赖于逻辑设计的正确程度,而且与这些操作进行的时间有关。“在确定的时间内”是该定义的核心。也就是说,实时系统是对响应时间有严格要求的。 实时系统对逻辑和时序的要求非常严格,如果逻辑和时序出现偏差将会引起严重后果。实时系统有两种类型:软实时系统和硬实时系统。软实时系统仅要求事件响应是实时的,并不要求限定某一任务必须在多长时间内完成;而在硬实时系统中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。通常,大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计困难。实时系统的技术关键是如何保证系统的实时性。实时操作系统可分为可抢占型和不可抢占型两类。 嵌入式实时操作系统在目前的嵌入式应用中用得越来越广泛,尤其在功能复杂、系统庞大的应用中显得愈来愈重要。 从某种意义上说,没有操作系统的计算机(裸机)是没有用的。在嵌入式应用中,只有把CPU嵌入到系统中,同时又把操作系统嵌入进去,才是真正的计算机嵌入式应用。 操作系统的实时性在某些领域是至关重要的,比如工业控制、航空航天等领域。想像飞机正在空中飞行,如果嵌入式系统不能及时响应飞行员的控制指令,那么极有可能导致空难事故。有些嵌入式系统应用并不需要绝对的实时性,比如PDA播放音乐,个别音频数据丢失并不影响效果。这可以使用软实时的概念来衡量。

嵌入式软件行业及市场分析

嵌入式行业及市场分析 “后PC时代”的来临及3C融合加速趋势的彰显,给中国以嵌入式软件为核心的嵌入式系统产业的高速增长带来了千载难逢的契机,嵌入式软件产业现已成为中国IT 产业中的一个重要新兴产业和增长点。作为中国软件产业的一个重要组成部分,中国的嵌入式软件产业一直保持着快速的发展,最近几年来的增长速度都超过了30%。远远高于世界嵌入式软件产业和中国软件产业的增长速度。越来越多的国际嵌入式软件巨头将目光瞄向了中国这一新兴市场。最近两年来,微软、风河、Montavista、奇趣、PalmSource等全球嵌入式软件巨头,在中国或收购、或合作、或设立分支机构,争先恐后地进行“圈地运动”,力争在中国市场竞争格局尚未明朗之前占得先机,为公司日后在中国市场赢得有利位置奠定基础。这一系列重大事件标志着中国嵌入式软件产业进入了一个全新的发展阶段。 中国嵌入式软件产业规模到底有多大?发展势头如何?在中国到底有哪些企业在从事嵌入式软件产品的研发和销售?竞争格局如何?未来几年,嵌入式软件产业将出现哪些值得关注的投资机会?这些都是所有关注中国嵌入式软件产业的厂商与用户所迫切需要解答的问题。 2008年,中国嵌入式软件产业与网络通信、数字家庭、办公自动化、航空航天、工业控制、国防军事、医疗系统、安防系统、能源系统、交通系统、金融系统等行业融合正在加深,在全面优化中国制造的产业结构上发挥着越来越重要的作用。但产业标准的滞后、产业分工的不明细及产业协同的缺乏使得中国嵌入式软件核心竞争力的提高无法与产业规模增长同步,阻碍了产业向高级化发展的步伐。面对产业发展的机遇与挑战,我们发布的《2008年中国嵌入式软件产业发展研究报告》,将帮助业界厂商、投资者、产业人士更精确地把握中国嵌入式软件产业发展规律、更深入地梳理应用价值迁移轨迹-更加全面、深刻的产业分析。从产业特点、产品结构、产业链结构、产业链各环节竞争分析等多个维度总结产业发展现状。更加科学、完整的未来发展趋势分析和预测。综合产业政策、用户需求、技术演进、应用创新、产业变迁等多种因素影响力分析,给出有价值的趋势分析与定量预测结果。 本报告根据国家统计局、中国软件协会嵌入式系统分会、中国嵌入式产业联盟等国家政府机构和行业组织协会的统计,对2009-2010年我国嵌入式软件产业的市场规模、行业结构、应用产品以及投资机会等作了详尽的分析和预测。 目录 2009-2010年中国嵌入式软件产业市场发展策略及投资分析报告正文目录 第一章中国软件行业发展状况 第一节中国软件行业发展现状 第二节2008年中国软件收入及经济指针 第三节2008年中国软件业全球占有率 第四节2009年中国软件业的机遇和威胁

嵌入式系统和嵌入式操作系统

一什么是嵌入式系统 嵌入式系统一般指非PC系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于PC中BIOS的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。 嵌入式系统几乎包括了生活中的所有电器设备,如掌上PDA、移动计算设备、电视机顶盒、手机上网、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器等。 嵌入式系统的硬件部分,包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘那样大容量的存储介质,而大多使用EPROM、EEPROM或闪存(Flash Memory)作为存储介质。软件部分包括操作系统软件(要求实时和多任务操作)和应用程序编程。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。 二嵌入式处理器 嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般具备4个特点:(1)对实时和多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时操作系统的执行时间减少到最低限度;(2)具有功能很强的存储区保护功能,这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断;(3)可扩展的处理器结构,以能迅速地扩展出满足应用的高性能的嵌入式微处理器;(4)嵌入式微处理器的功耗必须很低,尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统更是如此,功耗只能为mW甚至μW级。 据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000种,流行的体系结构有30多个系列。其中8051体系占多半,生产这种单片机的半导体厂家有20多个,共350多种衍生产品,仅Philips就有近100种。现在几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司有自己的处理器设计部门。嵌入式处理器的寻址空间一般从64kB到16MB,处理速度为0.1~2000MIPS,常用封装8~144个引脚。 根据现状,嵌入式计算机可分成下面几类。 (1)嵌入式微处理器(Embedded Microprocessor Unit, EMPU) 嵌入式微处理器采用“增强型”通用微处理器。由于嵌入式系统通常应用于环境比较恶劣的环境中,因而嵌入式微处理器在工作温度、电磁兼容性以及可靠性方面的要求较通用的标

嵌入式操作系统软件平台

嵌入式操作系统软件平台 1、嵌入式系统 嵌入式系统的定义是以应用为中心,以计算机技术为基础,软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。其在工业制造、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类电子产品等方面具有广泛的应用。其组成结构如下图所示: 图1-1 嵌入式系统 2、嵌入式软件的分类 嵌入式操作系统:嵌入式操作系统EOS(Embedded Operating System)是一种用途广泛的系统软件,过去它主要用于工业控制和国防系统领域。 EOS负责嵌入式系统的全部软、硬件资源的分配、调度工作,控制协调 并发活动,它必须体现其所在系统的特征,能够通过装卸某些模来达到 系统所要求的功能。目前国际上著名的嵌入式操作系统有Windows CE、 Palm OS、Linux、VxWorks、pSOS、QNX、OS-9、LynxxOS等。我国嵌入 式操作系统起步较晚,国内类似产品主要是基于自主版权的Linux操作 系统,其中以中软Linux、红旗Linux、东方Linux为代表。 嵌入式支撑软件:支撑软件是帮助和支持软件开发的软件,通常包括数据库和开发工具,期中以数据库最为重要。嵌入式移动数据库(简称移 动数据库EMDBS)是支持移动计算或某种特定计算模式的数据库管理系 统,数据库系统与操作系统、具体应用集成在一起,运行在各种智能性 嵌入设备或移动设备上。国际上主要的嵌入式移动数据库系统有Sybase、

Oracle等。我国嵌入式移动数据库系统以东软集团研究开发出的嵌入式 数据库系统OpenBASE Mini为代表。 嵌入式应用软件:嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于用户任务可能 有时间和精度上的要求,因此有些嵌入式应用软件需要特定的嵌入式操 作系统的支持。嵌入式应用软件和普通应用软件有一定的区别,它不仅 要求其准确性、安全性和稳定性等方面能够满足实际应用需要,而且要 尽可能的进行优化,以减少对系统资源的消耗,降低硬件成本。目前我 国市场上出现了格式各样的嵌入式应用软件,包括浏览器、Email软件、 文字处理软件、通讯软件、多媒体软件、个人信息处理软件、智能人机 交互软件、各种行业应用软件等。 本文中主要针对嵌入式操作系统。 3、嵌入式操作系统的特征 嵌入式操作系统复杂嵌入式系统的全部软、硬件资源的分配、调度工作,控制协调并发,因此它必须体现所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。嵌入式操作系统具有如下一些特征: 小巧:嵌入式系统所能提供的资源有限,所以嵌入式操作系统必须做到小巧以满足嵌入式系统硬件的限制。 实时性:大多数嵌入式系统工作在实时性要求较高的环境中,因此嵌入式操作系统必须将实时性作为一个重要指标来考虑。 可装卸:由于嵌入式系统需要根据应用的要求进行装卸,所以iqianrushi 操作系统也必须能够跟用应用的要求进行装卸,去掉多余的部分或简化 相应模块。 固话代码:在嵌入式系统中,嵌入式操作系统和应用软件被固化在嵌入式系统计算机的ROM中。 弱交互性:大多数嵌入式系统的工作过程不需要人的干预。嵌入式操作系统的用户接口一般不提供操作命令,它通过系统调用命令向用户程序 提供服务。 强稳定性:嵌入式系统一旦开始运行,就不需要过多的干预。在这种条

关于嵌入式系统软件的全过程质量保证(精)

关于嵌入式系统软件的全过程质量保证 质量是产品的生命 当今随着软、硬件技术的发展,嵌入式系统广泛应用于航空航天、国防军事、电子通信等行业,其中软件也越来越复杂。而这些领域应用特点,决定了嵌入式系统往往是高安全、任务关键的系统,软件的微小瑕疵就可能严重威胁到生命和国家的安全、天文数字的巨额财产损失。这就使得保证嵌入式软件的质量和可靠性,变得至关重要。而在这些领域,对产品质量从来就保持着高度的重视,有将“质量视为产品的生命”的传统。这样,相关行业的高层管理人员和开发人员对于软件的质量也逐渐提高了重视程度。近年来,在组织上,建立了完善的软件测试体系;在开发和测试方法上,建立了中国的软件过程成熟度的评价体系GJB5000;在自动化工具方面,投入了大量的经费和人员在测试设备的开发、购置和建设方面。应该说,软件作为嵌入式产品主要的组成部分之一,对其质量的重视是目前相关行业的一个共识。 IBM Rational多年来在软件工程和质量保证方面积累了丰富的方法和经验。本文依据部分嵌入式开发机构对软件质量保证工作的一些理解,分析相应开发机构工作中可能的问题,并提出以RUP为核心的全过程质量管理的思想和具体的实现方式,提出不同单位的过程改进方法,以一种渐进的方式,从简单的工作开始,逐渐深入地改进组织的软件质量管理水平。 定义质量 对于任何一个组织,定义共同的对质量的理解是重要的第一步。软件开发组织经常按照一种不精确的、概括的质量观念来运转。 在IBM Rational统一过程中,质量定义如下: 满足或超出认定的一组需求; 使用经过认可的评测方法和标准来评估; 使用认定的流程来生产。 在这个定义中,我们首先看需求,IBM Rational的软件质量在用户需求方面的定义分为五个方面:易用性、可靠性、性能、可支持和功能。 质量保证,归根结底就是为客户提供更高品质的产品,更好地满足客户的需求。另一方面,这个质量定义中明确指出,质量更体现在软件开发的整个过程和一个标准的评价方式上。 软件开发过程质量就是指为了生成工件而对可接受流程的实施和遵守程度,体现在三个层次: 产品本身和用来生产、组装软件产品的零部件质量; 在软件开发过程的标准化、流程化、自动化程度和团队基本协作平台的效率,各个过程对质量的承诺; 软件产品验收的评测手段应该是被业界广泛认可和接受的方法,所构筑的质量评价标准。 一个软件生产企业的过程质量一般可以用它的软件过程成熟度等级来评估。 RUP全过程质量保证 Rational Unified Process(RUP)是一个可以通过Web来使用的软件工程过程。作为软件工业事实上的标准,它回答了我们以下问题:在整个软件开发

嵌入式软件编程规范

TRZN TRZN 嵌入式软件编程规范

1文档概述 (4) 1.1关于本文档 (4) 1.2参考文献 (4) 2排版 (5) 3注释 (9) 4标识符命名 (17) 5可读性 (23) 6变量、结构 (24) 7宏 (29) 8函数、过程 (31) 9可测性 (38) 10代码版本管理 (40) 10.1代码质量定义 (40) 10.2G IT分支定义 (40) 10.3G IT代码引入规定 (41) 10.4G IT代码C OMMIT顺序 (41) 10.5C OMMIT文件过程中的其他注意事项 (41) 11附录A –推荐编辑器的默认配置修改 (42) 11.1K EIL U V ISION5默认配置修改 (42)

1 文档概述 1.1 关于本文档 本文档规范了芜湖天人智能有限公司嵌入式软件部软件代码的书写规范和原则。 本文档仅供公司内部员工使用。 公司机密,严禁外传。 本文档中各规则的格式如下: 【规则编号】 [规则内容] [[标记]] 其中[标记]的含义如下: (必须):表示该条规则是必须遵守的。 (建议):表示该条规则是建议遵守的。 (可选)或没有标记:表示该条规则是可选择遵守的。 本文档的示例中,如有使用“//”,并非代码注释,而是文档的注释(有可能是文档中对代码注释的解释)。 1.2 参考文献 [1]高质量C++编程 [2]Effective C++ [3]More Effective C++ [4]C++ Primer [5]Thinking in C++

2 排版 ●【规则 2-1】程序块要采用缩进风格编写,缩进的空格数为4个,对齐使用空格键,不得使用TAB键。 [必须] 嵌入式软件开发的代码编辑器,推荐使用Keil uVision5,编辑器参数设置见附录A。 ●【规则 2-2】相对独立的程序块之间、变量说明之后必须加空行。[必须] 示例: ●【规则 2-3】较长的语句(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操 作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。[必须] 示例: ●【规则 2-4】循环、判断等语句中若有较长的表达式或语句,则要进行适当的分行,长表达式要在低 优先级操作符处划分新行,操作符放在行尾。[必须] 示例:

相关文档
最新文档