嵌入式系统原理及运用

更新时间:2023-04-21 01:41:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

有关嵌入式系统

摘 要

嵌入式系统开始于20世纪80年代单片机的使用。嵌入

式技术已经渗透到各个领域,且与人们的日常生活密不可

分,给人们生活和工业生产带来极大方便。

本文论述了嵌入式系统概念、嵌入式处理器、嵌入操作

系统和嵌入软件开发环境,解释了嵌入式系统组成中的各个部分。

嵌入式操作系统具有良好的可移植性,能够用在根据应

用要求选择的微处理器中。嵌入式系统设来了与传统系统设计全然不同的挑战。

嵌入式系统已成为计算机领域重要组成部分。广

泛讲,凡是带有微处理器的专用件系统都可以称为嵌入式系统。嵌入式系统可以通过无线形式和有线形式的网络连接方式实现它们之间连接。因此,在网络通信市场上极具生命力。

关键词 嵌入式系入式操作系统,μC/OS-Ⅱ

免责声明:文档在线网(文档中国)中所有的文档资料均由文档在线网会员提供。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性、正确性或可靠性。该文档资料的版权属于提供者所有,有关版权的问题请直接与提供者联系。

有关嵌入式系统

ABSTRACT

The Embedded system commenced with the use of SCM in 1980’s. The embedded technology has penetrated in every field. It’s inseparable with our daily life and it brings great convenience to people’s life and the industry.

This paper discusses the concept of the embedded system, the

embedded processor, the embedded operating system and the embedded software developing environment, explains the components of the embedded system.

The embedded system has great It can be used in

The embedded system has important component of the

computer field. Universally all the private soft-hardware systems can connect other through wireless and cable connecting way. it is animate in the market of the

KEY WORDS Embedded system, Embedded operating system,

μC/OS-Ⅱ

免责声明:文档在线网(文档中国)中所有的文档资料均由文档在线网会员提供。文档在线网会对会员提供的文档资料进行筛选和编辑,但是并不声明或保证其内容的合法性、正确性或可靠性。该文档资料的版权属于提供者所有,有关版权的问题请直接与提供者联系。

有关嵌入式系统

目 录

第一章 嵌入式系统概述······························································································ 1

1.1 嵌入式系统简介······························································································ 1

1.2 嵌入式系统的分类·························································································· 3

1.3 嵌入式系统设计的特点·················································································· 3

第二章 嵌入式处理器·································································································· 5

2.1 嵌入式处理器简介·························································································· 5

2.2 常用嵌入式处理器············································································ 6

第三章 嵌入式操作系统··················································································· 7

3.1 嵌入式操作系统简介 ······························································ 7

3.1.1 嵌入式操作系统的机制·························································· 8

3.1.2 ····························································· 9

3.1.3 ·································································· 10

3.2 μC/OS-······································································· 10

3.2.1 μC/OS- ······························································ 10

3.2.2 μC/OS- ······················································ 11

3.2.3 μC/OS- ·················································································· 12

第四章 嵌入式系统编程语言···················································································· 14

4.1 嵌入式系统的高级语言特点········································································ 14

4.2 嵌入式系统高级语言开发过程···································································· 14

4.3 嵌入式系统编程与系统硬件········································································ 16

4.3.1 存储器映射·························································································· 16

4.3.2 I/O映射 ································································································ 16

结束语·························································································································· 18

参考文献······················································································································ 19

I

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第一章 嵌入式系统概述

第一章 嵌入式系统概述

1.1 嵌入式系统简介

何谓嵌入式系统?根据英国电机工程师协会的定义所做的翻译,“嵌入式系统为控制、监视或辅助设备、机器或甚至工厂操作的装置”。它具备了下列四项的特性:

1.通常执行特定功能。

2.以微电脑与外围构成核心。

3.严格的时序与稳定性要求。

4.全自动操作循环。

嵌入式系统是电脑软件与硬件的综合体,亦可以涵盖机械和其他的附属装置。整个综合体设计的目的在于满足某种特殊功能。嵌入式系统的架构可分成五个部分:处理器,内存,输入与输出,操作系统与应用软件。它们常见于各类实验仪器、办公设备、交通运输设备、电信设备、制造设备、建筑设备、医疗设备及个人电脑等。

