Download presentation
Presentation is loading. Please wait.
1
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
嵌入式系统程序设计 大连理工大学软件学院 嵌入式系统工程系 赖晓晨
2
第一章 绪论 ★ ★ 嵌入式系统概述 嵌入式系统开发流程 嵌入式系统程序设计 本课程内容简介
3
第一节 嵌入式系统概述 计算机的发展和分类 嵌入式系统的概念 嵌入式系统的组成 嵌入式系统的发展
4
一、计算机的发展和分类 计算机的发展的历史 电子管、晶体管、集成电路、大规模集成电路
5
ENIAC 体积庞大, 18000个 真空管, 45吨
6
晶体管计算机
7
iMac
8
计算机的发展和分类(续) 传统分类法: 巨型机、大型机、中型机、小型机、 微型机 通用机、嵌入式
9
二、嵌入式系统的概念 概念(IEEE) devices used to control, monitor, or assist the operation of equipment, machinery or plants.(嵌入式系统是控制、监视或者辅助某个设备、机器甚至工厂运行的设备。) 用来执行特定功能 以微电脑与周边构成核心 需要严格的时序与稳定度 全自动操作循环
10
嵌入式系统的概念(续) 国内普遍接受的概念
嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁减,适于应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
11
三、嵌入式系统的组成 嵌入式系统组成 系统硬件 嵌入式处理器 外围硬件设备 软件 嵌入式操作系统 用户应用程序
12
嵌入式系统的组成(续) 系统硬件组成 嵌入式处理器 外围电路 接口 外设 MPU
13
嵌入式处理器分类 嵌入式微处理器(MPU):运算器、控制器
嵌入式微控制器(MCU):片内ROM、RAM、总线、I/O口、计数器、看门狗、AD、DA、Flash 数字信号处理器(DSP):哈佛结构,适用于FFT变换、谱分析、数字滤波等操作,用于音频、视频处理 片上系统(SOC):USB、GPRS、GPS、IEEE1394、蓝牙,可靠性强、开发时间短
14
嵌入式处理器分类(续) 嵌入式微处理器(MPU):Am186/88、386EX 嵌入式微控制器(MCU):8051、P51XA
数字信号处理器(DSP):TMS320系列、DSP56200系列 片上系统(SOC):M-core、CC2430
15
嵌入式微处理器 嵌入式微处理器是在通计算机中央处理器的基础上设计而来的,它将微处理器安装到专门设计的电路板上,只保留和嵌入式应用有关的主板功能,大幅减小了系统的体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器在工作温度、抗电磁干扰、可靠性等方面都做了增强。
16
嵌入式微控制器 嵌入式微控制器又称单片机,它以某种微处理器内核为核心,将计算机系统的各个部分集成在一块芯片中,包括ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、Flash RAM、EEPROM等。
17
数字信号处理器 DSP处理器对系统结构和指令进行特殊设计,使其适合于执行DSP算法,编译效率较高,,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域。
18
片上系统 片上系统是采用硬件描述语言来设计各种处理器内核以及各种外设,把设计好的单元存储在器件库中,用户只需根据系统要求选用这些器件,仿真通过后就可以将设计图交给半导体工厂制作样品。
19
嵌入式处理器分类(续) 问题: 普林斯顿结构 vs 哈佛结构 CISC vs RISC 流水线 嵌入式处理器分类
嵌入式微处理器(MPU):Am186/88、386EX 嵌入式微控制器(MCU):8051、P51XA 数字信号处理器(DSP):TMS320系列、DSP52600系列 片上系统(SOC):M-core、CC2430 普林斯顿结构 vs 哈佛结构 CISC vs RISC 流水线 问题:
20
外围硬件设备 电源部分:交流电、电池供电 输入部分:键盘、鼠标、触摸屏、拨码开关等。
输出部分:发光二极管、lED显示器、LCD显示器、蜂鸣器等。 存储部分:ROM、EPROM、EEPROM、FLASH、RAM。
21
外围硬件设备(续) 接口电路:USB接口、PS/2接口、串口、IDE接口、红外接口、1394接口、CF卡接口、网络接口、CAN总线接口、RS422接口、RS485接口等等,每一种接口一般都对应一个专用的控制芯片,例如串口一般是由8250芯片来控制。 其他硬件逻辑电路:AD转换电路、电机驱动电路、时钟日期生成电路等等。
22
嵌入式系统的组成(续) 软件组成 操作系统 应用程序 处理器
23
嵌入式操作系统分类 顺序系统 分时系统 实时系统 开源:linux、uClinux、uC/OS II 强实时:vxworks
弱实时:嵌入式linux、wince 开源:linux、uClinux、uC/OS II
24
Vxworks操作系统 Vxworks操作系统是一个非常优秀的嵌入式操作系统,它的实时性强,内核可裁剪到很小,可靠性高。在北美,Vxworks占据了嵌入式操作系统的多半市场,特别是在通信设备等实时性要求较高的系统中,Vxworks占据了绝大部分市场份额。但是Vxworks及其相关开发工具的价格很高,小公司难以承受。
25
嵌入式Linux操作系统 Linux是一个成功的服务器操作系统,此外由于其开源、免费、可移植性好的特点,在嵌入式系统中也有广泛应用。嵌入式Linux可分为两类,一类经过修改,专门在设有内存管理单元的硬件上运行,例如uCLinux;另一类具有完全的Linux特性,运行于有内存管理单元的硬件平台,例如mini Linux.
26
uC/OS II操作系统 目前很多大学都以uC/OS II 为教学使用的实时操作系统,这主要是由于uC/OS II 较简单,源码公开,非常适合入门者学习实时操作系统原理。uC/OS II 的缺点是功能有限,实际使用较少。
27
Windows CE操作系统 Windows CE是微软公司推出的嵌入式操作系统,在短短几年间占据了很大的市场份额,特别是在PDA、手机、显示仪等界面要求较高或者要求快速的场合。Windows CE 的开发平台主要为Windows CE Platform Builder,有时也用EVC环境开发一些较上层的应用
28
嵌入式操作系统分类(续) 问题: 顺序系统 分时系统 实时系统 开源:linux、uClinux、uC/OS II 强实时:vxworks
弱实时:嵌入式linux、wince 开源:linux、uClinux、uC/OS II 问题: 抢占式 vs 非抢占式
29
嵌入式应用软件 固态化存储:为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不存储在硬盘等载体中。
高质量、高可靠性:嵌入式系统资源的稀缺性和执行的实时性要求软件代码应该尽可能的短小、高效、快速,为此对编程以及编译器的设计提出了更高的要求。 高实时性:在多任务嵌入式系统中,存在重要性不同的多个任务,如何对多任务请求合理的响应是系统设计的关键这个环节处理不当很可能导致灾难性结果。
30
四、嵌入式系统的发展 主机计算模式 桌面计算模式 网络和分布式计算模式 普适计算模式
31
普适计算 普适计算又称为无处不在的计算,这一思想最早由Mark Weiser提出,他认为应该把计算机嵌入到环境当中,并通过各种有线无线网络连接起来互相通信。
32
普适计算(续) 普适计算研究的基础是各种嵌入式技术,研究内容包括智能环境和不可见计算、无缝可移动性、可穿戴计算等。普适计算也面临一些挑战,例如计算模式的转变、计算资源的共享、移动计算的实现、应用程序的相互沟通等。
33
第二节 嵌入式系统开发流程 需求分析 概要设计 详细设计 绘制PCB 制板、安装调试硬件 移植操作系统 软件设计 编码、测试 软硬件
协同设计 制板、安装调试硬件 移植操作系统 软件设计 编码、测试
34
原理图举例 protel
35
PCB图 印刷电路板(PCB板) (阻燃环氧树脂复合)基板、电源线、信号线、焊盘、过孔、覆铜、丝印层
36
PCB举例
37
制板 2层板 4层板 6层板 检测
38
焊接硬件 先小后大的原则
39
调试硬件 先调试显示部分,再调试其他部分
40
移植操作系统 uClinux
41
移植操作系统(续) uClinux
42
移植操作系统(续) miziLinux
43
移植操作系统 miziLinux
44
图形界面 miniGUI
45
图形界面(续) MiniGUI
46
图形界面(续) miniGUI
47
编码、测试
48
第三节 嵌入式系统程序设计 嵌入式系统开发语言 嵌入式系统开发工具
49
一、嵌入式系统开发语言 汇编语言 C语言 C++语言 Java语言
50
汇编语言 汇编语言的优点: 汇编语言的缺点: 使用场合:适合时序严格的场合、系统初始化 程序运行的结果很直观 便于对程序的跟踪和调试
程序执行效率很高 程序运行速度很快 汇编语言的缺点: 开发效率低下 使用场合:适合时序严格的场合、系统初始化
51
C语言 C语言是系统程序语言。流行的操作系统核心部分几乎无一例外的选择了C语言。 C语言可以通过指针来对访问任意内存内容。
52
C语言(续) C语言是一种高效的语言,用C写的程序执行速度快,占用内存少, 经过优化后效率接近汇编程序。
C语言的主要不足是缺乏编程模型、不符合真是事物存在形式,用C语言描述复杂逻辑是十分困难的,而且代码量要超过C++语言。同时,C语言过度依赖程序员的做法,程序员可以随意修改程序中的任何内容,这在提高编程灵活性的同时也带来安全隐患。
53
C++语言 C++保留了C语言的强大功能与灵活性,并提供了继承、封装、多态等面向对象技术,为程序设计带来了深及灵魂的变革。
ISO C++标准只定义了C++的语法规范,但是并没有定义其相对应的开销。对于资源受限的嵌入式系统来说,C++语言有可能过于庞大,执行效率难于保证。
54
C++语言(续) 在1998年,Embedded C++规范正式制定(我们简称之为EC++)
EC++是标准C++语言的一个子集,它从C++语法中剔除了一些实现复杂和会导致额外负担的语法元素。例如:多重继承与虚基类、异常处理、模版、命名空间等等。同时,在标准库方面,EC++规范也做了删减,STL和Stream等被剔除了。
55
C++语言(续) Symbian OS是由爱立信、诺基亚、摩托罗拉等共同出资开发,其目的是为智能手机提供一个操作系统平台。Symbian OS的API均以C++类的方式提供,应用开发人员可以使用C++开发基于Symbian OS的手机上的应用程序。
56
C++语言(续) Windows CE配套的嵌入式C++环境(EVC)与桌面开发使用的Visual C++在用户界面、使用习惯上都一脉相承,并且Embedded Visual C++集成了桌面开发中常用的MFC、ATL等C++库,使很多桌面应用程序开发人员可以容易的过渡到基于Windows CE的嵌入式开发平台上来。
57
java Java语言是一种高度可移植、与平台无关的程序设计语言,它是通过虚拟机的支持实现在任何体系结构上都可以运行。
Sun 将 J2ME定义为“一种高度优化的 java 运行环境,主要针对消费类电子设备,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等。”
58
二、嵌入式开发工具 实时在线仿真器ICE(In-Circuit Emulator)
JTAG仿真器(Joint Test Action Group) Angel 调试监控软件 高级语言编译器 指令模拟器
59
实时在线仿真器ICE 实时在线仿真器是进行嵌入式开发调试的有效工具,一般由仿真器和仿真头组成,仿真头与处理器引脚一致可以安装在目标机ICE通过实际执行来分析程序是否有各种错误,排除那些仅通过人的逻辑思维很难找到的设计缺陷。ICE不仅是软件硬件排错工具,同时也可以帮助提高和优化系统指标。
60
JTAG仿真器 JTAG是联合测试组织的英文词头字母缩写,该组织成立于1985年,JTAG是由几家主要的电子制造商发起制订的PCB和集成电路测试标准。标准的JTAG接口为4线:TMS、TCK、TDI、TDO,分别是模式选择、时钟、数据输入和数据输出线。
61
Angel 调试监控软件 Angel调试监控软件也称为驻留监控软件,是一组运行在目标机上的程序,可以接收宿主机上调试器发送的命令,执行诸如设置断点、单步执行目标程序读写存储器、查看或修改寄存器等操作。
62
高级语言编辑器 C语言以其灵活易用的特点成为嵌入式工程师的首选,采用C语言编程可以大弧度提高工作效率,能够充分嵌入式处理器的潜在性能,并且便于在不通硬件平台移植程序 C++语言强大的面向对象特点更便于实现复杂程序功能,但是为了支持复杂的语法,牺牲了一部分大毛效率
63
指令模拟器 指令模拟器是工作在某种计算平台山的一个软件程序,它可以解释执行嵌入式处理器的指令,呈现出嵌入式处理器的特性,用户可以编写好嵌入式程序,然后在指令模拟器上运行、调试,完全通过后在把程序下载到真实的嵌入式设备中 指令模拟器独立于嵌入式处理器硬件工作,一般与编辑器、编译器、调试器集成在一个开发环境中
64
第四节 本课程内容简介 先导知识 C or C++语言 计算机组成与结构 ARM体系结构 Linux操作系统
65
本课程内容简介(续) 1. 嵌入式系统预备知识 ARM体系结构 Linux操作系统 Linux操作系统基础操作
Embest EduKit-III教学实验平台简介
66
本课程内容简介(续) 2. 嵌入式C语言基础知识 嵌入式C语言概述 C与C++的区别 嵌入式C程序架构 GNU C扩展
错误处理机制 嵌入式C程序架构 ARM C程序设计优化 硬件编程 C 语言编程规范
67
本课程内容简介(续) 3. 嵌入式linux程序设计基础 交叉开发环境 Linux开发工具链 编辑器vi 编译器gcc 链接器ld
调试器gdb 自动化编译配置文件 源包配置工具 版本控制工具
68
本课程内容简介(续) 4. 嵌入式uClinux程序设计 uClinux操作系统 Bootloader 嵌入式C语言进阶 文件系统
嵌入式数据库 Linux内核模块 Linux驱动程序工作原理 Linux驱动程序实例
69
本课程内容简介(续) 5. 嵌入式Linux程序设计 嵌入式Linux的库 嵌入式Linux操作系统 嵌入式Linux程序设计
基于ARM9/Linux MiniGUI的移植 SkeEye模拟器的介绍
70
本课程内容简介(续) 6. 嵌入式项目实例--电梯控制系统
Similar presentations