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

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

《第8章 处理器核心电路设计和底层软件移植精选文档.ppt》由会员分享,可在线阅读,更多相关《第8章 处理器核心电路设计和底层软件移植精选文档.ppt(78页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第8章 处理器核心电路设计和底层软件移植本讲稿第一页,共七十八页8.1 最小硬件系统设计 嵌入式系统的具体硬件设计会随着设计嵌入式系统的具体硬件设计会随着设计应用系统的不同而有所差别。一般情况下,应用系统的不同而有所差别。一般情况下,用户可以根据自己的要求,选用合适的微处用户可以根据自己的要求,选用合适的微处理器类型,根据相应的接口电路,搭配不同理器类型,根据相应的接口电路,搭配不同类型的外设,构成不同用途、不同规模的应类型的外设,构成不同用途、不同规模的应用系统。下面以用系统。下面以PXA255PXA255处理器为例,说明由处理器为例,说明由处理器与处理器与FlashFlash和和SDRAM

2、SDRAM等外围电路构成的最等外围电路构成的最小硬件系统的设计原理。此最小硬件系统中小硬件系统的设计原理。此最小硬件系统中的各个器件的连接关系参见图的各个器件的连接关系参见图8-18-1。此外,。此外,为了便于开发调试,也可以增加网卡和串口为了便于开发调试,也可以增加网卡和串口部分的电路。部分的电路。本讲稿第二页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件3图图8-1 8-1 最小系统原理框图最小系统原理框图本讲稿第三页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件4 PXA2XX PXA2XX系列处理器的存储器接口支持各种存储器芯片,系列处理器的

3、存储器接口支持各种存储器芯片,包括包括SDRAMSDRAM、F1ashF1ash、SMROMSMROM、ROMROM、SRAMSRAM及与及与SRAMSRAM类似的可变类似的可变延迟延迟I I0 0等。下面以等。下面以PXA255PXA255处理器为例,说明嵌入式系统中处理器为例,说明嵌入式系统中最常用的最常用的SDRAMSDRAM和和FlashFlash存储器与处理器的接口设计。如图存储器与处理器的接口设计。如图8-8-2 2所示,所示,PXA255PXA255处理器的存储器接口将其支持的存储器类型处理器的存储器接口将其支持的存储器类型分为动态存储器和静态存储器两类。其中动态存储器分为分为动

4、态存储器和静态存储器两类。其中动态存储器分为4 4个块,静态存储器分为个块,静态存储器分为6 6个块。每块都有个块。每块都有64MB64MB的寻址空间,的寻址空间,它的物理地址由片选信号它的物理地址由片选信号(chip Select)(chip Select)控制。控制。PXA255PXA255处理处理器的数据总线和地址总线通过缓冲区,分别和外部存储器器的数据总线和地址总线通过缓冲区,分别和外部存储器的地址线、数据线相连。的地址线、数据线相连。8.1.1 8.1.1 系统存储器接口系统存储器接口本讲稿第四页,共七十八页图图8-2 PXA2558-2 PXA255存储器控制接口框图存储器控制接口

5、框图本讲稿第五页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件6 MD31:0 MD31:0是是PXA255PXA255的数据总线的数据总线;nS-DCSx nS-DCSx是是PXA255PXA255的动态存储器片选信号的动态存储器片选信号;nCSx nCSx是是PXA255PXA255的静态存储器片选信号。的静态存储器片选信号。本讲稿第六页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件7 PXA2XXPXA2XX处理器往往使用大容量的片外存储器作为处理器往往使用大容量的片外存储器作为程序或数据存储器,例如采用外部程序或数据存储器,例如采用外部Fla

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

7、使得系统数据总线工作在3232位的模式下。位的模式下。下面就以异步静态存储器下面就以异步静态存储器(Flash)(Flash)和同步动态存储和同步动态存储器器(SDRAM)(SDRAM)为例,说明为例,说明PXA2XXPXA2XX系统的存储器扩展原理。系统的存储器扩展原理。本讲稿第七页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件81 1异步静态存储器接口设计原理异步静态存储器接口设计原理 如图如图8-38-3所示,采用两片所示,采用两片IntelIntel的的E28F128J3A-150 E28F128J3A-150 FlashFlash芯片,构成了芯片,构成了32 M

8、B32 MB的的F1ashF1ash存储器。这里的存储器。这里的FlashFlash芯片是芯片是1616位的,故采用两块并联的方法为处理器位的,故采用两块并联的方法为处理器提供提供3232位的数据总线支持。位的数据总线支持。本讲稿第八页,共七十八页图8-3 Flash电路原理框图本讲稿第九页,共七十八页 由于处理器从由于处理器从FlashFlash读出的数据是读出的数据是3232位的,位的,所以在对其寻址时,所以在对其寻址时,地址以地址以4 4字节为单位递增字节为单位递增,并且一次性从数据总线上得到并且一次性从数据总线上得到4 4字节的数据。字节的数据。例如,对例如,对Ox00000000Ox

9、00000000进行寻址,将从数据总进行寻址,将从数据总线上获得线上获得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进行寻址相同的效果。进行寻址相同的效果。本讲稿第十页,共七十八页 对于每片芯片来说,数据的输出是以对于每片芯片来说,数据的输出是以1616位位为单位,即为单位,即2 2字节。所以每片芯片地址按字对字节。所以每片芯片地址按字对齐,地址线的齐,地址线的A0A0引脚应连接到地。引脚应连接到地。处理器启动时,从处理器启动时,从Ox00000000Ox00000000地址开始执地址开始执行代码。为了从行代码。为了从FlashFlash引导系统,它必须接到引导系统,它必须接到静态存储器的块静态存储器的块0(Bank0)0(Bank0),所以它使用处理器,所以它使

11、用处理器的的nCS0nCS0作为片选信号。作为片选信号。F1ashF1ash的其他控制脚由的其他控制脚由处理器内部集成的处理器内部集成的Static MemoryStatic Memory控制器进行控制器进行控制。控制。本讲稿第十一页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件122 2S SDRAMDRAM存储器接口设计原理存储器接口设计原理 下面采用两片下面采用两片SamsungSamsung的的K4S281632CK4S281632C,构成了,构成了64MB64MB的的SDRAMSDRAM存储器。如图存储器。如图8-48-4所示,由于所示,由于SDRAMSDRAM

12、数据宽度为数据宽度为1616位,采用两片并联的方法与位,采用两片并联的方法与PXA255PXA255处理器连接,提处理器连接,提供供3232位的支持。位的支持。本讲稿第十二页,共七十八页图图8-4 SDRAM 8-4 SDRAM 电路原理框图电路原理框图本讲稿第十三页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件14 K4S281632C K4S281632C是是4M164M16位位4Bank4Bank的的SDRAMSDRAM存储器,总存储器,总共有共有32MB32MB的存储空间。处理器地址线的的存储空间。处理器地址线的SA-A22SA-A22和和SA-A23SA-A23

13、引脚连接到引脚连接到SDRAMSDRAM芯片的芯片的BA1:0BA1:0引脚,决定引脚,决定4 4个片内个片内BankBank的选择;处理器地址线的的选择;处理器地址线的SA-A10SA-A10SA-A21SA-A21和和SA-A24SA-A24则分别连接到则分别连接到SDRAMSDRAM的的A0A0A11A11、A12A12引脚。引脚。SDRAM SDRAM连接到处理器动态存储器的第连接到处理器动态存储器的第0 0块,故块,故选用处理器的选用处理器的nSDCS0nSDCS0作为片选信号。作为片选信号。SDRAMSDRAM的其余的其余引脚则由处理器内部集成的引脚则由处理器内部集成的Dynami

14、c MemoryDynamic Memory控制控制器进行控制。器进行控制。本讲稿第十四页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件158.1.2 8.1.2 串口电路原理串口电路原理 串行通信只有两条信号线,所以电路比较简单。串行通信只有两条信号线,所以电路比较简单。PXA255PXA255处理器有处理器有3 3个个UARTUART接口,此处选用全功能接口,此处选用全功能UART(FFUART)UART(FFUART)作为最小系统的调试串口。作为最小系统的调试串口。FFUART FFUART须使用须使用GP34GP34和和GP39GP39引脚的第二功能。它的连引脚的

15、第二功能。它的连接电路很简单,只要通过一个接电路很简单,只要通过一个RS232RS232的收发器,完成的收发器,完成TTLTTLCMOSCMOS电平到电平到RS232RS232电平的转换即可电平的转换即可(图图85)85)。本讲稿第十五页,共七十八页图图8-5 8-5 串口电路原理串口电路原理FF_TXD/GP39PXA255FF_RXD/GP34RS232Transceiver1 12 23 34 45 5本讲稿第十六页,共七十八页8.2 最小硬件系统的配置8.2.1 处理器的配置 系统上电之后,软件引导代码首先要根据硬件系统上电之后,软件引导代码首先要根据硬件设计初始化设计初始化PXA25