符合定义的嵌入式系统的第一个产品直到1971年以后才出现,这一年,Intel发布了世界上第一块微处理器4004,主要被日本的Busicom公司用来生产上用计算器。1969年,Busicom请Intel为他们的每一种新式计算分别设计一种定制的集成电路,Intel则拿出了4004。Intel没有为每一种计算器分别进行设计,而是设计了一种可以用在所有型号上的通用电路。这个通用处理器被设计来读取存在外部存储芯片里一系列指令(软件)。Intel的想法是通过软件的设计可以为每一种计算器提供各自的特性。

这种微处理器在一夜之间就成功了,并且在以后的十年中获得了广泛的应用。嵌入式系统早期主要应用于军事及航天等领域,以后逐步广泛地应用于工业控制、仪器仪表、汽车电子、通信和家用消费电子类等领域。随着Internet的发展,新型的嵌入式系统正朝着信息家电IA(Information Appliance)和3C(Computer、Communication、Consumer)产品方向发展。嵌入式系统的数量看起来肯定会继续迅速增长。一机构很多具有巨大市场潜力的嵌入式系统设备了:可以被中央计算机控制的调光器和恒温器。当小孩子或矮个子的人在的时候不会充气的智能智囊,掌上电子记事簿和个人数字助理(PDA)、数码照相机和仪表导航系统。图1.1

1

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第一章 嵌入式系统概述 是由知名的产业分析机构IDC所作的嵌入式系统相关产品的产量趋势图。

图1.1 全球嵌入式系统相关产品产量趋势图

嵌入式系统采用“量体裁衣”的方式把所需的功能嵌入至各种应用系统中。随着应用形式的不同,可有IP(Intellectual Property)级、芯片级和模块级3级不同体系结构。

IP级的构架也就是系统级芯片SOC(System on Chip)的形式。把不同的IP单元,根据应用的要求集成在一块芯片上,各种嵌入式软件也可以以IP的方式集成在芯片中。

芯片级构架是根据各种IT产品(应用系统)的要求,可以选用相应的处理器(MCU、DSP、RISC、MPU等)芯片、RAM、ROM(EPROM/EEPROM/FLASH)及I/O接口芯片等组成相应的嵌入式系统;相应的系统软件/应用软件也可以固件形式固化在ROM中。这是目前嵌入式系统最常见的形式。

第3种的构架是以X86处理器构成的计算机系统模块嵌入到应用系统中。这样可以充分利用目前常用PC机的通用性和便利性。不过,此方式不但要缩小体积、增加可靠性;而且,还要把操作系统OS改造为嵌入式操作系统OS,把应用软件固化在固态盘中。此种嵌入式系统较多地出现在工业控制和仪器仪表中。

嵌入式系统是由嵌入式处理器、嵌入式系统软件和嵌入式应用软件组成。Intel公司推出的个人互联网用户构架PCA就是嵌入式系统的开发应用平台。在PCA的应用与通信子系统中的嵌入式处理器是基于StrongARM/XScale的处理器;PCA可以配备Windows CE、嵌入式Linux和VxWorks等各种嵌入式OS;同时,为了便于开发各种应用软件,提供了各种组件及中间件。

2

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第一章 嵌入式系统概述

1.2 嵌入式系统的分类

按照“嵌入”方式的不同,嵌入式系统可分为以下凡种:

整机式嵌入。

一个带有专用接口的计算机系统嵌入到一个控制系统中,成为控制系统的核心部分。一般这种计算机系统功能完整而强大,完成系统中的核心的关键工作,也具有较完善的人机界面和外部设备。

部件式嵌入。

以部件式嵌入到一个控制设备中,完成某一处理功能,与设备的其它硬件偶合紧密、功能更专一。如雷达的数字处理部件,一般选用专用CPU或DSP。

芯片式嵌入。

一个芯片是一个完整的专用计算机,具有完整的输入输出接口,完成专一的功能。如显示处理器、微波炉控制器等。一般为专门设计的芯片。随着微电子技术的发展,芯片式嵌入应用将越来越广泛。

1.3 嵌入式系统设计的特点

根据英国电机工程师协会的定义,嵌入式系统式控制、监视或辅助设备、机器、甚至工厂运作的装置。他是一种计算机软件与硬件的综合体,并且特别强调量身定做的原则,也就是给予某一种特殊用途,会针对这项用途开发出截然不同的一个系统。可以从以下几个方面说明嵌入式系统设计方面的特点:

