1.嵌入式系统的简介

1.嵌入式系统的简介

1.1 课程规划与学习方法

嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一,但同时也是最难以掌

握的学科之一,很多踌躇满志的同学最终没能成为一名合格的嵌入式工程师,很大原因是

没有掌握科学,有效的学习方法,所以本章主要将从学习人群、待学知识点、学习顺序等

几个方面来阐述一套科学的嵌入式系统学习方法。

1.1.1 学习人群

从事嵌入式开发的工程师主要有两类。

l 电子工程、通信工程等偏硬件专业出身的人,他们主要从事硬件设计,也开发一些与

硬件关系密切的底层软件,如BootLoader、Board Support Package(像PC的BIOS

一样,往下驱动硬件,往上支持操作系统),硬件驱动程序等。他们的优势是对硬件

原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从

心(例如嵌入式操作系统原理和复杂应用软件等)。

l 另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。

如果这部分人对硬件原理有较好的掌握,也可以从事BSP 和硬件驱动程序开发工作

1.1.2 待学知识点

嵌入式系统具有知识点多,要求的知识点广等特点,因此在开始学习之前,首先应该

明确应该学一些什么知识点,本小节将以嵌入式Linux为例,阐述其知识点。嵌入式Linux

的知识可以分为5大板块,如图1-1 所示。

以上5 大知识板块的知识点又可以具体细化为:

1.嵌入式处理器(以ARM 为例)

ARM 处理器工作模式

ARM 系统寄存器

ARM 寻址方式

ARM 汇编指令集

ARM 环境C 语言编程

ARM 中断与异常

ADS 集成开发环境

裸机程序开发(串口、LCD、时钟、LED、按键……)

2.Linux系统管理

Linux定制安装

Linux基本命令

sambanfstftpwireshark等工具使用

Shell编程

3Linux系统管理

GCCGDBMakefile

文件、时间编程

多进程、多线程程序设计

进程间通讯

网络编程

QT图形化应用程序开发

Android 图形化应用程序开发

4Linux系统管理

Linux内核配置与裁剪

Linux内核模块开发

根文件系统制作

进程子系统

内存子系统

Proc 文件系统

系统调用

内核定时器

内核异常分析

5Linux系统管理

字符设备驱动程序

总线、设备、驱动模型

硬件访问技术

中断处理

Input 设备驱动

Platform驱动程序

PCIUSB 驱动程序

网卡驱动程序

触摸屏驱动程序

串口驱动程序

1.1.3 学习顺序

面对上一节所列出的众多知识点,采用什么样的顺序来学习至关重要,学习顺序得当,

事半功倍,学习顺序不当,则有可能导致学习者半途放弃,正确的学习顺序如图1-4 所示。

1-2 嵌入式 Linux学习顺序

1.1.4 理论与实践

嵌入式属于应用型学科,强调理论与实践相结合,强调通过大量的实验与项目来加深

对知识的理解与掌握。因此在嵌入式学习的过程中,除了需要一套系统的理论知识学习大

纲外,更需要一套与之配套的实验大纲。

1.1.5 学习误区

很多同学在嵌入式学习的道路上最终放弃,很多时候是因为步入了嵌入式学习的误区,这

里我们列出了几项常见的误区:

误区 1:今天学学这,明天学学那,学习跟着感觉走。

正解:学习一定要按计划,由简入深,系统进行。

误区 2. 资料买了一大堆,自己都不知道看那本。

正解:初学阶段,资料做到少而精,坚持看。

误区 3. 只看资料与视频,就是不动手做。

正解:多做实验多思考,必修实验必须做。

1.1.6 学习方法总结

1-3 嵌入式 Linux学习方法总结

对于初学的同学,如果不能自己制定知识点大纲和实验大纲,可以参考国嵌的嵌入式

课程大纲与实验大纲,制定完这两个大纲后,严格按照这两个大纲系统性学习。

1.2 嵌入式系统概述

1.2.1 什么是嵌入式系统

嵌入式系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪、对功能、可靠

性、成本、体积、功耗有严格要求的专用计算机系统。

它一般由以下几部分组成,如图1-4 所示:

1. 嵌入式微处理器

2. 外围硬件设备

3. 嵌入式操作系统

4. 特定的应用程序

1-4 嵌入式系统构成

