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

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

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

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

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

3、与SRAM类似的可变延迟I0等。下面以PXA255处理器为例,说明嵌入式系统中最常用的SDRAM和Flash存储器与处理器的接口设计。如图8-2所示,PXA255处理器的存储器接口将其支持的存储器类型分为动态存储器和静态存储器两类。其中动态存储器分为4个块,静态存储器分为6个块。每块都有64MB的寻址空间,它的物理地址由片选信号(chip Select)控制。PXA255处理器的数据总线和地址总线通过缓冲区,分别和外部存储器的地址线、数据线相连。8.1.1 系统存储器接口第4页,本讲稿共78页图图8-2 PXA2558-2 PXA255存储器控制接口框图存储器控制接口框图第5页,本讲稿共78页

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

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

6、位的模式下。位的模式下。下面就以异步静态存储器下面就以异步静态存储器(Flash)(Flash)和同步动态存储器和同步动态存储器(SDRAM)(SDRAM)为例,说明为例,说明PXA2XXPXA2XX系统的存储器扩展原理。系统的存储器扩展原理。第7页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件81异步静态存储器接口设计原理 如图8-3所示,采用两片Intel的E28F128J3A-150 Flash芯片,构成了32 MB的F1ash存储器。这里的Flash芯片是16位的,故采用两块并联的方法为处理器提供32位的数据总线支持。第8页,本讲稿共78页图8-3 Flash

7、电路原理框图第9页,本讲稿共78页 由于处理器从由于处理器从FlashFlash读出的数据是读出的数据是3232位的,位的,所以在对其寻址时,所以在对其寻址时,地址以地址以4 4字节为单位递增字节为单位递增,并且一次性从数据总线上得到并且一次性从数据总线上得到4 4字节的数据。字节的数据。例如,对例如,对Ox00000000Ox00000000进行寻址,将从数据总进行寻址,将从数据总线上获得线上获得x00000000 x000000000 x000000030 x00000003总共总共4 4字节字节的数据。因此,的数据。因此,PXA255PXA255的地址线上的的地址线上的SA-A0SA-A

8、0和和SA-A1SA-A1不与芯片连接。不与芯片连接。对于这样的对于这样的FlashFlash外围外围电路,对电路,对FLASHFLASH的的0 x000000010 x00000001;(Ox00000002(Ox00000002、0 x00000003)0 x00000003)进行寻址,也能获得对地址进行寻址,也能获得对地址0 x000000000 x00000000进行寻址相同的效果。进行寻址相同的效果。第10页,本讲稿共78页 对于每片芯片来说,数据的输出是以对于每片芯片来说,数据的输出是以1616位位为单位,即为单位,即2 2字节。所以每片芯片地址按字对字节。所以每片芯片地址按字对齐

9、,地址线的齐,地址线的A0A0引脚应连接到地。引脚应连接到地。处理器启动时,从处理器启动时,从Ox00000000Ox00000000地址开始执地址开始执行代码。为了从行代码。为了从FlashFlash引导系统,它必须接到引导系统,它必须接到静态存储器的块静态存储器的块0(Bank0)0(Bank0),所以它使用处理器,所以它使用处理器的的nCS0nCS0作为片选信号。作为片选信号。F1ashF1ash的其他控制脚由的其他控制脚由处理器内部集成的处理器内部集成的Static MemoryStatic Memory控制器进行控制器进行控制。控制。第11页,本讲稿共78页嵌入式系统课件嵌入式系统课

10、件嵌入式系统课件嵌入式系统课件122SDRAM存储器接口设计原理 下面采用两片Samsung的K4S281632C,构成了64MB的SDRAM存储器。如图8-4所示,由于SDRAM数据宽度为16位,采用两片并联的方法与PXA255处理器连接,提供32位的支持。第12页,本讲稿共78页图图8-4 SDRAM 8-4 SDRAM 电路原理框图电路原理框图第13页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件14 K4S281632C K4S281632C是是4M164M16位位4Bank4Bank的的SDRAMSDRAM存储器,总存储器,总共有共有32MB32MB的存储空

11、间。处理器地址线的的存储空间。处理器地址线的SA-A22SA-A22和和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作为片选信号。作为片选信