1.用户界面和控制面板

在这个方面不同的系统因功能不同而有很大的差别,有的系统可能只有几个简单的控制按键,而现实只需要几个示意的发光二极管就可以了,有的系统却要求包括多个菜单和许多选项,甚至有的要求精确的图形用户界面,如GPS。

2.软件代码高质量、高可靠性

尽管半导体技术的发展是处理器速度不但提高,系统存储器容量不断增加,价格也不断下降,但在大多数应用中,存储空间仍然是宝贵的,多数时候还存在实时性的要求。为此要求程序编写的编译工具的质量要高,以减少程序二进制代码长度,提高执行速度。

3.制造成本

制造成本在很多情况下是十分重要的,尤其对于消费类电子产

3

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第一章 嵌入式系统概述 品,它由许多因素决定,比如处理器的种类,所需存储器的大小及需要哪些I/O设备,当然还有系统软件和应用程序的成本。

4.功率

嵌入式系统的产品很多都是由电池供电的,因此对于电源的管理可以说到了近乎苛刻的地步。即使是一些直接接入电网的设备,功耗同样是一个重要的指标,大功率意味着很大的散热量,对系统的稳定工作是有很大的影响的。而且,如果是大量使用,用电成本也必须考虑。

4

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第二章 嵌入式处理器

第二章 嵌入式处理器

2.1 嵌入式处理器简介

随着信息技术和互联网技术的发展,嵌入式产品的功能日趋复杂,越来越多的应用系统了高性能的32位微处理器,以满足产品的网络化功能。任何微处理器MPU或微控制器MCU(即常称的单片机)都可以作为嵌入式系统的核。对于新型嵌入式系统的核,要求处理速度快、存储容量大、I/O功能强、功率损耗低及实时响应快等。以X86微处理器架构作为嵌入式系统的核,具有开发方便和移植容易的优点;但是其体积大、功耗高和实时性差等不足也给其带来应用的局限。因此,采用该架构的嵌入式系统较多出现在对体积和功耗要求不高的工业控制和台式设备的应用领域。80186/188是最早使用于嵌入式系统的处理器 ,至今在网卡、终端设备和工业控制中还可以看到它们的踪影。80386EX则是最早的SOC型的单片机式PC,它以80386微处理器为核,在一块芯片上集成了PC机常用的I/O:实时时钟RTC、中断控制器、DMA控制器、定时/计数器、并行/串行口以及VGA和LCD液晶驱动器等。现仍有很多公司采用486/586微处理器为核,推出了面向DVD、机顶盒和Webpad等应用的SOC芯片。

数字信号处理器DSP(Digital Processor)也常作为嵌入式系统的核。DSP具有数字信号处理能力强,特别适合于声音、图象等多媒体信息处理系统。但是,其常规处理能力不强、寻址范围有限、I/O功能弱及开发平台差等不足,很少单独作为嵌入式系统的核,而是作为新型嵌入式处理系统的一个组成部分。

RISC(Reduced Instruction Set Computer)型处理器具有结构简单、处理速度快和处理处理功能强等优点,新型嵌入式系统大多都采用RISC型处理器作为核。如ARM公司的ARM、Hitachi公司的SH、MIPS/LSI Logic/IDT/Aldeny/Toshiba公司的MIPS和Motorola 公司的M-Core等都是新型嵌入式系统常用的RISC型处理器。

5

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第二章 嵌入式处理器

2.2 常用嵌入式处理器

1.MIPS

MIPS(Microprocessor without interlocked piped stages),“无内部互锁流水级的微处理器”,其机制是尽量利用软件方法避免流水线中的数据相关问题,它是显著的特点是高速,而且有的还集成了许多内核结构,因此广泛应用与高端市场。

2.ARM

ARM公司是知识产权供应商,涉及的内核耗电少、成本低、功能强,特有16/32位上指令集。ARM已经为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准。在所有基于ARM处理器系列中,基于ARM7内核的处理器应用最广泛。

3.PowerPC

PowerPC体系结构规范由IBM、Apple和Motorola共同提出。PowerPC架构的特点是可伸缩性能好、方便灵活,它在高速和低功耗之间作了很好的妥协,通常在外围集成了丰富的外围接口电路,被Motorola公司大量应用于嵌入式通信市场,国内中兴和华为大量采用在其产品中。