16、5PXA255处理器。所以,对处理器的配置处理器。所以,对处理器的配置是否正确直接决定系统软件能否正常工作。是否正确直接决定系统软件能否正常工作。对对PXA255PXA255处理器的配置将使用到三个非常重要处理器的配置将使用到三个非常重要寄存器,分别是寄存器,分别是CCCRCCCR、CKENCKEN和和ICMRICMR寄存器。它们的寄存器。它们的定义和作用如表定义和作用如表4-14-1所列。所列。本讲稿第十七页,共七十八页表表8-1 CCCR8-1 CCCR、CKENCKEN和和ICMRICMR的定义和作用的定义和作用寄存器名称寄存器名称 定定 义义 作作 用用 CCR CCR核心时钟配核心时

17、钟配置寄存器置寄存器控制着内存、控制着内存、RunRun模式和模式和TurboTurbo模式的时钟频率模式的时钟频率 CKEN CKEN外设时钟使外设时钟使能寄存器能寄存器节电节电 ICMR ICMR中断使能寄中断使能寄存器存器屏蔽中断屏蔽中断本讲稿第十八页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件19 CCCR(Core Clock Configuration Register)CCCR(Core Clock Configuration Register)寄存器控寄存器控制着内存、制着内存、LCDLCD、DMADMA控制器所使用的时钟。这些时钟都是控制器所使用的时钟

