嵌入式Linux系统设计与开发(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-18 01:43:01

点击下载

作者:黎燕霞

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

嵌入式Linux系统设计与开发

嵌入式Linux系统设计与开发试读:

前言

嵌入式技术是一种软硬件结合的技术,已经广泛应用于通信设备、家用电器、数据网络、工业控制、医疗卫生、航空航天等众多领域,有着巨大的市场潜力和无限的商机。嵌入式系统已经从8位51单片机发展到如今的32位嵌入式RISC微处理器,其软件设计的复杂性也成倍增长。目前Cortex-A系列处理器已经占据了嵌入式处理器大部分的中高端产品市场,尤其是在移动设备市场上,几乎占据了绝对垄断的地位。

随着嵌入式应用的迅猛发展,人们越来越关注嵌入式系统的相关技术和设计方法的研究。嵌入式系统已经成为高等院校电子信息、计算机及相关专业的一门重要课程,也是相关领域研究、应用和开发专业技术人员必须掌握的重要技术之一。当前,以嵌入式Linux系统应用相关的图书较多,但是有些难度较大,不太适合高职高专的学生及一般初学者。因此,读者需要一本实践性强、提供源代码、理论讲解简练清晰的实训类教材,并且需要有具体完整的实训项目来引导读者学习嵌入式Linux系统的应用。

本书试图从零开始讲述嵌入式系统的环境搭建、嵌入式Linux系统应用的基础,然后通过具体完整的实训项目对嵌入式Linux系统应用所需的基础技能进行覆盖。本书的编写特色在于用具体完整的任务带动和引导学生完成整个嵌入式Linux相关应用领域的学习,并且每个任务都有非常详细的讲解,此外还提供了源代码。本书不追求讲述所有的嵌入式Linux技术,但追求完整地讲解每个具体的任务,特别适合高职高专相关专业的学生及其他初学者使用。

在学习本书之前,读者需要具有数字电路、模拟电路、C语言等基础知识。通过本书的学习,读者可以掌握嵌入式系统的环境搭建、基于Cortex-A8核心的S5PV210处理器的GPIO接口技术和常见的应用开发的方法,掌握嵌入式系统开源软件的移植。

本书是广东省高职院校类的示范性专业—电子信息工程技术专业核心课程的配套教材,具备丰富的教学资源存储在该专业的教学资源库中。同时,本教材也是高校“校企”联合培养人才项目的合作教材,得到广州杰赛科技股份有限公司、北京凌阳爱普科技有限公司、广州粤嵌通信科技股份有限公司的大力支持。

另外,嵌入式系统的学习和硬件的关系十分密切,本书尽量避免仅针对某一种硬件平台,阅读时请注重学习设计的方法。对于本书的程序,是具有普适性的,有一些涉及硬件电路的程序,需要读者根据自己所使用的实验开发系统的硬件配置,灵活改变其中的诸如函数调用、地址、I/O接口等的定义和语句。

本书由黎燕霞主编并统稿。黎燕霞编写第1、2、3、5章,刘光壮博士编写了第4、6章,工业与信息化部电子第五研究生的刘奕宏高级工程师编写第7、8章,广州杰赛科技股份有限公司的刘仲明高级工程师编写第9章。同时,企业的这两位高级工程师对本书的编写还提出了大量中肯的建议,在此表示感谢。

由于编者水平有限,书中难免有不妥和错误之处,敬请专家和读者批评、指正。编者

基础知识篇

第1章 嵌入式系统入门

本书是使用基于ARM CortexTM-A8内核的处理器S5PV210的目标机作为开发平台,在讲述了嵌入式Linux系统开发环境的构建、Linux的基础知识、裸机开发、驱动开发后,以完整的项目形式讲述了嵌入式Linux系统的具体应用,为读者今后从事相关技术应用打下良好的基础。

本章将从应用角度出发,介绍嵌入式系统的概念,带领读者进入嵌入式系统开发的领域,主要内容包括以下几个方面。

□ 嵌入式系统的定义

□ 嵌入式系统的应用领域

□ 嵌入式系统的发展

□ 嵌入式系统的组成

□ ARM处理器

□ 嵌入式Linux操作系统

1.1 嵌入式系统的概念

目前,嵌入式系统(Embedded System)和普通人的生活联系非常紧密,如日常生活中使用的手机、照相机、微波炉、电视机机顶盒等,都属于嵌入式系统。与通常使用的PC相比,嵌入式系统的形式多样、体积小,可以灵活地适应各种设备的需要。因此,可以把嵌入式系统理解为“一种为特定设备服务的软件硬件可裁剪的计算机系统”。

目前被普遍接受的对嵌入式计算机系统的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。通常嵌入式计算机系统简称嵌入式系统。

从广义上讲,凡是带有微处理器的专用软硬件系统都可称为嵌入式系统,如各类单片机和DSP系统。这些系统在完成较为单一的专业功能时具有简洁高效的特点。但由于它们没有操作系统,管理系统硬件和软件的能力有限,在实现复杂多任务功能时,往往困难重重,甚至无法实现。

从狭义上讲,我们更加强调那些使用嵌入式微处理器构成独立系统,具有自己的操作系统,具有特定功能,用于特定场合的嵌入式系统。这里所谓的嵌入式系统,是指狭义上的嵌入式系统。

简单地说,嵌入式系统就是嵌入到对象体系中的专用计算机系统。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的3个基本要素。(1)嵌入性相关特点。专指计算机嵌入到对象体系中,实现对象体系的智能控制。当嵌入式系统变成一个独立应用产品时,可将嵌入性理解为内部嵌有微处理器或计算机。由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气环境(可靠)、成本(价廉)等要求。(2)专用性相关特点。软、硬件的可裁剪性;满足对象要求的最小软、硬件配置等。(3)计算机系统相关特点。嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。

1.2 嵌入式系统的应用领域

从嵌入式系统的特点可以看出,嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括以下几个方面。

1.工业控制

基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8位、16位、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。

2.交通管理

在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块、GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭。

3.信息家电

这将成为嵌入式系统最大的应用领域,冰箱、空调等的网络化、智能化将引领人们的生活步入一个崭新的空间。即使用户不在家里,也可以通过电话线、网络进行远程控制。在这些设备中,嵌入式系统将大有用武之地。

4.家庭智能管理系统

水、电、煤气表的远程自动抄表,安全防火、防盗系统,其中嵌有的专用控制芯片将代替传统的人工检查,并实现更高、更准确和更安全的性能。目前在服务领域,如远程点菜器等已经体现了嵌入式系统的优势。

5.POS网络及电子商务

公共交通无接触智能卡(Contactless Smart Card,CSC)发行系统、公共电话卡发行系统、自动售货机、各种智能ATM终端将全面走入人们的生活,到时手持一卡就可以行遍天下。

6.环境工程与自然

应用在水文资料实时监测,防洪体系及水土质量监测、堤坝安全、地震监测网,实时气象信息网,水源和空气污染监测。在很多环境恶劣、地况复杂的地区,嵌入式系统将实现无人监测。

7.机器人

嵌入式芯片的发展将使机器人在微型化、高智能方面优势更加明显,同时会大幅度降低机器人的价格,使其在工业领域和服务领域获得更广泛的应用。

这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入式系统之外,家电产品控制协议也需要制定和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制器件都需要与嵌入式系统之间实现接口,然后再由嵌入式系统通过网络实现控制。所以,开发和探讨嵌入式系统有着十分重要的意义。

1.3 嵌入式系统的发展

嵌入式系统的出现至今已经有30多年的历史了,嵌入式技术也历经了几个发展阶段。进入20世纪90年代后,以计算机和软件为核心的数字化技术取得了迅猛发展,不仅广泛渗透到社会经济、军事、交通、通信等相关行业,而且深入到家电、娱乐、艺术、社会文化等各个领域,掀起了一场数字化技术革命。多媒体技术与Internet的应用迅速普及,消费电子、计算机和通信一体化趋势日趋明显,嵌入式技术再度成为一个研究热点。嵌入式技术的发展大致经历了以下4个阶段。

第一阶段是以单芯片为核心的可编程控制器形式的系统具有与监测、伺服、指示设备相配合的功能。这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统简单、价格低的特点,以前在国内工业领域应用较为普遍,但是已经远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。

第二阶段是以嵌入式微处理器为基础、以简单操作系统为核心的嵌入式系统。主要特点是:微处理器种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。

第三阶段是以嵌入式操作系统为标志的嵌入式系统。主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API,开发应用程序较简单;嵌入式应用软件丰富。

第四阶段是以Internet为标志的嵌入式系统。

这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术的结合日益密切,嵌入式设备与Internet的结合将代表嵌入式系统的未来。

综上所述,嵌入式系统技术日益完善,32位微处理器在该系统中占主导地位,嵌入式操作系统已经从简单走向成熟,它与网络Internet结合日益密切,因而嵌入式系统应用将日益广泛。1.3.1 嵌入式系统硬件平台的发展

嵌入式系统的硬件是以各种类型的嵌入式处理器为核心部件的。在嵌入式系统的早期,所有基本硬件构件相对较小,也较简单,如8位的CPU、74系列的芯片及晶体管等,其软件子系统采用一体化的监控程序,不存在操作系统平台。如今组成嵌入式系统的基本硬件构件则已较复杂,如16位、32位CPU或特殊功能的微处理器、特定功能的集成芯片、FPGA或CPLD等,其软件设计的复杂性成倍增长。不同等级的处理器的不同应用如表1.1所示。表1.1 不同等级的处理器应用

据不完全统计,目前全世界嵌入式处理器的品种总量已经超过1000种,流行体系结构有30多个系列。嵌入式处理器的寻址空间一般从64KB到几十亿字节,处理速度为0.1~2000MIPS(Million Instruction Per Second,百万条指令每秒)。根据不同的应用状况,嵌入式处理器可以分为下面几类。

1.嵌入式微控制器

嵌入式微控制器(Embedded Microcontroller Unit,EMCU)的典型代表是单片机,单片机从诞生之日起,就称为嵌入式微控制器。它体积小,结构紧凑,作为一个部件埋藏于所控制的装置中,主要完成信号控制的功能,将整个计算机系统集成到一块芯片中。单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时器/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。

微控制器是目前嵌入式系统工业的主流。由于微控制器的片上外设资源一般比较丰富,适合于控制,因此称为微控制器。为了适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的名字,不同的是存储器和外设的配置及封装。这样可以最大限度地与应用需求相匹配,从而减小功耗和成本。由于MCU低廉的价格,优良的功能,因此拥有的品种和数量最多。比较有代表性的包括8051、MCS-251、MCS-96/196/296、P51XA、C166/167、68K系列,以及MCU 8XC930/931、C540、C541,并且支持12C、CAN-Bus、LCD及众多专用MCU和兼容系列。目前MCU占嵌入式系统约70%的市场份额。

2.嵌入式微处理器

嵌入式微处理器是由通用计算机中的CPU演变而来的。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,嵌入式微处理器只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。和工业控制计算机相比,嵌入式微处理器具有体积小、质量轻、成本低、可靠性高的优点。

当前32位嵌入式微处理器主要有:ARM(Advanced RISC Machines),只设计内核的英国公司;MIPS(Microprocessor without Interlocked Piped Stages),只设计内核的美国公司;Power PC,IBM和Motorola共有;X86,Intel;68K/ColdFire,Motorola独有;龙芯一号。

3.嵌入式DSP处理器

DSP处理器是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较快,在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。DSP的理论算法在20世纪70年代就已经出现,但是由于专门的DSP处理器还未出现,因此这种理论算法只能通过MPU等由分立元件实现。1982年世界上诞生了首枚DSP芯片。在语音合成和编码解码器中得到了广泛应用。DSP的运算速度进一步提高,应用领域也从上述范围扩大到了通信和计算机方面。

嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP)有两个发展来源:一是DSP处理器经过单片化、EMC(Energy Management Contract,合同能源管理)改造、增加片上外设,成为嵌入式DSP处理器,TI(得州仪器)的TMS320C2000/C5000等属于此范畴;二是在通用单片机或SoC(System on Chip)中增加DSP协处理器,如Intel的MCS-296和Siemens的TriCore。

