第8章 处理器核心电路设计和底层软件移植.ppt

上传人:s****8 文档编号:68702267 上传时间:2022-12-29 格式:PPT 页数:78 大小:488KB
返回 下载 相关 举报
第8章 处理器核心电路设计和底层软件移植.ppt_第1页
第1页 / 共78页
第8章 处理器核心电路设计和底层软件移植.ppt_第2页
第2页 / 共78页
点击查看更多>>
资源描述

《第8章 处理器核心电路设计和底层软件移植.ppt》由会员分享,可在线阅读,更多相关《第8章 处理器核心电路设计和底层软件移植.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、嵌入式系统嵌入式系统课件课件1第八章 处理器核心电路设计和 底层软件移植本章要点本章要点 处理器与处理器与Flash、SDRAM等构成的最小硬件等构成的最小硬件 系统电路系统电路 Uboot移植移植 利用利用Uboot调试硬件调试硬件 移植移植Linux26内核内核嵌入式系统嵌入式系统课件课件28.1 最小硬件系统设计 嵌入式系统的具体硬件设计会随着设计嵌入式系统的具体硬件设计会随着设计应用系统的不同而有所差别。一般情况下,应用系统的不同而有所差别。一般情况下,用户可以根据自己的要求,选用合适的微处用户可以根据自己的要求,选用合适的微处理器类型,根据相应的接口电路,搭配不同理器类型,根据相应的

2、接口电路,搭配不同类型的外设,构成不同用途、不同规模的应类型的外设,构成不同用途、不同规模的应用系统。下面以用系统。下面以PXA255PXA255处理器为例,说明由处理器为例,说明由处理器与处理器与FlashFlash和和SDRAMSDRAM等外围电路构成的最等外围电路构成的最小硬件系统的设计原理。此最小硬件系统中小硬件系统的设计原理。此最小硬件系统中的各个器件的连接关系参见图的各个器件的连接关系参见图8-18-1。此外,。此外,为了便于开发调试,也可以增加网卡和串口为了便于开发调试,也可以增加网卡和串口部分的电路。部分的电路。图图8-1 8-1 最小系统原理框图最小系统原理框图3嵌入式系统嵌

3、入式系统课件课件 PXA2XXPXA2XX系列处理器的存储器接口支持各种存储器芯系列处理器的存储器接口支持各种存储器芯片,包括片,包括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嵌入

5、式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件5图图8-2 PXA2558-2 PXA255存储器控制接口框图存储器控制接口框图 MD31:0MD31:0是是PXA255PXA255的数据总线的数据总线;nS-DCSxnS-DCSx 是是PXA255PXA255的动态存储器片选信号的动态存储器片选信号;nCSxnCSx 是是PXA255PXA255的静态存储器片选信号。的静态存储器片选信号。6嵌入式系统嵌入式系统课件课件 PXA2XXPXA2XX处理器往往使用大容量的片外存储器处理器往往使用大容量的片外存储器作为程序或数据存储器,例如采用外部作为程序或数据存储器,例如采用外部FlashF

6、lash和和SDRAMSDRAM存储器。外部存储器有存储器。外部存储器有1616位宽度的,也有位宽度的,也有3232位宽度的,而位宽度的,而PXA2XXPXA2XX的总线宽度是的总线宽度是3232位的,所位的,所以对于以对于1616位的外部存储器,必须进行位的外部存储器,必须进行“位扩展位扩展”,即通过并联两块,即通过并联两块1616位的外部存储器构成一个位的外部存储器构成一个3232位的存储系统。本书的开发板使用的位的存储系统。本书的开发板使用的FlashFlash存储存储器和器和SDRAMSDRAM存储器;采用这种存储器;采用这种“位扩展位扩展”的方法,的方法,使得系统数据总线工作在使得系

7、统数据总线工作在3232位的模式下。位的模式下。下面就以异步静态存储器下面就以异步静态存储器(Flash)(Flash)和同步动和同步动态存储器态存储器(SDRAM)(SDRAM)为例,说明为例,说明PXA2XXPXA2XX系统的存储系统的存储器扩展原理。器扩展原理。7嵌入式系统嵌入式系统课件课件1 1异步静态存储器接口设计原理异步静态存储器接口设计原理 如如图图8-38-3所示,采用两片所示,采用两片IntelIntel的的E28F128J3A-E28F128J3A-150 Flash150 Flash芯片,构成了芯片,构成了32 MB32 MB的的F1ashF1ash存储器。这存储器。这里