4.M68K/ColdFire

M68K是最早广泛应用于嵌入式领域的内核,尤其在汽车制造领域。ColdFire在其成了M68K的基础上对其作了改进,并保持了对M68K的兼容性,广泛应用于工业控制,机器人研究和家电控制领域。

6

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统

第三章 嵌入式操作系统

3.1 嵌入式操作系统简介

所谓的操作系统(OS, Operating System),是补平硬件差异的接口或是说隐藏硬件,让应用程序可以在上面操作;通过由操作系统统一所提供出来的系统接口来写应用程序,无须考虑到不同硬件所造成的差异,让程序设计人员能够专注在擅长领域的开发,就像图3.1所表示的。

图3.1 OS作为接口的示意图

但是要让不同的硬件组合装置都能够利用操作系统提供一个统一的接口给上层,是一件很辛苦的事情,因为觉得太辛苦,所以许多产品厂商会觉得买一个操作系统回来用比较划算。事实上因为嵌入式系统是将所有程序,包括操作系统、驱动程序、应用程序等等的程序代码全部都烧进一个ROM里面去执行,所以操作系统在这里的角色比较像是一套库函数(Library)的感觉。

早在20世纪60年代,人们就已经开始了嵌入式操作系统的研究和开发工作。嵌入式操作系统在通信、电子、自动化等领域具有无比的优越性,其实时处理能力得到越来越多的重视,关于嵌入式操作系统的研究正在不断深入。

正是由于嵌入式处理器的多样性在成了嵌入式操作系统的多样性,对于嵌入式操作系统,很多人将其等同为实时操作系统,但实际上这是有差别的。一般情况下,嵌入式操作系统可以分为两类:一类是面向控制、同行领域的实时操作系统,如WindRiver公司的

VxWorks、ISI的pSOS、QNX系列如建公司的QNX、AITI的Nucleus

7

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统 等,其特点是模块化,是实行好,性能稳定,但由于操作系统以及开发环境都是专有的,所以价格一般都比较高,而且不提供源代码,只提供二进制码,另一类是面向个人数字助理(PDA)、移动电话、机顶盒、电子书等消费类电子产品的非实时操作系统,如Palm公司的Palm OS,微软的Windows CE,到目前为止,以掌上计算机和高档PDA为代表手持设备市场是开发最为成熟的嵌入式设备市场,而Palm OS和Windows CE在这一领域占据着绝对的优势。

3.1.1 嵌入式操作系统的机制

操作系统会负责三件事,分别是内存管理、多工的管理、外围资源管理,这三项机制提供给应用程序设计者许多的好处,但是在嵌入式系统中并非绝对必备,如果您的操作系统很简单,那就可以根本不用操作系统,但是如果尝试开发复杂的应用程序,有个操作系统帮忙会省掉许多麻烦。一般嵌入式操作系统主要都是以提供“微核心”(micro kernel)为主,像是视窗系统界面或是通信协议等,可能还要另外选购。目前大多数的嵌入式操作系统主要提供三大项的机制来辅助程序开发人员,分别是:

1.内存管理

内存管理主要是所谓的动态内存管理的功能,当程序的某一部分需要使用到内存的话,可以利用操作系统中所提供的索取函数

(memory allocation)的方式来处理,一旦使用完毕之后,可以通过“归还”函数(memory free)的方式来释放所占用的内存,让内存可以重复使用;如果没有这项功能,我们就只能够在写程序的时候,自行规划出一个静态的内存空间,编译器就会自动的空出一块内存来提供程序使用,如此的做法将会让内存的重复使用度大为降低,同时编译出来最后的执行影像(image)也可以使用动态内存管理的大上许多。

2.多工处理

多工处理主要可以提供设计人员多个同时存在的执行线程

(thread)或是执行程序(process),通过操作系统本身的排程机制(scheduling)的辅助,可以简化程序因为要应付各种不同可能同时存在的情况而设计,这部分的功能本身是需要中央处理器 (CPU)的支持,不过现今许多的CPU多已经提供多组寄存器来记录每个执行程序的情况,因此记录每个执行程序的状态已经不成问题,而操作系统

