1.1 嵌入式系统的概念
嵌入式系统:嵌入到对象体系中的专用计算机系统。嵌入性、专用性、计算机系统是其三大基本要素。
国内一般定义:以应用为中心,计算机技术为基础,软硬件可剪裁,适应应用系统对功能,成本,体积,可靠性,
功耗严格要求的专用计算机系统。
1.2 嵌入式系统的组成
嵌入式处理器、外围设备嵌入式操作系统、应用软件。
1.2.1 嵌入式处理器
ARM、MIPS、PowerPC、MC6800。
1.2.2 外围设备
存储器、接口、人机交互。
1.2.3 嵌入式操作系统
一般在大型或需要多任务时才考虑嵌入式操作系统。
1.2.4 应用软件
要求:固态存储、代码高质量高可靠性、软件的高实时性。
1.3 嵌入式处理器1.3.1 嵌入式处理器的分类
- 嵌入式微控制器MCU
- 嵌入式微处理器MPU
- 嵌入式DSP处理器EDSP
- 嵌入式片上系统SOC
1.3.2 嵌入式微处理器 1.3.3 微控制器 1.3.4 DSP处理器 1.3.5 片上系统 1.3.6 典型的嵌入式处理器 1.4 嵌入式操作系统
1.4.1 操作系统的概念和分类
基本概念名词
1、任务、进程和线程
2、多用户、多任务
3、任务的驱动方式(任务分实时和非实时,实时的系统又有事件驱动和时间驱动,事件驱动分为内部事件驱动和外部事件驱动(优先级高),时间驱动分为绝对时间驱动和相对时间驱动)
4、中断与中断优先级
5、同步与异步
6、资源与临界资源
7、容错与安全性
1.4.2 实时操作系统1.4.3 常见的嵌入式操作系统
(1)VxWorks,
VxWorks是美国WindRiver公司的产品,良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。特点是高性能实时微内核、高性能且标准的嵌入式实时操作系统内核、与POSIX兼容、自由配置能力、以及友好的用户开发环境。
(2) μC/OS-II
μC/OS-II是在μC-OS的基础上发展起来的,是美国嵌入式系统专家Jean J.Labrosse用C语言编写的一个结构小巧、抢占式的多任务实时内核。μC/OS-II能管理64个任务,并提供任务调度与管理、内存管理、任务间 同步与通信、时间管理和中断服务等功能,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。
(3)嵌入式linux(4)wince
1.5 嵌入式系统的应用 1.6 嵌入式系统的发展趋势 1.6.1 嵌入式应用软件的开发需要强大的开发工具和操作系统的支持 1.6.2 联网成为必然趋势 1.6.3 支持小型电子设备,实现小尺寸、微功耗和低成本 1.6.4 提供精巧的多媒体人机界面 第2章 嵌入式系统开发基础2.1 嵌入式系统的组成结构
硬件层、中间层、软件层、功能层
2.1.1 硬件层
嵌入式微处理器、存储器系统、通用设备接口和I/O接口(A/D、D/A、I/O等)。 嵌入式微处理器(专用的组成芯片ASIC ——> FPGA )
2.1.2 中间层2.1.3 软件层
实时多任务操作系统(RTOS),文件系统,图形用户接口(GUI),网络系统及通用模块组件。
2.1.4 功能层
应用程序
2.2 嵌入式系统的选型
硬件(嵌入式微处理器、存储器、通用设备接口和I/O接口)+软件(软件开发平台、向上提供应用程序接口(API)、向下屏蔽具体硬件特性的板级支持包(BSP))
2.2.1 嵌入式处理器
应用需求+处理器性能指标
2.2.2 嵌入式实时操作系统
应用需求+RTOS性能指标
2.2.3 仿真器和调试器
不同于PC系统,嵌入式系统的调试器是运行在主机上的应用程序,被调试程序是在基于特定平台的操作系统,中间由仿真器相连。调试器通过串口、并口、高速以太网口与PC相连,JTAG口与目标机相连。
调试方法有快速原型仿真法和实时在线调试法。
2.3 嵌入式软件开发的特点2.4 嵌入式软件的开发流程
分析阶段——设计阶段——生成代码阶段——固化阶段
2.4.1 需求分析阶段
客户需求(功能需求、操作界面需求、应用环境需求)
2.4.2 设计阶段2.4.3 生成代码阶段
代码编程(PC上,生成C/汇编源代码文件)、交叉编译和链接(生成目标机上可以运行的二进制代码格式,再将obj文件按照目标机的要求链接成合适的映像文件。在使用操作系统的情况下,先编译、链接操作系统里的内核代码,做成一个内核包,再将嵌入式应用打成另一个包,两个包用过压缩或不压缩的方式组成一个映像文件)、重定位和下载(将映像文件下载到目标机运行)、交叉调试(调试只能在运行态完成)、测试等。
2.4.4 固化阶段
调试完成后,再重新编译一遍,以产生固化到目标环境的可执行代码,再烧到目标环境的flash中。用于调试的可执行代码和固化的可执行代码有一些不同。启动代码和固化代码都要定位在目标画境的flash中。
2.4.5 嵌入式软件开发的要点2.5 嵌入式系统初始化
Q:(1)如何将影像加载到目标机系统;(2)映像加载到内存的哪里;(3)如何初始化程序的执行;(4)程序如何产生可认识的输出。
A:从宿主机到目标机系统的映像传输、嵌入式监视器和调试器、目标机系统装载器、嵌入式系统自举过程、各种初始化过程。
3.1.1 ARM介绍
ARM(Advanced RISC Machine)
3.1.2 CISC的体系结构
20%的简单指令动态执行的时间咱CPU动态执行时间的80%。
3.1.3 RISC的体系结构
1、RISC的体系结构特点:
a)指令格式和长度固定,且指令类型少;指令功能简单,寻址方式少且简单;指令译码控制器采用硬布线逻辑,这样易于流水线的实现,进而获得高性能;
b)由于RISC指令强调对称,均匀,简单,从而使得程序的优化编译效率更高;
c)大多数指令单周期完成;
d)分开的Load/Store结构的存取指令。Load/Store结构的存取指令只访问存储器,而数据处理指令只访问寄存器。
e)基于多个通用寄存器堆操作。
2、RISC组织结构特点:
硬连线的指令译码逻辑;便于流水线执行;单周期执行。
3.1.4 ARM体系结构的技术特征
Load/Store体系结构;固定的32bit指令;3地址指令格式。
3.1.5 ARM体系结构的特点
处理器特点:耗电少,成本低,功能强;16/32bit双指令集;全球众多的合作伙伴保证供应。
3.2 ARM体系结构的版本及命名方法
3.2.1 ARM体系结构的版本
http://wenku.baidu.com/view/459b9680e53a580216fcfe8d.html
1、版本1(v1)
该版本包括:
(1)、基本数据处理指令(不包括乘法)
(2)、字节、字以及半字加载/存储指令
3、分支(branch)指令,包括用于子程序调用的分支与链接(branch-and-link)指令
4、软件中断指令,用于进行操作系统调用
5、26位地址总线
2、版本2(v2)
与版本1相比,版本2增加了下列指令:
1、乘法和乘加指令(multiply & multiply-accumulate)
2、支持协处理器
3、原子性(atomic)加载/存储指令SWP和SWPB(稍后的版本称v2a)
4、FIQ中的两个以上的分组寄存器。
3、 版本3(v3)
版本3较以前的版本发生了大的变化,具体改进如下:
1、推出32位寻址能力。
2、分开的CPSR(current program status register,当前程序状态寄存器)和SPSR(saved program status register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR
3、增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常
4、增加了MRS指令和MSR指令,用于完成对CPSR和SPSR寄存器的读/写;修改了原来的从异常中返回的指令
4、版本4(v4)
版本4在版本3的基础上增加了如下内容:
1、有符号、无符号的半字和有符号字节的load和store指令
2、增加了T变种,处理器可工作于Thumb状态,在该状态下,指令集是16位压缩指令集(Thumb指令集)
3、增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器
4、另外,在版本4中还清楚地指明了哪些指令会引起未定义指令异常
5、版本4不再强制要求与以前的26位地址空间兼容。
5、 版本5(v5)
与版本4相比,版本5增加或修改了下列指令:
1、提高了T变种中ARM/Thumb指令混合使用的效率
2、增加了前导零计数(CLZ)指令
3、增加了BKPT(软件断点)指令
4、为支持协处理器设计提供了更多的可选择的指令
5、更加严格地定义了乘法指令对条件标志位的影响。
6、版本6(v6)
ARM体系版本6是2001年发布的。该版本在降低耗电的同时,还强化了图形处理性能。通过追加有效多媒体处理的SIMD(single instruction multiple datastream,单指令流,多数据流)功能,将语音及图像的处理功能提高到了原机型的4倍。
ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。除此之外,v6还支持多微处理器内核。
表2.1给出了ARM处理器核使用ARM体系结构版本的情况。
表2.1 ARM处理器核使用ARM体系结构版本的情况
3.2.2 ARM体系的变种
1. ARM体系结构的变种
通常将某些特定功能称为ARM体系的某种变种,例如:支持Thumb指令集称为T变种,到目前,ARM定义了下面一些变种。
(1)T变种
T变种是支持Thumb指令集的ARM体系。Thumb指令集是将32位ARM指令集的一个子集重新编码而形成的一个指令集。Thumb指令的长度是16位。Thumb指令集可以得到比ARM指令集密度更高的代码,这对需要严格控制产品成本的设计是非常有意义的。目前Thumb指令集有两个版本Thumb-1和Thumb-2,Thumb-1是ARM体系版本4的T变种,Thumb-2是ARM体系版本5的T变种。
(2)M变种(长乘法指令)
长乘法指令是一种生成64位相乘结果的乘法指令。M变种增加了两条用于进行长乘法操作的ARM指令:一条用于完成32位整数乘以32位整数生成64位整数的长乘法操作(32×32T64);另一条用于完成32位整数乘以32位整数,再加上64位整数生成64位整数的长乘加操作(32×32+64 T64)。M变种首先在ARM体系版本3中引入,在ARM体系版本4及其以后的版本中,M变种是系统的标准部分。对于支持长乘法指令的ARM体系版本,使用字符M来表示。
(3)E变种(增强DSP指令)
E变种增加一些附加指令用于增强处理器对一些典型的DSP算法的处理性能,主要包括:
●几条新的实现16位数据乘法和乘加操作的指令。
●实现饱和的带符号数的加减法操作的指令。所谓饱和的带符号数的加减法操作是在加减法操作溢出时,结果并不进行卷绕,而是使用最大的整数或最小的负数来表示。
●进行双字数据操作的指令,包括双字读取指令LDRD、双字写入指令STRD和协处理器的寄存器传输指令MCRR/MRRC。
●cache预取指令PLD。
E变种首先在ARM体系版本5T中使用,用字符E表示。在ARM体系版本5以前的版本中,以及在非M变种和非T变种的版本中,E变种是无效的。
(4)J变种(Java加速器Jazelle)
ARM的Jazelle技术是Java语言和先进的32位RISC芯片完美结合的产物。Jazelle技术使得Java代码的运行速度比普通的Java虚拟机提高了8倍,这是因为Jazelle技术提供了Java加速功能,大幅度地提高了机器的运行性能,而功耗反而降低了80%。Jazelle技术使得在一个单独的处理器上同时运行Java应用程序、已经建立好的操作系统和中间件以及其他应用程序成为可能。Jazelle技术的诞生使得一些必须用到协处理器和双处理器的场合可用单处理器代替,这样,既保证了机器的性能,又降低了功耗和成本。ARM体系版本4TEJ最早包含了J变种,用字符J表示J变种。
(5)SIMD变种(ARM媒体功能扩展)
ARM媒体功能扩展SIMD技术极大地提高了嵌入式应用系统的音频和视频处理器能力,它可使微处理器的音频和视频性能提高4倍。新一代的Internet应用产品、移动电话和PDA等设备终端需要提供高性能的流式媒体,包括音频和视频等。而且这些设备需要提供更加人性化的界面,包括语言输入和手写输入等。这样,就对处理器的数字信号处理能力提出了很高的要求,同时还必须保证低功耗。ARM的SIMD媒体功能扩展为这些应用系统提供了解决方案,它为包括音频和视频处理在内的应用系统提供了优化功能,其主要特点如下:
●使处理器的音频和视频处理的性能提高了2~4倍。
●可同时进行2个16位操作数或者4个8位操作数的运算。
●用户可自定义饱和运算的模式。
●可进行2个16位操作数的乘加/乘减运算及32位乘以32位的小数乘加运算。
●同时8 /16位选择操作。
http://metc.gdut.edu.cn/wulm/ReadNews.asp?NewsID=611
3.2.3 ARM/Thumb体系版本的命名方法
表示ARM/Thumb体系版本的命名格式由下面几部分组成:
●基本字符串ARMv。
●基本字符串后为ARM指令集版本号,目前是1~6的数字字符。
●ARM指令集版本号后为表示所含变种的字符。由于在ARM体系版本4以后,M变种成为系统的标准部件,所以字符M通常也不单独列出来。
●最后使用的字符x表示排除某种功能。例如,在早期的一些E变种中,未包含双字读取指令LDRD、双字写入指令STRD、协处理器的寄存器传输指令MCRR/MRRC以及cache预取指令PLD。这种E变种记作ExP,其中x表示缺少,P代表上述的几种指令。
如:ARMv5TExP 表示ARM体系结构的版本5,含T变种、M变种,未包含P。
ARM/Thumb体系版本名称及其含义是在不断发展变化的,最新变化请查阅有关ARM资料。
3.3.2 ARM的流水线结构
计算机中的1条指令的执行可以分为以下若干个阶段:
取指令(从存储器中),译码(指令~),取操作数,执行运算,存储器访问,结果回写存储器。上述各个阶段的操作是独立的,可以采取流水线的重叠技术提高系统的性能。
(1)ARM的三级流水线
取指级,译码级,执行级
(2)ARM的五级流水线
3.3.3 ARM存储器结构
为了实现其高性能,微处理器必须连接一个容量大、速度高的存储器,但一般处理器的容量和速度之间成反比。
多级处理器系统包括一个主存储器和一个从存储器,主存储器容量大但速度慢,包括ROM,RAM,闪存。从存储器容量小但速度快,元件是Cache,它经常自动保存处理器经常用到的指令和数据的副本。
3.3.4 ARM I/O结构 3.3.5 ARM协处理器接口 3.3.6 ARM AMBA接口 3.3.7 ARM JTAG调试接口 3.4 ARM处理器系列 3.4.1 ARM7系列处理器核介绍3.4.2 ARM9系列处理器核介绍
http://www.eetrend.com/blog/100023517
3.4.3 ARM10E系列处理器核介绍 3.4.4 ARM11系列处理器核介绍 3.4.5 SecurCore系列处理器核介绍 3.4.6 基于ARM的Intel微处理器介绍 3.4.7 基于ARM核的芯片选择 3.5 ARM编程模型 3.5.1 数据类型 3.5.2 处理器模式 3.5.3 处理器工作状态 3.5.4 寄存器组织 3.5.5 异常中断 3.5.6 存储器和存储器映射I/O 3.6 基于JTAG的ARM系统调试 3.6.1 ARM开发工具综述 3.6.2 Multi-ICE的JTAG调试机理 第4章 ARM指令集 第5章 基于ARM的嵌入式程序设计 第6章 基于S3C44B0X的硬件开发与应用 第7章 μC/OS-II及应用开发第8章 eCos及应用开发
另:
1.嵌入式系统定义:以应用为中心,计算机技术为基础,软硬件可剪裁,适应应用系统对功能,成本,体积,可靠性,功耗严格要求的计算机系统。
2.嵌入式系统的三个基本要素:嵌入性,专用性,计算机系统
3.嵌入式系统包括:硬件层,中间层,系统软件层,应用软件层
4.RISC精简指令系统 CISC复杂指令及系统 EOS嵌入式操作系统
5.RTOS主要分为强势系统和弱实系统两类
6.哈佛结构的主要特点事将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。
7.流水线的基本概念:讲一个重复的时序分解成若干个子过程,而每一个子过程都可以有效地在其专用功能段上与其他子过程同时执行
8.一个32位的微处理器,可以访问的虚拟地址空间为2*32,即4GB
9.小端字节顺序存储法:低字节数据存放在内存低地址处,高字节数据存放在内存高地址处
10.ARM微处理器体系结构目前被公认为是嵌入式应用领域领先的32位嵌入式RISC微处理器结构
11.ARM内含37个寄存器,包括31个通用32位寄存器和6个状态寄存器
12.ARM9系列微处理器采用5级整数流水线
13.ARM微处理器支持7种运行模式
14.寻址方式:寄存器寻址,立即寻址,寄存器移位寻址,寄存器间接寻址,变址寻址
15.寻址方式是指令中给出的地址码字段来实现寻找真实操作数地址的方式
16.DMA方式是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU
17.
S0 CPU寄存器
S1 芯片内的高速缓存
S2 芯片外的高速缓存
S3 主存储器
S4 外部存储器
S5 远程二级存储
18.存储管理单元在CPU和物理内存之间进行地址转换,将地址从逻辑空间映射到物理空间,这个转换过程一般称为内存映射
19.MMU主要完成以下工作①虚拟存储空间到物理存储空间的映射②存储器访问权限的控制③设置虚拟存储空间的缓冲的特性
20.SDRAM可读可写,不具有掉电保持数据的特性,但其存取速度大大高于FLASH存储器。在嵌入式系统中,SDRAM主要用做程序的运行空间,数据及堆栈区。当系统启动时,CPU首先从复位地址0X0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度。同时,系统及用户堆栈、运行数据也都放在SDRAM中。
21
Target Init(); 进行硬件初始化,包括对I/O口的初始化操作
For(;;){
for(i=0;i<1000000;i++); 延时
rGPDCON=rGPDCON&0xfff0ffff|0x00050000; 配置第8、第9位为输出引脚
rGPDDAT=rGPDDAT&0xeff|0x200 第8位输出为低电平
第9位输出为高电平
For(i=0;i<10000000;i++); 延时
For(i=0;i<1000000;i++); 延时
rGPDCON=rGPDCON&0xfff0ffff|0x00050000; 配置第8、第9位为输出引脚
rGPDDAT=rGPDDAT&0xdff|0x100 第8位输出为高电平
第9位输出为低电平
For(i=0;i<1000000;i++); 延时
}
22.新建 mkdir 查看ls 删除 rmdir 超级终端 minicom 编辑 vi 挂载 mount
自动编译make 加载驱动 insmod