推动嵌入式DSP处理器发展的另一个因素是嵌入式系统的智能化,如各种带有智能逻辑的消费类产品,生物信息识别终端,带有加解密算法的键盘,ADSL接入、实时语音解压系统,虚拟现实显示等,而这些正是DSP处理器的长处所在。

4.嵌入式片上系统

集成电路的发展已有40 年的历史,它一直遵循摩尔所指示的规律推进,现已进入深亚微米阶段。由于信息市场的需求和微电子自身的发展,引发了以微细加工(集成电路特征尺寸不断缩小)为主要特征的多种工艺集成技术和面向应用的系统级芯片的发展。随着半导体产业进入超深亚微米乃至纳米加工时代,在单一集成电路芯片上就可以实现一个复杂的电子系统,诸如手机芯片、数字电视芯片、DVD芯片等。在未来几年内,上亿个晶体管、几千万个逻辑门都可望在单一芯片上实现。SoC(System on Chip)设计技术始于20世纪90年代中期,随着半导体工艺技术的发展,IC设计者能够将越来越复杂的功能集成到单硅片上,SoC正是在集成电路(IC)向集成系统(IS)转变的大方向下产生的。

一般来说,SoC称为系统级芯片,也称为片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。从狭义角度讲,它是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上;从广义角度讲,SoC是一个微小型系统,如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛和手的系统。国内外学术界一般倾向将SoC定义为“将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)集成在单一芯片上,它通常是客户定制的,或是面向特定用途的标准产品”。1.3.2 嵌入式系统软件平台的发展

