第3章+嵌入式系统设计_第1页
第3章+嵌入式系统设计_第2页
第3章+嵌入式系统设计_第3页
第3章+嵌入式系统设计_第4页
第3章+嵌入式系统设计_第5页
已阅读5页,还剩276页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章章 嵌入式系统设计嵌入式系统设计主要内容v1、Bootloader详解及制作详解及制作 嵌入式系统的存储器结构嵌入式系统的存储器结构Bootloader简介简介Bootloader启动启动常用常用Bootloader介绍介绍Bootloader制作制作v2、内核剪裁与编译、内核剪裁与编译Linux内核功能结构内核功能结构Linux内核源代码布局内核源代码布局Linux内核的移植内核的移植Linux的编译和定制的编译和定制内核剪裁与编译实例内核剪裁与编译实例2主要内容v3、根文件系统的构造、根文件系统的构造根文件系统根文件系统文件系统类型文件系统类型BusyBox根文件系统目录结构根文件

2、系统目录结构根文件系统制作要点根文件系统制作要点根文件系统制作实例根文件系统制作实例制作根文件系统镜像制作根文件系统镜像v4 4、应用程序移植、应用程序移植3v存储器系统的层次结构存储器系统的层次结构计算机系统的存储器被组织成一个计算机系统的存储器被组织成一个6个层次的金字塔形的层个层次的金字塔形的层次结构。次结构。v位于整个层次结构的位于整个层次结构的最顶部最顶部S0层层为为CPU内部寄存器内部寄存器vS1层层为为芯片内部芯片内部的的高速缓存高速缓存(cache)v内存内存S2层层为为芯片外芯片外的的高速缓存高速缓存(SRAM、DRAM、DDRAM)vS3层层为为主存储器主存储器(Flash

3、、PROM、EPROM、EEPROM)vS4层层为为外部存储器外部存储器(磁盘、光盘、(磁盘、光盘、CF、SD卡)卡)vS5层层为为远程二级存储远程二级存储(分布式文件系统、(分布式文件系统、Web服务器)服务器)嵌入式系统的存储器嵌入式系统的存储器4存储器系统的层次结构图存储器系统的层次结构图嵌入式系统的存储器嵌入式系统的存储器5v在这种存储器分层结构中,在这种存储器分层结构中,上面一层的存储器上面一层的存储器作为作为下一层存储器下一层存储器的的高速高速缓存缓存。CPU寄存器寄存器就是就是cache的高速缓存的高速缓存,寄存器保存来自,寄存器保存来自cache的字;的字;cache又是又是内

4、存(内存(芯片外芯片外的的高速缓存高速缓存)层的高速缓存)层的高速缓存,从内存中提取数,从内存中提取数据送给据送给CPU进行处理,并将进行处理,并将CPU的处理结果返回到内存中;的处理结果返回到内存中;内存(内存(芯片外芯片外的的高速缓存高速缓存)又是又是主存储器的高速缓存主存储器的高速缓存,它将经常用到的,它将经常用到的数据从数据从Flash等主存储器中提取出来,放到内存中,从而加快了等主存储器中提取出来,放到内存中,从而加快了CPU的运的运行效率。行效率。嵌入式系统的存储器嵌入式系统的存储器6嵌入式系统的存储器嵌入式系统的存储器v在这种存储器分层结构中,在这种存储器分层结构中,上面一层的存

5、储器上面一层的存储器作为作为下一层存储下一层存储器器的的高速缓存高速缓存。嵌入式系统的嵌入式系统的主存储器容量主存储器容量是是有限有限的,磁盘、光盘或的,磁盘、光盘或CF、SD卡卡等外部存储器用来保存大信息量的数据。等外部存储器用来保存大信息量的数据。在某些带有分布式文件系统的嵌入式网络系统中,在某些带有分布式文件系统的嵌入式网络系统中,外部存储器外部存储器就就作为作为其他系统其他系统中中被存储数据的高速缓存被存储数据的高速缓存。7v存储器部件的分类存储器部件的分类1按按在系统中的地位在系统中的地位分类分类v在在微机系统微机系统中,存储器可分为中,存储器可分为主存储器主存储器(Main Mem

6、ory简简称内存或主存)和称内存或主存)和辅助存储器辅助存储器(Auxiliary Memory,Secondary Memory,简称辅存或外存)。,简称辅存或外存)。嵌入式系统的存储器嵌入式系统的存储器8v主存储器(简称内存或主存)主存储器(简称内存或主存) :内存是计算机主机的一个组成部分,一般都用内存是计算机主机的一个组成部分,一般都用快速存储器件快速存储器件来构来构成,内存的成,内存的存取速度很快存取速度很快,但内存空间的,但内存空间的大小大小受到地址总线位数受到地址总线位数的限制的限制。内存通常用来容纳内存通常用来容纳当前正在使用的当前正在使用的或要或要经常使用的经常使用的程序和数

7、据,程序和数据,CPU可以可以直接直接对对内存进行访问内存进行访问。系统软件系统软件中如中如引导程序、监控程序引导程序、监控程序或者或者操作系统中的基本输入操作系统中的基本输入输出部分输出部分BIOS都是都是必须常驻内存必须常驻内存。更多的更多的系统软件和全部应用软件系统软件和全部应用软件则在则在用到时由外存传送到内存用到时由外存传送到内存。9v辅助存储器(简称辅存或外存)辅助存储器(简称辅存或外存):外存也是用来存储各种信息的,外存也是用来存储各种信息的,存放的存放的是是相对相对来说来说不经常使用不经常使用的的程序和数据程序和数据,其特点其特点是是容量大容量大。外存总是和某个外部设备相关的,