8、的里的FlashFlash芯片是芯片是1616位的,故采用两块并联的方法位的,故采用两块并联的方法为处理器提供为处理器提供3232位的数据总线支持。位的数据总线支持。8嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件9图8-3 Flash电路原理框图嵌入式系统嵌入式系统课件课件10 由于处理器从由于处理器从FlashFlash读出的数据是读出的数据是3232位的,位的,所以在对其寻址时,所以在对其寻址时,地址以地址以4 4字节为单位递增字节为单位递增,并且一次性从数据总线上得到并且一次性从数据总线上得到4 4字节的数据。字节的数据。例如,对例如,对Ox00000000Ox0000000

9、0进行寻址,将从数据总进行寻址,将从数据总线上获得线上获得x00000000 x000000000 x000000030 x00000003总共总共4 4字节字节的数据。因此,的数据。因此,PXA255PXA255的地址线上的的地址线上的SA-A0SA-A0和和SA-A1SA-A1不与芯片连接。不与芯片连接。对于这样的对于这样的FlashFlash外围外围电路,对电路,对FLASHFLASH的的0 x000000010 x00000001;(Ox00000002(Ox00000002、0 x00000003)0 x00000003)进行寻址,也能获得对地址进行寻址,也能获得对地址0 x0000

10、00000 x00000000进行寻址相同的效果。进行寻址相同的效果。嵌入式系统嵌入式系统课件课件11 对于每片芯片来说,数据的输出是以对于每片芯片来说,数据的输出是以1616位位为单位,即为单位,即2 2字节。所以每片芯片地址按字对字节。所以每片芯片地址按字对齐,地址线的齐,地址线的A0A0引脚应连接到地。引脚应连接到地。处理器启动时,从处理器启动时,从Ox00000000Ox00000000地址开始执地址开始执行代码。为了从行代码。为了从FlashFlash引导系统,它必须接到引导系统,它必须接到静态存储器的块静态存储器的块0(Bank0)0(Bank0),所以它使用处理器,所以它使用处理

11、器的的nCS0nCS0作为片选信号。作为片选信号。F1ashF1ash的其他控制脚由的其他控制脚由处理器内部集成的处理器内部集成的Static MemoryStatic Memory控制器进行控制器进行控制。控制。2 2S SDRAMDRAM存储器接口设计原理存储器接口设计原理 下面采用两片下面采用两片SamsungSamsung的的K4S281632CK4S281632C,构成了,构成了64MB64MB的的SDRAMSDRAM存储器。如存储器。如图图8-48-4所示,由于所示,由于SDRAMSDRAM数数据宽度为据宽度为1616位,采用两片并联的方法与位,采用两片并联的方法与PXA255PX

12、A255处处理器连接,提供理器连接,提供3232位的位的支持。支持。12嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件13图图8-4 SDRAM 8-4 SDRAM 电路原理框图电路原理框图 K4S281632CK4S281632C是是4M4M1616位位4Bank4Bank的的SDRAMSDRAM存储存储器,总共有器,总共有32MB32MB的存储空间。处理器地址线的的存储空间。处理器地址线的SA-A22SA-A22和和SA-A23SA-A23引脚连接到引脚连接到SDRAMSDRAM芯片的芯片的BA1:0BA1:0引脚,决定引脚,决定4 4个片内个片内BankBank的选择;处理器地

13、址线的选择;处理器地址线的的SA-A10SA-A10SA-A21SA-A21和和SA-A24SA-A24则分别连接到则分别连接到SDRAMSDRAM的的A0A0A11A11、A12A12引脚。引脚。SDRAMSDRAM连接到处理器动态存储器的第连接到处理器动态存储器的第0 0块,故块,故选用处理器的选用处理器的nSDCS0nSDCS0作为片选信号。作为片选信号。SDRAMSDRAM的其的其余引脚则由处理器内部集成的余引脚则由处理器内部集成的Dynamic MemoryDynamic Memory控控制器进行控制。制器进行控制。14嵌入式系统嵌入式系统课件课件8.1.2 8.1.2 串口电路原理