8

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统 主要是提供排程机制来控制这些执行程序的起始、执行、暂停、结束。通常大多数的嵌入式操作系统都会提供实时(real-time)的排程机制,也就是强调每个必要的动作都会在一个严格要求的时间内执行完毕;实时多工的嵌入式操作系统是许多研究课题中常常讨论的问题,不过除了操作系统本身的架构之外,还必须规定应用程序的写作方式,方能达到这样的目的。

3.外围资源管理

一个嵌入式系统里除了系统本身的中央处理器、内存之外,还有许多不同的外围系统,例如按键、显示面板、通信端口或是外接的控制器,这些都属于一个系统的资源(resource),既然是资源,就可能会有许多应用程序想要使用,不过因为资源有限的缘故,操作系统就必须安排这些资源以满足每一个应用程序的需求,因此操作系统会要求编写驱动程序的设计师一个固定格式的外围资源驱动程序界面,以方便管理资源,对于应用程序来说,则必须跟操作系统注册一个索取机制,然后等待操作系统将资源安排给应用程序。

通过这些机制,看起来要比应用程序本身直接去操作CPU或是外围控制器要来的好的多了吧!不过仍然要注意的就是避免竞赛状态(race condition)或是死结(dead lock)的问题的产生。

3.1.2 嵌入式操作系统的特点:

1.编码体积小:适合在嵌入式系统的有限存储空间中运行。

2.面向应用,可剪裁和移植:可进一步缩小编码体积、有效地运行,故此类OS也可称为特定应用操作系统ASOS(Application Specific Operating System)。

3.实时性强:这也是嵌入式系统的特征之一,因此,嵌入式操作系统有时也称为实时多任务操作系统RTOS(Real Time Operating System)。

4.可靠性高:嵌入式系统可无需人工干预而独立运行,并处理各类事件和故障。

20世纪七八十年代,各种嵌入式操作系统得到了蓬勃的发展,随着Internet的飞速发展,面向Internet的嵌入式系统的操作系统以作为主流产品。特别随着系统级芯片SOC的发展,嵌入式操作系统以开始能像硬件IP模块那样,作为IP嵌入芯片中。

9

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统

3.1.3 嵌入式操作系统的分类

1.基于Windows兼容

Windows CE、嵌入式Linux、Symbian;

2.工业于通信(传统)类:

VxWorks、pSOS、QNX、Neculeus、VRTX、Rtems;

3.单片机类

CMX 、uC/OS、RTX51;

4.面向Internet

Palm OS、Visor、Hopen、PPSM。

3.2 μC/OS-Ⅱ嵌入式操作系统

μC/OS-Ⅱ的功能十分强大,它支持56个用户任务。其内核为占先式,支持信号量、邮箱、消息队列等多种常用的进程间通信机制,现已成功的应用到各种商业嵌入式系统中,是一个成熟稳定的实时内核。更为重要的一点是与大多商用RTOS不同,μC/OS-Ⅱ公开所有的源代码,而且μC/OS-Ⅱ90%的代码使用标准的ANSI C语言书写,程序可读性强、移植性好;同时它可免费获得,即使商业应用也只收取少量的许可费用。

3.2.1 μC/OS-Ⅱ实时操作系统结构

图3.2μC/OS-Ⅱ软硬件体系结构

10

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统

图3.2说明了μC/OS-Ⅱ的软硬件体系结构。应用程序处于整个系统的顶层,每个任务都可以认为自己独占了CPU,因而可以设计成为一个无限循环。μC/OS-Ⅱ与处理器无关的代码体μC/OS-Ⅱ的系统服务,应用程序可以使用这些API函数进行内存管理、任务间通信及创建、删除任务等。大部分的μC/OS-Ⅱ代码时使用ANSI C语言书写的,因此μC/OS-Ⅱ的可移植性好。然而仍需要使用C语言和汇编语言协议协处理器相关代码。

3.2.2 μC/OS-Ⅱ嵌入式操作系统的特点

μC/OS-Ⅱ是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常都是在中断服务程序中使高优先级任务进入就绪态(例如使用发送信号的方法),退出中断服务程序后,将进行任务切换,高优先级任务被执行。以51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间无法确定,系统的实时性不强。如果使用μC/OS-Ⅱ,只要把数据处理程序的优先级设定的高一些并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但是如果数据处理程序简单,这样做就未必合适。因为μC/OS-Ⅱ中断服务程序末尾使用OSINTEXIT函数以判断是否进行任务切换,这需要花费一定的时间。