8、常见的外存有软盘、硬盘、外存总是和某个外部设备相关的,常见的外存有软盘、硬盘、U盘、光盘等。盘、光盘等。CPU要使用外存的这些信息时,必须要使用外存的这些信息时,必须通过专门的设备通过专门的设备将将信息先信息先传送到内存传送到内存中。中。10v存储器部件的分类存储器部件的分类v 2按按存储介质存储介质分类分类根据存储介质的材料及器件的不同,可分为根据存储介质的材料及器件的不同,可分为磁存储器磁存储器(Magnetic Memory),),半导体存储器、光存储器半导体存储器、光存储器(Optical Memory)及)及激光光盘存储器激光光盘存储器(Laser Optical Disk)。)。1

9、1v存储器部件的分类存储器部件的分类v 3按按信息存取方式信息存取方式分类分类 存储器按存储器按存储信息的功能存储信息的功能,分为:,分为:v随机存取存储器随机存取存储器(Random Access Memory,RAM)v只读存储器只读存储器(Read Only Memory,ROM)。)。12v常见的嵌入式系统存储设备常见的嵌入式系统存储设备随机存取存储器(随机存取存储器(RAM)只读存储器(只读存储器(ROM)Flash Memory小型快速闪存卡小型快速闪存卡 (Compact Flash,CF卡)卡)安全数据卡(安全数据卡(Secure Digital Card,SD卡)卡)硬盘存储

10、器硬盘存储器13v1. 随机存取存储器(随机存取存储器(RAM):):随机存取存储器随机存取存储器是一种在是一种在机器运行期间可读、可写机器运行期间可读、可写的存储器,的存储器,且存取的速度与存储单元的位置无关的存储器,又称且存取的速度与存储单元的位置无关的存储器,又称读写存储读写存储器器。RAM通常都是在通常都是在掉电之后就丢失数据掉电之后就丢失数据,主要,主要用于存储短时间用于存储短时间使用的程序使用的程序。14v1. 随机存取存储器(随机存取存储器(RAM):):随机存储器随机存储器按信息存储的方式按信息存储的方式,可分为:,可分为:v静态静态RAM(Static RAM,SRAM)v动

11、态动态RAM(Dynamic RAM,DRAM)v双倍速率双倍速率RAM(Double Data Rate SDRAM, DDRAM )15v静态静态RAM(SRAM):):SRAM速度非常快速度非常快,是目前,是目前读写最快读写最快的存储设备了,但是它的存储设备了,但是它也也非常昂贵非常昂贵,所以只在,所以只在要求很苛刻要求很苛刻的地方使用,譬如的地方使用,譬如CPU的的一级缓冲,二级缓冲一级缓冲,二级缓冲。v动态动态RAM(DRAM):):DRAM保留数据的时间很短保留数据的时间很短,速度也比速度也比SRAM慢慢,不过它还,不过它还是比任何的是比任何的ROM都要快都要快,但从价格上来说,但

12、从价格上来说DRAM相比相比SRAM要要便宜很多便宜很多,计算机内存就是计算机内存就是DRAM的。的。16v双倍速率双倍速率RAM(DDRAM):DDRAM是是RAM的下一代产品。的下一代产品。是在是在SDRAM内存基础上发展而来的,仍然沿用内存基础上发展而来的,仍然沿用SDRAM生产生产体系,但运用了更先进的同步电路等。体系,但运用了更先进的同步电路等。DDR本质上不需要提高本质上不需要提高时钟频率时钟频率就能加倍提高就能加倍提高SDRAM的速度,的速度,它允许在时钟脉冲的上升沿和下降沿读出数据,因而其它允许在时钟脉冲的上升沿和下降沿读出数据,因而其速度速度是是标准标准SDRAM的两倍的两倍

13、 。SDRAM,Synchronous Dynamic Random Access Memory,同步动态随机存储器17v例:例:v手机软件一般放在手机软件一般放在EEPROM中,我们打电话,有些最后拨中,我们打电话,有些最后拨打的号码,暂时是存在打的号码,暂时是存在SRAM中的,不是马上写入保存在中的,不是马上写入保存在EEPROM中通话记录,因为当时有很重要工作(通话)要中通话记录,因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。做,如果写入,漫长的等待是让用户忍无可忍的。18v2. 只读存储器只读存储器(ROM):):在在机器运行期间机器运行期间只能读出信息只能

14、读出信息,不能不能随时写入信息随时写入信息的存储器称的存储器称为为只读存储器只读存储器。ROM在系统在系统停止供电的停止供电的时候时候仍然可以保持数据。仍然可以保持数据。ROM在在烧入数据后烧入数据后,无需外加电源来保存数据,无需外加电源来保存数据,断电后断电后数数据不丢失据不丢失,但,但速度较慢速度较慢,适合存储适合存储需长期保留的不变数据需长期保留的不变数据。19v常见的常见的只读存储器只读存储器(ROMROM)有:)有:掩模掩模ROM( Mask ROM )可编程可编程ROM(Programmable ROM,PROM)可擦写可擦写ROM(Erasable Programmable RO

15、M,EPROM)电可擦除可编程电可擦除可编程ROM ( EEPROM ,也可表示为,也可表示为E2PROM)Flash ROM(闪速存储器)(闪速存储器)20vMask ROM一次性由厂家写入数据的一次性由厂家写入数据的ROM,用户无法修改。,用户无法修改。vPROM出厂时厂家并没有写入数据,而是保留里面的内容为全出厂时厂家并没有写入数据,而是保留里面的内容为全0或全或全1,由用户来编程,由用户来编程一次性写入数据一次性写入数据。即。即 PROM是是一次性一次性的,的,也就是也就是软件灌入后软件灌入后,就,就无法修改无法修改了,了, vEPROM可以通过可以通过紫外光的照射紫外光的照射,擦掉原

