嵌入式基本概念

来源:互联网 发布:浙江2018年专升本数据 编辑:程序博客网 时间:2024/04/28 19:20

嵌入式:是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能,可靠性,成本,体积,功耗要求严格的专用计算机系统,他通常由特定功能模块和计算机控制模块组成,主要由嵌入式微处理器,外围设备,嵌入式操作系以及应用软件等组成,具有“嵌入性”,“专用性”,“计算机系统”三个基本要素。

嵌入式的发展经过了四个发展阶段:

1.应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言进行控制

特点:系统结构和功能相对单一,处理效率低,存储容量小,几乎没有用户接口,现在已经不能适应高效的需要大容量存储的现代工业控制和新兴信息家电领域的需求

2.以嵌入式cpu为基础,以简单操作系统为核心的嵌入式系统

特点:cpu种类繁多,通用性弱,系统开销小,效率高,操作系统达到一定的兼容性和扩展性,应用软件较为专业化,用户界面不够友好

3.以嵌入式操作系统为标志的嵌入式系统

4.以INTERNET,多核技术为标志的嵌入式系统,提供internet,多种多核嵌入式系统处理器以及支持多核的软件产品陆续进入市场,嵌入式设备的全能化将代表嵌入式系统的未来。

************************************************

嵌入式系统的特点:

(1)面向特定应用的特点。嵌入式系统与普通系统的最大区别:嵌入式系统大都工作在特定用户设计的系统中,所以具有低功耗,体积小,集成度高等特点,可以满足不同应用的需求

(2)嵌入式系统的硬件和软件都必须进行高效的设计,量体裁衣,力争在同样硅片上实现更高的性能,这样才有高的竞争力

(3)嵌入式系统将先进的计算机技术,半导体技术,电子技术与各个行业的具体应用相结合的产物,这点就决定了他是一个技术密集,资金密集,高度分散,不断创新的知识集成系统,从事嵌入式开发的人才也是复合型人才

(4)为了提高速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片中或单片机中,而不是存储与磁盘中

(5)嵌入式软件代码尤其要求高质量,高可靠性

(6)嵌入式系统本身不具备二次开发能力,不能再平台上直接对程序功能进行修改,必须有一套开发工具和环境才能进行再次开发

********************************************************

嵌入式系统的体系结构:

嵌入式系统作为一类特殊的计算机系统,一般包括:硬件设备,嵌入式操作系统,应用软件,关系如下:

硬件设备包括嵌入式处理器,外围设备

嵌入式处理器已经超过1000种了,流行的有30多个系列:ARM,PowerPC,MC68000,MIPS等

外围设备指嵌入式系统中用于完成存储,通信,调试,显示等辅助功能的其他部件,可以分为存储设备(RAM,SRAM,Flash),通信设备(RS-232,SPI接口,以太网接口,USB接口

无线通信)和显示设备三种。

RS232---个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2

**************************************

常见的存储器概念辨析:

RAM,SRAM,SDRAM,ROM,EPROM,EEPROM,Flash

存储器可以分为很多种类,其中根据掉电后数据是否丢失分为RAM(随机存储器),ROM(只读存储器),其中RAM的访问速度快,但掉电后数据会丢失,ROM掉电后数据不会丢失,人们所说的内存是指系统的RAM

RAM又分为SRAM(静态存储)和DRAM(动态存储),SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的,DRAM是利用MOS(金属氧化物半导体)电容存储电荷来存储信息的,所以通过不停的给电容充电来维持信息的,所以DRAM的成本,集成度,功耗等明显优于SRAM

SDRAM:DRAM的一种,他是同步动态存储器,利用一个单一的系统时钟同步所有的地址数据和控制信号,使用SDRAM不但能提高系统表现,还能简化设计,提供高速的数据传输,在嵌入式中经常使用

EPROM,EEPROM都是ROM的一种,分别为可擦除可编程ROM,电可擦除ROM,但使用不是很方便

Flash:也是非易失性存储器(掉电不会丢失),他擦写方便,访问速度快,已大大取代传统的EPROM的地位,由于他和ROM一样掉电不会丢失数据,所以常称为Flash ROM

嵌入式系统从第三阶段开始引入,嵌入式系统不仅具有通用系统的功能如向上提供用户接口(如图形界面,库函数API),向下提供与硬件交互的接口(硬件驱动程序),管理复杂的系统资源,同时他还存在实时性,硬件依赖性,软件固化性,以及应用专用性,具有更加鲜明的特点.