嵌入式操作系统是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式操作系统伴随着嵌入式系统的发展经历了3个比较明显的阶段。

第一阶段:无操作系统的嵌入算法阶段,通过汇编语言编程对系统进行直接控制,运行结束后清除内存。系统结构和功能都相对单一,处理效率较低,存储容量较小,几乎没有用户接口,比较适合于各类专用领域中。

第二阶段:以嵌入式CPU为基础、简单操作系统为核心的嵌入式系统。CPU 种类繁多,通用性比较差;系统开销小,效率高;一般配备系统仿真器,操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系统主要用来控制系统负载以及监控应用程序运行。

第三阶段:通用的嵌入式实时操作系统阶段,以嵌入式操作系统为核心的嵌入式系统。能运行于各种类型的微处理器上,兼容性好;内核精小、效率高,具有高度的模块化和扩展性;具备文件和目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API;嵌入式应用软件丰富。

1.4 典型的嵌入式系统组成

嵌入式系统与传统的PC一样,也是一种计算机系统,是由硬件和软件组成的。硬件包括嵌入式微控制器和微处理器,以及一些外围元器件和外部设备;软件包括嵌入式操作系统和应用软件。

与传统计算机不同的是,嵌入式系统种类繁多。许多的芯片厂商、软件厂商加入其中,导致有多种硬件和软件,甚至解决方案。一般来说,不同的嵌入式系统的软件、硬件是很难兼容的,软件必须修改,而硬件必须重新设计才能使用。虽然软件、硬件种类繁多,但是不同的嵌入式系统还是有很多相同之处的。如图1.1所示是一个典型的嵌入式系统组成示意图。