16、先的程序,芯片,擦掉原先的程序,芯片可重复可重复擦除和写入擦除和写入。21vE2PROM是通过是通过加电擦除加电擦除原编程数据,通过原编程数据,通过高压脉冲高压脉冲可以可以写写入数据入数据,写入时间较长。,写入时间较长。vFlash ROM断电不会丢失数据,可快速读取,断电不会丢失数据,可快速读取,电可擦写可编电可擦写可编程程。22v3. Flash Memory (闪速存储器)(闪速存储器)是一种是一种非易失性存储器非易失性存储器NVM(Non-Volatile Memory),它结),它结合了合了ROM和和RAM的长处,不仅具备的长处,不仅具备电子可擦除可编程电子可擦除可编程(EEPROM

17、)的性能,还)的性能,还不会断电丢失数据不会断电丢失数据,同时可以,同时可以快速快速读取数据读取数据 (NVRAM的优势)。的优势)。U盘和盘和MP3里用的就是这种存储器。里用的就是这种存储器。23vFlash Memory (闪速存储器)(闪速存储器)在过去的在过去的20年里,嵌入式系统一直使用年里,嵌入式系统一直使用ROM(EPROM)作为)作为它们的存储设备,然而近年来它们的存储设备,然而近年来 Flash全面代替了全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储)在嵌入式系统中的地位,用作存储Bootloader以以及操作系统或者程序代码或者直接当硬盘使用(及操作系统或者程

18、序代码或者直接当硬盘使用(U盘)。盘)。 目前目前Flash主要有主要有两种两种NOR Flash和和NADN Flash。24vFlash Memory (闪速存储器)(闪速存储器)Flash Memory在物理结构上分成若干个在物理结构上分成若干个区块区块,区块之间相互,区块之间相互独立。独立。NOR Flash把整个存储区分成若干个扇区(把整个存储区分成若干个扇区(Sector),),而而NAND Flash把整个存储区分成若干个块(把整个存储区分成若干个块(Block),可以),可以对以块或扇区为单位的内存单元进行擦写和再编程。对以块或扇区为单位的内存单元进行擦写和再编程。25vNOR

19、 FlashNOR的的特点特点是是芯片内执行芯片内执行,这样,这样应用程序应用程序可以可以直接直接在在flash闪闪存存内内运行运行,不必不必再把代码读到系统再把代码读到系统RAM中。中。NOR的的传输效率很高传输效率很高,在,在14MB的的小容量小容量时具有时具有很高的成本很高的成本效益效益,但是,但是很低的写入和擦除速度很低的写入和擦除速度大大影响了它的性能。大大影响了它的性能。26vNAND Flash没有采取内存的随机读取技术,它的没有采取内存的随机读取技术,它的读取读取是以是以一次读取一块一次读取一块的形的形式来进行的,通常是一次读取式来进行的,通常是一次读取512个字节。个字节。N

20、AND结构能提供极高的单元密度,可以达到结构能提供极高的单元密度,可以达到高存储密度高存储密度,并且,并且写入和擦除的速度写入和擦除的速度也也很快很快,采用这种技术的,采用这种技术的Flash比较廉价比较廉价。用户用户不能直接运行不能直接运行NAND Flash上的代码上的代码,应用,应用NAND的的困难困难在在于于flash的管理的管理和和需要特殊的系统接口需要特殊的系统接口。一般一般小容量小容量的用的用NOR Flash,因为其,因为其读取速度快读取速度快,多用来存储操,多用来存储操作系统等重要信息,而作系统等重要信息,而大容量的大容量的用用NAND FLASH。27NOR Flash 和

21、和NAND Flash的对比:的对比:v(1)、读写性能对比)、读写性能对比 flash闪存闪存是非易失存储器是非易失存储器,可以对称为,可以对称为块的存储器单元块块的存储器单元块进进行行擦写和再编程擦写和再编程。任何任何flash器件的器件的写入操作写入操作只能在只能在空或已擦除的单元内空或已擦除的单元内进行,进行,所以大多数情况下,在进行所以大多数情况下,在进行写入操作之前写入操作之前必须必须先执行擦除先执行擦除。NAND器件执行器件执行擦除操作擦除操作是十分是十分简单简单的,而的,而NOR则要求在进行则要求在进行擦除前擦除前先要将先要将目标块内所有的位都写为目标块内所有的位都写为0。28

22、vNOR Flash 和和NAND Flash的对比:的对比:v(1)、读写性能对比)、读写性能对比 NOR Flash擦除时是以擦除时是以64128KB为单位的块进行的,执为单位的块进行的,执行一个写入擦除操作的时间为行一个写入擦除操作的时间为5s,NAND Flash擦除是以擦除是以832KB的块进行的,执行相同的的块进行的,执行相同的操作最多只需要操作最多只需要4ms。NAND Flash的的写入速度比写入速度比NOR Flash快很多快很多。NOR Flash的的读速度比读速度比NAND Flash稍快一些稍快一些,NAND Flash的的随机读取能力差随机读取能力差,适合,适合大量数