由于嵌入式系统自身的特点,决定了嵌入式应用软件不仅要求做到准确性,安全性,稳定性,而且尽可能的进行代码的优化,以减少对系统资源的消耗,降低硬件成本。

***********************************************

几种主流的嵌入式操作系统:

1.嵌入式linux  2.VxWorks  3.QNX  4.Windows CE  5.Palm OS 

***********************************************

ARM:

ARM是一个很牛B的公司,其再硬件处理器的地位相当于PC中的intel,ARM处理器具有以下特点:

  • 体积小,低功耗,低成本,高性能
  • 支持ARM(32), Thumb(16), Thumb(16/32)的指令集,能很好的兼容8/16位器件
  • 大量使用寄存器,指令执行速度更快
  • 大多数数据操作都是在寄存器中完成
  • 寻址方式灵活简便,执行效率高
  • 指令长度固定
******************************************************

常见的CPU指令分为CISC,RISC两种

CISC:"复杂指令集",自PC诞生以来,32位以前的处理器都是采用CISC指令集方式,由于这种指令系统的指令不等长,所以指令的数目很多,编程和设计处理器都很麻烦,但由于CISC指令架构系统设计的软件和普遍了,包括intel,AMD到现在用的都是CISC

RISC:精简指令系统,研究人员在对CISC研究发现,只有20%的指令在系统的使用率却达到了80%,RISC就是基于这种思想出来的,采用RISC指令集的处理器处理能力强,采用超标量和超流水线,大大增强并行处理能力。

PS:

并行:几个进程真正意义上的同时处理

并发:表面是看是几个几个进程是同时处理,从微观上看其实几个进程是轮流通过时间片得轮转轮流执行

流水线:一般cpu会有一条流水线,如果多条流水线就是多条指令同时执行

*******************************************************

ARM体系结构简介:

ARM处理器只有三种,并可来回切换

  • 第一种是ARM状态:此时处理器执行32位的字对其的ARM指令
  • 第二种是Thumb状态:此时处理器执行16位的,半字对其的Thumb指令
  • 第三种为Thumb2状态,此时处理器执行16/32位的指令,多类型对其的指令

ARM体系结构的存储格式:

大端模式:在这种格式中,字数据的高字节存储在低字节中,字数据的低字节存储在高字节中

小端模式:字数据的低字节存储在低字节中,字数据的高字节存储在高字节中

ARM处理器的模式:

ARM有七种处理模式:

  • 用户模式(usr):应用程序执行状态
  • 快速中断模式(fiq):用于高速数据传输或通道处理等快速中断处理
  • 外部中断模式(irq):用于通用的中断处理
  • 管理模式(svc):特权模式,操作系统使用的保护模式
  • 数据访问终止模式(abt):当数据或指令欲取终止时进入该模式,可用于虚拟存储及存储保护
  • 系统模式(sys):运行具有特权的操作系统任务

ARM9体系结构

ARM微处理器系列主要特点如下:

**********************************************

FS2410开发板的S3C2410X是ARM9核处理器,所以下面重点介绍ARM9核处理器:

ARM处理器凭借他的低功耗,高性能广泛用于个人通信领域,ARM7处理器的性能无法满足人们日益增长的高性能,取而代之的是ARM9处理器,ARM9的速度能达到ARM7两倍以上,他的主要特点如下:

  1. 五级流水线,也就是一个时钟周期能够执行5条指令,ARM9的时钟频率是ARM7的1.8-2.2倍
  2. 采用哈佛结构:根据计算机中的存储器结构及其总线连接方式,计算机系统可以被分为冯诺依曼结构和哈佛结构,其中冯诺依曼结构共用数据存储空间和程序存储空间,他们共享存储器总线,这也是以往常用的设计模式,而哈弗结构具有分离的数据和程序存储空间和分离的数据总线,所以哈佛结构在指令执行时,取址执行时,取址和取数可以并行,所以具有更高的效率,ARM7采用冯诺依曼结构,而ARM9采用哈弗结构,下图表示了二者的区别:
冯诺依曼结构:                       

哈佛结构:

由于在RISC架构的处理器中,程序中的30%的指令是load-store指令,所以采用哈佛结构能够提升这两个指令的执行速度,所以对提高系统效率的贡献是非常明显的

3.高速缓存和写缓存的引入:

一般处理器的速度远远高于存储器的速度,所以存储器就成为速度提高的瓶颈,所以引入高速缓存(cache),写缓存(write buffer)可以很好的解决这个问题,他们存储了最近常使用的代码和数据,以供CPU快速存储

4.支持MMU