图1.1展示出一个典型的嵌入式系统是由软件和硬件组成的整体。硬件部分可以分成嵌入式处理器和外部设备,处理器是整个系统的核心,负责处理所有的软件程序以及外部设备的信号。外部设备在不同的系统中有不同的选择。例如,在汽车上,外部设备主要是传感器,用于采集数据;而在一部手机上,外部设备可以是键盘、液晶屏幕等。图1.1 典型的嵌入式系统构成

软件部分可以分成两层,最靠近硬件的是嵌入式操作系统。操作系统是软硬件的接口,负责管理系统的所有软件和硬件资源。操作系统还可以通过驱动程序与外部设备打交道。最上层的是应用软件,应用软件利用操作系统提供的功能开发出针对某个需求的程序,供用户使用。用户最终是和应用软件打交道,如在手机上编写一条短信,用户看到的是短信编写软件的界面,而看不到里面的操作系统以及嵌入式处理器等硬件。

1.5 ARM处理器

目前有数十家公司使用ARM体系结构开发自己的芯片,支持的外部设备和功能丰富多样。ARM体系相对其他的体系具有结构简单、使用入门快等特点。使用ARM核心的处理器虽然众多,但是核心都是相同的。因此,掌握了ARM的体系结构,在用不同的处理器时,只要是基于ARM核心都能很快入手。1.5.1 ARM处理器介绍

ARM(Advanced RISC Machines)既可以认为是一家公司的名字,也可以认为是对一类嵌入式处理器的统称,还可以认为是一种技术的名字。

1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)的处理器,即通常所说的ARM处理器,已普及到工业控制、消费类电子产品、通信系统、网络系统和无限系统等各类产品市场,基于ARM技术的处理器应用约占据32位RISC处理器75%以上的市场份额,ARM技术正在逐步渗入到人们生活的各个方面。

ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,它本身不直接从事芯片生产,靠转让设计许可权,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM处理器核,然后根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM处理器芯片进入市场。目前,全世界大的半导体公司都使用ARM公司的授权,这不仅使得ARM技术获得更多的第三方工具、制造、软件的支持,还可使整个系统成本降低,从而使产品更容易进入市场被消费者所接受,进而更具有竞争力。1.5.2 ARM处理器的应用领域

到目前为止,ARM处理器及技术的应用几乎已经深入到各个领域。

1.工业控制领域

作为32位的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器的应用领域扩展。ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制提出了挑战。

2.无线通信领域

目前已经有超过85%的无线通信设备采用了ARM技术,ARM以及高性能和低成本的优势,日益巩固了其在该领域的地位。

3.网络应用

随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持,同时也对DSP的应用领域提出了挑战。

4.消费类电子产品

ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到了广泛采用。

5.成像和安全产品

现在流行的数码相机和打印机中的绝大部分采用了ARM技术,手机中的32位SIM智能卡也采用了ARM技术。1.5.3 ARM处理器的特点

采用RISC架构的ARM处理器一般具有如下特点。(1)体积小、功耗低、低成本、高性能。(2)支持Thumb(16位)/ARM(32位)双指令集,能很好地兼容8位/16位器件。(3)大量使用寄存器,指令执行速度更快。(4)采用多级流水线结构处理速度快。(5)大多数数据操作都在寄存器中完成。(6)寻址方式灵活简单,执行效率高。(7)指令长度固定。1.5.4 ARM的功能选型

ARM公司自1990年正式成立以来,在32位RISC(Reduced Instruction Set Computer)CPU开发领域不断取得突破,其结构已经从V3发展到V6。由于ARM公司自成立以来,一直以IP(Intelligence Property)提供者的身份向各大半导体制造商出售知识产权,而自己从不介入芯片的生产销售,加上其设计的核心具有功耗低、成本低等显著优点,因此获得众多的半导体厂家和整机厂商的大力支持,在32位嵌入式应用领域获得了巨大的成功,目前已经占有75%以上32位RISC嵌入式产品市场。在低功耗、低成本的嵌入式应用领域确立了市场领导地位。现在设计、生产ARM芯片的国际大公司已经超过50多家,我国中兴通讯和华为通讯等公司已经购买ARM公司的芯核用于通信专用芯片的设计。

随着国内嵌入式应用领域的发展,ARM芯片必然会获得广泛的重视和应用。但是,由于ARM芯片有多达十几种的核心结构,70多个芯片生产厂家,以及千变万化的内部功能配置组合,给开发人员在选择方案时带来一定的困难。所以,对ARM芯片做一对比研究是十分必要的。

下面从应用的角度,对选择ARM芯片时所应考虑的主要因素进行详细的说明。

1.ARM核心