18、。这些时钟都是由处理器的由处理器的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:运行模式因子运行模式因子运行模式频率运行模式频率=内存时钟内存时钟频率频率*M*M1 1、2 2 或或4

19、 4N:TurboN:Turbo模式因子模式因子TurboTurbo模式频率模式频率=运行模式频率运行模式频率*N*N1.01.0、1.5 1.5、2.02.0或或3.03.0本讲稿第十九页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件20 本书使用的开发板是本书使用的开发板是1.3V1.3V电源供电,系统时钟全部电源供电,系统时钟全部由由CPUCPU提供,最快可以达到提供,最快可以达到100MHz100MHz的内存时钟,的内存时钟,400MHz400MHz的运行时钟和的运行时钟和400MHz400MHz的的TurboTurbo模式时钟。模式时钟。L=27,M=4,N=1

20、L=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、嵌入式系统课件21 CKEN(Clock Enable Register)CKEN(Clock Enable Register)寄存器是一个控寄存器是一个控制外部设备时钟使能的寄存器。它对嵌入式系统的电制外部设备时钟使能的寄存器。它对嵌入式系统的电量消耗有着决定性的作用;对于那些没有用到的外设,量消耗有着决定性的作用;对于那些没有用到的外设,应当关闭其时钟供应。应当关闭其时钟供应。CKEN CKEN的的O O1616位控制着位控制着1313种外设的时钟使能种外设的时钟使能(其中有其中有4 4位保留位保留)。它们的对应关系如下:。它们的对应关系如下:2.CKEN2.CKEN寄存器寄存器本讲稿第二

22、十一页,共七十八页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、HWUART CKEN7:5=111HWUART CKEN7:5=111SSPSSP设备设