14、串口电路原理 串行通信只有两条信号线,所以电路比较简串行通信只有两条信号线,所以电路比较简单。单。PXA255PXA255处理器有处理器有3 3个个UARTUART接口,此处选用全功接口,此处选用全功能能UART(FFUART)UART(FFUART)作为最小系统的调试串口。作为最小系统的调试串口。FFUARTFFUART须使用须使用GP34GP34和和GP39GP39引脚的第二功能。引脚的第二功能。它的连接电路很简单,只要通过一个它的连接电路很简单,只要通过一个RS232RS232的收发的收发器,完成器,完成TTLTTLCMOSCMOS电平到电平到RS232RS232电平的转换即可电平的转换

15、即可(图图8 85)5)。15嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件16图图8-5 8-5 串口电路原理串口电路原理FF_TXD/GP39PXA255FF_RXD/GP34RS232Transceiver1 12 23 34 45 5嵌入式系统嵌入式系统课件课件178.2 最小硬件系统的配置8.2.1 处理器的配置 系统上电之后,软件引导代码首先要根据系统上电之后,软件引导代码首先要根据硬件设计初始化硬件设计初始化PXA255PXA255处理器。所以,对处理处理器。所以,对处理器的配置是否正确直接决定系统软件能否正常器的配置是否正确直接决定系统软件能否正常工作。工作。对对PX

16、A255PXA255处理器的配置将使用到三个非常处理器的配置将使用到三个非常重要寄存器,分别是重要寄存器,分别是CCCRCCCR、CKENCKEN和和ICMRICMR寄存器。寄存器。它们的定义和作用如表它们的定义和作用如表4-14-1所列。所列。嵌入式系统嵌入式系统课件课件18表表8-1 CCCR8-1 CCCR、CKENCKEN和和ICMRICMR的定义和作用的定义和作用寄存器名称寄存器名称 定定 义义 作作 用用 CCR CCR核心时钟配核心时钟配置寄存器置寄存器控制着内存、控制着内存、RunRun模式和模式和TurboTurbo模式的时钟频率模式的时钟频率 CKEN CKEN外设时钟使外

17、设时钟使能寄存器能寄存器节电节电 ICMR ICMR中断使能寄中断使能寄存器存器屏蔽中断屏蔽中断 CCCR(CoreCCCR(Core Clock Configuration Register)Clock Configuration Register)寄存寄存器控制着内存、器控制着内存、LCDLCD、DMADMA控制器所使用的时钟。这些时控制器所使用的时钟。这些时钟都是由处理器的钟都是由处理器的3 3.6864MHz6864MHz钟振倍频上去的,控制倍钟振倍频上去的,控制倍频比例的参数有三个,见表频比例的参数有三个,见表4-4-2 2。1.CCCR1.CCCR寄存器寄存器表表8-8-2 2 C

18、CCR CCCR控制倍频比例的参数控制倍频比例的参数 名 称 使用方法 取值空间L:内存频率因子内存时钟频率=3.6864MHz*L27、32、36、40或45M:运行模式因子运行模式频率=内存时钟频率*M1、2 或4N:Turbo模式因子Turbo模式频率=运行模式频率*N1.0、1.5、2.0或3.019嵌入式系统嵌入式系统课件课件 本书使用的开发板是本书使用的开发板是1.3V1.3V电源供电,系统时电源供电,系统时钟全部由钟全部由CPUCPU提供,最快可以达到提供,最快可以达到100MHz100MHz的内存的内存时钟,时钟,400MHz400MHz的运行时钟和的运行时钟和400MHz40

19、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的位定义对应其取值序号的位定义对应其取值

20、序号20嵌入式系统嵌入式系统课件课件 CKEN(ClockCKEN(Clock Enable Register)Enable Register)寄存器是一寄存器是一个控制外部设备时钟使能的寄存器。它对嵌入式个控制外部设备时钟使能的寄存器。它对嵌入式系统的电量消耗有着决定性的作用系统的电量消耗有着决定性的作用;对于那些没;对于那些没有用到的外设,应当关闭其时钟供应。有用到的外设,应当关闭其时钟供应。CKENCKEN的的O O1616位控制着位控制着1313种外设的时钟使能种外设的时钟使能(其中有其中有4 4位保留位保留)。它们的对应关系如下:。它们的对应关系如下:2.CKEN2.CKEN寄存器寄

