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

上传人:石*** 文档编号:91099726 上传时间:2023-05-21 格式:PPT 页数:78 大小:3.93MB
返回 下载 相关 举报
第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、第8 章 处理器核心电路设计和底层软件移植第1页,本讲稿共78页8.1 最小硬件系统设计 嵌入式系统的具体硬件设计会随着设计应用系统的不同而有所差别。一般情况下,用户可以根据自己的要求,选用合适的微处理器类型,根据相应的接口电路,搭配不同类型的外设,构成不同用途、不同规模的应用系统。下面以PXA255处理器为例,说明由处理器与Flash和SDRAM等外围电路构成的最小硬件系统的设计原理。此最小硬件系统中的各个器件的连接关系参见图8-1。此外,为了便于开发调试,也可以增加网卡和串口部分的电路。第2页,本讲稿共78页嵌入式系统课件 嵌入式系统课件3图8-1 最小系统原理框图第3页,本讲稿共78页嵌

2、入式系统课件 嵌入式系统课件4 PXA2XX系列处理器的存储器接口支持各种存储器芯片,包括SDRAM、F1ash、SMROM、ROM、SRAM及与SRAM类似的可变延迟I0等。下面以PXA255处理器为例,说明嵌入式系统中最常用的SDRAM和Flash存储器与处理器的接口设计。如图8-2所示,PXA255处理器的存储器接口将其支持的存储器类型分为动态存储器和静态存储器两类。其中动态存储器分为4个块,静态存储器分为6个块。每块都有64MB的寻址空间,它的物理地址由片选信号(chip Select)控制。PXA255处理器的数据总线和地址总线通过缓冲区,分别和外部存储器的地址线、数据线相连。8.1

3、.1 系统存储器接口第4页,本讲稿共78页图 图8-2 PXA255 8-2 PXA255存储器控制接口框图 存储器控制接口框图第5页,本讲稿共78页嵌入式系统课件 嵌入式系统课件6 MD31:0是PXA255的数据总线;nS-DCSx是PXA255的动态存储器片选信号;nCSx是PXA255的静态存储器片选信号。第6页,本讲稿共78页嵌入式系统课件 嵌入式系统课件7 PXA2XX处理器往往使用大容量的片外存储器作为程序或数据存储器,例如采用外部Flash和SDRAM存储器。外部存储器有16位宽度的,也有32位宽度的,而PXA2XX的总线宽度是32位的,所以对于16位的外部存储器,必须进行“位

4、扩展”,即通过并联两块16位的外部存储器构成一个32位的存储系统。本书的开发板使用的Flash存储器和SDRAM存储器;采用这种“位扩展”的方法,使得系统数据总线工作在32位的模式下。下面就以异步静态存储器(Flash)和同步动态存储器(SDRAM)为例,说明PXA2XX系统的存储器扩展原理。第7页,本讲稿共78页嵌入式系统课件 嵌入式系统课件81异步静态存储器接口设计原理 如图8-3所示,采用两片Intel的E28F128J3A-150 Flash芯片,构成了32 MB的F1ash存储器。这里的Flash芯片是16位的,故采用两块并联的方法为处理器提供32位的数据总线支持。第8页,本讲稿共7

5、8页图8-3 Flash电路原理框图第9页,本讲稿共78页 由于处理器从Flash读出的数据是32位的,所以在对其寻址时,地址以4字节为单位递增,并且一次性从数据总线上得到4字节的数据。例如,对Ox00000000进行寻址,将从数据总线上获得x000000000 x00000003总共4字节的数据。因此,PXA255的地址线上的SA-A0和SA-A1不与芯片连接。对于这样的Flash外围电路,对FLASH的0 x00000001;(Ox00000002、0 x00000003)进行寻址,也能获得对地址0 x00000000进行寻址相同的效果。第10页,本讲稿共78页 对于每片芯片来说,数据的输

