《第8章 处理器核心电路设计和底层软件移植优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第8章 处理器核心电路设计和底层软件移植优秀PPT.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第8章 处理器核心电路设计和底层软件移植现在学习的是第1页,共78页8.1 最小硬件系统设计 嵌入式系统的具体硬件设计会随着设计应嵌入式系统的具体硬件设计会随着设计应用系统的不同而有所差别。一般情况下,用用系统的不同而有所差别。一般情况下,用户可以根据自己的要求,选用合适的微处理户可以根据自己的要求,选用合适的微处理器类型,根据相应的接口电路,搭配不同类器类型,根据相应的接口电路,搭配不同类型的外设,构成不同用途、不同规模的应用型的外设,构成不同用途、不同规模的应用系统。下面以系统。下面以PXA255PXA255处理器为例,说明由处处理器为例,说明由处理器与理器与FlashFlash和和SDR
2、AMSDRAM等外围电路构成的最小等外围电路构成的最小硬件系统的设计原理。此最小硬件系统中的硬件系统的设计原理。此最小硬件系统中的各个器件的连接关系参见图各个器件的连接关系参见图8-18-1。此外,为。此外,为了便于开发调试,也可以增加网卡和串口部了便于开发调试,也可以增加网卡和串口部分的电路。分的电路。现在学习的是第2页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件3图图8-1 8-1 最小系统原理框图最小系统原理框图现在学习的是第3页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件4 PXA2XX PXA2XX系列处理器的存储器接口支持各种存储器芯片,
3、系列处理器的存储器接口支持各种存储器芯片,包括包括SDRAMSDRAM、F1ashF1ash、SMROMSMROM、ROMROM、SRAMSRAM及与及与SRAMSRAM类似的可类似的可变延迟变延迟I I0 0等。下面以等。下面以PXA255PXA255处理器为例,说明嵌入式系处理器为例,说明嵌入式系统中最常用的统中最常用的SDRAMSDRAM和和FlashFlash存储器与处理器的接口设计。存储器与处理器的接口设计。如图如图8-28-2所示,所示,PXA255PXA255处理器的存储器接口将其支持的存处理器的存储器接口将其支持的存储器类型分为动态存储器和静态存储器两类。其中动态存储器类型分为
4、动态存储器和静态存储器两类。其中动态存储器分为储器分为4 4个块,静态存储器分为个块,静态存储器分为6 6个块。每块都有个块。每块都有64MB64MB的的寻址空间,它的物理地址由片选信号寻址空间,它的物理地址由片选信号(chip Select)(chip Select)控制。控制。PXA255PXA255处理器的数据总线和地址总线通过缓冲区,分别和处理器的数据总线和地址总线通过缓冲区,分别和外部存储器的地址线、数据线相连。外部存储器的地址线、数据线相连。8.1.1 8.1.1 系统存储器接口系统存储器接口现在学习的是第4页,共78页图图8-2 PXA2558-2 PXA255存储器控制接口框图
5、存储器控制接口框图现在学习的是第5页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件6 MD31:0 MD31:0是是PXA255PXA255的数据总线的数据总线;nS-DCSx nS-DCSx是是PXA255PXA255的动态存储器片选信号的动态存储器片选信号;nCSx nCSx是是PXA255PXA255的静态存储器片选信号。的静态存储器片选信号。现在学习的是第6页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件7 PXA2XXPXA2XX处理器往往使用大容量的片外存储器作处理器往往使用大容量的片外存储器作为程序或数据存储器,例如采用外部为程序或数据存储
6、器,例如采用外部FlashFlash和和SDRAMSDRAM存储器。外部存储器有存储器。外部存储器有1616位宽度的,也有位宽度的,也有3232位宽度位宽度的,而的,而PXA2XXPXA2XX的总线宽度是的总线宽度是3232位的,所以对于位的,所以对于1616位位的外部存储器,必须进行的外部存储器,必须进行“位扩展位扩展”,即通过并联,即通过并联两块两块1616位的外部存储器构成一个位的外部存储器构成一个3232位的存储系统。位的存储系统。本书的开发板使用的本书的开发板使用的FlashFlash存储器和存储器和SDRAMSDRAM存储器;存储器;采用这种采用这种“位扩展位扩展”的方法,使得系统
7、数据总线工的方法,使得系统数据总线工作在作在3232位的模式下。位的模式下。下面就以异步静态存储器下面就以异步静态存储器(Flash)(Flash)和同步动态存和同步动态存储器储器(SDRAM)(SDRAM)为例,说明为例,说明PXA2XXPXA2XX系统的存储器扩展原系统的存储器扩展原理。理。现在学习的是第7页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件81 1异步静态存储器接口设计原理异步静态存储器接口设计原理 如图如图8-38-3所示,采用两片所示,采用两片IntelIntel的的E28F128J3A-150 E28F128J3A-150 FlashFlash芯片,
8、构成了芯片,构成了32 MB32 MB的的F1ashF1ash存储器。这里的存储器。这里的FlashFlash芯片是芯片是1616位的,故采用两块并联的方法为处理位的,故采用两块并联的方法为处理器提供器提供3232位的数据总线支持。位的数据总线支持。现在学习的是第8页,共78页图8-3 Flash电路原理框图现在学习的是第9页,共78页 由于处理器从由于处理器从FlashFlash读出的数据是读出的数据是3232位的,位的,所以在对其寻址时,所以在对其寻址时,地址以地址以4 4字节为单位递增字节为单位递增,并且一次性从数据总线上得到并且一次性从数据总线上得到4 4字节的数据。字节的数据。例如,
9、对例如,对Ox00000000Ox00000000进行寻址,将从数据总进行寻址,将从数据总线上获得线上获得x00000000 x000000000 x000000030 x00000003总共总共4 4字节字节的数据。因此,的数据。因此,PXA255PXA255的地址线上的的地址线上的SA-A0SA-A0和和SA-A1SA-A1不与芯片连接。不与芯片连接。对于这样的对于这样的FlashFlash外围外围电路,对电路,对FLASHFLASH的的0 x000000010 x00000001;(Ox00000002(Ox00000002、0 x00000003)0 x00000003)进行寻址,也能
10、获得对地址进行寻址,也能获得对地址0 x000000000 x00000000进行寻址相同的效果。进行寻址相同的效果。现在学习的是第10页,共78页 对于每片芯片来说,数据的输出是以对于每片芯片来说,数据的输出是以1616位位为单位,即为单位,即2 2字节。所以每片芯片地址按字对字节。所以每片芯片地址按字对齐,地址线的齐,地址线的A0A0引脚应连接到地。引脚应连接到地。处理器启动时,从处理器启动时,从Ox00000000Ox00000000地址开始执地址开始执行代码。为了从行代码。为了从FlashFlash引导系统,它必须接到引导系统,它必须接到静态存储器的块静态存储器的块0(Bank0)0(
11、Bank0),所以它使用处理器,所以它使用处理器的的nCS0nCS0作为片选信号。作为片选信号。F1ashF1ash的其他控制脚由的其他控制脚由处理器内部集成的处理器内部集成的Static MemoryStatic Memory控制器进行控制器进行控制。控制。现在学习的是第11页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件122 2S SDRAMDRAM存储器接口设计原理存储器接口设计原理 下面采用两片下面采用两片SamsungSamsung的的K4S281632CK4S281632C,构成了,构成了64MB64MB的的SDRAMSDRAM存储器。如图存储器。如图8-48
12、-4所示,由于所示,由于SDRAMSDRAM数据数据宽度为宽度为1616位,采用两片并联的方法与位,采用两片并联的方法与PXA255PXA255处理器连处理器连接,提供接,提供3232位的支持。位的支持。现在学习的是第12页,共78页图图8-4 SDRAM 8-4 SDRAM 电路原理框图电路原理框图现在学习的是第13页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件14 K4S281632C K4S281632C是是4M164M16位位4Bank4Bank的的SDRAMSDRAM存储存储器,总共有器,总共有32MB32MB的存储空间。处理器地址线的的存储空间。处理器地址线的
13、SA-SA-A22A22和和SA-A23SA-A23引脚连接到引脚连接到SDRAMSDRAM芯片的芯片的BA1:0BA1:0引脚,引脚,决定决定4 4个片内个片内BankBank的选择;处理器地址线的的选择;处理器地址线的SA-A10SA-A10SA-A21SA-A21和和SA-A24SA-A24则分别连接到则分别连接到SDRAMSDRAM的的A0A0A11A11、A12A12引脚。引脚。SDRAM SDRAM连接到处理器动态存储器的第连接到处理器动态存储器的第0 0块,故块,故选用处理器的选用处理器的nSDCS0nSDCS0作为片选信号。作为片选信号。SDRAMSDRAM的其余的其余引脚则由
14、处理器内部集成的引脚则由处理器内部集成的Dynamic MemoryDynamic Memory控制控制器进行控制。器进行控制。现在学习的是第14页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件158.1.2 8.1.2 串口电路原理串口电路原理 串行通信只有两条信号线,所以电路比较简单。串行通信只有两条信号线,所以电路比较简单。PXA255PXA255处理器有处理器有3 3个个UARTUART接口,此处选用全功能接口,此处选用全功能UART(FFUART)UART(FFUART)作为最小系统的调试串口。作为最小系统的调试串口。FFUART FFUART须使用须使用GP34
15、GP34和和GP39GP39引脚的第二功能。它的引脚的第二功能。它的连接电路很简单,只要通过一个连接电路很简单,只要通过一个RS232RS232的收发器,完的收发器,完成成TTLTTLCMOSCMOS电平到电平到RS232RS232电平的转换即可电平的转换即可(图图85)85)。现在学习的是第15页,共78页图图8-5 8-5 串口电路原理串口电路原理FF_TXD/GP39PXA255FF_RXD/GP34RS232Transceiver1 12 23 34 45 5现在学习的是第16页,共78页8.2 最小硬件系统的配置8.2.1 处理器的配置 系统上电之后,软件引导代码首先要根据硬件设系统
16、上电之后,软件引导代码首先要根据硬件设计初始化计初始化PXA255PXA255处理器。所以,对处理器的配置是否处理器。所以,对处理器的配置是否正确直接决定系统软件能否正常工作。正确直接决定系统软件能否正常工作。对对PXA255PXA255处理器的配置将使用到三个非常重要处理器的配置将使用到三个非常重要寄存器,分别是寄存器,分别是CCCRCCCR、CKENCKEN和和ICMRICMR寄存器。它们的寄存器。它们的定义和作用如表定义和作用如表4-14-1所列。所列。现在学习的是第17页,共78页表表8-1 CCCR8-1 CCCR、CKENCKEN和和ICMRICMR的定义和作用的定义和作用寄存器名
17、称寄存器名称 定定 义义 作作 用用 CCR CCR核心时钟配核心时钟配置寄存器置寄存器控制着内存、控制着内存、RunRun模式和模式和TurboTurbo模式的时钟频率模式的时钟频率 CKEN CKEN外设时钟使外设时钟使能寄存器能寄存器节电节电 ICMR ICMR中断使能寄中断使能寄存器存器屏蔽中断屏蔽中断现在学习的是第18页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件19 CCCR(Core Clock Configuration Register)CCCR(Core Clock Configuration Register)寄存器控制寄存器控制着内存、着内存、LC
18、DLCD、DMADMA控制器所使用的时钟。这些时钟都是由处理控制器所使用的时钟。这些时钟都是由处理器的器的3 3.6864MHz6864MHz钟振倍频上去的,控制倍频比例的参数有钟振倍频上去的,控制倍频比例的参数有三个,见表三个,见表4-4-2 2。1.CCCR1.CCCR寄存器寄存器表表8-8-2 2 CCCR CCCR控制倍频比例的参数控制倍频比例的参数 名名 称称 使用方法使用方法 取值空间取值空间L:L:内存内存频率因子频率因子内存时钟内存时钟频率频率=3 3.6864MHz6864MHz*L*L2727、3232、3636、4040或或4545M:M:运行模式因子运行模式因子运行模式
19、频率运行模式频率=内存时钟内存时钟频率频率*M*M1 1、2 2 或或4 4N:TurboN:Turbo模式因子模式因子TurboTurbo模式频率模式频率=运行模式频率运行模式频率*N*N1.01.0、1.5 1.5、2.02.0或或3.03.0现在学习的是第19页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件20 本书使用的开发板是本书使用的开发板是1.3V1.3V电源供电,系统时钟全电源供电,系统时钟全部由部由CPUCPU提供,最快可以达到提供,最快可以达到100MHz100MHz的内存时钟,的内存时钟,400MHz400MHz的运行时钟和的运行时钟和400MHz40
20、0MHz的的TurboTurbo模式时钟。模式时钟。L=27,M=4,N=1L=27,M=4,N=1 Reserved CCCR31:10Reserved CCCR31:10=0 =0 N=1N=1 CCCR9:7 CCCR9:7 =01 =010 0(未用未用)M=4 M=4 CCCR6:5CCCR6:5 =11 =11 L=27 L=27 CCCR4:0CCCR4:0 =00001 =00001 最终的最终的CCCRCCCR寄存器的值应当配置为寄存器的值应当配置为0 x000001610 x00000161注:注:CCCRCCCR中中N N、MM、L L的位定义对应其取值序号的位定义对应其
21、取值序号现在学习的是第20页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件21 CKEN(Clock Enable Register)CKEN(Clock Enable Register)寄存器是一个控寄存器是一个控制外部设备时钟使能的寄存器。它对嵌入式系统的电制外部设备时钟使能的寄存器。它对嵌入式系统的电量消耗有着决定性的作用;对于那些没有用到的外设,量消耗有着决定性的作用;对于那些没有用到的外设,应当关闭其时钟供应。应当关闭其时钟供应。CKEN CKEN的的O O1616位控制着位控制着1313种外设的时钟使能种外设的时钟使能(其中有其中有4 4位保留位保留)。它们的对
22、应关系如下:。它们的对应关系如下:2.CKEN2.CKEN寄存器寄存器现在学习的是第21页,共78页LCDLCD设备设备 CKEN16=1 CKEN16=1FICPFICP设备设备 CKENl5=1 CKENl5=1I I2 2C C设备设备 CKEN14=1 CKEN14=1 MMCMMC设备设备 CKEN12=1 CKEN12=1USBUSB设备设备 CKEN1l=1 CKEN1l=1NSSPNSSP设备设备 CKEN10=1 CKEN10=1I I2 2s s设备设备 CKEN8=1 CKEN8=1BTUARTBTUART、FFUIARTFFUIART、STUARTSTUART、HWUA
23、RT CKEN7:5=111HWUART CKEN7:5=111SSPSSP设备设备 CKEN4=1 CKEN4=1AC97AC97、SSPSSP设备设备 CKEN3:2=11 CKEN3:2=11其余其余=0=0 实际上,最小硬件系统只需要调试串口,故只需要为实际上,最小硬件系统只需要调试串口,故只需要为FFUARTFFUART提供时钟。提供时钟。CKENCKEN只需要被设置成只需要被设置成0 x000000400 x00000040。实际使。实际使用中应根据具体需要,开启某种外设的时钟。用中应根据具体需要,开启某种外设的时钟。现在学习的是第22页,共78页嵌入式系统课件嵌入式系统课件嵌入式
24、系统课件嵌入式系统课件23 ICMR(Interrupt Controller Mask Register)ICMR(Interrupt Controller Mask Register)寄存器是中断使能寄存器。寄存器是中断使能寄存器。1 1代表使能,代表使能,0 0代表屏蔽。代表屏蔽。一般来说,一般来说,PXA255PXA255处理器在处理器在BootloaderBootloader启动启动阶段必须屏蔽所有中断,所以阶段必须屏蔽所有中断,所以ICMRICMR寄器应当设置寄器应当设置为为0 x000000000 x00000000。3.ICMR3.ICMR寄存器寄存器现在学习的是第23页,共7
25、8页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件24 搭建嵌入式系统时,存储器的配置是最重要的,也是最搭建嵌入式系统时,存储器的配置是最重要的,也是最基础的。基础的。上电之后,上电之后,PXA255PXA255处理器就开始从物理的处理器就开始从物理的0 x000000000 x00000000读第一读第一条指令,这第一条指令就是存储在条指令,这第一条指令就是存储在FlashFlash里的。如果里的。如果FlashFlash没有配没有配置正确,置正确,CPUCPU将取不到正确的指令。将取不到正确的指令。同样,同样,BootloaderBootloader启动时一般会将自身复制到启动时
26、一般会将自身复制到SDRAMSDRAM,然后在,然后在SDRAMSDRAM里运行。因此里运行。因此,只有只有SDRAMSDRAM配置正确,配置正确,BootloaderBootloader的启动流程才能顺利执行。的启动流程才能顺利执行。Flash Flash和和SDRAMSDRAM的配置同属于存储器配置,考虑的对象和的配置同属于存储器配置,考虑的对象和涉及的寄存器比较相近。涉及的寄存器比较相近。存储器的配置涉及两个比较重要的寄存器存储器的配置涉及两个比较重要的寄存器,见表见表4-34-38.2.2 8.2.2 FlashFlashSDRAMSDRAM的配置的配置现在学习的是第24页,共78页表
27、表8-3 8-3 与存储器配置相关的寄存器与存储器配置相关的寄存器寄存器名称寄存器名称 定定 义义 作用作用MSCxMSCx异步静态存储配置寄异步静态存储配置寄存器存器向向CPUCPU传递存储传递存储器操作的参数器操作的参数MDCNFGMDCNFG同步动态随机存储器同步动态随机存储器的交互寄存器的交互寄存器向向CPUCPU传递传递SDRAMSDRAM的参数的参数现在学习的是第25页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件26 MSCx(Asynchronous Static Memory Control MSCx(Asynchronous Static Memory
28、Control Registers)Registers)寄存器是存储器控制功能中极其重要的寄存器,寄存器是存储器控制功能中极其重要的寄存器,它记录了它记录了存储器的性质、位宽和操作存储器的性质、位宽和操作的实际参数。的实际参数。MSCxMSCx一般用一般用来控制外部静态的存储器,在本书所用的开发板上,它用于控制来控制外部静态的存储器,在本书所用的开发板上,它用于控制FlashFlash和网卡。和网卡。MSCxMSCx寄存器总共有三个,它们分别是寄存器总共有三个,它们分别是MSCOMSCO、MSClMSCl和和MSC2MSC2。每个寄存器最多可以控制两个外部静态存储器块,这三个。每个寄存器最多可
29、以控制两个外部静态存储器块,这三个寄存器总共可以控制多达寄存器总共可以控制多达6 6个外部静态存储器块个外部静态存储器块nCS0:1nCS0:1、nCS2:3nCS2:3、nCS4:5nCS4:5。只有。只有MSCxMSCx寄存器配置正确,其对应的片选寄存器配置正确,其对应的片选信号才可以使能相应的静态存储器访问。信号才可以使能相应的静态存储器访问。MSCx MSCx十分重要,因为它记录了有关于存储器的几个重要十分重要,因为它记录了有关于存储器的几个重要参数,见参数,见P197P197表表8-48-4所列。所列。1 1MSCxMSCx寄存器寄存器现在学习的是第26页,共78页嵌入式系统课件嵌入
30、式系统课件嵌入式系统课件嵌入式系统课件27 Flash Flash连接到连接到nCS0nCS0,如,如P198P198图图8-68-6所示,网所示,网卡采用卡采用nCSl(nCSl(即即SASA一一(2SI#)(2SI#)片选信号。片选信号。可以使用可以使用P198P198表表8-58-5的配置清单设置的配置清单设置MCS0MCS0,以正,以正确访问确访问FlashFlash存储器和网卡的存储器和网卡的I I0 0地址空间。地址空间。现在学习的是第27页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件28 MDCNFG(SDRAM MDCNFG Register)MDCNFG
31、(SDRAM MDCNFG Register)寄存器控制寄存器控制PXA255PXA255处理器的同步动态随机存储器的操作参数,如处理器的同步动态随机存储器的操作参数,如果这些配置不正确,果这些配置不正确,SDRAMSDRAM将不能被初始化,软件启将不能被初始化,软件启动将无法完成。动将无法完成。MDCNFG MDCNFG有很多配置项,主要如有很多配置项,主要如P199P199表表8-68-6中所中所列。列。2.MDCNFG2.MDCNFG寄存器寄存器现在学习的是第28页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件29 PXA255 PXA255处理器有处理器有8484个
32、通用个通用(General-Purpose)I(General-Purpose)IO O口。每一个口。每一个GPIOGPIO引脚既可以当做普通的引脚既可以当做普通的I IO O用,用,也可以把它们配置成具有第二功能的引脚。也可以把它们配置成具有第二功能的引脚。GPIO GPIO的配置与的配置与PXA255PXA255处理器所接的外部设处理器所接的外部设备有关。例如,本书所用的开发板的串口和网备有关。例如,本书所用的开发板的串口和网卡用到一些相关的卡用到一些相关的GPIOGPIO寄存器,因此,在系统寄存器,因此,在系统启动时应对它们进行正确配置。启动时应对它们进行正确配置。GPIO GPIO的配
33、置主要由几个寄存器完成,见表的配置主要由几个寄存器完成,见表-。4.2.3 GPIO4.2.3 GPIO和串口的配置和串口的配置现在学习的是第29页,共78页表表-完成完成GPIOGPIO配置的相关寄存器配置的相关寄存器寄存器名称寄存器名称 定定 义义 配置方法配置方法GPDRGPDR方向寄存器方向寄存器只有两个引脚配置输出只有两个引脚配置输出GPLRGPLR引脚状态寄存器引脚状态寄存器只读只读,配置成配置成0 x0000 00000 x0000 0000GPCRGPCR输出输出0 00 x0000 00000 x0000 0000GPSRGPSR输出输出1 10 x0000 00000 x0
34、000 0000GRERGRER探测上升沿使得能够探测上升沿使得能够0 x0000 00000 x0000 0000GFERGFER探测下降沿使得能够探测下降沿使得能够0 x0000 00000 x0000 0000GEDRGEDR探测上升下降沿探测上升下降沿0 x0000 00000 x0000 0000GAFRGAFR第二功能寄存器第二功能寄存器使用了其中使用了其中3 3个引脚第二功能个引脚第二功能现在学习的是第30页,共78页 由P200图8-7可以看出,GPl5的引脚应当配置成nCSl,方向为输出。由P201图8-8可以看出,GP34和GP39作为FF-Rx和FF-TX连接到RS232
35、传输芯片SP3223ECY,它们应当使用FFUART功能,并且分别设置成输入和输出。具体设置如下:GPDR015=1 GPDR17 =1 GAFR1_L5:4 =01 GAFR1_L15:14 =10 其他各引脚的配置均为0。现在学习的是第31页,共78页8.3 最小硬件系统与Bootloader Bootloader是系统加电后运行的第一段是系统加电后运行的第一段软件代码,软件代码,Bootloader的最终目标就是正确的最终目标就是正确地调用内核来执行。因此,地调用内核来执行。因此,Bootloader只需只需要初始化要初始化CPU、Flash、SDRAM,让,让Linux内核得以运行即可
36、。本节介绍的内核得以运行即可。本节介绍的Bootloader的任务框架就是针对的任务框架就是针对PXA255的最小硬件系的最小硬件系统来进行初始化的。其他设备的初始化,完统来进行初始化的。其他设备的初始化,完全可以交由内核完成。全可以交由内核完成。现在学习的是第32页,共78页 在嵌入式系统中,内核映像、根文件系统映像都存储在嵌入式系统中,内核映像、根文件系统映像都存储在嵌入式系统中,内核映像、根文件系统映像都存储在嵌入式系统中,内核映像、根文件系统映像都存储在在在在ROMROMROMROM或或或或FlashFlashFlashFlash中,直接在固态存储设备中运行程序的速中,直接在固态存储设
37、备中运行程序的速中,直接在固态存储设备中运行程序的速中,直接在固态存储设备中运行程序的速度很慢。因此,度很慢。因此,度很慢。因此,度很慢。因此,BootloaderBootloaderBootloaderBootloader的工作之一就是将内核映像的工作之一就是将内核映像的工作之一就是将内核映像的工作之一就是将内核映像与根文件系统映像加载到与根文件系统映像加载到与根文件系统映像加载到与根文件系统映像加载到RAMRAMRAMRAM中,然后使之运行。中,然后使之运行。中,然后使之运行。中,然后使之运行。由于由于由于由于BootloaderBootloaderBootloaderBootloader
38、的实现依赖于的实现依赖于的实现依赖于的实现依赖于CPUCPUCPUCPU的体系结构,因此,的体系结构,因此,的体系结构,因此,的体系结构,因此,大多数大多数大多数大多数BootloaderBootloaderBootloaderBootloader的执行都可分为阶段的执行都可分为阶段的执行都可分为阶段的执行都可分为阶段1 1 1 1和阶段和阶段和阶段和阶段2 2 2 2两大部两大部两大部两大部分。依赖于分。依赖于分。依赖于分。依赖于CPUCPUCPUCPU体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初
39、始化代码等,通常都放在阶段通常都放在阶段通常都放在阶段通常都放在阶段1 1 1 1执行,而且通常都用汇编语言来实现,执行,而且通常都用汇编语言来实现,执行,而且通常都用汇编语言来实现,执行,而且通常都用汇编语言来实现,以达到短小精悍的目的。而阶段以达到短小精悍的目的。而阶段以达到短小精悍的目的。而阶段以达到短小精悍的目的。而阶段2 2 2 2的代码则通常用的代码则通常用的代码则通常用的代码则通常用C C C C语言语言语言语言来实现,这样可以实现复杂的功能,而且代码会具有更来实现,这样可以实现复杂的功能,而且代码会具有更来实现,这样可以实现复杂的功能,而且代码会具有更来实现,这样可以实现复杂的
40、功能,而且代码会具有更好的可读性和可移植性。好的可读性和可移植性。好的可读性和可移植性。好的可读性和可移植性。现在学习的是第33页,共78页 Bootloader的阶段1执行通常包括以下步骤(以执行的先后顺序):硬件设备初始化;为加载Bootloader的阶段2代码准备 RAM空间;复制Bootloader的阶段2代码到RAM空 间中;设置好堆栈;跳转到阶段2代码的C入口点。现在学习的是第34页,共78页 Bootloader的阶段2执行通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备;检测系统内存映射(Memor_y map);将内核映像和根文件系统映像从Flash 上读
41、到RAM空间中;为内核设置启动参数;启动内核。现在学习的是第35页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件36 对于对于PXAPXA系列处理器,系列处理器,U-bootU-boot的阶段的阶段1 1代码在代码在U-bootU-boot源代码源代码的的cpucpupxapxastart.Sstart.S文件里,这是一个汇编代码文件。文件里,这是一个汇编代码文件。8.3.1 U-boot8.3.1 U-boot启动阶段启动阶段1 1的处理过程的处理过程现在学习的是第36页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件37 这是这是BootloaderB
42、ootloader一开始就执行的操作,其目的是为阶段一开始就执行的操作,其目的是为阶段2 2的执的执行以及随后的内核的执行准备好一些基本的硬件环境。通常包括以下行以及随后的内核的执行准备好一些基本的硬件环境。通常包括以下步骤步骤(以执行的先后顺序以执行的先后顺序):屏蔽所有的中断。在屏蔽所有的中断。在BootloaderBootloader中通常不使用中断,因此在中通常不使用中断,因此在BootloaderBootloader的执行全过程中可以屏蔽中断。中断屏蔽可以通过写的执行全过程中可以屏蔽中断。中断屏蔽可以通过写CPUCPU的中断屏的中断屏蔽寄存器或状态寄存器蔽寄存器或状态寄存器(比如比如
43、ARMARM的的CPSRCPSR寄存器寄存器)来完成。来完成。设置设置CPUCPU的速度和时钟频率。的速度和时钟频率。RAM RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以及初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。各内存库控制寄存器等。初始化初始化LEDLED。典型地,通过。典型地,通过GPIOGPIO来驱动来驱动LEDLED,其目的是表明系统的状态是,其目的是表明系统的状态是OKOK还是还是ErrorError。如果板上没有。如果板上没有LEDLED,那么也可以通过初始化,那么也可以通过初始化UARTUART向串口打印向串口打印Bootload
44、erBootloader 的的LogoLogo字符信息来完成这一点。字符信息来完成这一点。关闭关闭CPUCPU内部指令数据内部指令数据CacheCache。1.1.基本的硬件初始化基本的硬件初始化现在学习的是第37页,共78页各个步骤具体实现代码如下:(a)配置中断。P202 (b)配置复位控制器。P202-203 (c)配置系统时钟。P203(d)配置时钟管理寄存器。P203 (e)配置RS232串口。P203 (f)CPU初始化。P203-204 (h)RAM初始化。P203-204现在学习的是第38页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件39 为了获得更快的执
45、行速度,通常把阶段为了获得更快的执行速度,通常把阶段2 2代码加载到代码加载到RAMRAM空间中来执行,因此必须为加载空间中来执行,因此必须为加载BootloaderBootloader的阶段的阶段2 2代代码准备好一段可用的码准备好一段可用的RAMRAM空间范围。空间范围。通常,阶段通常,阶段2 2代码执行需要使用堆栈,因此在考虑代码执行需要使用堆栈,因此在考虑空间大小时,除了阶段空间大小时,除了阶段2 2代码可执行映像的大小外,还代码可执行映像的大小外,还必须把堆栈空间也考虑进来。此外,空间大小最好是内必须把堆栈空间也考虑进来。此外,空间大小最好是内存页面大小存页面大小(通常是通常是4KB
46、)4KB)的倍数。的倍数。2.2.为加载阶段为加载阶段2 2代码准备代码准备RAMRAM空间空间现在学习的是第39页,共78页 一般而言,512 KB的RAM空问已经足够了。具体的地址范围可以任意安排,比如U-boot就将它的阶段2可执行映像安排到从系统RAM的顶端地址开始的512 KB空间内执 行,即RAM末尾-512KB至RAM末尾。现在学习的是第40页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件41 复制时要确定两点:复制时要确定两点:Bootloader Bootloader可执行映像在固态存储设备的存放可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶
47、段起始地址和终止地址。通常由于阶段1 1所占空间较小,所占空间较小,许多许多BootloaderBootloader程序直接将整个程序直接将整个BootloaderBootloader代码复制代码复制到内存空间。到内存空间。复制的目标地址。本书所移植的复制的目标地址。本书所移植的U-bootU-boot的复制目的复制目标地址为标地址为Oxa3f80000Oxa3f80000,用,用TEXT_BASETEXT_BASE表示。表示。U-boot U-boot用以下代码来确定这两个重要信息用以下代码来确定这两个重要信息,见见P205P205。3.3.复制阶段复制阶段2 2代码到内存中代码到内存中现在
48、学习的是第41页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件42 复制时要确定两点:复制时要确定两点:Bootloader Bootloader可执行映像在固态存储设备的存可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段放起始地址和终止地址。通常由于阶段1 1所占空间较所占空间较小,许多小,许多BootloaderBootloader程序直接将整个程序直接将整个BootloaderBootloader代代码复制到内存空间。码复制到内存空间。复制的目标地址。本书所移植的复制的目标地址。本书所移植的U-bootU-boot的复的复制目标地址为制目标地址为Oxa3
49、f80000Oxa3f80000,用,用TEXT_BASETEXT_BASE表示。表示。U-boot U-boot用以下代码来确定这两个重要信息用以下代码来确定这两个重要信息,见见P205P205。4.4.复制阶段复制阶段2 2代码到内存中代码到内存中现在学习的是第42页,共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件43 堆栈指针的设置是为了执行堆栈指针的设置是为了执行C C语言代码作好准备。语言代码作好准备。经过上述这些执行步骤后,系统的物理内存布局如经过上述这些执行步骤后,系统的物理内存布局如P206P206图图8-98-9所示。其中,所示。其中,_TEXT_BASE_
50、TEXT_BASE即即BootloaderBootloader代代码在内存空间的起始地址,码在内存空间的起始地址,_bss_start_bss_start即堆栈的起始即堆栈的起始地址。地址。堆栈指针设置代码如堆栈指针设置代码如P206P206:4.4.设置堆栈指针设置堆栈指针现在学习的是第43页,共78页Stage1Stage1为为 Stage Stage可执行映像准备可执行映像准备的的RAMRAM地址范围,大小为地址范围,大小为1MB1MB (blankblank)RamdiskRamdisk(blankblank)内核映像内核映像(blankblank)BootloaderBootload