嵌入式Linux系统工程师标准培训教材第一章第1章 嵌入式系统1.1嵌入式系统概述1.1.1 什么是嵌入式系统嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪的,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 嵌入式系统一般由以下几部分组成,如图1 1所示。嵌入式微处理器;外围硬件设备;嵌入式操作系统;用程序。图1 1 嵌入式系统的构成以 NOKIA N810手持智能终端为例,以上4个部分分别对应如下,如图1 2所示。嵌入式微处理器:Omap双核ARM处理器;外围硬件设备:LCD、键盘、烈焰开服一条龙服务WiFi无线网卡等;嵌入式操作系统:嵌入式Linux系统;特定的应用程序:Google Earth等。奇迹Mu开服一条龙服务1.1.2 嵌入式系统的特点嵌入式系统与通用PC系统相比,奇迹Mu开服一条龙服务具有如下特点。专用性强。由于嵌入式系统通常是面向某个特定应用的,所以嵌入式系统的硬件和软件,尤其是软件,都是针对特定用户群而设计的,具有专用性的特点。实时性好。目前,嵌入式系统广泛应用于生产过程控制、数据采集、传输通信等场合,其主要用于对宿主对象进行控制,因此对嵌入式系统有或多或少的实时性要求。例如,嵌入在武器装备中的嵌入式系统、在火箭中的嵌入式系统、一些工业控制设置中的控制系统等,其在应用中的实时性要求就极高。也正因为这种要求,嵌入式系统在硬件上极少使用存取速度较慢的磁盘等存储器,在软件上更是精心设计,使嵌入式系统可快速地响应外部事件。当然,随着嵌入式系统应用的扩展,有些系统对实时性的要求却不是很高。例如,近年来发展速度比较快的手持式计算机、掌上电脑等。总体来说,实时性是对嵌入式系统的基本要求,是设计者和用户考虑的一个重要指标。可裁剪性好。从嵌入式系统专用性的特点看,作为嵌入式系统的供应者,理应提供各式各样的硬件和软件以备选用。但是,这势必会增加产品的成本。为了既不增加成本,又能满足专用性的需要,嵌入式系统的供应者必须采取相应措施使产品在通用和专用之间进行某种平衡。目前的做法是,将嵌入式系统的硬件和操作系统设计成可裁剪的,以便使嵌入式系统开发人员根据实际应用需求来量体裁衣,去除冗余,从而使系统在满足应用要求的前提下达到最精简的配置。可靠性高。由于有些嵌入式系统所承担的计算任务涉及到产品质量、人身设备安全、国家机密等重要问题,还有些嵌入式系统的宿主对象要工作在无人值守的场合,例如危险性高的工业环境、内嵌有嵌入式系统的仪器仪表、人迹罕至的气象检测系统以及为侦察敌方行动的小型智能装置等,所以,与普通系统相比较,嵌入式系统对可靠性的要求更高。功耗低。另外,为了降低系统的功耗,嵌入式系统的软件一般不存储在磁盘等载体中,而是固化在存储器芯片或单片机系统的存储器之中。1.2嵌入式Linux的学习方法嵌入式系统无疑是当前最热门、最有发展前途的IT应用领域之一,但同时也是最难以掌握的技术之一,很多踌躇满志的同学最终没能成为一名合格的嵌入式工程师,很大的问题是没有掌握科学、有效的学习方法,所以本章将主要从学习人群、待学知识点、学习顺序等几个方面来阐述一套科学的嵌入式系统学习方法。1.2.1 学习人群从事嵌入式开发的工程师主要有两类。电子工程、通信工程等偏硬件专业出身的人,他们主要从事硬件设计,同时也开发一些与硬件关系密切的底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,向下驱动硬件,向上支持操作系统)、硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足的是他们更擅长定义各种硬件接口,但对复杂的软件系统往往力不从心(例如嵌入式操作系统原理和复杂的应用软件等)。学软件开发、计算机专业出身的人,他们主要从事嵌入式操作系统和应用软件的开发。如果这部分人较好地掌握了硬件原理,他们也可以从事BSP和硬件驱动程序的开发工作。1.2.2 待学知识点嵌入式系统具有知识点多、涉及范围广等特点,因此在开始学习之前,首先应该明确学习什么知识点。本小节将以嵌入式Linux为例,阐述其知识点。嵌入式Linux的知识可以分为5大版块,如图1 3所示。图1 3 嵌入式Linux的知识版块嵌入式Linux的以上5大知识版块的内容又可以具体细化为下面的5个部分。1嵌入式处理器(以ARM为例)ARM M 汇编指令集。ARM环境C语言编程。ARM中断与异常。AD S集成开发环境。裸机程序开发(串口、LCD、时钟、LED、按键等)。2Linux系统管理Linux定制安装。Li nux基本命令。samba、NFS、TFTP、wireshark等工具的应用。Shell编程。3Linux应用程序开发GCC、GDB、M进程间通信。网络编程。QT图形化应用程序开发。Android图形化应用程序开发。4Linux内核开发Linux内核配置与裁剪。Linux内核《梦幻西游手游》钓鱼玩法