不同的ARM核心性能差别很大,需要根据使用的操作系统选择ARM核心。如果希望使用WinCE或Linux等操作系统以减少软件开发时间,就需要选择ARM720T以上带有MMU(Memory Management Unit)功能的ARM芯片,ARM720T、Stron-gARM、ARM920T、ARM922T、ARM946T都带有MMU功能。而ARM7TDMI没有MMU,不支持Windows CE和大部分的Linux,但目前有uClinux等少数几种Linux不需要MMU的支持。

2.系统时钟控制器

系统时钟决定了ARM芯片的处理速度。ARM7的处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz~133MHz,ARM9的处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟为100MHz~233MHz,ARM10最高可以达到700MHz。

不同的处理器时钟处理方式也不同,在一个处理器上可以有一个或者多个时钟。使用多个时钟的处理器,处理器核心和外部设备控制器使用不同的时钟源。一般来说,一个处理器的时钟频率越高,处理能力也越强。

3.内部存储器容量

许多ARM芯片都带有内部存储器Flash和ARM。带有内部存储器的芯片,无论是安装还是调试都很方便,而且减少了外围器件,减低了成本。但是内部存储器受到体积和工艺的限制不能做到很大。在不需要大容量存储器时,可以考虑选用有内置存储器的ARM芯片,如表1.2所示。表1.2 内置存储器的ARM芯片

4.GPIO数量

GPIO的数量是一个重要指标。嵌入式微处理器主要用来处理各种外围设备数据,如果一个芯片支持较多的GPIO引脚,无疑对用户的开发和以后扩展都留有很大余地。需要注意的是,有的芯片GPIO是和其他功能复用的,在选择时应当注意。

5.中断控制器

ARM内核只提供快速中断(FIQ)和标准中断(IRQ)两个中断向量。但各个半导体厂家在设计芯片时加入自己的中断控制器,以便支持诸如串行口、外部中断、时钟等硬件中断。外部中断控制是选择芯片必须考虑的重要因素,合理的外部中断设计可以很大程度地减少任务调度工作量。例如,PHILIPS公司的SAA7750,所有GPIO都可以设置成FIQ或IRQ,并且可以选择上升沿、下降沿、高电平、低电平4种中断方式。这使得红外线遥控接收、指轮盘和键盘等任务都可以作为背景程序运行。而Cirrus Logic公司的EP7312芯片,只有4个外部中断源,并且每个中断源都只能是低电平或高电平中断,这样在用于接收红外线信号的场合时就必须用查询方式,会浪费大量CPU时间。

6.IIS(Integrate Interface of Sound)接口

即集成音频接口。使用该接口可以把解码后的音频数据输出到音频设备上。如果设计音频应用产品,IIS总线接口是必需的。

7.nWAIT信号

外部总线速度控制信号。不是每个ARM芯片都提供这个信号引脚,利用这个信号与廉价的GAL芯片就可以实现与符合PCMCIA标准的WLAN卡和Bluetooth卡的接口,而不需要外加高成本的PCMCIA专用控制芯片。另外,当需要扩展外部DSP协处理器时,此信号也是必需的。

8.RTC(Real Time Clock)

中文称为实时时钟控制器,很多ARM芯片都提供实时时钟功能,但方式不同。如Cirrus Logic公司的EP7312的RTC只是一个32位计数器,需要通过软件计算出年月日时分秒;而SAA7750和S3C2410等芯片的RTC直接提供年月日时分秒格式。

9.LCD控制器

越来越多的嵌入式设备开始提供友好的界面,使用最多的就是LCD屏。有些ARM芯片内置LCD控制器,有的甚至内置64K彩色TFT LCD控制器。在设计PDA和手持式显示记录设备时,选用内置LCD控制器的ARM芯片(如S3C2410)较为适宜。

10.USB接口

USB(Universal Serial Bus,通用串行总线)是目前最流行的数据接口。在嵌入式产品中提供一个USB接口很大程度上方便了用户的数据传输。许多ARM芯片都提供了USB控制器,有些芯片甚至同时提供了USB主机控制器和USB设备控制器,如S3C2440A处理器。

11.PWM输出

有些ARM芯片有2~8路PWM输出,可以用于电机控制或语音输出等场合。

12.ADC和DAC

有些ARM芯片内置2~8通道8~12位通用ADC,可以方便地与处理模拟信号的设备互联,如用于电池检测、触摸屏和温度监测等。PHILIPS的SAA7750更是内置了一个16位立体声音频ADC和DAC,并且带耳机驱动。

13.串行控制器UART

串行通信是嵌入式开发必备的一个功能。用户在开发的时候都需要用到串口,查看调试输出信息,甚至提供给客户的命令行界面也都是通过串口控制的。几乎所有的ARM芯片都具有1~2个UART接口,用于支持串口操作。目前大多数ARM芯片内部集成的UART控制器波特率都不超过25600B/s。

14.时钟计数器和看门狗WatchDog

一般ARM芯片都具有2~4个16位或32位时钟计数器和一个看门狗计数器。

15.电源管理功能

ARM芯片的耗电量与工作频率成正比,一般ARM芯片都有低功耗模式、睡眠模式和关闭模式。