23、据大量数据的的连续读取连续读取。29v除了除了NOR Flash的读,的读,Flash Memory的其他操作的其他操作不能像不能像RAM那样,直接对目标地址进行总线操作那样,直接对目标地址进行总线操作。v例如执行一次写操作,它必须输入一串特殊的指令(例如执行一次写操作,它必须输入一串特殊的指令(NOR Flash ),或者完成一段时序(),或者完成一段时序(NAND Flash)才能将数据)才能将数据写入到写入到Flash Memory中。中。30vNOR Flash 和和NAND Flash的对比:的对比:v(2)、接口对比)、接口对比 NOR Flash带有带有SRAM接口,有接口,有足

24、够的地址引脚足够的地址引脚来来寻址寻址,可以很,可以很容容易地存取其内部的每一个字节易地存取其内部的每一个字节。NAND Flash地址、数据和命令共用地址、数据和命令共用8位位/16位总线,每次读写都要使位总线,每次读写都要使用用复杂的复杂的I/O接口接口串行地串行地存取数据,存取数据,8位位/16位总线用来传送控制、地位总线用来传送控制、地址和数据信息。址和数据信息。NAND读和写操作采用读和写操作采用512字节的块,这一点有点像硬盘管理此类操字节的块,这一点有点像硬盘管理此类操作,很自然地,基于作,很自然地,基于NAND的存储器就可以的存储器就可以取代取代硬盘或其他块设备硬盘或其他块设备

25、。31vNOR Flash 和和NAND Flash的对比:的对比:v(3)、容量和成本对比)、容量和成本对比 NAND flash的的单元尺寸单元尺寸几乎是几乎是NOR器件的器件的一半一半,由于生产过程,由于生产过程更为简单,更为简单,NAND结构可以在结构可以在给定的模具尺寸内给定的模具尺寸内提供提供更高的容量更高的容量,也就相应地也就相应地降低了价格降低了价格。NOR flash占据了容量为占据了容量为116MB闪存市场的大部分,闪存市场的大部分, 而而NAND Flash用在用在8MB以上的产品当中。以上的产品当中。在价格方面,在价格方面,NorFlash相比相比NandFlash来说

26、来说较高较高。32vNOR Flash 和和NAND Flash的对比:的对比:v(4)、可靠性性对比)、可靠性性对比所有所有Flash Memory器件器件存在存在位交换现象位交换现象。Flash Memory在在读写数据过程中,读写数据过程中,偶然会产生一位或几位数据错误偶然会产生一位或几位数据错误,即,即位反位反转转(一个(一个bit位发生翻转位发生翻转 )。位反转无法避免,只能通过其他)。位反转无法避免,只能通过其他手段对产生的结果进行事后处理。手段对产生的结果进行事后处理。位反转位反转的问题的问题多见于多见于NAND Flash,NAND的出现几率要比的出现几率要比Nor Flash

27、大得多大得多 。NAND Flash的供货商建议使用的供货商建议使用NAND Flash的时候,同时使的时候,同时使用用EDC/ECC(错误探测错误纠正)(错误探测错误纠正)算法,以确保可靠性。算法,以确保可靠性。 33v如目前市场上一片如目前市场上一片4Mbyte的的AM29lv320 NorFlash零售价在零售价在20元左右,元左右,v而一片而一片128MByte的的k9f1g08 NandFlash零售价在零售价在30元左右。元左右。 34vNOR Flash 和和NAND Flash的对比:的对比:v(4)、可靠性性对比)、可靠性性对比Flash Memory在在使用使用过程中,可能

28、导致过程中,可能导致某些区块的损坏某些区块的损坏。区块一旦损坏,将区块一旦损坏,将无法进行修复无法进行修复。NAND Flash中的中的坏块坏块是是随机分布随机分布的,尤其是的,尤其是NAND Flash在在出厂时就出厂时就可能存在可能存在这样的坏块(已经被标识出)。这样的坏块(已经被标识出)。NAND Flash需要需要对介质进行初始化扫描对介质进行初始化扫描以发现坏块,并将以发现坏块,并将坏块坏块标记为不可用标记为不可用。如果对已损坏的区块进行操作,可能会。如果对已损坏的区块进行操作,可能会带来不可预测的错误。带来不可预测的错误。35vNOR Flash 和和NAND Flash的对比:的

29、对比:v(5)、应用方面对比)、应用方面对比NOR Flash主要应用在主要应用在代码存储介质代码存储介质中,中,应用程序应用程序可以可以直接直接在在NOR Flash内内运行运行,不需要不需要再把再把代码读到系统代码读到系统RAM中中运行。运行。NAND Flash适用于适用于资料存储资料存储。NAND Flash结构可以达到结构可以达到高高存储密度存储密度,并且,并且写入和擦除的速度写入和擦除的速度也也很快很快。NAND Flash读和写操作采用读和写操作采用512B的块的块,类似硬盘管理操作。,类似硬盘管理操作。因此,基于因此,基于NAND的闪存的闪存可以取代可以取代硬盘或其他块设备硬盘

30、或其他块设备。36vNOR Flash 和和NAND Flash的对比:的对比:v(5)、应用方面对比)、应用方面对比在在NOR Flash上上运行代码运行代码不需要任何的软件支持不需要任何的软件支持。在在NAND Flash上进行同样操作时,通常上进行同样操作时,通常需要驱动程序需要驱动程序,也就,也就是是内存技术驱动程序内存技术驱动程序(MTD )。)。NAND Flash和和NOR Flash在进行在进行写入和擦除操作写入和擦除操作时都时都需要需要MTD。37vNOR Flash 和和NAND Flash的对比:的对比:v(6 6)、寿命对比)、寿命对比 在在NAND Flash中中每个