6、出是以16位为单位,即2字节。所以每片芯片地址按字对齐,地址线的A0引脚应连接到地。处理器启动时,从Ox00000000地址开始执行代码。为了从Flash引导系统,它必须接到静态存储器的块0(Bank0),所以它使用处理器的nCS0作为片选信号。F1ash的其他控制脚由处理器内部集成的Static Memory控制器进行控制。第11页,本讲稿共78页嵌入式系统课件 嵌入式系统课件122SDRAM存储器接口设计原理 下面采用两片Samsung的K4S281632C,构成了64MB的SDRAM存储器。如图8-4所示,由于SDRAM数据宽度为16位,采用两片并联的方法与PXA255处理器连接,提供3

7、2位的支持。第12页,本讲稿共78页图图8-4 SDRAM 8-4 SDRAM 电路原理框图电路原理框图第13页,本讲稿共78页嵌入式系统课件 嵌入式系统课件14 K4S281632C是4M16位4Bank的SDRAM存储器,总共有32MB的存储空间。处理器地址线的SA-A22和SA-A23引脚连接到SDRAM芯片的BA1:0引脚,决定4个片内Bank的选择;处理器地址线的SA-A10SA-A21和SA-A24则分别连接到SDRAM的A0A11、A12引脚。SDRAM连接到处理器动态存储器的第0块,故选用处理器的nSDCS0作为片选信号。SDRAM的其余引脚则由处理器内部集成的Dynamic

8、Memory控制器进行控制。第14页,本讲稿共78页嵌入式系统课件 嵌入式系统课件158.1.2 串口电路原理 串行通信只有两条信号线,所以电路比较简单。PXA255处理器有3个UART接口,此处选用全功能UART(FFUART)作为最小系统的调试串口。FFUART须使用GP34和GP39引脚的第二功能。它的连接电路很简单,只要通过一个RS232的收发器,完成TTLCMOS电平到RS232电平的转换即可(图85)。第15页,本讲稿共78页图 图8-5 8-5 串口电路原理 串口电路原理FF_TXD/GP39PXA255FF_RXD/GP34RS232Transceiver1 12 23 34

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

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

11、内存时钟内存时钟频率频率=33.6864MHz6864MHz*L*L2727、3232、3636、4040或或4545M:M:运行模式因子运行模式因子运行模式频率运行模式频率=内存时钟内存时钟频率频率*M*M11、2 2 或或44N: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的T

12、urbo模式时钟。L=27,M=4,N=1 Reserved 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位保留)。

13、它们的对应关系如下:2.CKEN寄存器第21页,本讲稿共78页LCD LCD设备 设备 CKEN16=1 CKEN16=1FICP FICP设备 设备 CKENl5=1 CKENl5=1I I2 2C C设备 设备 CKEN14=1 CKEN14=1 MMC MMC设备 设备 CKEN12=1 CKEN12=1USB USB设备 设备 CKEN1l=1 CKEN1l=1NSSP NSSP设备 设备 CKEN10=1 CKEN10=1I I2 2s s设备 设备 CKEN8=1 CKEN8=1BTUART BTUART、FFUIART FFUIART、STUART STUART、HWUART C

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

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

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

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

18、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将不能被初始化,软件启动将无法完成。MDCNFG有很多配置项,主要如P199表8-6中所列。2.MDCNFG寄存器

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

20、配置输出 只有两个引脚配置输出GPLRGPLR引脚状态寄存器 引脚状态寄存器 只读 只读,配置成 配置成0 x0000 0000 0 x0000 0000GPCRGPCR输出输出000 x0000 00000 x0000 0000GPSRGPSR输出输出110 x0000 00000 x0000 0000GRERGRER探测上升沿使得能够 探测上升沿使得能够0 x0000 00000 x0000 0000GFERGFER探测下降沿使得能够 探测下降沿使得能够0 x0000 00000 x0000 0000GEDRGEDR探测上升下降沿 探测上升下降沿0 x0000 00000 x0000 00

21、00GAFRGAFR第二功能寄存器第二功能寄存器使用了其中 使用了其中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。第31页,本讲稿共78页8.3 最小硬件系统与Bootloader Bootloade

