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基本命令

samba、nfs、tftp、wireshark等工具使用

Shell编程

3.Linux系统管理

GCC、GDB、Makefile

文件、时间编程

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

进程间通讯

网络编程

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

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

4.Linux系统管理

Linux内核配置与裁剪

Linux内核模块开发

根文件系统制作

进程子系统

内存子系统

Proc 文件系统

系统调用

内核定时器

内核异常分析

5.Linux系统管理

字符设备驱动程序

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

硬件访问技术

中断处理

Input 设备驱动

Platform驱动程序

PCI、USB 驱动程序

网卡驱动程序

触摸屏驱动程序

串口驱动程序

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内核启动流程

转载于:https://www.cnblogs.com/FORFISH/p/5188569.html

1.嵌入式系统的简介相关推荐

  1. 嵌入式系统简介、应用及发展

    1.1 嵌入式系统简介 1.1.1 何为嵌入式系统 嵌入式系统本身是一个相对模糊的定义.目前嵌入式系统已经渗透到我们生活中的每个角落,工业.服务业.消费电子--,而恰恰由于这种范围的扩大,使得&quo ...

  2. 嵌入式系统开发16——嵌入式实时操作系统uC/OS的简介及简单应用

    本文主要介绍嵌入式实时操作系统(RTOS),并且以uc/OS为例,将其移植到stm32F103C8T6上,构建3个任务:其中两个task分别以1s和3s周期对LED灯进行点亮-熄灭的控制:另外一个ta ...

  3. 嵌入式系统分类及其应用场景_词嵌入及其应用简介

    嵌入式系统分类及其应用场景 Before I give you an introduction on Word Embeddings, take a look at the following exa ...

  4. 【转载】学习嵌入式系统需要具备的条件、方法及步骤

    事先说明,我并不是对嵌入式有多大的兴趣,但我非常希望自己能一直向底层前进,不停地去探究最底层的奥秘. 查阅了很多资料,似乎嵌入式最附合自己对底层的探求,或许它是,或许不是,但对于现在的我而言最重要的是 ...

  5. 学习嵌入式系统需要具备的条件、方法及步骤

    2019独角兽企业重金招聘Python工程师标准>>> 1.将C和C++学好学精(语言层次): 2.将数据结构.算法.操作系统学扎实(内功层次): 3.爬山成功后,深入学习.理解.运 ...

  6. 嵌入式系统的组成、嵌入式处理器分类总结、ARM处理器系列总结、ARM Cortex-M3体系结构总结!

    一.嵌入式系统的组成 嵌入式系统的组成主要由:嵌入式硬件系统.嵌入式软件系统. (1)嵌入式硬件系统主要包括:嵌入式处理器.存储器.模拟电路.电源.接口控制器.接插件等 1)嵌入式处理器:是嵌入式系统 ...

  7. 微型计算机工业控制技术,基于ARM的微机原理与接口技术(STM32嵌入式系统架构编程与应用嵌入式与工业控制技术高等学校电子信息类专业系列教材)...

    导语 内容提要 本书首先介绍微型计算机的相关概念及嵌入式系统的应用,接着介绍Cortex M3微处理器架构及开发方法,介绍汇编语言及其程序设计.在开发应用方面,以STM32F103VET6为背景,介绍 ...

  8. 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...

    5.2  U-Boot移植 5.2.1  Bootloader介绍 1.概念 简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序.通过这段程序,可以 ...

  9. 嵌入式系统开发学习步骤(Linux高级编程学习顺序)

    2019独角兽企业重金招聘Python工程师标准>>> 嵌入式系统开发学习步骤(Linux高级编程学习顺序) 1.Linux 基础 安装Linux操作系统 Linux文件系统 Lin ...

最新文章

  1. 常用的meta标签总结
  2. Swift--数组和字典(二)
  3. Flash AS3获取PHP数据(ActionScript3 + php + email)送ActionScript2
  4. pythonweb搭建教程_基于Centos搭建Python Web 环境搭建教程
  5. 考研计算机考试408背诵,今年上岸计算机准研究生分享一下计算机考研(408)经验...
  6. mysql5.7.29下载与安装并设置密码
  7. Peasy.NET学习之并发问题处理
  8. 【hihocoder 1032】最长回文子串
  9. C# 自定义控件基础知识
  10. Stylus基本使用
  11. 计算机的数学知识的手抄报图片大全,数学知识手抄报图片大全
  12. 油猴Tampermonkey安装使用教程
  13. 腾讯游戏10大经典案例(二):天堂等于天下
  14. 【趣味案例】用Python来做一个屏幕录制工具
  15. 移动cmtds设置服务器无响应,总感觉手机的4G信号变差了?跟我这样设置,让你的信号瞬间满格...
  16. 29 外观模式(Facade模式)详解
  17. html网页id怎么改成名字,IG 改名字:教你如何更改 Instagram 帐号名称 ID 及个人档案姓名...
  18. 使用命令行激活window10 亲测有效【不要修改命令】
  19. 配置域名 二级,三级的泛解析
  20. 【OpenGL ES】着色器Shader与程序Program

热门文章

  1. 转iOS性能优化:Instruments使用实战
  2. linux动态链接库---一篇讲尽
  3. 15个非常棒的jQuery无限滚动插件【瀑布流效果】
  4. cvReleaseImage出错
  5. 2011.8.2号面试
  6. 对float浮动的我的理解,形象生动一点
  7. 让小乌龟可以唱歌——对Python turtle进行拓展
  8. 退一步 - 王阳明的心学智慧
  9. HDU 4539郑厂长系列故事――排兵布阵(状压DP)
  10. [原创]SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问...