23、备 CKEN4=1 CKEN4=1AC97AC97、SSPSSP设备设备 CKEN3:2=11 CKEN3:2=11其余其余=0=0 实际上,最小硬件系统只需要调试串口,故只需要实际上,最小硬件系统只需要调试串口,故只需要为为FFUARTFFUART提供时钟。提供时钟。CKENCKEN只需要被设置成只需要被设置成0 x000000400 x00000040。实际使用中应根据具体需要,开启某种外设的时钟。实际使用中应根据具体需要,开启某种外设的时钟。本讲稿第二十二页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件23 ICMR(Interrupt Controller Mas

24、k Register)ICMR(Interrupt Controller Mask Register)寄存器是中断使能寄存器。寄存器是中断使能寄存器。1 1代表使能,代表使能,0 0代表屏蔽。代表屏蔽。一般来说,一般来说,PXA255PXA255处理器在处理器在BootloaderBootloader启动阶段启动阶段必须屏蔽所有中断,所以必须屏蔽所有中断,所以ICMRICMR寄器应当设置为寄器应当设置为0 x000000000 x00000000。3.ICMR3.ICMR寄存器寄存器本讲稿第二十三页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件24 搭建嵌入式系统时,存储

25、器的配置是最重要的,也是最基础搭建嵌入式系统时,存储器的配置是最重要的,也是最基础的。的。上电之后,上电之后,PXA255PXA255处理器就开始从物理的处理器就开始从物理的0 x000000000 x00000000读第一条指令,这第一条指令就是存储在读第一条指令,这第一条指令就是存储在FlashFlash里的。如里的。如果果FlashFlash没有配置正确,没有配置正确,CPUCPU将取不到正确的指令。将取不到正确的指令。同样,同样,BootloaderBootloader启动时一般会将自身复制到启动时一般会将自身复制到SDRAMSDRAM,然后,然后在在SDRAMSDRAM里运行。因此里

26、运行。因此,只有只有SDRAMSDRAM配置正确,配置正确,BootloaderBootloader的启动的启动流程才能顺利执行。流程才能顺利执行。Flash Flash和和SDRAMSDRAM的配置同属于存储器配置,考虑的对象和涉及的配置同属于存储器配置,考虑的对象和涉及的寄存器比较相近。的寄存器比较相近。存储器的配置涉及两个比较重要的寄存器存储器的配置涉及两个比较重要的寄存器,见表见表4-34-38.2.2 8.2.2 FlashFlashSDRAMSDRAM的配置的配置本讲稿第二十四页,共七十八页表表8-3 8-3 与存储器配置相关的寄存器与存储器配置相关的寄存器寄存器名称寄存器名称 定

27、定 义义 作用作用MSCxMSCx异步静态存储配置寄异步静态存储配置寄存器存器向向CPUCPU传递存储传递存储器操作的参数器操作的参数MDCNFGMDCNFG同步动态随机存储器同步动态随机存储器的交互寄存器的交互寄存器向向CPUCPU传递传递SDRAMSDRAM的参数的参数本讲稿第二十五页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件26 MSCx(Asynchronous Static Memory Control Registers)MSCx(Asynchronous Static Memory Control Registers)寄寄存器是存储器控制功能中极其重要的

28、寄存器,它记录了存器是存储器控制功能中极其重要的寄存器,它记录了存储器的存储器的性质、位宽和操作性质、位宽和操作的实际参数。的实际参数。MSCxMSCx一般用来控制外部静态的一般用来控制外部静态的存储器,在本书所用的开发板上,它用于控制存储器,在本书所用的开发板上,它用于控制FlashFlash和网卡。和网卡。MSCxMSCx寄存器总共有三个,它们分别是寄存器总共有三个,它们分别是MSCOMSCO、MSClMSCl和和MSC2MSC2。每个。每个寄存器最多可以控制两个外部静态存储器块,这三个寄存器总寄存器最多可以控制两个外部静态存储器块,这三个寄存器总共可以控制多达共可以控制多达6 6个外部静

29、态存储器块个外部静态存储器块nCS0:1nCS0:1、nCS2:3nCS2:3、nCS4:5nCS4:5。只有。只有MSCxMSCx寄存器配置正确,其对应的片选信号才可寄存器配置正确,其对应的片选信号才可以使能相应的静态存储器访问。以使能相应的静态存储器访问。MSCx MSCx十分重要,因为它记录了有关于存储器的几个重要参数,十分重要,因为它记录了有关于存储器的几个重要参数,见见P197P197表表8-48-4所列。所列。1 1MSCxMSCx寄存器寄存器本讲稿第二十六页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件27 Flash Flash连接到连接到nCS0nCS0