16.DMA控制器

有些ARM芯片内部集成有DMA(Direct Memory Access),可以和硬盘等外部设备高速交换数据,同时减少数据交换时对CPU资源的占用。如果用户设计一个影音播放器或机顶盒等,集成DMA控制器的芯片可以优先考虑。

另外,还可以选择的内部功能部件有HDLC、SDLC、CD-ROM Decoder、Ethernet MAC、VGA controller、DC-DC。可以选择的内置接口有IIC、SPDIF、CAN、SPI、PCI、PCMCIA。

最后需说明的是封装问题。ARM芯片现在主要的封装有QFP、TQFP、PQFP、LQFP、BGA、LBGA等形式,BGA封装具有芯片面积小的特点,可以减少PCB板的面积,但是需要专用的焊接设备,无法手工焊接。另外一般BGA封装的ARM芯片无法用双面板完成PCB布线,需要多层PCB板布线。

1.6 嵌入式Linux

嵌入式Linux是以Linux为基础的嵌入式操作系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。嵌入式Linux是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。嵌入式Linux的特点是版权免费,而且性能优异,软件移植容易,代码开放,有许多应用软件支持,应用产品开发周期短,新产品上市迅速,稳定性好、安全性好。1.6.1 常见的嵌入式操作系统

国际上常见的嵌入式操作系统大约有40种,如Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX、Rtems、QNX、INTEGRITY、OSE、C Executive。它们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如WinDriver公司的VxWorks、ISI的pSOS、QNX系统软件公司的QNX、ATI的Nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(PDA)、移动电话、机顶盒、电子书、WebPHONE等,系统有Microsoft的WinCE、3Com的Palm,以及Symbian和Google的Android等。

1.VxWorks

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域逐渐占据一席之地。

VxWorks具有可裁剪微内核结构,高效的任务管理,灵活的任务间通信,微秒级的中断处理,支持POSIX 1003.1b实时扩展标准,支持多种物理介质及标准的、完整的TCP/IP网络协议等,然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不提供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,因此软件的开发和维护成本都非常高,支持的硬件数量有限。

2.Windows CE

Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中Windows CE 3.0是一种针对小容量、移动式、智能化、模块化的实时嵌入式操作系统。为建立针对掌上设备、无线设备的动态应用程序服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。

从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过多的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。

3.嵌入式Linux

其最大的特点是源代码公开并且遵循GPL协议,由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用,其中大部分都遵从GPL,是开放源代码和免费的,可以稍加修改后应用于用户自己的系统。有大量免费优秀的开发工具,且都遵从GPL,是开放源代码的。有庞大的开发人员群体,无须专门的人才,只要懂UNIX/Linux和C语言即可。

随着 Linux在中国的普及,这类人才越来越多,所以软件的开发和维护成本很低。优秀的网络功能,这在Internet时代尤其重要。嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便。

4.μC/OS-Ⅱ

μC/OS-Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位、16位和32位单片机或数字信号处理器(DSP)。它是在原版本μC/OS的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。

5.QNX

由QNX软件公司所开发的QNX操作系统,也是一套类UNIX的嵌入式操作系统,与VxWorks相同,QNX也是一套符合POSIX规范的操作系统。

与VxWorks同样发源于20世纪80年代的QNX,其特殊之处,在于其并非采用传统的高阶硬件虚拟层方式设计,而是以非常细碎的tasks形式来执行,由许多的微核心为基础组成完整的OS服务,因此QNX的硬件设计者可以自由地选择加载执行或不加载某些特定的服务,而不用去变更QNX的核心程序部分。因此,基于QNX的嵌入式操作系统可以做到非常小的程度,而且依然可以具有相当高的效率与完整的菜单项。

6.Nucleus Plus

这款嵌入式操作系统主要特征就是轻薄短小,其架构上的延展性,可以让Nucleus RTOS所占的储存空间压缩到仅有13KB左右,而且Nucleus Plus是一款不需授权费的操作系统,并且提供了源代码。

Nucleus Plus本身只是Acclerated Technology公司完整解决方案里面的其中一环,这个RTOS本身架构属于先占式多工设计,有超过95%的源代码是用标准的ANSI C语言所编写的,因此可以非常有效率地移植到各种不同的平台。

就如同QNX一般,Nucleus Plus也可以根据目标产品的需求,来自行剪裁所需要的系统功能,达到精简体积的目的。而配合相对应的编译器(Borland C/C++、Microsoft C/C++)以及动态连接程序库和各种底层驱动程序,在开发上拥有相当大的便利性。诸如飞思卡尔(Freescale)、罗技(Logitech)公司、美国NEC、SK Telecom等公司,都有采用Nucleus Plus嵌入式操作系统作为开发产品使用。1.6.2 嵌入式Linux操作系统

Linux系统是一个免费使用的类似UNIX的操作系统,最初运行在X86体系结构,目前已经被移植到数十种处理器上。Linux最初由芬兰的一位计算机爱好者Linus Torvalds设计开发,经过十余年的发展,现在该系统已经是一个非常庞大、功能完善的操作系统。Linux系统的开发和维护是由分布在全球各地的数千名程序员完成的,这得益于它的源代码开发特性。