12、号。SDRAMSDRAM的其余引脚则的其余引脚则由处理器内部集成的由处理器内部集成的Dynamic MemoryDynamic Memory控制器进行控制。控制器进行控制。第14页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件158.1.2 8.1.2 串口电路原理串口电路原理 串行通信只有两条信号线,所以电路比较简单。串行通信只有两条信号线,所以电路比较简单。PXA255PXA255处理器有处理器有3 3个个UARTUART接口,此处选用全功能接口,此处选用全功能UART(FFUART)UART(FFUART)作为最小系统的调试串口。作为最小系统的调试串口。FFUA

13、RT FFUART须使用须使用GP34GP34和和GP39GP39引脚的第二功能。它引脚的第二功能。它的连接电路很简单,只要通过一个的连接电路很简单,只要通过一个RS232RS232的收发器,的收发器,完成完成TTLTTLCMOSCMOS电平到电平到RS232RS232电平的转换即可电平的转换即可(图图885)5)。第15页,本讲稿共78页图图8-5 8-5 串口电路原理串口电路原理FF_TXD/GP39PXA255FF_RXD/GP34RS232Transceiver1 12 23 34 45 5第16页,本讲稿共78页8.2 最小硬件系统的配置8.2.1 处理器的配置 系统上电之后,软件引

14、导代码首先要根据硬件设计初始化PXA255处理器。所以,对处理器的配置是否正确直接决定系统软件能否正常工作。对PXA255处理器的配置将使用到三个非常重要寄存器,分别是CCCR、CKEN和ICMR寄存器。它们的定义和作用如表4-1所列。第17页,本讲稿共78页表表8-1 CCCR8-1 CCCR、CKENCKEN和和ICMRICMR的定义和作用的定义和作用寄存器名称寄存器名称 定定 义义 作作 用用 CCR CCR核心时钟配核心时钟配置寄存器置寄存器控制着内存、控制着内存、RunRun模式和模式和TurboTurbo模式的时钟频率模式的时钟频率 CKEN CKEN外设时钟使外设时钟使能寄存器能

15、寄存器节电节电 ICMR ICMR中断使能寄中断使能寄存器存器屏蔽中断屏蔽中断第18页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件19 CCCR(Core Clock Configuration Register)寄存器控制着内存、LCD、DMA控制器所使用的时钟。这些时钟都是由处理器的3.6864MHz钟振倍频上去的,控制倍频比例的参数有三个,见表4-2。1.CCCR寄存器表8-2 CCCR控制倍频比例的参数 名名 称称 使用方法使用方法 取值空间取值空间L:L:内存内存频率因子频率因子内存时钟内存时钟频率频率=3 3.6864MHz6864MHz*L*L2727

16、、3232、3636、4040或或4545M:M:运行模式因子运行模式因子运行模式频率运行模式频率=内存时钟内存时钟频率频率*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.3V电源供电,系统时钟全部由CPU提供,最快可以达到100MHz的内存时钟,400MHz的运行时钟和400MHz的Turbo模式时钟。L=27,M=4,N=1 R

17、eserved CCCR31:10=0 N=1 CCCR9:7 =010(未用)M=4 CCCR6:5 =11 L=27 CCCR4:0 =00001 最终的CCCR寄存器的值应当配置为0 x00000161注:CCCR中N、M、L的位定义对应其取值序号第20页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件21 CKEN(Clock Enable Register)寄存器是一个控制外部设备时钟使能的寄存器。它对嵌入式系统的电量消耗有着决定性的作用;对于那些没有用到的外设,应当关闭其时钟供应。CKEN的O16位控制着13种外设的时钟使能(其中有4位保留)。它们的对应关系

18、如下:2.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、HWUART CKEN7:5=111HWUART CKEN7

19、:5=111SSPSSP设备设备 CKEN4=1 CKEN4=1AC97AC97、SSPSSP设备设备 CKEN3:2=11 CKEN3:2=11其余其余=0=0 实际上,最小硬件系统只需要调试串口,故只需要为FFUART提供时钟。CKEN只需要被设置成0 x00000040。实际使用中应根据具体需要,开启某种外设的时钟。第22页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件23 ICMR(Interrupt Controller Mask Register)寄存器是中断使能寄存器。1代表使能,0代表屏蔽。一般来说,PXA255处理器在Bootloader启动阶段必须