MMU是内存管理单元,就是将内存进行分页(page),一页就是具有一定大小的连续内存,通常为4096B或8192B,操作系统为每个正在运行的程序建立并维护一张被称为进程映射的表(process memory map)的表,表中记录了可以存取的所有内存页以及他们的实际位置,每当程序存取一块内存时,他会将相应的虚拟地址传给MMU,而MMU会在PMM中查找内存的实际位置也就是物理地址,如果地址是在磁盘上必须把包含的页从磁盘读到内存中,并且必须更新PMM来反映这个情况(称页错为pagefault)


通过MMU才能真正的保护内存,如果A进程试图访问进程B虚拟地址中的数据,MMU会产生一个Exception来阻止A的越界操作,这样就保护了内存,一个进程的失败不会影响其他的程序的运行,从而增加了系统的稳定性,所以ARM9比ARM7更加的稳定和可靠


FS2410他的中央处理器是三星公司的S3C2410X.S3C2410X采用的是ARM920T核,

.S3C2410X提供全面的,通用的片上外设,大大降低系统的成本,下面是S3C2410X的主要片上功能:

其中很多细节我看不懂以后再加上

******************************************

嵌入式软件开发流程:

由于嵌入式本身的特性,嵌入式软件开发和通用的系统软件开发有很大区别,嵌入式软件开发分为系统总体开发,嵌入式硬件开发,嵌入式软件开发3个部分

这里就将一下嵌入式软件开发过程:

同普通软件开发过程一样,分为需求分析,软件概要设计,软件详细设计,软件实现和软件测试,其中软件需求分析和硬件需求分析合二为一

下面是嵌入式软件不同开发过程中用到的软件:

嵌入式系统的软件开发和普通的软件开发的区别主要是软件实现部分,其中又可以分为编译和调试部分,下面对着两方面讲解:

1.交叉编译

嵌入式软件开发所使用的编译是交叉编译

交叉编译:就是在一个平台上生成一个可以在另一个平台运行的代码,编译最主要的工作就是将程序转化成cpu能够识别的机器代码,由于不同的体系结构有不同的指令系统,所以不同的cpu对应不同的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同cpu对应可执行的二进制代码,编译器也是一个程序也要在与之对应的cpu上运行

ps:与交叉编译对应的是本地编译

一般将进行交叉编译的主机称为“宿主机”,而将程序实际运行的机子称为“目标机”也就是嵌入式系统环境,由于嵌入式环境资源稀缺,所以在上面无法使用相关的编译器进行调试,嵌入式系统需要借助宿主机编译出目标机的可执行代码。

由于编译分为编译,链接等4个部分,嵌入式的交叉编译包括交叉编译,交叉链接等过程,通常ARM的交叉编译器为arm-ef-gcc,arm-linux-gcc,交叉链接器:arm-elf-ld,

arm-linux-ld等,交叉编译过程如下:

2.交叉调试

交叉调试和普通的调试有很大的区别,普通的调试调试器和被调试的程序在同一台机器上,调试器进程通过调用操作系统提供的调试接口来控制被调试的进程,但在嵌入式中调试器进程运行在主机上,被调试的进程运行在嵌入式系统中,调试器和被调试进程通过串口,网络进行通信,调试器可以控制,访问,被调试进程,读取被调试进程的当前状态,并且能够改变被调试进程的运行状态。

嵌入式的交叉调试有很多方法,主要分为软件调试和硬件调试,其特点如下:

下面就软件调试桩方式和硬件片上调试两种方式讲解一下:

(1) 软件调试主要是通过调试桩的方式来进行的,调试桩调试是通过目标操作系统和调试器内分别加入某些功能模块,二者互动信息来进行调试,该方式典型的典型调试器是gdb调试器,gdb调试器分为gdbcilent和gdbclient调试器,gdbcserver作为调试桩安装在目标板上,gdbclient就是驻于本地的gdb调试器,流程如下:

ps:这个方案的实质是软件接管目标机的全部异常和部分中断处理,并在其中插入调试端口通信模块,与主机的调试器进行交互,但他只能在目标操作系统初始化完毕,调试通信端口初始化完成之后才能起作用,所以一边只能调试操作系统以上的程序,不宜调试目标操作系统的内核代码和启动代码,而且他必须改变操作系统,因此多了一个不用于发布的调试板

(2)硬件调试:

相对于软件调试,使用硬件调试器可以获得更强大的调试功能和更优秀的调试性能,硬件调试器的基本原理是通过模拟硬件的执行过程,让开发者在调试时可以随时了解到系统的当前状态,目前最常用的硬件调试器是

这几种硬件调试完全看不懂。