31、块每个块的的最大擦写次数最大擦写次数是是一百万次一百万次,而,而NOR Flash的的擦写次数是擦写次数是十万次十万次。NAND Flash除了具有除了具有10:1的块擦除周期优势,典型的的块擦除周期优势,典型的NAND Flash块块尺寸要比尺寸要比NOR型闪存小型闪存小8倍,每个倍,每个NAND Flash的内存块在给定的时间的内存块在给定的时间内删除次数要少一些。内删除次数要少一些。38v4小型快速闪存卡小型快速闪存卡 (Compact Flash,CF卡)卡)CF卡由美国卡由美国SanDisc公司开发的一种公司开发的一种1英寸半见方的小型快速闪英寸半见方的小型快速闪存卡,存卡, 它是它

32、是利用利用Flash技术的存储卡技术的存储卡。主要供主要供数字相机和数字相机和MP3播放机播放机以及以及个人数字助理(个人数字助理(PDA)装用。)装用。有各种不同有各种不同的存贮容量(的存贮容量(MB),其内部结构如下图所示。),其内部结构如下图所示。图 CF卡内部结构39v4小型快速闪存卡小型快速闪存卡 (Compact Flash,CF卡)卡)CF卡接口具有卡接口具有PCMCIA-ATA功能,可以工作在功能,可以工作在IDE接口模式,也接口模式,也可以工作在可以工作在PC Card模式。模式。衍生出来的衍生出来的CF+卡物理规格和卡物理规格和CF完全相同,在手持设备上应用,完全相同,在手

33、持设备上应用,如如CF串口卡、串口卡、CF Modem. CF蓝牙、蓝牙、CF USB卡、卡、CF网卡、网卡、CF GPS卡、卡、CF GPRS卡等。卡等。按照按照CF+卡标准,它不一定要支持卡标准,它不一定要支持ATA接口。接口。通常建议通常建议CF+卡工作在卡工作在PCMCIA模式。模式。CF卡可以看作是卡可以看作是PCMCIA卡的一个子集,可以通过物理上的转换器,直接转换成卡的一个子集,可以通过物理上的转换器,直接转换成PCMCIA卡使用。卡使用。CF卡可分为卡可分为I型和型和II型型两类,二者的规格和特性基本相同,只两类,二者的规格和特性基本相同,只是是II型比型比I型略厚一些(型略厚

34、一些(5.0mm,3.3mm),),II型插座可以同时型插座可以同时兼容兼容I型卡。型卡。40v5安全数据卡(安全数据卡(Secure Digital Card,SD卡)卡)由日本由日本Panasonic公司、公司、TOSHIBA公司和美国公司和美国SanDisk公司公司共同开共同开发研制的发研制的SD卡是一种卡是一种全新的存储卡产品全新的存储卡产品,在,在MP3、数码摄像机、数、数码摄像机、数码相机、电子图书及码相机、电子图书及AV器材器材等中应用。等中应用。SD存储卡采用一个存储卡采用一个完全开放的标准完全开放的标准(系统),(系统),外形外形与与MultiMedia卡卡保持一致保持一致,

35、比,比MMC卡卡略厚略厚,具有,具有更大的容量更大的容量,兼容兼容MMC卡接口规范卡接口规范。SD卡具有卡具有加密功能加密功能,可以保证数据资料的安全保密。,可以保证数据资料的安全保密。SD卡具有卡具有版权保护技术版权保护技术,所采用的版权保护技术是,所采用的版权保护技术是DVD中使用的中使用的CPRM技术(可刻录介质内容保护)。技术(可刻录介质内容保护)。41v6硬盘存储器硬盘存储器硬盘存储器具有存储容量大,使用寿命长,存取速度较快硬盘存储器具有存储容量大,使用寿命长,存取速度较快的特点,也是在嵌入式系统中常用的外存。的特点,也是在嵌入式系统中常用的外存。42v6硬盘存储器硬盘存储器硬盘存储

36、器的硬盘存储器的硬件硬件包括包括硬盘控制器(适配器)硬盘控制器(适配器)、硬盘驱动器硬盘驱动器以以及及连接电缆连接电缆。v硬盘控制器硬盘控制器(Hard Disk Controller,简称,简称HDC)对)对硬盘进行硬盘进行管理管理,并在主机和硬盘之间传送数据。硬盘控制器以,并在主机和硬盘之间传送数据。硬盘控制器以适配卡适配卡的形式的形式插在插在主板上或直接集成在主板上主板上或直接集成在主板上,然后通过,然后通过电缆与硬电缆与硬盘驱动器相连盘驱动器相连。v硬盘驱动器(硬盘驱动器(Hard Disk Drive,简称,简称HDD)中有盘片、磁头、)中有盘片、磁头、主轴电机(盘片旋转驱动机构)、

37、磁头定位机构、读写电主轴电机(盘片旋转驱动机构)、磁头定位机构、读写电路和控制逻辑等。路和控制逻辑等。43v硬盘存储器可分为硬盘存储器可分为温彻斯特盘温彻斯特盘和和非温彻斯特盘非温彻斯特盘两类。两类。温彻斯特盘温彻斯特盘是根据是根据温彻斯特技术温彻斯特技术设计制造的,它的设计制造的,它的磁头、盘片、磁磁头、盘片、磁头定位机构、主轴、甚至连读写驱动电路头定位机构、主轴、甚至连读写驱动电路等都被等都被密封密封在一个在一个盘盒盘盒内内,构成,构成一个头一盘组合体一个头一盘组合体。温彻斯特盘的。温彻斯特盘的防尘性能好,可靠性高,防尘性能好,可靠性高,对使用环境要求不高。对使用环境要求不高。非温彻斯特盘