21、存器21嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件22LCDLCD设备设备 CKEN16=1 CKEN16=1FICPFICP设备设备 CKENl5=1 CKENl5=1I I2C C设备设备 CKEN14=1 CKEN14=1 MMCMMC设备设备 CKEN12=1 CKEN12=1USBUSB设备设备 CKEN1l=1 CKEN1l=1NSSPNSSP设备设备 CKEN10=1 CKEN10=1I I2s s设备设备 CKEN8=1 CKEN8=1BTUARTBTUART、FFUIARTFFUIART、STUARTSTUART、HWUART CKEN7:5=111HWUART

22、 CKEN7:5=111SSPSSP设备设备 CKEN4=1 CKEN4=1AC97AC97、SSPSSP设备设备 CKEN3:2=11 CKEN3:2=11其余其余=0=0 实际上,最小硬件系统只需要调试串口,故只需实际上,最小硬件系统只需要调试串口,故只需要为要为FFUARTFFUART提供时钟。提供时钟。CKENCKEN只需要被设置成只需要被设置成0 x000000400 x00000040。实际使用中应根据具体需要,开启某种。实际使用中应根据具体需要,开启某种外设的时钟。外设的时钟。ICMR(InterruptICMR(Interrupt Controller Mask Control

23、ler Mask Register)Register)寄存器是中断使能寄存器。寄存器是中断使能寄存器。1 1代表使能代表使能,0 0代表屏蔽。代表屏蔽。一般来说,一般来说,PXA255PXA255处理器在处理器在BootloaderBootloader启动启动阶段必须屏蔽所有中断,所以阶段必须屏蔽所有中断,所以ICMRICMR寄器应当设置寄器应当设置为为0 x000000000 x00000000。3.ICMR3.ICMR寄存器寄存器23嵌入式系统嵌入式系统课件课件 搭建嵌入式系统时,存储器的配置是最重要的,也搭建嵌入式系统时,存储器的配置是最重要的,也是最基础的是最基础的。上电之后,上电之后

24、,PXA255PXA255处理器就开始从物理的处理器就开始从物理的0 x000000000 x00000000读第一条指令,这第一条指令读第一条指令,这第一条指令就就是存储在是存储在FlashFlash里的。如果里的。如果FlashFlash没有配置正确,没有配置正确,CPUCPU将取不到正将取不到正确的指令确的指令。同样,同样,BootloaderBootloader启动时一般会将自身复制到启动时一般会将自身复制到SDRAMSDRAM,然后在,然后在SDRAMSDRAM里运行。因里运行。因此此,只有只有SDRAMSDRAM配置正配置正确,确,BootloaderBootloader的启动流程

25、才能顺利执行的启动流程才能顺利执行。FlashFlash和和SDRAMSDRAM的配置同属于存储器配置,考虑的对的配置同属于存储器配置,考虑的对象和象和涉及的涉及的寄存器比较相近寄存器比较相近。存储器的配置涉及两个比较重要的存储器的配置涉及两个比较重要的寄存器寄存器,见表见表4-34-38.2.2 8.2.2 FlashFlashSDRAMSDRAM的配置的配置24嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件25表表8-3 8-3 与存储器配置相关的寄存器与存储器配置相关的寄存器寄存器名称寄存器名称 定定 义义 作用作用MSCxMSCx异步静态存储配置异步静态存储配置寄存器寄存器向

26、向CPUCPU传递存储传递存储器操作的参数器操作的参数MDCNFGMDCNFG同步动态随机存储同步动态随机存储器的交互寄存器器的交互寄存器向向CPUCPU传递传递SDRAMSDRAM的参数的参数 MSCx(AsynchronousMSCx(Asynchronous Static Memory Control Static Memory Control Registers)Registers)寄存器是存储器控制功能中极其重要的寄存寄存器是存储器控制功能中极其重要的寄存器,它记录了器,它记录了存储器的性质、位宽和操作存储器的性质、位宽和操作的实际参数。的实际参数。MSCxMSCx一般用来控制外部静