20、屏蔽所有中断,所以ICMR寄器应当设置为0 x00000000。3.ICMR寄存器第23页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件24 搭建嵌入式系统时,存储器的配置是最重要的,也是最基础的。上电之后,PXA255处理器就开始从物理的0 x00000000读第一条指令,这第一条指令就是存储在Flash里的。如果Flash没有配置正确,CPU将取不到正确的指令。同样,Bootloader启动时一般会将自身复制到SDRAM,然后在SDRAM里运行。因此,只有SDRAM配置正确,Bootloader的启动流程才能顺利执行。Flash和SDRAM的配置同属于存储器配置,

21、考虑的对象和涉及的寄存器比较相近。存储器的配置涉及两个比较重要的寄存器,见表4-38.2.2 FlashSDRAM的配置第24页,本讲稿共78页表表8-3 8-3 与存储器配置相关的寄存器与存储器配置相关的寄存器寄存器名称寄存器名称 定定 义义 作用作用MSCxMSCx异步静态存储配置异步静态存储配置寄存器寄存器向向CPUCPU传递存储传递存储器操作的参数器操作的参数MDCNFGMDCNFG同步动态随机存储同步动态随机存储器的交互寄存器器的交互寄存器向向CPUCPU传递传递SDRAMSDRAM的参数的参数第25页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件26 MS

22、Cx(Asynchronous Static Memory Control Registers)寄存器是存储器控制功能中极其重要的寄存器,它记录了存储器的性质、位宽和操作的实际参数。MSCx一般用来控制外部静态的存储器,在本书所用的开发板上,它用于控制Flash和网卡。MSCx寄存器总共有三个,它们分别是MSCO、MSCl和MSC2。每个寄存器最多可以控制两个外部静态存储器块,这三个寄存器总共可以控制多达6个外部静态存储器块nCS0:1、nCS2:3、nCS4:5。只有MSCx寄存器配置正确,其对应的片选信号才可以使能相应的静态存储器访问。MSCx十分重要,因为它记录了有关于存储器的几个重要参