μC/OS-Ⅱ和大家所熟知的Windows等分时操作系统不同,它不支持时间片轮转法。它是一个基于优先级的实时操作系统。每一个任务必须具有不同的优先级(分析它的源码会发现,μC/OS-Ⅱ把任务的优先级当作任务的标识来使用,如果优先级相同,任务将无法区分)。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以只能说它是多任务,不能说是多进程,至少不是人们所熟悉的那种多进程。μC/OS-Ⅱ的这种特性是好是坏,主要看从什么角度来判断了。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在应用系统中,重要任务毕竟是有限的,这就使得划分

11

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统 其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单片机控制两小块显示屏时,无论是编程者还是使用者肯定希望它们同时工作,而不是显示完一块显示屏的信息以后再显示另一块显示屏的信息。这时候,要是μC/OS-Ⅱ既能支持优先级法又能支持时间片轮转法就更好了。

μC/OS-Ⅱ对共享资源提供了保护机制。正如前文所述,μC/OS-Ⅱ是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。对于共享资源(例如串口),μC/OS-Ⅱ也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量。而一旦它得到了此信号量,那就只有等它使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,这里还拿传统的单片机程序来做比较。当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-Ⅱ中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个问题。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-Ⅱ中称为优先级反转。简单地说,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以使用μC/OS-Ⅱ时,必须对所开发的系统了解清楚,才能选择对某种共享资源是否使用信号量。

3.2.3 μC/OS-Ⅱ的移植

由于嵌入式实时操作系统是针对嵌入式处理器而言的操作系统,或者说是针对各种不同的单片机的操作系统。由于各个嵌入式处理器厂商所采用处理器结构、指令都不同,甚至同一厂商所生产的不同系列的嵌入式处理器所采用的内部指令都不同,在某一个处理器上可以

12

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第三章 嵌入式操作系统 运行的代码不一定能在另一个处理器上运行通过。这就要求嵌入式实时操作系统具有可移植性。

所谓的移植,就是使一个实时内核能在某个微处理器或微控制器上运行。为了方便移植,大部分的μC/OS-Ⅱ代码是用C语言写的,但仍需要用C和汇编语言写一些与处理器相关的代码,这是因为μC/OS-Ⅱ在读写处理器寄存器时只能通过汇编语言来实现。由于μ

C/OS-Ⅱ在设计时就已经充分考虑了可移植性,所以μC/OS-Ⅱ的移植相对来说是比较容易的。

要使μC/OS-Ⅱ正常运行,处理器必须满足以下要求:

处理器的C编译器能产生可重入代码;

用C语言就可以打开和关闭中断;

处理器支持中断,并且能产生定时中断;

处理器支持能够容纳一定量数据的硬件堆栈;

处理器有将堆栈指针和其他CPU寄存器读出和存储到堆栈或内存中的指令。

移植工作包括以下几个内容:

用define设置一个常量的值(DS_CPU.H)。

设置OS_CPU.H中与处理器和编译器相关的代码;

用C语言编写六个关于操作系统的函数(OS_CPU_C.C);

使用汇编语言编写四个与处理器相关的函数(OS_CPU_A.ASM); 一旦代码移植结束,下一步工作就是调试。测试一个μC/OS-Ⅱ这样的多任务实内核并不复杂。甚至可以在没有应用程序的情况下测试。

13

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第四章 嵌入式系统编程语言

第四章 嵌入式系统编程语言

由于嵌入式系统的紧凑的系统资源系统结构,故在一般的简单的嵌入式系统(如单片机构成的应用系统),常采用汇编语言来编程;随着嵌入式系统的复杂性增加,单用汇编语言编程已很难胜任。况且,高级语言与汇编语言相比,具有通用性强、编程方便、易于移植及可维护等优点。嵌入式系统常用的高级语言有C/C++、Java、Ada等。

4.1 嵌入式系统的高级语言特点

嵌入式系统的高级语言有以下特点:

1.与汇编语言的接口

在C语言中,用汇编语言编写的程序可定义为一个asm模块;也可以编写为一个独立的外部进程,用功能调用来调用。

2.对系统资源的直接访问

在C语言中可以通过指针来对系统资源直接寻址,也可以通过Peek、Poke操作来完成存储器寻址。

3.位操作