22、r是系统加电后运行的第一段软件代码,Bootloader的最终目标就是正确地调用内核来执行。因此,Bootloader只需要初始化CPU、Flash、SDRAM,让Linux内核得以运行即可。本节介绍的Bootloader的任务框架就是针对PXA255的最小硬件系统来进行初始化的。其他设备的初始化,完全可以交由内核完成。第32页,本讲稿共78页 在嵌入式系统中,内核映像、根文件系统映像都存储 在嵌入式系统中,内核映像、根文件系统映像都存储在 在ROM ROM或 或Flash Flash中,直接在固态存储设备中运行程序的速 中,直接在固态存储设备中运行程序的速度很慢。因此,度很慢。因此,Boot

23、loader Bootloader的工作之一就是将内核映像 的工作之一就是将内核映像与根文件系统映像加载到 与根文件系统映像加载到RAM RAM中,然后使之运行。中,然后使之运行。由于 由于Bootloader Bootloader的实现依赖于 的实现依赖于CPU CPU的体系结构,因此,的体系结构,因此,大多数 大多数Bootloader Bootloader的执行都可分为阶段 的执行都可分为阶段1 1和阶段 和阶段2 2两大部 两大部分。依赖于 分。依赖于CPU CPU体系结构的代码,比如设备初始化代码等,体系结构的代码,比如设备初始化代码等,通常都放在阶段 通常都放在阶段1 1执行,而且

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

25、ootloader的阶段2执行通常包括以下步骤(以执行的先后顺序):初始化本阶段要使用到的硬件设备;检测系统内存映射(Memor_y map);将内核映像和根文件系统映像从Flash 上读到RAM空间中;为内核设置启动参数;启动内核。第35页,本讲稿共78页嵌入式系统课件 嵌入式系统课件36 对于PXA系列处理器,U-boot的阶段1代码在U-boot源代码的cpupxastart.S文件里,这是一个汇编代码文件。8.3.1 U-boot启动阶段1的处理过程第36页,本讲稿共78页嵌入式系统课件 嵌入式系统课件37 这是Bootloader一开始就执行的操作,其目的是为阶段2的执行以及随后的内

26、核的执行准备好一些基本的硬件环境。通常包括以下步骤(以执行的先后顺序):屏蔽所有的中断。在Bootloader中通常不使用中断,因此在Bootloader的执行全过程中可以屏蔽中断。中断屏蔽可以通过写CPU的中断屏蔽寄存器或状态寄存器(比如ARM的CPSR寄存器)来完成。设置CPU的速度和时钟频率。RAM初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。初始化LED。典型地,通过GPIO来驱动LED,其目的是表明系统的状态是OK还是Error。如果板上没有LED,那么也可以通过初始化UART向串口打印Bootloader 的Logo字符信息来完成这一点。关闭CPU内部

27、指令数据Cache。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 为了获得更快的执行速度,通常把阶段2代码加载到RAM空间中来执行,因此必须为加载Bootloader的阶段2代码准备好一段可用的RAM空间范围。通常,阶段2代码执行需要使用堆栈,因此在考虑空间大小时,除了阶段2代码可执行

28、映像的大小外,还必须把堆栈空间也考虑进来。此外,空间大小最好是内存页面大小(通常是4KB)的倍数。2.为加载阶段2代码准备RAM空间第39页,本讲稿共78页 一般而言,512 KB的RAM空问已经足够了。具体的地址范围可以任意安排,比如U-boot就将它的阶段2可执行映像安排到从系统RAM的顶端地址开始的512 KB空间内执 行,即RAM末尾-512KB至RAM末尾。第40页,本讲稿共78页嵌入式系统课件 嵌入式系统课件41 复制时要确定两点:Bootloader可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段1所占空间较小,许多Bootloader程序直接将整个Bootload

29、er代码复制到内存空间。复制的目标地址。本书所移植的U-boot的复制目标地址为Oxa3f80000,用TEXT_BASE表示。U-boot用以下代码来确定这两个重要信息,见P205。3.复制阶段2代码到内存中第41页,本讲稿共78页嵌入式系统课件 嵌入式系统课件42 复制时要确定两点:Bootloader可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段1所占空间较小,许多Bootloader程序直接将整个Bootloader代码复制到内存空间。复制的目标地址。本书所移植的U-boot的复制目标地址为Oxa3f80000,用TEXT_BASE表示。U-boot用以下代码来确定这两

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

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