38、非温彻斯特盘磁盘的磁头和盘片等磁盘的磁头和盘片等不是密封不是密封的,通常只能用于的,通常只能用于中型、中型、大型计算机机房大型计算机机房中。中。v最常见的最常见的硬盘接口硬盘接口是是IDE(ATA)和)和SCSI两种,一些两种,一些移动硬盘移动硬盘采采用用PCMCIA或或USB接口接口。44vIDE( Integrated Drive Electronics,电子集成驱动器,电子集成驱动器 )接口也称)接口也称为为ATA接口接口,是一个通用的硬盘接口。,是一个通用的硬盘接口。vSCSI(Small Computer System Interface,小型计算机系统接口),小型计算机系统接口)不

39、是专为硬盘设计的,是一种不是专为硬盘设计的,是一种总线型接口总线型接口。vSCSI独立于独立于系统总线工作,其系统总线工作,其系统占用率极低系统占用率极低,但其,但其价格昂贵价格昂贵,具,具有这种接口的硬盘有这种接口的硬盘大多用于服务器等高端应用大多用于服务器等高端应用场合。场合。45Bootloader简介v一个嵌入式一个嵌入式 Linux 系统系统从软件的角度从软件的角度看通常可以分为看通常可以分为四个层次四个层次: 1. 引导加载程序引导加载程序。包括。包括固化固化在固件中的在固件中的 boot 代码代码(可选可选),和,和 Boot Loader两大部分。两大部分。 2. Linux

40、内核内核。特定于嵌入式板子的定制内核以及内核的启动。特定于嵌入式板子的定制内核以及内核的启动参数。参数。 3 .文件系统文件系统。包括根文件系统和建立于。包括根文件系统和建立于 Flash 内存设备之上内存设备之上文件系统。文件系统。4. 用户应用程序用户应用程序 46Bootloader简介v引入:引入:对于计算机系统来说,从对于计算机系统来说,从开机上电到操作系统启动开机上电到操作系统启动需要一个需要一个引引导过程导过程。嵌入式嵌入式Linux系统同样离不开引导程序,这个引导程序就叫做系统同样离不开引导程序,这个引导程序就叫做BootLoader。47Bootloader简介v对比:对比:

41、vPC 机中的引导加载程序由机中的引导加载程序由 BIOS(其本质就是一段其本质就是一段固件程序固件程序)和位和位于硬盘中的于硬盘中的 OS Boot Loader一起组成。一起组成。BIOS 在在完成硬件检测和资源分配完成硬件检测和资源分配后,将硬盘中的后,将硬盘中的 Boot Loader 读到系统的读到系统的 RAM 中,然后将中,然后将控制权交给控制权交给 OS Boot Loader。Boot Loader 的的主要运行任务主要运行任务就是将就是将内核映象从硬盘上读到内核映象从硬盘上读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作中,然后跳转到内核的入口点去运行,也即

42、开始启动操作系统。系统。 48Bootloader简介v而在嵌入式系统中,通常而在嵌入式系统中,通常并没有像并没有像BIOSBIOS那样的固件程序那样的固件程序。v因此因此整个系统整个系统的的加载启动任务加载启动任务就完全就完全由由BootLoaderBootLoader来完成来完成49Bootloader简介vBootloader的概念和功能的概念和功能Boot Loader是在操作系统内核运行之前运行的是在操作系统内核运行之前运行的一段小程序一段小程序。它的它的作用作用是是初始化硬件设备、建立内存空间的映射图,从而将初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的

43、状态,以便为最终调用操作系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。系统内核准备好正确的环境。 50Bootloader简介vBootlaoder的不统一性的不统一性/不通用性不通用性通常通常BootLoader 是是依赖于硬件依赖于硬件而实现的,特别是在嵌入式而实现的,特别是在嵌入式领域,为嵌入式系统建立一个领域,为嵌入式系统建立一个通用通用的的BootLoader是是很困难很困难的。当然,我们可以归纳出一些通用的概念来,以便我们了的。当然,我们可以归纳出一些通用的概念来,以便我们了解特定解特定BootLoader的设计与实现。的设计与实现。当前在嵌入式当

44、前在嵌入式Linux系统中,有了一些流行和通用的系统中,有了一些流行和通用的Bootloader框架。框架。现实开发中,我们都是采用现有的现实开发中,我们都是采用现有的BootLoader进行修改。进行修改。51Bootloader启动启动v嵌入式嵌入式Linux系统中系统中系统加电或复位后系统加电或复位后,所有,所有CPU都会从都会从某个某个地址地址开始执行开始执行,具体的地址值具体的地址值是由是由处理器设计决定处理器设计决定的。的。比如,比如,X86复位向量在复位向量在高端地址高端地址开始,开始,ARM的的 CPU 在复位时在复位时通常都从地址通常都从地址 0 x00000000 取它的第