30、,如,如P198P198图图8-68-6所示,网所示,网卡采用卡采用nCSl(nCSl(即即SASA一一(2SI#)(2SI#)片选信号。片选信号。可以使用可以使用P198P198表表8-58-5的配置清单设置的配置清单设置MCS0MCS0,以正确访问以正确访问FlashFlash存储器和网卡的存储器和网卡的I I0 0地址空间。地址空间。本讲稿第二十七页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件28 MDCNFG(SDRAM MDCNFG Register)MDCNFG(SDRAM MDCNFG Register)寄存器控制寄存器控制PXA255PXA255处理器的

31、同步动态随机存储器的操作参数,如果处理器的同步动态随机存储器的操作参数,如果这些配置不正确,这些配置不正确,SDRAMSDRAM将不能被初始化,软件启动将将不能被初始化,软件启动将无法完成。无法完成。MDCNFG MDCNFG有很多配置项,主要如有很多配置项,主要如P199P199表表8-68-6中所中所列。列。2.MDCNFG2.MDCNFG寄存器寄存器本讲稿第二十八页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件29 PXA255 PXA255处理器有处理器有8484个通用个通用(General-Purpose)I(General-Purpose)IO O口。每一个口

32、。每一个GPIOGPIO引脚既可以当做普通的引脚既可以当做普通的I IO O用,用,也可以把它们配置成具有第二功能的引脚。也可以把它们配置成具有第二功能的引脚。GPIO GPIO的配置与的配置与PXA255PXA255处理器所接的外部设备有处理器所接的外部设备有关。例如,本书所用的开发板的串口和网卡用到一关。例如,本书所用的开发板的串口和网卡用到一些相关的些相关的GPIOGPIO寄存器,因此,在系统启动时应对它寄存器,因此,在系统启动时应对它们进行正确配置。们进行正确配置。GPIO GPIO的配置主要由几个寄存器完成,见表的配置主要由几个寄存器完成,见表-。4.2.3 GPIO4.2.3 GP

33、IO和串口的配置和串口的配置本讲稿第二十九页,共七十八页表表-完成完成GPIOGPIO配置的相关寄存器配置的相关寄存器寄存器名称寄存器名称 定定 义义 配置方法配置方法GPDRGPDR方向寄存器方向寄存器只有两个引脚配置输出只有两个引脚配置输出GPLRGPLR引脚状态寄存器引脚状态寄存器只读只读,配置成配置成0 x0000 00000 x0000 0000GPCRGPCR输出输出0 00 x0000 00000 x0000 0000GPSRGPSR输出输出1 10 x0000 00000 x0000 0000GRERGRER探测上升沿使得能够探测上升沿使得能够0 x0000 00000 x00

34、00 0000GFERGFER探测下降沿使得能够探测下降沿使得能够0 x0000 00000 x0000 0000GEDRGEDR探测上升下降沿探测上升下降沿0 x0000 00000 x0000 0000GAFRGAFR第二功能寄存器第二功能寄存器使用了其中使用了其中3 3个引脚第二功能个引脚第二功能本讲稿第三十页,共七十八页 由P200图8-7可以看出,GPl5的引脚应当配置成nCSl,方向为输出。由P201图8-8可以看出,GP34和GP39作为FF-Rx和FF-TX连接到RS232传输芯片SP3223ECY,它们应当使用FFUART功能,并且分别设置成输入和输出。具体设置如下:GPDR

35、015=1 GPDR17 =1 GAFR1_L5:4 =01 GAFR1_L15:14 =10 其他各引脚的配置均为0。本讲稿第三十一页,共七十八页8.3 最小硬件系统与Bootloader Bootloader是系统加电后运行的第一段是系统加电后运行的第一段软件代码,软件代码,Bootloader的最终目标就是正确的最终目标就是正确地调用内核来执行。因此,地调用内核来执行。因此,Bootloader只需只需要初始化要初始化CPU、Flash、SDRAM,让,让Linux内核得以运行即可。本节介绍的内核得以运行即可。本节介绍的Bootloader的任务框架就是针对的任务框架就是针对PXA255

36、的最小硬件系的最小硬件系统来进行初始化的。其他设备的初始化,完统来进行初始化的。其他设备的初始化,完全可以交由内核完成。全可以交由内核完成。本讲稿第三十二页,共七十八页 在嵌入式系统中,内核映像、根文件系统映像在嵌入式系统中,内核映像、根文件系统映像在嵌入式系统中,内核映像、根文件系统映像在嵌入式系统中,内核映像、根文件系统映像都存储在都存储在都存储在都存储在ROMROMROMROM或或或或FlashFlashFlashFlash中,直接在固态存储设备中中,直接在固态存储设备中中,直接在固态存储设备中中,直接在固态存储设备中运行程序的速度很慢。因此,运行程序的速度很慢。因此,运行程序的速度很慢

37、。因此,运行程序的速度很慢。因此,BootloaderBootloaderBootloaderBootloader的工作的工作的工作的工作之一就是将内核映像与根文件系统映像加载到之一就是将内核映像与根文件系统映像加载到之一就是将内核映像与根文件系统映像加载到之一就是将内核映像与根文件系统映像加载到RAMRAMRAMRAM中,然后使之运行。中,然后使之运行。中,然后使之运行。中,然后使之运行。由于由于由于由于BootloaderBootloaderBootloaderBootloader的实现依赖于的实现依赖于的实现依赖于的实现依赖于CPUCPUCPUCPU的体系结构,因此,的体系结构,因此,的

38、体系结构,因此,的体系结构,因此,大多数大多数大多数大多数BootloaderBootloaderBootloaderBootloader的执行都可分为阶段的执行都可分为阶段的执行都可分为阶段的执行都可分为阶段1 1 1 1和阶段和阶段和阶段和阶段2 2 2 2两大部两大部两大部两大部分。依赖于分。依赖于分。依赖于分。依赖于CPUCPUCPUCPU体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,通常都放在阶段通常都放在阶段通常都放在阶段通常都放在阶段1 1 1 1执行,而且通常都用汇编语言来

39、实现,执行,而且通常都用汇编语言来实现,执行,而且通常都用汇编语言来实现,执行,而且通常都用汇编语言来实现,以达到短小精悍的目的。而阶段以达到短小精悍的目的。而阶段以达到短小精悍的目的。而阶段以达到短小精悍的目的。而阶段2 2 2 2的代码则通常用的代码则通常用的代码则通常用的代码则通常用C C C C语言语言语言语言来实现,这样可以实现复杂的功能,而且代码会具有更来实现,这样可以实现复杂的功能,而且代码会具有更来实现,这样可以实现复杂的功能,而且代码会具有更来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。好的可读性和可移植性。好的可读性和可移植性。好的可读性和可移植性。

40、本讲稿第三十三页,共七十八页 Bootloader的阶段1执行通常包括以下步骤(以执行的先后顺序):硬件设备初始化;为加载Bootloader的阶段2代码准备 RAM空间;复制Bootloader的阶段2代码到RAM空 间中;设置好堆栈;跳转到阶段2代码的C入口点。本讲稿第三十四页,共七十八页 Bootloader的阶段2执行通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备;检测系统内存映射(Memor_y map);将内核映像和根文件系统映像从Flash 上读到RAM空间中;为内核设置启动参数;启动内核。本讲稿第三十五页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课

41、件嵌入式系统课件36 对于对于PXAPXA系列处理器,系列处理器,U-bootU-boot的阶段的阶段1 1代码在代码在U-bootU-boot源代码的源代码的cpucpupxapxastart.Sstart.S文件里,这是一个汇编代码文件。文件里,这是一个汇编代码文件。8.3.1 U-boot8.3.1 U-boot启动阶段启动阶段1 1的处理过程的处理过程本讲稿第三十六页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件37 这是这是BootloaderBootloader一开始就执行的操作,其目的是为阶段一开始就执行的操作,其目的是为阶段2 2的执的执行以及随后的内核的

42、执行准备好一些基本的硬件环境。通常包括以下行以及随后的内核的执行准备好一些基本的硬件环境。通常包括以下步骤步骤(以执行的先后顺序以执行的先后顺序):屏蔽所有的中断。在屏蔽所有的中断。在BootloaderBootloader中通常不使用中断,因此在中通常不使用中断,因此在BootloaderBootloader的执行全过程中可以屏蔽中断。中断屏蔽可以通过写的执行全过程中可以屏蔽中断。中断屏蔽可以通过写CPUCPU的中的中断屏蔽寄存器或状态寄存器断屏蔽寄存器或状态寄存器(比如比如ARMARM的的CPSRCPSR寄存器寄存器)来完成。来完成。设置设置CPUCPU的速度和时钟频率。的速度和时钟频率。

43、RAM RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。及各内存库控制寄存器等。初始化初始化LEDLED。典型地,通过。典型地,通过GPIOGPIO来驱动来驱动LEDLED,其目的是表明系统的,其目的是表明系统的状态是状态是OKOK还是还是ErrorError。如果板上没有。如果板上没有LEDLED,那么也可以通过初始化,那么也可以通过初始化UARTUART向向串口打印串口打印BootloaderBootloader 的的LogoLogo字符信息来完成这一点。字符信息来完成这一点。关闭关闭CPUCPU内部指令

44、数据内部指令数据CacheCache。1.1.基本的硬件初始化基本的硬件初始化本讲稿第三十七页,共七十八页各个步骤具体实现代码如下:(a)配置中断。P202 (b)配置复位控制器。P202-203 (c)配置系统时钟。P203(d)配置时钟管理寄存器。P203 (e)配置RS232串口。P203 (f)CPU初始化。P203-204 (h)RAM初始化。P203-204本讲稿第三十八页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件39 为了获得更快的执行速度,通常把阶段为了获得更快的执行速度,通常把阶段2 2代码加载到代码加载到RAMRAM空间中来执行,因此必须为加载空间

45、中来执行,因此必须为加载BootloaderBootloader的阶段的阶段2 2代代码准备好一段可用的码准备好一段可用的RAMRAM空间范围。空间范围。通常,阶段通常,阶段2 2代码执行需要使用堆栈,因此在考代码执行需要使用堆栈,因此在考虑空间大小时,除了阶段虑空间大小时,除了阶段2 2代码可执行映像的大小外,代码可执行映像的大小外,还必须把堆栈空间也考虑进来。此外,空间大小最好还必须把堆栈空间也考虑进来。此外,空间大小最好是内存页面大小是内存页面大小(通常是通常是4KB)4KB)的倍数。的倍数。2.2.为加载阶段为加载阶段2 2代码准备代码准备RAMRAM空间空间本讲稿第三十九页,共七十八

46、页 一般而言,512 KB的RAM空问已经足够了。具体的地址范围可以任意安排,比如U-boot就将它的阶段2可执行映像安排到从系统RAM的顶端地址开始的512 KB空间内执 行,即RAM末尾-512KB至RAM末尾。本讲稿第四十页,共七十八页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件41 复制时要确定两点:复制时要确定两点:Bootloader Bootloader可执行映像在固态存储设备的存放起始可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段地址和终止地址。通常由于阶段1 1所占空间较小,许多所占空间较小,许多BootloaderBootloader程序直接将整

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

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

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

50、t_bss_start即堆栈的起始即堆栈的起始地址。地址。堆栈指针设置代码如堆栈指针设置代码如P206P206:4.4.设置堆栈指针设置堆栈指针本讲稿第四十三页,共七十八页Stage1Stage1为为 Stage Stage可执行映像准备可执行映像准备的的RAMRAM地址范围,大小为地址范围,大小为1MB1MB (blankblank)RamdiskRamdisk(blankblank)内核映像内核映像(blankblank)BootloaderBootloaderFLASH地地址空间址空间RAM 地地址空间址空间_TEXT_BASE_bss_startBootlooder代代码在内存空间码在

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com