32、 嵌入式系统课件46 阶段2的代码通常用C语言来实现,以便于实现更复杂的功能和取得更好的代码可读性和可移植性。在U-bootl.1.2中,从阶段1到阶段2的跳转是通过“ldr pc,_start_armboot”命令直接跳转的。Start_armboot函数用C语言编写,位于lib_armboard.c中。8.3.2 U-boot启动阶段2的处理过程第46页,本讲稿共78页嵌入式系统课件 嵌入式系统课件47 本阶段要使用到的硬件设备通常包括:初始化至少一个串口,以便和终端用 户进行IO输出信息。初始化FrameBuffer、Flash、网卡、计时器等。在初始化这些设备之前,也可以重新把LED灯

33、点亮,以表明U-boot已经进入main()函数执行。设备初始化完成后,可以输出一些打印信息,如程序名称字符串、版本号等。1.初始化本阶段要使用到的硬件设备第47页,本讲稿共78页嵌入式系统课件 嵌入式系统课件48 完成初始化阶段2用到的硬件之后,就要初始化命令控制台了。初始化命令控制台主要由main_loop()函数完成。I 以下是跳转至main_loop的语句,它其实是start_armboot()函数的最后一句。for(;)main_loop();2.初始化命令控制台第48页,本讲稿共78页 main_loop()这是一个永远不能返回的函数。如果返回,就意味着重新启动。它位于common

34、mainc文件中。mainloop()函数主要任务是:处理命令控制台,包括初始化命令控制台、接收命令输入、自动延时等待或自动执行boot,cmd命令等。请注意,main_loop()函数里会调用run_command(p,0)函数,该函数将用户输入的命令控制台指令交由U-boot执行。Main_loop()函数和run_command()函数都位于commonmainc文件中。第49页,本讲稿共78页嵌入式系统课件 嵌入式系统课件50如果用户在环境变量里设置了bootcmd的值,则Uboot会自动调用bootm启动内核。bootm的源代码中,最关键的函数是thekernel()。thekern

35、el()函数是用来调用内核的。P208源程序摘自lib_armarmlinux.c:注意,theKernel()函数调用是永远不返回的。如果这个调用返回,则说明出错。3.调用内核第50页,本讲稿共78页嵌入式系统课件 嵌入式系统课件51 U-boot的功能强大,它能够提供对许多外设的支持,如IDE硬盘、实时时钟、开机画面等。但是,其最基本的任务是为内核执行做好准备,并启动内核。不论用户使用U-boot的目的有多大的不同,都必须先配置好PXA255、Flash、内存、串口还有其他GPIO引脚。配置好这些后Bootloader才可以正常运行。下面针对最小硬件系统,介绍如何配置PXA255、Flas

36、h、内存、串口及通用输入输出引脚,并编写U-boot代码。此外,由于U-boot支持网络功能,简单介绍如何配置网卡。8.3.3 U-boot移植原理第51页,本讲稿共78页嵌入式系统课件 嵌入式系统课件52 表8-8 U-boot目录结构1.U-boot的目录树结构文件夹 文件夹 作 作 用 用board board存放一些已有开发板有关的文件。比如 存放一些已有开发板有关的文件。比如Makefile Makefile和 和U-boot.lds U-boot.lds等都和具体开发板的硬件和地址分配有关。等都和具体开发板的硬件和地址分配有关。common common 存放与体系结构有关的文件

37、存放与体系结构有关的文件,实现各种命令的 实现各种命令的C C文件。文件。cpu cpu CPU CPU相关的文件。相关的文件。disk disk Disk Disk驱动的分区处理代码。驱动的分区处理代码。doc doc 说明文档。说明文档。drivers drivers 通用设备驱动程序 通用设备驱动程序,如各种网卡支持 如各种网卡支持CFI CFI和 和FLASH FLASH、串口和 串口和USB USB总线等。总线等。fs fs 文件系统的支持,如 文件系统的支持,如cramfs cramfs、fat fat、fdos fdos、jffs2 jffs2、registerfs regist