45、一条指令。取它的第一条指令。基于基于ARM处理器构建的嵌入式系统通常都有某种类型的固态处理器构建的嵌入式系统通常都有某种类型的固态存储设备存储设备(比如:比如:ROM、EEPROM 或或 FLASH 等等)被映射到这被映射到这个预先安排的地址上。所以个预先安排的地址上。所以bootloader通常是通常是放在放在flash中中的的最前面的位置最前面的位置,CPU将首先执行将首先执行Bootloader程序。程序。52Bootloader启动启动v用户可以利用用户可以利用串口串口和和Bootloader进行交互进行交互 比如:输出打印信息到串口,从串口读取用户控制字符比如:输出打印信息到串口,从

46、串口读取用户控制字符等。等。 53Bootloader启动启动vBootloader多数是多数是两阶段的启动过程两阶段的启动过程,既能,既能提供复杂的功能提供复杂的功能又有又有很好的可移植性很好的可移植性第一个第一个启动阶段启动阶段是是和硬件平台相关和硬件平台相关的,大都采用的,大都采用汇编汇编程序编写程序编写第二个第二个启动阶段启动阶段是是和硬件平台无关和硬件平台无关的,大都采用的,大都采用C语言语言编写。编写。54vstage 1 的步骤的步骤(汇编汇编)硬件设备初始化。硬件设备初始化。为加载为加载 Boot Loader 的的 stage2 准备准备 RAM 空间。空间。拷贝拷贝 Boo

47、t Loader 的的 stage2 到到 RAM 空间中。空间中。 设置好堆栈。设置好堆栈。跳转到跳转到 stage2 的的 C入口点。入口点。 Bootloader启动55vstage 2的步骤的步骤(c语言语言)初始化本阶段要使用到的硬件设备。初始化本阶段要使用到的硬件设备。检测系统内存映射检测系统内存映射(memory map)。将将 kernel 映像和根文件系统映像从映像和根文件系统映像从 flash 上读到上读到 RAM 空间中。空间中。 为内核设置启动参数。为内核设置启动参数。调用内核。调用内核。 Bootloader启动56Bootloader启动启动vbootloader

48、在执行第一个部分的时候,也就是在执行第一个部分的时候,也就是stage1的时候,会的时候,会把把bootloader stage2这部分这部分copy到到ram中去运行。中去运行。vstage2的时候,会将的时候,会将kernel也也copy到内存中。到内存中。v在在结束的阶段结束的阶段,让,让执行地址跳转到执行地址跳转到操作系统的入口地址操作系统的入口地址,操作系,操作系统也就启动来了。统也就启动来了。57Bootloader启动启动v大多数大多数Bootloader都包含都包含两种不同的操作模式两种不同的操作模式:启动加载启动加载模式模式下载模式下载模式58Bootloader启动启动v启

49、动加载(启动加载(Boot loading)模式)模式也称为也称为“自主自主”(autonomous)模式)模式:Boot Loader 从目标机上的从目标机上的某个固态存储设备某个固态存储设备上将上将操作系统操作系统加加载到载到 RAM 中运行中运行,整个过程,整个过程并没有用户的介入并没有用户的介入。这种模式是这种模式是 Boot Loader 的的正常工作模式正常工作模式,因此在嵌入式产,因此在嵌入式产品发布的时侯,品发布的时侯,Boot Loader 显然必须工作在这种模式下。显然必须工作在这种模式下。 59Bootloader启动启动v下载(下载(Downloading)模式)模式:

50、在这种模式下,目标机上的在这种模式下,目标机上的 Boot Loader 将通过将通过串口连接串口连接或或网络网络连接连接等通信手段等通信手段从主机(从主机(Host)下载文件)下载文件,比如:,比如:下载内核映像下载内核映像和根文件系统映像等和根文件系统映像等。从主机下载的文件通常首先被从主机下载的文件通常首先被Bootloader保存到目标机的保存到目标机的RAM中,中,然后再被然后再被Bootloader写到目标机上的写到目标机上的FLASH类固态存储设备中。类固态存储设备中。 Boot Loader 的这种模式通常的这种模式通常在第一次安装内核与根文件系统时在第一次安装内核与根文件系统

51、时被使用被使用;此外,以后的;此外,以后的系统更新系统更新也会使用也会使用 Boot Loader 的这种工的这种工作模式。作模式。60Boot Loader 的的 stage1代码分析代码分析v1)基本的硬件初始化)基本的硬件初始化 这是这是 Boot Loader 一开始就执行的操作,其目的是为一开始就执行的操作,其目的是为 stage2 的执行以及随后的的执行以及随后的 kernel 的执行的执行准备好一些基本的硬件环境准备好一些基本的硬件环境。它通常包括以下步骤(以执行的先后顺序):它通常包括以下步骤(以执行的先后顺序):v 61Boot Loader 的的 stage1代码分析代码分

52、析v1)基本的硬件初始化)基本的硬件初始化 (1)屏蔽所有的中断)屏蔽所有的中断。为中断提供服务通常是。为中断提供服务通常是 OS 设备驱动设备驱动程序的责任,因此在程序的责任,因此在 Boot Loader 的执行全过程中可以不必响的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写应任何中断。中断屏蔽可以通过写 CPU 的中断屏蔽寄存器或状的中断屏蔽寄存器或状态寄存器(比如态寄存器(比如 ARM 的的 CPSR 寄存器)来完成。寄存器)来完成。 (2)设置)设置 CPU 的速度和时钟频率。的速度和时钟频率。 62Boot Loader 的的 stage1代码分析代码分析v1)基本的硬件初