嵌入式系统需较强的位操功能。C语言有较强的位操作功能,在C++中还可以通过完成定义“bitfields”结构来实现更多的位操作功能。

4.中断和异常事件处理

中断和异常事件处理是嵌入式系统中一个很重要的特点。C语言中可通过中断服务例程来实现。

4.2 嵌入式系统高级语言开发过程

嵌入式系统的软件开发过程如下图所示。首先,每一个源文件都必须被编译或汇编成一个目标文件;然后,产生所有的目标文件被链接成一个目标文件,即为重定义程序;最后,进行重定址,把物理存储器地址指定给可重定位程序,产生一个可以在嵌入式系统上的包含可执行二进制映像文件

14

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第四章 嵌入式系统编程语言

图4.1 嵌入式系统的软件开发过程

上述的编译器、链接器和定址器都运行在主机(如PC机)上,因此,以嵌入式系统常用的GNU工具为例,它需配备不同的交叉编译器,以生成用于相映的被开发的目标机(嵌入式系统)的代码。如我们要开发基于Intel SA1110处理器的嵌入式系统,就需要在PC机上安装GNU工具,配备交叉编译器arm-gcc。

交叉编译器或交叉汇编输出目标文件,这个文件的结构通常是按照标准格式定义的,如“通用对象文件格式”(COFF)和“扩展的链接器格式”(ELF)。大多数目标文件以一个描述后继续段的头部开始,每一段包含1块或几块源于文件的代码或数据。这些被编译后重新组合至相关的段中,如所有代码块被收集至text段中。此外,目标文件中还有一个符号表,记录了源文件引用的所有变量和函数名及位置。

GNU的链接器(ld)是把交叉编译或交叉汇编产生的目标文件以一种特殊的方式组合起来,输出同样格式的一个目标文件。这样,所有输入目标文件的机制(目标机)代码将出现在新的目标文件的text段,所有初始化变量分别在data和bass段中,在合并了所有的代码和数据段并解决了所有符号的应用之后,连接器(ld)产生可重定位程序。

15

有关嵌入式系统

嵌入式系统原理及运用课程设计(论文) 第四章 嵌入式系统编程语言

4.3 嵌入式系统编程与系统硬件

在为一个嵌入式系统写软件之前,你必须先熟悉将要使用的硬件环境。因为从某种意义上说,一块新的电路板所带的“用户手册”,或者是“程序员手册”是你唯一的最好起点。

在一个嵌入式系统中的硬件除了处理器之外,我们可以将其他部分分成两种基本类型:存储器和外设。很明显,存储器是用来存取数据和代码的。外设是和外部进行交互(I/O)或者完成某一特定硬件功能的特殊硬件设备。例如,嵌入式系统里最常见的两种外设是串行口和计时器。前者是一个I/O设备,后者基本上是一个计数器。

嵌入式系统硬件的设计人员往往喜欢只采用存储器映像I/O,因为这样做对硬件和软件开发人员都很方便。它对硬件开发人员有吸引力是因为他可以因此而省去I/O开发空间,同时省去了相关的连线。这也许不会显著的降低电路板的生产成本,但是会降低硬件设计的复杂性。存储器映像外设对程序员也很有用,他可以更方便、更有效地使用指针、数据结构和联合来和外设进行交互。

4.3.1 存储器映射

所有的处理器都在存储器里存放它们的程序和数据。有时存储器和处理器在同一个芯片里,不过更常见的是存储器会位于外部的存储芯片中。这些芯片位于处理器的存储空间里,处理器通过叫做地址总线和数据总线的两组电子线路来和它们通信。要读或写存储器里的某个位置,处理器首先把希望的地址写到地址总线上,然后数据就会被传送到数据总线。

在了解一块新的电路板的时候,可以创造一些表来显示存储空间里每个存储设备和外设的名字和地址范围。组织一下这张表,让最低的地址位于底部,最高的地址位于顶端。每次往存储器是映射里添加一个设备的时候,按照它在内存里的大概位置来放进表内并用十六进制标出起始和结束地址。在往存储器映射图里插入所有的设备以后,记着用同样的方式把没利用的存储区域写标记出来。

4.3.2 I/O映射

如果存在独立的I/O空间的话,那就需要守成存储器映射一样也

16

本文来源:https://www.bwwdw.com/article/f6iq.html

Top