与商业系统相比,Linux系统在功能上一点都不差,甚至在许多方面要超过一些著名的商业操作系统。Linux不仅支持丰富的硬件设备、文件系统,更主要的是它提供了完整的源代码和开发工具。对于嵌入式开发来说,使用Linux系统可以帮助用户从底层了解嵌入式开发的全过程,以及一个操作系统内部是如何运行的。学习Linux系统开发对初学者有很大的帮助。

1.Linux内核版本

Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

Linux内核版本号命令是由x、y、z三部分数字组成的。(1)x为主版本号。(2)y为次版本号,偶数代码是稳定版本,奇数代码是测试版本。(3)z为对前版本的修改次数。

例如,2.6.12表示对核心版本的第12次修改。

2.Linux发行版

Linux系统是开发的,任何人都可以制作自己的系统,因此出现了许多厂商和个人都在发行自己的Linux系统。发行版为许多不同的目的而制作,包括对不同计算机结构的支持,对一个具体区域或语言的本地化,实时应用,和嵌入式系统,甚至许多版本故意地只加入免费软件。目前已经有超过300个发行版被积极地开发,最普遍被使用的发行版大约有12个。

下面介绍几种国内常见的Linux发行版供读者参考。(1)Red Hat Linux

这是最著名的Linux版本了,Red HatLinux已经创造了自己的品牌,越来越多的人听说过它。Red Hat在1994年创业,当时聘用了全世界500多名员工,他们都致力于开放的源代码体系。

Red Hat Linux是公共环境中表现上佳的服务器。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。

Red Hat是一个符合大众需求的最优版本。在服务器和桌面系统中它都工作得很好。Red Hat的唯一缺陷是带有一些不标准的内核补丁,这使得它难于按用户的需求进行定制。Red Hat通过论坛和邮件列表提供广泛的技术支持,它还有自己公司的电话技术支持,后者对要求更高技术支持水平的集团客户更有吸引力。(2)Debian

Debian Project诞生于1993年8月13日,它的目标是提供一个稳定容错的Linux版本。支持的不是某家公司,而是许多在其改进过程中投入了大量时间的开发人员,这种改进吸取了早期Linux的经验。

Debian以其稳定性著称,虽然它的早期版本Slink有一些问题,但是它的现有版本Potato已经相当稳定了。这个版本更多地使用了Pluggable Authentication Modules(PAM),综合了一些更易于处理的需要认证的软件(如Winbind for Samba)。

Debian主要通过基于Web的论坛和邮件列表来提供技术支持。作为服务器平台,Debian提供一个稳定的环境。为了保证它的稳定性,开发者不会在其中随意添加新技术,而是通过多次测试之后才选定合适的技术加入。当前最新正式版本是Debian 6,采用的内核是Linux 2.6.32。(3)Fedora Core

Fedora Core(自第七版直接更名为Fedora)是众多 Linux 发行版之一。它是一套从Red Hat Linux发展出来的免费Linux系统。Fedora Core的前身就是Red Hat Linux。Fedora是一个开放的、创新的、前瞻性的操作系统和平台,基于Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开放源码的软件和开放的标准。Fedora项目由 Fedora 基金会管理和控制,得到了红帽子公司(Red Hat,Inc.)的支持。Fedora是一个独立的操作系统,是Linux的一个发行版,可运行的体系结构包括 x86(即i386-i686)、x86_64 和 PowerPC。(4)Ubuntu

Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(译为吾帮托或乌班图),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。随着云计算的流行,Ubuntu推出了一个云计算环境搭建的解决方案,可以在其官方网站找到相关信息。于2012年4月26日发布最终版Ubuntu 12.04,Ubuntu 12.04是长期支持的版本。

本章小结

本章概括介绍了嵌入式系统的基本常识、组成结构、应用状况、软硬件平台的发展,介绍了ARM微处理器的概念、特点和功能选型,最后介绍了几种常见的嵌入式Linux系统以及Linux系统的内核版本和发行版本。本章的知识点比较广泛,读者只需要了解即可,全书在涉及本章所介绍的内容的地方会详细讲解各知识点。

第2章 嵌入式Linux开发环境构建

进行嵌入式项目开发,需要建立嵌入式开发环境。建立嵌入式Linux开发环境包括Bootloader工具,针对不同平台的交叉编译器(在本书中都是针对ARM平台)arm-linux-gcc,需要编译配置内核时还要安装内核源码树,在调试时使用的一些终端软件、TFTP软件、FTP软件,有内核和文件系统的烧写工具。本章主要介绍嵌入式Linux系统移植过程中用到的交叉编译环境建立,以及各种工具的安装和配置。

2.1 虚拟机及Linux安装

很多工具都是Windows版本的,而要求的开发环境是Linux环境。在Windows系统中安装虚拟机,然后再虚拟一个Linux环境,使Linux和Windows能够互相通信。这种方案解决了很多软件不兼容两种平台的问题。2.1.1 虚拟机VMware Workstation软件介绍