53、始化)基本的硬件初始化(3)RAM 初始化。初始化。正确设置内存控制器的控制寄存器,使正确设置内存控制器的控制寄存器,使CPU能够正常访问内存。能够正常访问内存。(4)初始化)初始化 LED。典型地,通过典型地,通过 GPIO 来驱动来驱动 LED,其目的,其目的是表明系统的状态是是表明系统的状态是 OK 还是还是 Error。如果板子上没有。如果板子上没有 LED,那,那么也可以通过初始化么也可以通过初始化 UART 向串口打印向串口打印 Boot Loader 的的 Logo 字符信息来完成这一点。字符信息来完成这一点。 (5)关闭)关闭 CPU 内部指令数据内部指令数据 cache。 6

54、3Boot Loader 的的 stage1代码分析代码分析v2)为加载)为加载 stage2 准备准备 RAM 空间空间 为了获得更快的执行速度,通常把为了获得更快的执行速度,通常把 stage2 加载到加载到 RAM 空间中空间中来执行,因此必须为加载来执行,因此必须为加载 Boot Loader 的的 stage2 准备好一段可准备好一段可用的用的 RAM 空间范围。空间范围。由于由于 stage2 通常是通常是 C 语言执行代码,因此在考虑空间大小时,语言执行代码,因此在考虑空间大小时,除了除了 stage2 可执行映象的大小可执行映象的大小外,还必须把外,还必须把堆栈空间堆栈空间也考

55、虑进也考虑进来。此外,空间大小最好是来。此外,空间大小最好是 memory page 大小大小(通常是通常是 4KB)的的倍数倍数。一般而言,。一般而言,1M 的的 RAM 空间已经足够了空间已经足够了。具体的地址范。具体的地址范围可以任意安排,推荐将围可以任意安排,推荐将 stage2 安排到整个安排到整个 RAM 空间的最顶空间的最顶 1MB。 必须确保所安排的地址范围的确是可读写的必须确保所安排的地址范围的确是可读写的RAM空间。空间。64Boot Loader 的的 stage1代码分析代码分析vRAM 空间范围的大小记为:空间范围的大小记为:stage2_size(字节字节),把起始

56、地,把起始地址和终止地址分别记为:址和终止地址分别记为:stage2_start 和和 stage2_end (这这两个地址均以两个地址均以 4 字节边界对齐字节边界对齐)。因此:。因此: stage2_endstage2_startstage2_size 65Boot Loader 的的 stage1代码分析代码分析v3)拷贝)拷贝 stage2 到到 RAM 中中 拷贝时要确定两点:拷贝时要确定两点:(1) stage2 的可执行映象在固态存储设备的存放起始地址和终止的可执行映象在固态存储设备的存放起始地址和终止地址;地址;(2) RAM 空间的起始地址。空间的起始地址。66Boot Lo

57、ader 的的 stage1代码分析代码分析v4)设置堆栈指针)设置堆栈指针 sp 堆栈指针的设置是为了执行堆栈指针的设置是为了执行 C 语言代码作好准备。语言代码作好准备。通常把通常把 sp 的值设置为的值设置为stage2_end-4。 此外,在设置堆栈指针此外,在设置堆栈指针 sp 之前,也可以关闭之前,也可以关闭 led 灯,以提示用灯,以提示用户我们准备跳转到户我们准备跳转到 stage2。 67Boot Loader 的的 stage1代码分析代码分析v 5)跳转到)跳转到 stage2 的的 C 入口点入口点 在上述一切都就绪后,就可以跳转到在上述一切都就绪后,就可以跳转到 Bo

58、ot Loader 的的 stage2 去去执行了。比如,在执行了。比如,在 ARM 系统中,这可以通过修改系统中,这可以通过修改 PC 寄存器为寄存器为合适的地址来实现。合适的地址来实现。 68Boot Loader 的的 stage1代码分析代码分析vbootloader 的的 stage2 可执行映可执行映象刚被拷贝到象刚被拷贝到 RAM 空间时的系空间时的系统内存布局统内存布局 v 69Boot Loader 的的 stage2代码分析代码分析v1)初始化本阶段要使用到的硬件设备)初始化本阶段要使用到的硬件设备 这通常包括:(这通常包括:(1)初始化至少一个串口,以便和终端用户进行)初

59、始化至少一个串口,以便和终端用户进行 I/O 输出信息;(输出信息;(2)初始化计时器等。)初始化计时器等。 在初始化这些设备之前,也可以重新把在初始化这些设备之前,也可以重新把 LED 灯点亮,以表明我灯点亮,以表明我们已经进入们已经进入 main() 函数执行。函数执行。 设备初始化完成后,可以输出一些打印信息,程序名字字符串、设备初始化完成后,可以输出一些打印信息,程序名字字符串、版本号等。版本号等。 70Boot Loader 的的 stage2代码分析代码分析v2)检测系统的内存映射()检测系统的内存映射(memory map) 32位位CPU空间大小:空间大小:所谓所谓内存映射内存

60、映射就是就是指在整个指在整个 4GB 物理地址空间中有哪些地址范围物理地址空间中有哪些地址范围被分配用来寻址系统的被分配用来寻址系统的 RAM 单元。单元。比如,在比如,在 Samsung S3C44B0X CPU 中,从中,从 0 x0c00,0000 到到 0 x1000,0000 之间的之间的 64M 地址空间被用作系统的地址空间被用作系统的 RAM 地址空间。地址空间。G42222210101023271Boot Loader 的的 stage2代码分析代码分析v2)检测系统的内存映射()检测系统的内存映射(memory map) 虽然虽然 CPU 通常通常预留出一大段足够的地址空间给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论