23、数,见P197表8-4所列。1MSCx寄存器第26页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件27 Flash连接到nCS0,如P198图8-6所示,网卡采用nCSl(即SA一(2SI#)片选信号。可以使用P198表8-5的配置清单设置MCS0,以正确访问Flash存储器和网卡的I0地址空间。第27页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件28 MDCNFG(SDRAM MDCNFG Register)寄存器控制PXA255处理器的同步动态随机存储器的操作参数,如果这些配置不正确,SDRAM将不能被初始化,软件启动将无法完成。MDC

24、NFG有很多配置项,主要如P199表8-6中所列。2.MDCNFG寄存器第28页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件29 PXA255处理器有84个通用(General-Purpose)IO口。每一个GPIO引脚既可以当做普通的IO用,也可以把它们配置成具有第二功能的引脚。GPIO的配置与PXA255处理器所接的外部设备有关。例如,本书所用的开发板的串口和网卡用到一些相关的GPIO寄存器,因此,在系统启动时应对它们进行正确配置。GPIO的配置主要由几个寄存器完成,见表-。4.2.3 GPIO和串口的配置第29页,本讲稿共78页表-完成GPIO配置的相关寄存器

25、寄存器名称寄存器名称 定定 义义 配置方法配置方法GPDRGPDR方向寄存器方向寄存器只有两个引脚配置输出只有两个引脚配置输出GPLRGPLR引脚状态寄存器引脚状态寄存器只读只读,配置成配置成0 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 0000GE

26、DRGEDR探测上升下降沿探测上升下降沿0 x0000 00000 x0000 0000GAFRGAFR第二功能寄存器第二功能寄存器使用了其中使用了其中3 3个引脚第二功能个引脚第二功能第30页,本讲稿共78页 由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。

27、第31页,本讲稿共78页8.3 最小硬件系统与Bootloader Bootloader是系统加电后运行的第一段是系统加电后运行的第一段软件代码,软件代码,Bootloader的最终目标就是正确的最终目标就是正确地调用内核来执行。因此,地调用内核来执行。因此,Bootloader只需只需要初始化要初始化CPU、Flash、SDRAM,让,让Linux内核得以运行即可。本节介绍的内核得以运行即可。本节介绍的Bootloader的任务框架就是针对的任务框架就是针对PXA255的最小硬件系的最小硬件系统来进行初始化的。其他设备的初始化,完统来进行初始化的。其他设备的初始化,完全可以交由内核完成。全可

28、以交由内核完成。第32页,本讲稿共78页 在嵌入式系统中,内核映像、根文件系统映像在嵌入式系统中,内核映像、根文件系统映像在嵌入式系统中,内核映像、根文件系统映像在嵌入式系统中,内核映像、根文件系统映像都存储在都存储在都存储在都存储在ROMROMROMROM或或或或FlashFlashFlashFlash中,直接在固态存储设备中中,直接在固态存储设备中中,直接在固态存储设备中中,直接在固态存储设备中运行程序的速度很慢。因此,运行程序的速度很慢。因此,运行程序的速度很慢。因此,运行程序的速度很慢。因此,BootloaderBootloaderBootloaderBootloader的工作的工作的

29、工作的工作之一就是将内核映像与根文件系统映像加载到之一就是将内核映像与根文件系统映像加载到之一就是将内核映像与根文件系统映像加载到之一就是将内核映像与根文件系统映像加载到RAMRAMRAMRAM中,然后使之运行。中,然后使之运行。中,然后使之运行。中,然后使之运行。由于由于由于由于BootloaderBootloaderBootloaderBootloader的实现依赖于的实现依赖于的实现依赖于的实现依赖于CPUCPUCPUCPU的体系结构,的体系结构,的体系结构,的体系结构,因此,大多数因此,大多数因此,大多数因此,大多数BootloaderBootloaderBootloaderBootl

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

31、的且通常都用汇编语言来实现,以达到短小精悍的目的。而阶段目的。而阶段目的。而阶段目的。而阶段2 2 2 2的代码则通常用的代码则通常用的代码则通常用的代码则通常用C C C C语言来实现,这语言来实现,这语言来实现,这语言来实现,这样可以实现复杂的功能,而且代码会具有更好的样可以实现复杂的功能,而且代码会具有更好的样可以实现复杂的功能,而且代码会具有更好的样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。可读性和可移植性。可读性和可移植性。可读性和可移植性。第33页,本讲稿共78页 Bootloader的阶段1执行通常包括以下步骤(以执行的先后顺序):硬件设备初始化;为加载Bootl

32、oader的阶段2代码准备 RAM空间;复制Bootloader的阶段2代码到RAM空 间中;设置好堆栈;跳转到阶段2代码的C入口点。第34页,本讲稿共78页 Bootloader的阶段2执行通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备;检测系统内存映射(Memor_y map);将内核映像和根文件系统映像从Flash 上读到RAM空间中;为内核设置启动参数;启动内核。第35页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件36 对于PXA系列处理器,U-boot的阶段1代码在U-boot源代码的cpupxastart.S文件里,这是一个汇编代码

33、文件。8.3.1 U-boot启动阶段1的处理过程第36页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件37 这是这是BootloaderBootloader一开始就执行的操作,其目的是为阶段一开始就执行的操作,其目的是为阶段2 2的执行以的执行以及随后的内核的执行准备好一些基本的硬件环境。通常包括以下步骤及随后的内核的执行准备好一些基本的硬件环境。通常包括以下步骤(以以执行的先后顺序执行的先后顺序):屏蔽所有的中断。在屏蔽所有的中断。在BootloaderBootloader中通常不使用中断,因此在中通常不使用中断,因此在BootloaderBootloader的的

34、执行全过程中可以屏蔽中断。中断屏蔽可以通过写执行全过程中可以屏蔽中断。中断屏蔽可以通过写CPUCPU的中断屏蔽寄存器或状态的中断屏蔽寄存器或状态寄存器寄存器(比如比如ARMARM的的CPSRCPSR寄存器寄存器)来完成。来完成。设置设置CPUCPU的速度和时钟频率。的速度和时钟频率。RAM RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。及各内存库控制寄存器等。初始化初始化LEDLED。典型地,通过。典型地,通过GPIOGPIO来驱动来驱动LEDLED,其目的是表明系统,其目的是表明系统的状态是的状态是OKO

35、K还是还是ErrorError。如果板上没有。如果板上没有LEDLED,那么也可以通过初始化,那么也可以通过初始化UARTUART向串口打印向串口打印BootloaderBootloader 的的LogoLogo字符信息来完成这一点。字符信息来完成这一点。关闭关闭CPUCPU内部指令数据内部指令数据CacheCache。1.基本的硬件初始化第37页,本讲稿共78页各个步骤具体实现代码如下:(a)配置中断。P202 (b)配置复位控制器。P202-203 (c)配置系统时钟。P203(d)配置时钟管理寄存器。P203 (e)配置RS232串口。P203 (f)CPU初始化。P203-204 (h

36、)RAM初始化。P203-204第38页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件39 为了获得更快的执行速度,通常把阶段2代码加载到RAM空间中来执行,因此必须为加载Bootloader的阶段2代码准备好一段可用的RAM空间范围。通常,阶段2代码执行需要使用堆栈,因此在考虑空间大小时,除了阶段2代码可执行映像的大小外,还必须把堆栈空间也考虑进来。此外,空间大小最好是内存页面大小(通常是4KB)的倍数。2.为加载阶段2代码准备RAM空间第39页,本讲稿共78页 一般而言,512 KB的RAM空问已经足够了。具体的地址范围可以任意安排,比如U-boot就将它的阶段2

37、可执行映像安排到从系统RAM的顶端地址开始的512 KB空间内执 行,即RAM末尾-512KB至RAM末尾。第40页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件41 复制时要确定两点:复制时要确定两点:Bootloader Bootloader可执行映像在固态存储设备的存放可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段起始地址和终止地址。通常由于阶段1 1所占空间较小,所占空间较小,许多许多BootloaderBootloader程序直接将整个程序直接将整个BootloaderBootloader代码复制代码复制到内存空间。到内存空间。复制的目标地址

38、。本书所移植的复制的目标地址。本书所移植的U-bootU-boot的复制目的复制目标地址为标地址为Oxa3f80000Oxa3f80000,用,用TEXT_BASETEXT_BASE表示。表示。U-boot U-boot用以下代码来确定这两个重要信息用以下代码来确定这两个重要信息,见见P205P205。3.复制阶段2代码到内存中第41页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件42 复制时要确定两点:复制时要确定两点:Bootloader Bootloader可执行映像在固态存储设备的存放可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段起始地址和终止

39、地址。通常由于阶段1 1所占空间较小,所占空间较小,许多许多BootloaderBootloader程序直接将整个程序直接将整个BootloaderBootloader代码复制代码复制到内存空间。到内存空间。复制的目标地址。本书所移植的复制的目标地址。本书所移植的U-bootU-boot的复制目的复制目标地址为标地址为Oxa3f80000Oxa3f80000,用,用TEXT_BASETEXT_BASE表示。表示。U-boot U-boot用以下代码来确定这两个重要信息用以下代码来确定这两个重要信息,见见P205P205。4.复制阶段2代码到内存中第42页,本讲稿共78页嵌入式系统课件嵌入式系统

40、课件嵌入式系统课件嵌入式系统课件43 堆栈指针的设置是为了执行C语言代码作好准备。经过上述这些执行步骤后,系统的物理内存布局如P206图8-9所示。其中,_TEXT_BASE即Bootloader代码在内存空间的起始地址,_bss_start即堆栈的起始地址。堆栈指针设置代码如P206:4.设置堆栈指针第43页,本讲稿共78页Stage1Stage1为为 Stage Stage可执行映像准可执行映像准备的备的RAMRAM地址范围,大小为地址范围,大小为1MB1MB (blankblank)RamdiskRamdisk(blankblank)内核映像内核映像(blankblank)Bootloa

41、derBootloaderFLASH地址空间RAM 地址空间_TEXT_BASE_bss_startBootlooder代码在内存空间的起始地址堆栈的起始地址图8-9 第44页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件45 在上述一切就绪后,就可以跳转到Boot-loader的阶段2去执行了。比如,在ARM系统中,这可以通过修改PC寄存器为合适的地址来实现。因为此时,在RAM中已经有了Boot-loader的一份完全一样的复制。跳转的实现代码如P207:5.跳转到阶段2代码的C入口点第45页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件4

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

43、boot启动阶段2的处理过程第46页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件47 本阶段要使用到的硬件设备通常包括:本阶段要使用到的硬件设备通常包括:初始化至少一个串口,以便和终端用初始化至少一个串口,以便和终端用 户进行户进行I IO O输出信息。输出信息。初始化初始化FrameBufferFrameBuffer、FlashFlash、网卡、网卡、计时器等。计时器等。在初始化这些设备之前,也可以重新把在初始化这些设备之前,也可以重新把LEDLED灯点亮,以表明灯点亮,以表明U-bootU-boot已经进入已经进入main()main()函数执行。函数执行。设备

44、初始化完成后,可以输出一些打印信息,如设备初始化完成后,可以输出一些打印信息,如程序名称字符串、版本号等。程序名称字符串、版本号等。1.初始化本阶段要使用到的硬件设备第47页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件48 完成初始化阶段2用到的硬件之后,就要初始化命令控制台了。初始化命令控制台主要由main_loop()函数完成。I 以下是跳转至main_loop的语句,它其实是start_armboot()函数的最后一句。for(;)main_loop();2.初始化命令控制台第48页,本讲稿共78页 main_loop()main_loop()这是一个永远不能

45、返回的函数。如果返回,这是一个永远不能返回的函数。如果返回,就意味着重新启动。它位于就意味着重新启动。它位于commoncommonmainmainc c文件中。文件中。mainloop()mainloop()函数主要任务是:处理命令控制台,函数主要任务是:处理命令控制台,包括初始化命令控制台、接收命令输入、自动延时等待包括初始化命令控制台、接收命令输入、自动延时等待或自动执行或自动执行bootboot,cmdcmd命令等。命令等。请注意,请注意,main_loop()main_loop()函数里会调用函数里会调用run_command(prun_command(p,0)0)函数,该函数将用户

46、输入的命令控制台指令交由函数,该函数将用户输入的命令控制台指令交由U-bootU-boot执行。执行。Main_loopMain_loop()()函数和函数和run_command()run_command()函数都位于函数都位于commoncommonmainmainc c文件中。文件中。第49页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件50如果用户在环境变量里设置了如果用户在环境变量里设置了bootcmdbootcmd的值,则的值,则UUbootboot会自动调用会自动调用bootmbootm启动内核。启动内核。bootm bootm的源代码中,最关键的函数是

47、的源代码中,最关键的函数是thekernelthekernel()()。thekernel()thekernel()函数是用来调用内核的。函数是用来调用内核的。P208 P208源程序摘自源程序摘自lib_armarmlinux.clib_armarmlinux.c:注意,注意,theKernel()theKernel()函数调用是永远不返回的。函数调用是永远不返回的。如果这个调用返回,则说明出错。如果这个调用返回,则说明出错。3.调用内核第50页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件51 U-boot的功能强大,它能够提供对许多外设的支持,如IDE硬盘、实时

48、时钟、开机画面等。但是,其最基本的任务是为内核执行做好准备,并启动内核。不论用户使用U-boot的目的有多大的不同,都必须先配置好PXA255、Flash、内存、串口还有其他GPIO引脚。配置好这些后Bootloader才可以正常运行。下面针对最小硬件系统,介绍如何配置PXA255、Flash、内存、串口及通用输入输出引脚,并编写U-boot代码。此外,由于U-boot支持网络功能,简单介绍如何配置网卡。8.3.3 U-boot移植原理第51页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件52 表8-8 U-boot目录结构1.U-boot的目录树结构文件夹文件夹 作

49、作 用用boardboard存放一些已有开发板有关的文件。比如存放一些已有开发板有关的文件。比如MakefileMakefile和和U-boot.ldsU-boot.lds等都和具体开发板的硬件和地址分配有关。等都和具体开发板的硬件和地址分配有关。commoncommon存放与体系结构有关的文件存放与体系结构有关的文件,实现各种命令的实现各种命令的C C文件。文件。cpucpuCPUCPU相关的文件。相关的文件。diskdiskDiskDisk驱动的分区处理代码。驱动的分区处理代码。docdoc说明文档。说明文档。driversdrivers通用设备驱动程序通用设备驱动程序,如各种网卡支持如各

50、种网卡支持CFICFI和和FLASHFLASH、串口和串口和USBUSB总线等。总线等。fsfs文件系统的支持,如文件系统的支持,如cramfscramfs、fatfat、fdosfdos、jffs2jffs2、registerfsregisterfs等。等。第52页,本讲稿共78页嵌入式系统课件嵌入式系统课件嵌入式系统课件嵌入式系统课件53文件夹文件夹 作作 用用includeinclude头文件,还有对各种硬件平台支持的汇编文件,系头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。统的配置文件和对文件系统支持的文件。Lib_armLib_arm 与与ARMAR

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

当前位置:首页 > 生活休闲 > 资格考试

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

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