38、erfs等。等。第52页,本讲稿共78页嵌入式系统课件 嵌入式系统课件53文件夹 文件夹 作 作 用 用include include头文件,还有对各种硬件平台支持的汇编文件,系 头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。统的配置文件和对文件系统支持的文件。Lib_arm Lib_arm 与 与ARM ARM体系结构相关的一些公用代码。体系结构相关的一些公用代码。net net 存放与网络有关的代码、存放与网络有关的代码、BOOTP BOOTP协议、协议、TFTP TFTP协议、协议、RARP RARP协议和 协议和NFS NFS文件系统的实现。文件系统的

39、实现。tools tools 创建 创建S-Record S-Record格式文件和 格式文件和U-boot images U-boot images工具。工具。第53页,本讲稿共78页 为一个新的平台移植U-boot,首先要做的工作就是在board目录下增加一个新的开发板的目录,例如,可以为所用的PXA255开发板建立一个名为xmu255的目录。I xmu255目录需要有以下几个文件:config.mk、flash.c、Makefile、memsetup.s、u-boot.1ds及 xmu255.c。其中,config.mk是用来记录U-boot复制到内存的基址,flash.c用来配置F1a

40、sh,memsetup.S用来初始化配置内存,u-boot.1ds是内核链接器的脚本文件。Xmu255.c用于开发板的初始化。除了新建一个开发板的目录并编写该目录下的相关文件外,还需要在include/configs目录下增加一个新平台的配置文件。该配置文件和硬件系统配置息息相关,它需记录新平台的所有配置参数。以PXA255最小硬件系统为例,详细介绍相关的配置细节。第54页,本讲稿共78页嵌入式系统课件 嵌入式系统课件55 根据8.2.1小节对CCCR核心时钟配置寄存器的分析,该寄存器可配置为:#define CFG_CCCR_VAL 0 x00000161/*100 MHz memory,4

41、00 MHz CPU,400 Turbo*/由于CKEN外设时钟使能寄存器赋值时,必须为FFUART设备打开时钟,所以CKEN=Ox00000040。故有:#define CFG_CKEN_VAL 0 x00000040/*FFUART and STUART enabled*/由于Bootloader在启动的第一阶段还没有初始化内存,不支持堆栈。所以要屏蔽所有的中断。中断使能寄存器全部位写0。#define CFG_ICMR_VAL 0 x000000002.U-boot中的处理器相关配置第55页,本讲稿共78页嵌入式系统课件 嵌入式系统课件56根据8.2.1小节对Flash、SDRAM和网卡

42、的分析,对MSCO赋值如下:#define CFG_MSC0_VAL 0 x7ff87ff0/*配置异步静态存储配置寄存器*/对MDCNFG外寄存器赋值如下:#define CFG_MDCNFG_VAL 0 x000019C9/*配置同步动态随机存储器*/3.U-boot中的处理器存储器控制器配置第56页,本讲稿共78页嵌入式系统课件 嵌入式系统课件57见P210.U-boot中的处理器GPI和串口配置第57页,本讲稿共78页嵌入式系统课件 嵌入式系统课件58在Bootloader启动成功之后,以往,开发者只能通过串口下载数据,U-Boot是一款支持网络功能的Bootloader,如果能够利用

43、网络下载数据,开发者的开发速度将大大地提高。从图8-6可以看到,网卡的片选信号是nCSl,nCSl的静态片选信号被映射到地址Ox0400 0000,而本书使用的的网卡,其I/O base address初始值是Ox300h。所以基址就是:0 x0400 0300-Ox0400 0000+Ox0000 0300,即:#define CS8900_BASE 0 x04000300 这块网卡是16位的数据带宽,于是有:#define CS8900_BUS16 15.U-boot的网卡参数配置第58页,本讲稿共78页嵌入式系统课件 嵌入式系统课件59 为了让U-boot支持更多的命令,可以在宏定义中,

44、让U-boot编译更多的实用命令。见P211 6.声明控制台程序第59页,本讲稿共78页嵌入式系统课件 嵌入式系统课件60 生成U-boot映像之前,必须在相应的文件中加入编译选项,它们是MAKEALL和Makefile。修改MAKEALL。在XScale处申明XMU255板使用的是XScale的CPU。见P213,增加命令:xsengine xmu255 修改Makefile。增加xmu255_cofig的编译说明。见P213,增加命令:xmu255_config:unconfig./mkconfig$(:_config=)arm pxa xmu255 运行三个命令(P213)可以得到映像文

