第8章处理器核心电路设计及底层软件移植.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 处理器 核心 电路设计 底层 软件 移植
- 资源描述:
-
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,嵌入式系统,课件,*,第八章,处理器核心电路设计和 底层软件移植,本章要点,处理器与Flash、SDRAM等构成的最小硬件,系统电路,U,boot移植,利用U,boot调试硬件,移植Linux26内核,8.1,最小硬件系统设计,嵌入式系统的具体硬件设计会随着设计应用系统的不同而有所差别。一般情况下,用户可以根据自己的要求,选用合适的微处理器类型,根据相应的接口电路,搭配不同类型的外设,构成不同用途、不同规模的应用系统。下面以,PXA255,处理器为例,说明由处理器与,Flash,和,SDRAM,等外围电路构成的最小硬件系统的设计原理。此最小硬件系统中的各个器件的连接关系参见图,8-1,。此外,为了便于开发调试,也可以增加网卡和串口部分的电路。,图,8-1,最小系统原理框图,3,嵌入式系统,课件,PXA2XX,系列处理器的存储器接口支持各种存储器芯片,包括,SDRAM,、,F1ash,、,SMROM,、,ROM,、,SRAM,及与,SRAM,类似的可变延迟,I,0,等。下面以,PXA255,处理器为例,说明嵌入式系统中最常用的,SDRAM,和,Flash,存储器与处理器的接口设计。如图,8-2,所示,,PXA255,处理器的存储器接口将其支持的存储器类型分为动态存储器和静态存储器两类。其中动态存储器分为,4,个块,静态存储器分为,6,个块。每块都有,64MB,的寻址空间,它的物理地址由片选信号,(chip Select),控制。,PXA255,处理器的数据总线和地址总线通过缓冲区,分别和外部存储器的地址线、数据线相连。,8.1.1,系统存储器接口,4,嵌入式系统,课件,图,8-2 PXA255,存储器控制接口框图,MD31:0,是,PXA255,的数据总线,;,nS-DCSx,是,PXA255,的动态存储器片选信号,;,nCSx,是,PXA255,的静态存储器片选信号。,6,嵌入式系统,课件,PXA2XX,处理器往往使用大容量的片外存储器作为程序或数据存储器,例如采用外部,Flash,和,SDRAM,存储器。外部存储器有,16,位宽度的,也有,32,位宽度的,而,PXA2XX,的总线宽度是,32,位的,所以对于,16,位的外部存储器,必须进行,“,位扩展,”,,即通过并联两块,16,位的外部存储器构成一个,32,位的存储系统。本书的开发板使用的,Flash,存储器和,SDRAM,存储器;采用这种,“,位扩展,”,的方法,使得系统数据总线工作在,32,位的模式下。,下面就以异步静态存储器,(Flash),和同步动态存储器,(SDRAM),为例,说明,PXA2XX,系统的存储器扩展原理。,7,嵌入式系统,课件,1,异步静态存储器接口设计原理,如,图,8-3,所示,采用两片,Intel,的,E28F128J3A-150 Flash,芯片,构成了,32 MB,的,F1ash,存储器。这里的,Flash,芯片是,16,位的,故采用两块并联的方法为处理器提供,32,位的数据总线支持。,8,嵌入式系统,课件,图,8-3 Flash,电路原理框图,由于处理器从,Flash,读出的数据是,32,位的,所以在对其寻址时,,地址以,4,字节为单位递增,,并且一次性从数据总线上得到,4,字节的数据。例如,对,Ox00000000,进行寻址,将从数据总线上获得,x00000000,0 x00000003,总共,4,字节的数据。因此,,PXA255,的地址线上的,SA-A0,和,SA-A1,不与芯片连接。,对于这样的,Flash,外围电路,对,FLASH,的,0 x00000001,;,(Ox00000002,、,0 x00000003),进行寻址,也能获得对地址,0 x00000000,进行寻址相同的效果。,对于每片芯片来说,数据的输出是以,16,位为单位,即,2,字节。所以每片芯片地址按字对齐,地址线的,A0,引脚应连接到地。,处理器启动时,从,Ox00000000,地址开始执行代码。为了从,Flash,引导系统,它必须接到静态存储器的块,0(Bank0),,所以它使用处理器的,nCS0,作为片选信号。,F1ash,的其他控制脚由处理器内部集成的,Static Memory,控制器进行控制。,2,S,DRAM存储器接口设计原理,下面采用两片,Samsung,的,K4S281632C,,构成了,64MB,的,SDRAM,存储器。如,图,8-4,所示,由于,SDRAM,数据宽度为,16,位,采用两片并联的方法与,PXA255,处理器连接,提供,32,位的,支持。,12,嵌入式系统,课件,图,8-4 SDRAM,电路原理框图,K4S281632C,是,4M,16,位,4Bank,的,SDRAM,存储器,总共有,32MB,的存储空间。处理器地址线的,SA-A22,和,SA-A23,引脚连接到,SDRAM,芯片的,BA1:0,引脚,决定,4,个片内,Bank,的选择;处理器地址线的,SA-A10,SA-A21,和,SA-A24,则分别连接到,SDRAM,的,A0,A11,、,A12,引脚。,SDRAM,连接到处理器动态存储器的第,0,块,故选用处理器的,nSDCS0,作为片选信号。,SDRAM,的其余引脚则由处理器内部集成的,Dynamic Memory,控制器进行控制。,14,嵌入式系统,课件,8.1.2,串口电路原理,串行通信只有两条信号线,所以电路比较简单。,PXA255,处理器有,3,个,UART,接口,此处选用全功能,UART(FFUART),作为最小系统的调试串口。,FFUART,须使用,GP34,和,GP39,引脚的第二功能。它的连接电路很简单,只要通过一个,RS232,的收发器,完成,TTL,CMOS,电平到,RS232,电平的转换即可,(,图,8,5),。,15,嵌入式系统,课件,图,8-5,串口电路原理,FF_TXD/,GP39,PXA255,FF_RXD/,GP34,RS232,Transceiver,1,2,3,4,5,8.2,最小硬件系统的配置,8.2.1,处理器的配置,系统上电之后,软件引导代码首先要根据硬件设计初始化,PXA255,处理器。所以,对处理器的配置是否正确直接决定系统软件能否正常工作。,对,PXA255,处理器的配置将使用到三个非常重要寄存器,分别是,CCCR,、,CKEN,和,ICMR,寄存器。它们的定义和作用如表,4-1,所列。,表,8-1 CCCR,、,CKEN,和,ICMR,的定义和作用,寄存器名称,定 义,作 用,CCR,核心时钟配置寄存器,控制着内存、,Run,模式和,Turbo,模式的时钟频率,CKEN,外设时钟使能寄存器,节电,ICMR,中断使能寄存器,屏蔽中断,CCCR(Core,Clock Configuration Register)寄存器控制着内存、LCD、DMA控制器所使用的时钟。这些时钟都是由处理器的3,.,6864MHz钟振倍频上去的,控制倍频比例的参数有三个,见表,4-,2。,1.CCCR,寄存器,表,8-,2,CCCR,控制倍频比例的参数,名 称,使用方法,取值空间,L:,内存,频率,因子,内存时钟,频率,=,3,.,6864MHz,*L,27,、,32,、,36,、,40,或,45,M:,运行模式因子,运行模式,频率,=,内存时钟,频率,*,M,1,、,2,或,4,N:Turbo,模式因子,Turbo,模式,频率,=,运行模式,频率,*,N,1.0,、,1.5,、,2.0,或,3.0,19,嵌入式系统,课件,本书使用的开发板是,1.3V,电源供电,系统时钟全部由,CPU,提供,最快可以达到,100MHz,的内存时钟,,400MHz,的运行时钟和,400MHz,的,Turbo,模式时钟。,L=27,M=4,N=1,Reserved CCCR31:10,=0,N=1,CCCR9:7,=01,0,(,未用,),M=4,CCCR6:5,=11,L=27,CCCR4:0,=00001,最终的,CCCR,寄存器的值应当配置为,0 x00000161,注:,CCCR,中,N,、,M,、,L,的位定义对应其取值序号,20,嵌入式系统,课件,CKEN(Clock,Enable Register),寄存器是一个控制外部设备时钟使能的寄存器。它对嵌入式系统的电量消耗有着决定性的作用,;对于那些没有用到的外设,应当关闭其时钟供应。,CKEN,的,O,16,位控制着,13,种外设的时钟使能,(,其中有,4,位保留,),。它们的对应关系如下:,2.CKEN,寄存器,21,嵌入式系统,课件,LCD,设备,CKEN16=1,FICP,设备,CKENl5=1,I,2,C,设备,CKEN14=1,MMC,设备,CKEN12=1,USB,设备,CKEN1l=1,NSSP,设备,CKEN10=1,I,2,s,设备,CKEN8=1,BTUART,、,FFUIART,、,STUART,、,HWUART CKEN7:5=111,SSP,设备,CKEN4=1,AC97,、,SSP,设备,CKEN3:2=11,其余,=0,实际上,最小硬件系统只需要调试串口,故只需要为,FFUART,提供时钟。,CKEN,只需要被设置成,0 x00000040,。实际使用中应根据具体需要,开启某种外设的时钟。,ICMR(Interrupt,Controller Mask Register)寄存器是中断使能寄存器。1代表使能,0代表屏蔽。,一般来说,PXA255处理器在Bootloader启动阶段必须屏蔽所有中断,所以ICMR寄器应当设置为0 x00000000。,3.ICMR,寄存器,23,嵌入式系统,课件,搭建嵌入式系统时,存储器的配置是最重要的,也是最基础的,。,上电之后,,PXA255,处理器就开始从物理的,0 x00000000,读第一条指令,这第一条指令,就,是存储在,Flash,里的。如果,Flash,没有配置正确,,CPU,将取不到正确的指令,。,同样,,Bootloader,启动时一般会将自身复制到,SDRAM,,然后在,SDRAM,里运行。因,此,只有,SDRAM,配置正确,,Bootloader,的启动流程才能顺利执行,。,Flash,和,SDRAM,的配置同属于存储器配置,考虑的对象和,涉及的,寄存器比较相近,。,存储器的配置涉及两个比较重要的,寄存器,见表,4-3,8.2.2,Flash,SDRAM,的配置,24,嵌入式系统,课件,表,8-3,与存储器配置相关的寄存器,寄存器名称,定 义,作用,MSCx,异步静态存储配置寄存器,向,CPU,传递存储器操作的参数,MDCNFG,同步动态随机存储器的交互寄存器,向,CPU,传递,SDRAM,的参数,MSCx(Asynchronous,Static Memory Control Registers),寄存器是存储器控制功能中极其重要的寄存器,它记录了,存储器的性质、位宽和操作,的实际参数。,MSCx,一般用来控制外部静态的存储器,在本书所用的开发板上,它用于控制,Flash,和网卡。,MSCx,寄存器总共有三个,它们分别是,MSCO,、,MSCl,和,MSC2,。每个寄存器最多可以控制两个外部静态存储器块,这三个寄存器总共可以控制多达,6,个外部静态存储器块,nCS0:1,、,nCS2:3,、,nCS4:5,。只有,MSCx,寄存器配置正确,其对应的片选信号才可以使能相应的静态存储器访问。,MSCx,十分重要,因为它记录了有关于存储器的几个重要参数,见,P197,表,8-4,所列。,1,MSCx,寄存器,26,嵌入式系统,课件,Flash,连接到,nCS0,,如,P198,图,8-6,所示,网卡采用,nCSl,(,即,SA,一,(2SI#),片选信号。,可以使用,P198,表,8-5,的配置清单设置,MCS0,,以正确访问,Flash,存储器和网卡的,I,0,地址空间。,27,嵌入式系统,课件,MDCNFG(SDRAM MDCNFG Register),寄存器控制,PXA255,处理器的同步动态随机存储器的操作参数,如果这些配置不正确,,SDRAM,将不能被初始化,软件启动将无法完成。,MDCNFG,有很多配置项,主要如,P199,表,8-6,中所列。,2.MDCNFG,寄存器,28,嵌入式系统,课件,PXA255,处理器有,84,个通用,(General-,Purpose)I,O,口。每一个,GPIO,引脚既可以当做普通的,I,O,用,也可以把它们配置成具有第二功能的引脚。,GPIO,的配置与,PXA255,处理器所接的外部设备有关。例如,本书所用的开发板的串口和网卡用到一些相关的,GPIO,寄存器,因此,在系统启动时应对它们进行正确配置。,GPIO,的配置主要由几个寄存器完成,见表,-,。,4.2.3,GPIO和串口的配置,29,嵌入式系统,课件,表,-,完成,GPIO,配置的相关寄存器,寄存器名称,定 义,配置方法,GPDR,方向寄存器,只有两个引脚配置输出,GPLR,引脚状态寄存器,只读,配置成,0 x0000 0000,GPCR,输出,0,0 x0000 0000,GPSR,输出,1,0 x0000 0000,GRER,探测上升沿使得能够,0 x0000 0000,GFER,探测下降沿使得能够,0 x0000 0000,GEDR,探测上升下降沿,0 x0000 0000,GAFR,第二功能寄存器,使用了其中,3,个引脚第二功能,由,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,。,8.3,最小硬件系统与B,oo,t,lo,ader,Bootloader,是系统加电后运行的第一段软件代码,,Bootloader,的最终目标就是正确地调用内核来执行。因此,,Bootloader,只需要初始化,CPU,、,Flash,、,SDRAM,,让,Linux,内核得以运行即可。本节介绍的,Bootloader,的任务框架就是针对,PXA255,的最小硬件系统来进行初始化的。其他设备的初始化,完全可以交由内核完成。,在嵌入式系统中,内核映像、根文件系统映像都存储在,ROM,或,Flash,中,直接在固态存储设备中运行程序的速度很慢。因此,,Bootloader,的工作之一就是将内核映像与根文件系统映像加载到,RAM,中,然后使之运行。,由于,Bootloader,的实现依赖于,CPU,的体系结构,因此,大多数,Bootloader,的执行都可分为阶段,1,和阶段,2,两大部分。依赖于,CPU,体系结构的代码,比如设备初始化代码等,通常都放在阶段,1,执行,而且通常都用汇编语言来实现,以达到短小精悍的目的。而阶段,2,的代码则通常用,C,语言来实现,这样可以实现复杂的功能,而且代码会具有更好的可读性和可移植性。,Bootloader,的阶段,1,执行通常包括以下步骤,(,以执行的先后顺序,),:,硬件设备初始化;,为加载,Bootloader,的阶段,2,代码准备,RAM,空间;,复制,Bootloader,的阶段,2,代码到,RAM,空,间中;,设置好堆栈;,跳转到阶段,2,代码的,C,入口点。,Bootloader,的阶段,2,执行通常包括以下步骤,(,以执行的先后顺序,),:,初始化本阶段要使用到的硬件设备;,检测系统内存映射,(,Memor_y,map),;,将内核映像和根文件系统映像从,Flash,上读到,RAM,空间中;,为内核设置启动参数;,启动内核。,对,于,PXA,系列处理器,,U-boot,的阶段,1,代码在,U-boot,源代码的,cpu,pxa,start.S,文件里,这是一个汇编代码文件。,8.3.1,U,-,b,oo,t启动阶段1的处理过程,36,嵌入式系统,课件,这是,Bootloader,一开始就执行的操作,其目的是为阶段,2,的执行以及随后的内核的执行准备好一些基本的硬件环境。通常包括以下步骤,(,以执行的先后顺序,),:,屏蔽所有的中断。在,Bootloader,中通常不使用中断,因此在,Bootloader,的执行全过程中可以屏蔽中断。中断屏蔽可以通过写,CPU,的中断屏蔽寄存器或状态寄存器,(,比如,ARM,的,CPSR,寄存器,),来完成,。,设置,CPU,的速度和时钟频率。,RAM,初始化。包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。,初始化,LED,。典型地,通过,GPIO,来驱动,LED,,其目的是表明系统的状态是,OK,还是,Error,。如果板上没有,LED,,那么也可以通过初始化,UART,向串口打印,Bootloader,的,Logo,字符信息来完成这一点,。,关闭,CPU,内部指令数据,Cache,。,1.,基本的硬件初始化,37,嵌入式系统,课件,各个步骤具体实现代码如下:,(a),配置中断。,P202,(b),配置复位控制器。,P202-203,(c),配置系统时钟。,P203,(d),配置时钟管理寄存器。,P203,(e),配置,RS232,串口。,P203,(,f)CPU,初始化。,P203-204,(,h)RAM,初始化。,P203-204,为了获得更快的执行速度,,通常把阶段,2,代码加载到,RAM,空间中来执行,因此必须为加载,Bootloader,的阶段,2,代码准备好一段可用的,RAM,空间范围。,通常,阶段,2,代码执行需要使用堆栈,因此在考虑空间大小时,除了阶段,2,代码可执行映像的大小外,还必须把堆栈空间也考虑进来。此外,空间大小最好是内存页面大小,(,通常是,4KB),的倍数。,2.,为加载阶段2代码准备RAM空间,39,嵌入式系统,课件,一般而言,,512 KB,的,RAM,空问已经足够了。具体的地址范围可以任意安排,比如,U-boot,就将它的阶段,2,可执行映像安排到从系统,RAM,的顶端地址开始的,512 KB,空间内执 行,即,RAM,末尾,-512KB,至,RAM,末尾。,复制时要确定两点,:,Bootloader,可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段,1,所占空间较小,许多,Bootloader,程序直接将整个,Bootloader,代码复制到内存空间。,复制的目标地址。本书所移植的,U-boot,的复制目标地址为,Oxa3f80000,,用,TEXT_BASE,表示。,U-boot,用,以下代码来确定这两个重要信息,见,P205,。,3.,复制阶段2代码到内存中,41,嵌入式系统,课件,复制时要确定两点,:,Bootloader,可执行映像在固态存储设备的存放起始地址和终止地址。通常由于阶段,1,所占空间较小,许多,Bootloader,程序直接将整个,Bootloader,代码复制到内存空间。,复制的目标地址。本书所移植的,U-boot,的复制目标地址为,Oxa3f80000,,用,TEXT_BASE,表示。,U-boot,用,以下代码来确定这两个重要信息,见,P205,。,4.,复制阶段2代码到内存中,42,嵌入式系统,课件,堆栈指针的设置是为了执行,C,语言代码作好准备。经过上述这些执行步骤后,系统的物理内存布局如,P206,图,8-9,所示。其中,,_TEXT_BASE,即,Bootloader,代码在内存空间的起始地址,,_bss_start,即堆栈的起始地址。,堆栈指针设置代码如,P206,:,4.,设置堆栈指针,43,嵌入式系统,课件,Stage1,为,Stage,可执行映像准备的,RAM,地址范围,大小为,1MB,(,blank,),Ramdisk,(,blank,),内核映像,(,blank,),Bootloader,FLASH,地址空间,RAM,地址空间,_TEXT_BASE,_,bss_start,Bootlooder,代码在内存空间的起始地址,堆栈的起始地址,图,8-9,在上述一切就绪后,就可以跳转到,Boot-loader,的阶段,2,去执行了。比如,在,ARM,系统中,这可以通过修改,PC,寄存器为合适的地址来实现。因为此时,在,RAM,中已经有了,Boot-loader,的一份完全一样的复制。跳转的实现代码如,P207,:,5.,跳转到阶段2代码的C入口点,45,嵌入式系统,课件,阶段,2,的代码通常用,C,语言来实现,以便于实现更复杂的功能和取得更好的代码可读性和可移植性。,在,U-bootl.1.2,中,从阶段,1,到阶段,2,的跳转是通过,“,ldr,pc,,,_,start_armboot,”,命令直接跳转的。,Start_armboot,函数用,C,语言编写,位于,lib_arm,board.c,中。,8.3.2,U,-,boot启动阶段2的处理过程,46,嵌入式系统,课件,本阶段要使用到的硬件设备通常包括,:,初始化至少一个串口,以便和终端用,户进行,I,O,输出信息。,初始化,FrameBuffer,、,Flash,、网卡,、,计时器等,。,在初始化这些设备之前,也可以重新把,LED,灯点亮,以表明,U-boot,已经进入,main(),函,数执行。,设备初始化完成后,可以,输出一些打印信息,如程序名称字符串、版本号等。,1.,初始化本阶段要使用到的硬件设备,47,嵌入式系统,课件,完成初始化阶段,2,用到的硬件之后,就要初始化命令控制台了。初始化命令控制台主要由,main_loop,(),函数完成。,I,以下是跳转至,main_loop,的语句,它其实是,start_armboot,(),函数的最后一句。,for,(;),main_loop,();,2.,初始化命令控制台,48,嵌入式系统,课件,main_loop,(),这是一个永远不能返回的函数。如果返回,就意味着重新启动。它位于,common,main,c,文件中。,main,loop(),函数主要任务是:处理命令控制台,包括初始化命令控制台、接收命令输入、自动延时等待或自动执行,boot,,,cmd,命令等。,请注意,,main_loop,(),函数里会调用,run_command(p,,,0),函数,该函数将用户输入的命令控制台指令交由,U-boot,执行。,Main_loop,(),函数和,run_command,(),函数都位于,common,main,c,文件中。,如果用户在环境变量里设置了,bootcmd,的值,则,U,boot,会自动调用,bootm,启动内核。,bootm,的源代码中,最关键的函数是,thekernel,(),。,thekernel,(),函数是用来调用内核的。,P208,源程序摘自,lib_armarmlinux.c,:,注意,,theKernel,(),函数调用是永远不返回的。如果这个调用返回,则说明出错。,3.,调用内核,50,嵌入式系统,课件,U-boot,的功能强大,它能够提供对许多外设的支持,如,IDE,硬盘、实时时钟、开机画面等。但是,其最基本的任务是为内核执行做好准备,并启动内核。不论用户使用,U-boot,的目的有多大的不同,都必须先配置好,PXA255,、,Flash,、内存、串口还有其他,GPIO,引脚。配置好这些后,Bootloader,才可以正常运行。,下面针对最小硬件系统,介绍如何配置,PXA255,、,Flash,、内存、串口及通用输入输出引脚,并编写,U-boot,代码。此外,由于,U-boot,支持网络功能,简单介绍如何配置网卡。,8.3.3,U,-,b,oo,t移植原理,51,嵌入式系统,课件,表8,-,8 U,-,boot目录结构,1.,U,-,boot的目录树结构,文件夹,作 用,board,存放一些已有开发板有关的文件。比如,Makefile,和,U-,boot.lds,等都和具体开发板的硬件和地址分配有关。,common,存放与体系结构有关的文件,实现各种命令的,C,文件。,cpu,CPU,相关的文件。,disk,Disk,驱动的分区处理代码。,doc,说明文档。,drivers,通用设备驱动程序,如各种网卡支持,CFI,和,FLASH,、,串口和,USB,总线等。,fs,文件系统的支持,如,cramfs,、,fat,、,fdos,、,jffs2,、,registerfs,等。,52,嵌入式系统,课件,文件夹,作 用,include,头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。,Lib_arm,与,ARM,体系结构相关的一些公用代码。,net,存放与网络有关的代码、,BOOTP,协议、,TFTP,协议、,RARP,协议和,NFS,文件系统的实现。,tools,创建,S-Record,格式文件和,U-boot images,工具。,53,嵌入式系统,课件,为一个新的平台移植,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,用来配置,F1ash,,,memsetup.S,用来初始化配置内存,,u-boot.1ds,是内核链接器的脚本文件。,Xmu255.c,用于开发板的初始化。,除了新建一个开发板的目录并编写该目录下的相关文件外,还需要在,include/,configs,目录下增加一个新平台的配置文件。该配置文件和硬件系统配置息息相关,它需记录新平台的所有配置参数。以,PXA255,最小硬件系统为例,详细介绍相关的配置细节。,根据,8.2.1,小节对,CCCR,核心时钟配置寄存器的分析,该寄存器可配置为,:,#define CFG_CCCR_VAL 0 x00000161,/*100 MHz memory,400 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 x00000000,2.,U,-,boot中的处理器相关配置,55,嵌入式系统,课件,根据,8.2.1,小节对,Flash,、,SDRAM,和网卡的分析,对,MSCO,赋值如下:,#define CFG_MSC0_VAL 0 x7ff87ff0,/*,配置异步静态存储配置寄存器,*,/,对,MDCNFG,外寄存器赋值如下:,#define CFG_MDCNFG_VAL 0 x000019C9,/*,配置同步动态随机存储器,*,/,3.,U,-,boot中的处理器存储器控制器配置,56,嵌入式系统,课件,见,P210,.,U,-,boot中的处理器GPI,和串口配置,57,嵌入式系统,课件,在Bootloa,d,er启动成功之后,以往,开发者只能通过串口下载数据,U,-,Boot是一款支持网络功能的Bootloa,d,er,如果能够利用网络下载数据,开发者的开发速度将大大地提高。,从图8,-,6可以看到,网卡的片选信号是n,CS,l,n,CS,l的静态片选信号被映射到地址Ox0400 0000,而本书使用的的网卡,其I,/,O,b,ase address初始值是Ox300h。所以基址就是,:,0 x0400 0300,-,Ox0400 0000+Ox0000 0300,即:,#define CS8900_BASE 0 x04000300,这块网卡是16位的数据带宽,于是有:,#define CS8900_BUS16 1,5.,U,-,boot的网卡参数配置,58,嵌入式系统,课件,为了让U,-,b,oo,t支持更多的命令,可以在宏定义中,让U,-,b,oo,t编译更多的实用命令,。见,P211,6.,声明控制台程序,59,嵌入式系统,课件,生成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),可以得到映像文件。生成的映像文件的文件名是,U-,boot.bin,,它位于,U-boot-1.1.2,根目录内。,7.,生成U-boot映像,60,嵌入式系统,课件,U-boot,的命令十分强大,在,U-boot,移植完后,可以利用,U-boot,的强大功能进行处理器外围设备的硬件调试,。,本节介绍如何使用,U-boot,调试硬件,(U-boot,命令的详细介绍参见第,6,章,),。,8.3.4,基于U,-,b,oo,t的硬件调试,61,嵌入式系统,课件,P,X,A255的片内集成了一个实时时钟,物理地址是Ox40900000。处理器上,电,时,该实时时钟就开始以秒计时。接下来,就使用U,-boo,t命令读该实时时钟寄存器。,读取实时时钟用到的主要命令是m,d,(读取内存命令)。,=md.1 40900000 1,1.,读片内实时时钟,62,嵌入式系统,课件,CS,8900网卡芯片在复位之后,需向OxOa和0 xO,b,两个地址交替写入任意数据,以完成网卡的初始化。在初始化之后,在0 xO,c,和0 xOd两个地址可以读出该网卡的ID:630E。,接下来,使用,U-boo,t试着读出该网卡的ID,看看是否为630E。由于网卡在本书使用的开发板上由n,CS,l片选信号控制,所以对应着的物理地址就是ox04000000,而,CS,8900A网卡,的片内寄存器地址的偏移量是,Ox300,,所以网卡,ID,所对应的地址应当是,Ox0400 030c,和,0 x0400 030d,。,读取,ID,用到的命令是,mm(,修改内存命令,),,其具体操作如下:,=,mm.b,0400030a,2.,调试网卡,63,嵌入式系统,课件,在调试外设或内核的时候,有时会需要修改GPI,O,的设置,U,-,boot的命令提供了一个简单快捷的方法去修改这些配置。,首先查看当前GP,IO,寄存器的配置。其值就是在移植U,-,boot时设置的,,命令,如下:,=,md,40e00000 1c,比如,希望把,GPIPO,从输人类型改成输出类型。那么就需要修改其方向寄存器,(0,1),,它对应,GPDR0,的最低位。,GPDRO,的物理地址是,Ox40e0000c,,因此,需要把,GPDR0,从,0 x00008000,改为,Ox00008001,,通过运行以下命令来实现:,=mm.1 40e0000c,40e0000c:00008000?00008001,3.,调试GPI,O,寄存器的配置,64,嵌入式系统,课件,需要注意的是,GP,IO,的修改必须很慎重。因为其中的某些寄存器控制着重要外部设备,例如串口和SDRAM。一次错误的配置,将会导致整个系统的崩溃。,不过,这里所做的修改都是一次性的修改。即如果重新启动系统,则所有的配置都会恢复原样。例如,本节对GP,D,R0所作的的配置,在重启之后,会恢复成0 x00008000。,65,嵌入式系统,课件,8.4,最小硬件系统与,Linux 2.6,内核移植,Linux 2,.,6,.,10的内核在,/,arch,/,arm,/,mach,-,pxa目录中已有XScale CPU的支持,因此,对于一块新的XScale开发板的移植只须做板级的移植开发就可以。XScale开发板的板级内核移植比较简单,它的主要工作就是在,/,arch,/,arm,/,mach,-,pxa目录下为新的开发板建立对应的平台文件,编写此平台硬件的incl,u,de文件,修改相关内核配置选项以及新的硬件驱动的编写等。,内核源码包目录下,arch/arm,文件夹所包含文件、文件夹的相关信息见,P216,。,每个硬件平台都需要一个描述机器的,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=&,pxa,_ timer,INIT_MACHINE(xmu255_init),MACHINE_END,8.4.1 建立开发板平台描述文件,1.,struct machine_desc结构,67,嵌入式系统,课件,MACHINE_START,定义了平台的类型和名字,因此上面的语句定义了一个类型为,MU255,,名字为,“,XMU,XScale,Development Platform,”,的硬件平台。要注意的是,这里使用的平台类型,XMU255,必须在,arch/arm/tools/mach-type,中定义。,宏定义,BOOT_MEM(_pram,,,_,pio,,,_,vio,),的三个参数分别是内存物理地址、,I/O,物理地址和对应的,I/O,虚地址,,vio,在宏展开后设置到,io_Pg_offst(io,页表项的页内偏移,),。因而,BOOT_MEM(Oxa0000000,,,0 x40000000,,,Oxfc000000),的意思就是此平台的,:,内存物理地址为,0 xa0000000,;,I/O,物理地址从,Ox40000000,开始;,对应的,I/0,虚地址为,Oxfc000000,。,68,嵌入式系统,课件,BOOT,PARAMS,定义了启动参数存放地址,这需要根据,Bootloader,的设置来定义,。,-Boot,传给内核的启动参数存放在,0 xa0000100,,因而在使用,-boot,做为,Bootloader,时,也,需做同样的设置。,MAPI(),定义了平台的,I/O,地址映射初始化函数名。,INITIRQ,定义了中断初始化函数名。,INIT_MACHINE,定义了板级初始化函数名。,69,嵌入式系统,课件,在平台文件中需要使用一个struct map,_,desc:类型的结构数组描述平台的IO地址空间映射。,struct map,_,desc,unsigned long virtual;,unsigned long physical;,unsigned long length;,unsigned long type;,;,展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




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



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/13758404.html