27、态的存储器,在本书所用的开一般用来控制外部静态的存储器,在本书所用的开发板上,它用于控制发板上,它用于控制FlashFlash和网卡。和网卡。MSCxMSCx寄存器总共有三寄存器总共有三个,它们分别是个,它们分别是MSCOMSCO、MSClMSCl和和MSC2MSC2。每个寄存器最多可。每个寄存器最多可以控制两个外部静态存储器块,这三个寄存器总共可以以控制两个外部静态存储器块,这三个寄存器总共可以控制多达控制多达6 6个外部静态存储器块个外部静态存储器块nCS0:1nCS0:1、nCS2:3nCS2:3、nCS4:5nCS4:5。只有。只有MSCxMSCx寄存器配置正确,其对应的片选信寄存器配

28、置正确,其对应的片选信号才可以使能相应的静态存储器访问。号才可以使能相应的静态存储器访问。MSCxMSCx十分重要,因为它记录了有关于存储器的几个十分重要,因为它记录了有关于存储器的几个重要参数,见重要参数,见P197P197表表8-48-4所列。所列。1 1MSCxMSCx寄存器寄存器26嵌入式系统嵌入式系统课件课件 FlashFlash连接到连接到nCS0nCS0,如,如P198P198图图8-68-6所示,所示,网卡采用网卡采用nCSlnCSl(即即SASA一一(2SI#)(2SI#)片选信号。片选信号。可以使用可以使用P198P198表表8-58-5的配置清单设置的配置清单设置MCS0

29、MCS0,以正确访问,以正确访问FlashFlash存储器和网卡的存储器和网卡的I I0 0地址地址空间。空间。27嵌入式系统嵌入式系统课件课件 MDCNFG(SDRAM MDCNFG Register)MDCNFG(SDRAM MDCNFG Register)寄存器控寄存器控制制PXA255PXA255处理器的同步动态随机存储器的操作参处理器的同步动态随机存储器的操作参数,如果这些配置不正确,数,如果这些配置不正确,SDRAMSDRAM将不能被初始将不能被初始化,软件启动将无法完成。化,软件启动将无法完成。MDCNFGMDCNFG有很多配置项,主要如有很多配置项,主要如P199P199表表8

30、-68-6中中所列。所列。2.MDCNFG2.MDCNFG寄存器寄存器28嵌入式系统嵌入式系统课件课件 PXA255PXA255处理器有处理器有8484个通用个通用(General-(General-Purpose)IPurpose)IO O口。每一个口。每一个GPIOGPIO引脚既可以当引脚既可以当做普通的做普通的I IO O用,也可以把它们配置成具有用,也可以把它们配置成具有第二功能的引脚。第二功能的引脚。GPIOGPIO的配置与的配置与PXA255PXA255处理器所接的外部处理器所接的外部设备有关。例如,本书所用的开发板的串口设备有关。例如,本书所用的开发板的串口和网卡用到一些相关的和

31、网卡用到一些相关的GPIOGPIO寄存器,因此,寄存器,因此,在系统启动时应对它们进行正确配置。在系统启动时应对它们进行正确配置。GPIOGPIO的配置主要由几个寄存器完成,见的配置主要由几个寄存器完成,见表表-。4.2.3 4.2.3 GPIOGPIO和串口的配置和串口的配置29嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件30表表-完成完成GPIOGPIO配置的相关寄存器配置的相关寄存器寄存器名称寄存器名称 定定 义义 配置方法配置方法GPDRGPDR方向寄存器方向寄存器只有两个引脚配置输出只有两个引脚配置输出GPLRGPLR引脚状态寄存器引脚状态寄存器只读只读,配置成配置成0

32、x0000 00000 x0000 0000GPCRGPCR输出输出0 00 x0000 00000 x0000 0000GPSRGPSR输出输出1 10 x0000 00000 x0000 0000GRERGRER探测上升沿使得能够探测上升沿使得能够0 x0000 00000 x0000 0000GFERGFER探测下降沿使得能够探测下降沿使得能够0 x0000 00000 x0000 0000GEDRGEDR探测上升下降沿探测上升下降沿0 x0000 00000 x0000 0000GAFRGAFR第二功能寄存器第二功能寄存器使用了其中使用了其中3 3个引脚第二功能个引脚第二功能嵌入式系统

33、嵌入式系统课件课件31 由P200图8-7可以看出,GPl5的引脚应当配置成nCSl,方向为输出。由P201图8-8可以看出,GP34和GP39作为FF-Rx和FF-TX连接到RS232传输芯片SP3223ECY,它们应当使用FFUART功能,并且分别设置成输入和输出。具体设置如下:GPDR015=1 GPDR17 =1 GAFR1_L5:4 =01 GAFR1_L15:14 =10 其他各引脚的配置均为0。嵌入式系统嵌入式系统课件课件328.3 最小硬件系统与Bootloader Bootloader是系统加电后运行的第一段是系统加电后运行的第一段软件代码,软件代码,Bootloader的最

34、终目标就是正确的最终目标就是正确地调用内核来执行。因此,地调用内核来执行。因此,Bootloader只需只需要初始化要初始化CPU、Flash、SDRAM,让,让Linux内核得以运行即可。本节介绍的内核得以运行即可。本节介绍的Bootloader的任务框架就是针对的任务框架就是针对PXA255的最小硬件系的最小硬件系统来进行初始化的。其他设备的初始化,完统来进行初始化的。其他设备的初始化,完全可以交由内核完成。全可以交由内核完成。嵌入式系统嵌入式系统课件课件33 在嵌入式系统中,内核映像、根文件系统映在嵌入式系统中,内核映像、根文件系统映在嵌入式系统中,内核映像、根文件系统映在嵌入式系统中,

35、内核映像、根文件系统映像都存储在像都存储在像都存储在像都存储在ROMROMROMROM或或或或FlashFlashFlashFlash中,直接在固态存储设备中,直接在固态存储设备中,直接在固态存储设备中,直接在固态存储设备中运行程序的速度很慢。因此,中运行程序的速度很慢。因此,中运行程序的速度很慢。因此,中运行程序的速度很慢。因此,BootloaderBootloaderBootloaderBootloader的工的工的工的工作之一就是将内核映像与根文件系统映像加载到作之一就是将内核映像与根文件系统映像加载到作之一就是将内核映像与根文件系统映像加载到作之一就是将内核映像与根文件系统映像加载到R

36、AMRAMRAMRAM中,然后使之运行。中,然后使之运行。中,然后使之运行。中,然后使之运行。由于由于由于由于BootloaderBootloaderBootloaderBootloader的实现依赖于的实现依赖于的实现依赖于的实现依赖于CPUCPUCPUCPU的体系结的体系结的体系结的体系结构,因此,大多数构,因此,大多数构,因此,大多数构,因此,大多数BootloaderBootloaderBootloaderBootloader的执行都可分为阶的执行都可分为阶的执行都可分为阶的执行都可分为阶段段段段1 1 1 1和阶段和阶段和阶段和阶段2 2 2 2两大部分。依赖于两大部分。依赖于两大部

37、分。依赖于两大部分。依赖于CPUCPUCPUCPU体系结构的代体系结构的代体系结构的代体系结构的代码,比如设备初始化代码等,通常都放在阶段码,比如设备初始化代码等,通常都放在阶段码,比如设备初始化代码等,通常都放在阶段码,比如设备初始化代码等,通常都放在阶段1 1 1 1执行,而且通常都用汇编语言来实现,以达到短执行,而且通常都用汇编语言来实现,以达到短执行,而且通常都用汇编语言来实现,以达到短执行,而且通常都用汇编语言来实现,以达到短小精悍的目的。而阶段小精悍的目的。而阶段小精悍的目的。而阶段小精悍的目的。而阶段2 2 2 2的代码则通常用的代码则通常用的代码则通常用的代码则通常用C C C

38、 C语言来语言来语言来语言来实现,这样可以实现复杂的功能,而且代码会具实现,这样可以实现复杂的功能,而且代码会具实现,这样可以实现复杂的功能,而且代码会具实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。有更好的可读性和可移植性。有更好的可读性和可移植性。有更好的可读性和可移植性。嵌入式系统嵌入式系统课件课件34 Bootloader的阶段1执行通常包括以下步骤(以执行的先后顺序):硬件设备初始化;为加载Bootloader的阶段2代码准备 RAM空间;复制Bootloader的阶段2代码到RAM空 间中;设置好堆栈;跳转到阶段2代码的C入口点。嵌入式系统嵌入式系统课件课件3

39、5 Bootloader的阶段2执行通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备;检测系统内存映射(Memor_y map);将内核映像和根文件系统映像从Flash 上读到RAM空间中;为内核设置启动参数;启动内核。对对于于PXAPXA系列处理器,系列处理器,U-bootU-boot的阶段的阶段1 1代码在代码在U-bootU-boot源源代码的代码的cpucpupxapxastart.Sstart.S文件里,这是一个汇编代码文文件里,这是一个汇编代码文件。件。8.3.1 8.3.1 U U-b boooot t启动阶段启动阶段1 1的处理过程的处理过程36嵌入式系统嵌

40、入式系统课件课件 这是这是BootloaderBootloader一开始就执行的操作,其目的是为阶段一开始就执行的操作,其目的是为阶段2 2的的执行以及随后的内核的执行准备好一些基本的硬件环境。通常包括执行以及随后的内核的执行准备好一些基本的硬件环境。通常包括以下步骤以下步骤(以执行的先后顺序以执行的先后顺序):屏蔽所有的中断。在屏蔽所有的中断。在BootloaderBootloader中通常不使用中断,因此在中通常不使用中断,因此在BootloaderBootloader的执行全过程中可以屏蔽中断。中断屏蔽可以通过写的执行全过程中可以屏蔽中断。中断屏蔽可以通过写CPUCPU的中断屏蔽寄存器或

41、状态寄存器的中断屏蔽寄存器或状态寄存器(比如比如ARMARM的的CPSRCPSR寄存器寄存器)来完成来完成。设置设置CPUCPU的速度和时钟频率。的速度和时钟频率。RAMRAM初始化。包括正确地设置系统的内存控制器的功能寄存初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。器以及各内存库控制寄存器等。初始化初始化LEDLED。典型地,通过。典型地,通过GPIOGPIO来驱动来驱动LEDLED,其目的是表明系,其目的是表明系统的状态是统的状态是OKOK还是还是ErrorError。如果板上没有。如果板上没有LEDLED,那么也可以通过初始,那么也可以通过初始化化UART

42、UART向串口打印向串口打印BootloaderBootloader 的的LogoLogo字符信息来完成这一点字符信息来完成这一点。关闭关闭CPUCPU内部指令数据内部指令数据CacheCache。1.1.基本的硬件初始化基本的硬件初始化37嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件38各个步骤具体实现代码如下:(a)配置中断。P202 (b)配置复位控制器。P202-203 (c)配置系统时钟。P203(d)配置时钟管理寄存器。P203 (e)配置RS232串口。P203 (f)CPU初始化。P203-204 (h)RAM初始化。P203-204 为了获得更快的执行速度为了获得

43、更快的执行速度,通常把阶段,通常把阶段2 2代码代码加载到加载到RAMRAM空间中来执行,因此必须为加载空间中来执行,因此必须为加载BootloaderBootloader的阶段的阶段2 2代码准备好一段可用的代码准备好一段可用的RAMRAM空间空间范围。范围。通常,阶段通常,阶段2 2代码执行需要使用堆栈,因此在代码执行需要使用堆栈,因此在考虑空间大小时,除了阶段考虑空间大小时,除了阶段2 2代码可执行映像的大代码可执行映像的大小外,还必须把堆栈空间也考虑进来。此外,空间小外,还必须把堆栈空间也考虑进来。此外,空间大小最好是内存页面大小大小最好是内存页面大小(通常是通常是4KB)4KB)的倍

44、数。的倍数。2.2.为加载阶段为加载阶段2 2代码准备代码准备RAMRAM空间空间39嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件40 一般而言,512 KB的RAM空问已经足够了。具体的地址范围可以任意安排,比如U-boot就将它的阶段2可执行映像安排到从系统RAM的顶端地址开始的512 KB空间内执 行,即RAM末尾-512KB至RAM末尾。复制时要确定两点复制时要确定两点:BootloaderBootloader可执行映像在固态存储设备的存可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段放起始地址和终止地址。通常由于阶段1 1所占空间所占空间较小,许多较小,许多

45、BootloaderBootloader程序直接将整个程序直接将整个BootloaderBootloader代码复制到内存空间。代码复制到内存空间。复制的目标地址。本书所移植的复制的目标地址。本书所移植的U-bootU-boot的复的复制目标地址为制目标地址为Oxa3f80000Oxa3f80000,用,用TEXT_BASETEXT_BASE表示。表示。U-bootU-boot用用以下代码来确定这两个重要信息以下代码来确定这两个重要信息,见见P205P205。3.3.复制阶段复制阶段2 2代码到内存中代码到内存中41嵌入式系统嵌入式系统课件课件 复制时要确定两点复制时要确定两点:Bootloa

46、derBootloader可执行映像在固态存储设备的存可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段放起始地址和终止地址。通常由于阶段1 1所占空间所占空间较小,许多较小,许多BootloaderBootloader程序直接将整个程序直接将整个BootloaderBootloader代码复制到内存空间。代码复制到内存空间。复制的目标地址。本书所移植的复制的目标地址。本书所移植的U-bootU-boot的复的复制目标地址为制目标地址为Oxa3f80000Oxa3f80000,用,用TEXT_BASETEXT_BASE表示。表示。U-bootU-boot用用以下代码来确定这两个重要

47、信息以下代码来确定这两个重要信息,见见P205P205。4.4.复制阶段复制阶段2 2代码到内存中代码到内存中42嵌入式系统嵌入式系统课件课件 堆栈指针的设置是为了执行堆栈指针的设置是为了执行C C语言代码作好语言代码作好准备。经过上述这些执行步骤后,系统的物理内准备。经过上述这些执行步骤后,系统的物理内存布局如存布局如P206P206图图8-98-9所示。其中,所示。其中,_TEXT_BASE_TEXT_BASE即即BootloaderBootloader代码在内存空间的起始地址,代码在内存空间的起始地址,_bss_start_bss_start即堆栈的起始地址。即堆栈的起始地址。堆栈指针设

48、置代码如堆栈指针设置代码如P206P206:4.4.设置堆栈指针设置堆栈指针43嵌入式系统嵌入式系统课件课件嵌入式系统嵌入式系统课件课件44Stage1Stage1为为 StageStage可执行映像准可执行映像准备的备的RAMRAM地址范围,大小为地址范围,大小为1MB1MB (blankblank)RamdiskRamdisk(blankblank)内核映像内核映像(blankblank)BootloaderBootloaderFLASH地址空间地址空间RAM 地地址空间址空间_TEXT_BASE_bss_startBootlooder代码在内存空代码在内存空间的起始地址间的起始地址堆栈的

49、起堆栈的起始地址始地址图图8-9 8-9 在上述一切就绪后,就可以跳转到在上述一切就绪后,就可以跳转到Boot-Boot-loaderloader的阶段的阶段2 2去执行了。比如,在去执行了。比如,在ARMARM系统中,系统中,这可以通过修改这可以通过修改PCPC寄存器为合适的地址来实现。寄存器为合适的地址来实现。因为此时,在因为此时,在RAMRAM中已经有了中已经有了Boot-loaderBoot-loader的一的一份完全一样的复制。跳转的实现代码如份完全一样的复制。跳转的实现代码如P207P207:5.5.跳转到阶段跳转到阶段2 2代码的代码的C C入口点入口点45嵌入式系统嵌入式系统课

50、件课件 阶段阶段2 2的代码通常用的代码通常用C C语言来实现,以便于语言来实现,以便于实现更复杂的功能和取得更好的代码可读性和实现更复杂的功能和取得更好的代码可读性和可移植性。可移植性。在在U-bootl.1.2U-bootl.1.2中,从阶段中,从阶段1 1到阶段到阶段2 2的跳的跳转是通过转是通过“ldrldr pc pc,_ _start_armbootstart_armboot”命令直命令直接跳转的。接跳转的。Start_armbootStart_armboot函数用函数用C C语言编写,语言编写,位于位于lib_armlib_armboard.cboard.c中。中。8.3.28.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