VMware Workstation(中文名“威睿工作站”)是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,是进行开发、测试、部署新的应用程序的最佳解决方案。VMware Workstation可在一部实体机器上模拟完整的网络环境,以及可便于携带的虚拟机器,其更好的灵活性与先进的技术胜过了市面上其他的虚拟计算机软件。

VMware Workstation允许操作系统(OS)和应用程序(Application)在一台虚拟机内部运行。虚拟机是独立运行主机操作系统的离散环境。在VMware Workstation中,用户可以在一个窗口中加载一台虚拟机,它可以运行自己的操作系统和应用程序。用户也可以在运行于桌面上的多台虚拟机之间切换,通过一个网络共享虚拟机(如一个公司局域网),挂起和恢复虚拟机以及退出虚拟机,这一切不会影响你的主机操作和任何操作系统或者其他正在运行的应用程序。

虚拟机VMware Workstation软件的安装和普通软件的安装过程一样,这里就不详细介绍了。2.1.2 安装Linux操作系统Ubuntu12.04

这里选择了现在流行的、资料丰富、易于使用的Ubuntu作为嵌入式开发平台。作为一个基于GNU/Linux的平台,Ubuntu不但免费,而且有专业人员和业余爱好者共同为其提供技术支持。下面就在虚拟机中安装这个Linux发行版Ubuntu,但首先要确认磁盘的剩余空间大于15GB。(1)打开VMware Workstation软件,单击“Create a New Virtual Machine”图标,进行虚拟计算机的创建,如图2.1所示。图2.1 VMware启动界面(2)在“新建虚拟机向导”窗口中选择“Custom(advanced)”选项,如图2.2所示。(3)单击“Next”按钮,进行虚拟机硬件兼容性配置,如图2.3所示。图2.2 虚拟机配置图2.3 虚拟机硬件兼容性配置(4)单击“Next”按钮,在弹出的对话框中选中“I will install the operating system later”单选按钮,如图2.4所示。(5)单击“Next”按钮,在弹出的对话框中选择要安装的系统类型为“Linux”,发行版是“Ubuntu”,如图2.5所示。图2.4 虚拟机安装来源图2.5 系统类型与发行版的选择(6)单击“Next”按钮,在弹出的对话框中输入虚拟机的名字,选择自己将要安装的Ubuntu系统保存的路径,如图2.6所示。(7)单击“Next”按钮,在弹出的对话框中,设置系统的处理器个数为“1”个,每个处理器的内核数为“1”个,如图2.7所示。图2.6 设置系统的名称与存放路径图2.7 处理器和处理器内核的数量设置(8)单击“Next”按钮,在弹出的对话框中,设置内存大小,可以根据自己计算机的实际配置情况,配置大一点或者小一点,如图2.8所示。(9)单击“Next”按钮,在弹出的对话框中选择网络连接方式,这里选择“网络桥接”,如图2.9所示。(10)单击“Next”按钮,在弹出的对话框中选中“LSI Logic(Recommended)”单选按钮,单击“Next”按钮,如图2.10所示。(11)单击“Next”按钮,在弹出的对话框中选中“Create a new virtual disk”单选按钮,如图2.11所示。图2.8 设置内存大小图2.9 选择“网络桥接”图2.10 选择SCSI控制器图2.11 创建虚拟硬盘(12)单击“Next”按钮,在弹出的对话框中选择硬盘接口类型,如图2.12所示。(13)单击“Next”按钮,在弹出的对话框中,设置硬盘大小,如图2.13所示。图2.12 选择硬盘接口类型图2.13 设置硬盘大小(14)单击“Next”按钮,在弹出的对话框中选择硬盘文件名称,这里使用默认设置,如图2.14所示。(15)单击“Next”按钮,在弹出的对话框中单击“Finish”按钮,这时配置完成,接受进入安装Ubuntu,如图2.15所示。如果还需添加其他的硬件,可单击“Customize Hardware”按钮。图2.14 硬盘文件名称图2.15 完成新建虚拟机向导(16)例如,新添加一个串口设备,如图2.16所示。(17)选择串行端口类型,如选择使用计算机的物理串口,如图2.17所示。图2.16 添加串口设备图2.17 选择串行端口类型(18)单击“Next”按钮,在弹出的对话框中进行参数的配置,单击“Finish”按钮完成串口添加,如图2.18所示。(19)在出现的对话框中单击“CD/DVD(IDE)Auto detect”,选择BIOS导入的安装系统镜像(ISO),如图2.19所示。(20)导入Ubuntu桌面系统镜像“ubuntu-12.04.2-desktop-i386.iso”,如图2-20所示,该镜像文件可从Ubuntu的官网上(http://www.ubuntu.org.cn/download)下载,可下载Ubuntu最新版本,这里使用Ubuntu稳定版ubuntu-12.04.2。图2.18 完成串口添加图2.19 选择BIOS导入的安装系统镜像图2.20 选择Ubuntu系统镜像(21)导入系统镜像成功后,打开电源开关,进入安装系统,如图2.21所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载