1.嵌入式微处理器:Omap 双核ARM 处理器

2.外围硬件设备:LCD、键盘、Wifi 无线网卡等

3.嵌入式操作系统:嵌入式Linux系统

4.特定的应用程序:Google earth

1.2.2 嵌入式系统特点

嵌入式系统与通用PC 系统相比,具有如下特点:

专用性强。由于嵌入式系统通常是面向某个特定应用的,所以嵌入式系统的硬件和软

件,尤其是软件,都是为特定用户群来设计的,它通常都具有某种专用性的特点。

实时性好。目前,嵌入式系统广泛应用于生产过程控制、数据采集、传输通信等场合,

主要用来对宿主对象进行控制,所以都对嵌入式系统有或多或少的实时性要求。例如,对

嵌入在武器装各中的嵌入式系统、在火箭中的嵌入式系统、一些工业控制装置中的控制系

统等应用中的实时性要求就极高。也正因为这种要求,在硬件上嵌人式系统极少使用存取

速度慢的磁盘等存储器,在软件上更是加以精心设计,从而可使嵌入式系统快速地响应外

部事件。当然,随着嵌入式系统应用的扩展,有些系统对实时性要求也并不是很高,例如

近年来发展速度比较快的手持式计算机、掌上电脑等。但总体来说,实时性是对嵌入式系统的普遍要求,是设计者和用户重点考虑的一个重要指标。

可裁剪性好。从嵌人式系统专用性的特点来看,作为嵌入式系统的供应者,理应提供

各式各样的硬件和软件以各选用。但是,这样做势必会提高产品的成本。为了既不提高成

本,又满足专用性的需要,嵌入式系统的供应者必须采取相应措施使产品在通用和专用之

间进行某种平衡。目前的做法是,把嵌人式系统硬件和操作系统设计成可裁剪的,以便使

嵌入式系统开发入员根据实际应用需要来量体裁衣,去除冗余,从而使系统在满足应用要

求的前提下达到最精简的配置。

可靠性高。由于有些嵌入式系统所承担的计算任务涉及产品质量、人身设各安全、国

家机密等重大事务,加之有些嵌入式系统的宿主对象要工作在无人值守的场合,例如危险

性高的工业环境中、内嵌有嵌入式系统的仪器仪表中、在人际罕至的气象检测系统中以及

为侦察敌方行动的小型智能装置中等。所以与普通系统相比较,对嵌入式系统可靠性的要

求极高。

功耗低。有很多嵌入式系统的宿主对象都是一些小型应用系统,例如移动电话、PDA

MP3、飞机、舰船、数码相机等,这些设各不可能配各容量较大的电源,因此低功耗一直

是嵌入式系统最求的目标。当然也是为了降低系统的功耗,嵌入式系统中的软件一般不存

储于磁盘等载体中,而都固化在存储器芯片或单片系统的存储器之中。

1.3 嵌入式系统工程师角色描述

1-6 显示的是采用嵌入式Linux 作为操作系统的嵌入式产品,针对这样的产品,其

开发流程如图1-7

1.3.1 嵌入式应用工程师工作内容与所需知识点

从图1-7 可以知道,嵌入式应用工程师主要从事与产品相关的嵌入式Linux 应用程序

开发,需要具备的技能主要有:

C/C++语言

嵌入式 Linux环境搭建

嵌入式 Linux调试技术

Linux文件编程技术

Linux多线程编程技术

Linux多进程编程技术

Linux进程间通讯技术

Linux网络编程技术

对于从事图形化应用程序的嵌入式工程师来说,还需具备下面两项的一项:

QT编程技术

Android 应用程序开发技术

1.3.2 嵌入式系统工程师工作内容与所需知识点

从图1-7 可以知道,嵌入式系统工程师主要嵌入式系统的移植,驱动程序开发等偏底层的

工作,需要具备的技能主要有:

至少精通一种嵌入式CPU,如ARM

至少精通一种Bootloader,如U-Boot

Linux字符设备驱动程序开发技术

Linux网卡驱动程序开发技能

串口驱动程序开发技术

USB 驱动程序开发技术

LCD 驱动程序开发技术

了解Linux进程管理子系统

了解Linux内存管理子系统

了解Linux内核启动流程

 

posted @ 2016-02-14 07:33  cestlavie  阅读(1153)  评论(0编辑  收藏  举报