45、件。生成的映像文件的文件名是U-boot.bin,它位于U-boot-1.1.2根目录内。7.生成U-boot映像第60页,本讲稿共78页嵌入式系统课件 嵌入式系统课件61 U-boot的命令十分强大,在 U-boot移植完后,可以利用 U-boot的强大功能进行处理器外围设备的硬件调试。本节介绍如何使用U-boot调试硬件(U-boot命令的详细介绍参见第6章)。8.3.4 基于U-boot的硬件调试第61页,本讲稿共78页嵌入式系统课件 嵌入式系统课件62 PXA255的片内集成了一个实时时钟,物理地址是Ox40900000。处理器上电时,该实时时钟就开始以秒计时。接下来,就使用U-boo

46、t命令读该实时时钟寄存器。读取实时时钟用到的主要命令是md(读取内存命令)。=md.1 40900000 11.读片内实时时钟第62页,本讲稿共78页嵌入式系统课件 嵌入式系统课件63 CS8900网卡芯片在复位之后,需向OxOa和0 xOb两个地址交替写入任意数据,以完成网卡的初始化。在初始化之后,在0 xOc和0 xOd两个地址可以读出该网卡的ID:630E。接下来,使用U-boot试着读出该网卡的ID,看看是否为630E。由于网卡在本书使用的开发板上由nCSl片选信号控制,所以对应着的物理地址就是ox04000000,而CS8900A网卡的片内寄存器地址的偏移量是Ox300,所以网卡ID

47、所对应的地址应当是Ox0400 030c和0 x0400 030d。读取ID用到的命令是mm(修改内存命令),其具体操作如下:=mm.b 0400030a2.调试网卡第63页,本讲稿共78页嵌入式系统课件 嵌入式系统课件64 在调试外设或内核的时候,有时会需要修改GPIO的设置,U-boot的命令提供了一个简单快捷的方法去修改这些配置。首先查看当前GPIO寄存器的配置。其值就是在移植U-boot时设置的,命令如下:=md 40e00000 1c 比如,希望把GPIPO从输人类型改成输出类型。那么就需要修改其方向寄存器(01),它对应GPDR0的最低位。GPDRO的物理地址是Ox40e0000c

48、,因此,需要把GPDR0从0 x00008000改为Ox00008001,通过运行以下命令来实现:=mm.1 40e0000c 40e0000c:00008000?000080013.调试GPIO寄存器的配置第64页,本讲稿共78页嵌入式系统课件 嵌入式系统课件65 需要注意的是,GPIO的修改必须很慎重。因为其中的某些寄存器控制着重要外部设备,例如串口和SDRAM。一次错误的配置,将会导致整个系统的崩溃。不过,这里所做的修改都是一次性的修改。即如果重新启动系统,则所有的配置都会恢复原样。例如,本节对GPDR0所作的的配置,在重启之后,会恢复成0 x00008000。第65页,本讲稿共78页8

49、.4 最小硬件系统与Linux 2.6内核移植 Linux 2.6.10的内核在/arch/arm/mach-pxa目录中已有XScale CPU的支持,因此,对于一块新的XScale开发板的移植只须做板级的移植开发就可以。XScale开发板的板级内核移植比较简单,它的主要工作就是在/arch/arm/mach-pxa目录下为新的开发板建立对应的平台文件,编写此平台硬件的include文件,修改相关内核配置选项以及新的硬件驱动的编写等。内核源码包目录下arch/arm文件夹所包含文件、文件夹的相关信息见P216。第66页,本讲稿共78页嵌入式系统课件 嵌入式系统课件67 每个硬件平台都需要一个

50、描述机器的struct machine_desc结构变量。通常,在内核移植时,可使用一些宏定义填写machine_desc结构体的内容。这些宏定义以MACHINE_START宏开始,以MACHINE_END宏结束。对于前述最小系统设计的宏描述如下:MACHINE_START(XMU255,”XMU XScale Development Platform”)BOOT_MEM(0 xa00000000,0 x40000000,0 xfc000000)BOOT_PARAMS(0 xa00000100)MAPIO(xmu255_map_io)INITIRQ(xmu255_init_irq).timer

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

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

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

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