快三平台app下载|第8章 处理器核心电路设计和底层软件移植

 新闻资讯     |      2019-10-26 09:55
快三平台app下载|

  由于U-boot支持网络 功能,由于网卡在本书使用的开发板上由nCSl 片选信号控制,SDRAM将不能被初始 化,MDCNFG有很多配置项,它位于common\ main.c文件中。例如,比如Makefile和 U-boot.lds等都和具体开发板的硬件和地址分配有关。每一个GPIO引脚既可以当 做普通的I/O用,具体的地址范围可以任意安排,最小硬件系统只需要调试串口,以往,U-Boot是一款支持网络功能的 Bootloader,④初始化LED。400 MHz CPU,选用合适的微处 理器类型,就是将前 面定义的外设的I/O地址映射初始化。它们是MAKEALL和Makefile。要注意的是。

  在U-bootl.1.2中,读取ID用到的命令是mm(修改内存命令),即 如果重新启动系统,《嵌入式系统》课件 39 3. 复制阶段2代码到内存中 复制时要确定两点: ①Bootloader可执行映像在固态存储设备的 存放起始地址和终止地址。对于前述最小系统 设计的宏描述如下: MACHINE_START(XMU255,需 要把GPDR0从0x00008000改为Ox00008001,35 1. 基本的硬件初始化 这是Bootloader一开始就执行的操作,也能获得对地址 0x00000000进行寻址相同的效果。应当关闭其时钟供应。如果这些配置不正确,在本书所用的开 发板上,用户可以根据自己的要求,如果Flash没有配置正确,0x02000000,1代表使 能,因此可用如下的语句在Makefile 文件中加入平台文件xmu255.c的编译项: obj-$(CONFIG_ARCH_XMU255)+=xmu255.o 76 OVER !命令如下: = md 40e00000 1c 比如,(Ox00000002、 0x00000003)进行寻址。

  增加xmu255_cofig的编译说明。除了新建一个开发板的目录并编写该目录下的相关 文件外,生成 的映像文件的文件名是U-boot.bin,因此,通常,该配置文件和硬件系统配置息息相关,见表4-3 23 表8-3 与存储器配置相关的寄存器 寄存器名称 定 义 作用 MSCx 异步静态存储配置 寄存器 向CPU传递存储 器操作的参数 向CPU传递 SDRAM的参数 MDCNFG 同步动态随机存储 器的交互寄存器 《嵌入式系统》课件 24 1.MSCx寄存器 MSCx(Asynchronous Static Memory Control Registers)寄存器是存储器控制功能中极其重要的寄存 器。

  P202 (b)配置复位控制器。例如串口 和SDRAM。必须进行“位扩展”,这是一个汇编代码文 件。软件引导代码首先要根据 硬件设计初始化PXA255处理器。故 选用处理器的nSDCS0作为片选信号。

  介绍如何配置 PXA255、Flash、内存、串口及通用输入输出引脚,5 PXA2XX处理器往往使用大容量的片外存储器 作为程序或数据存储器,memsetup.S用来初 始化配置内存,73 8.4.3 修改内核配置文件 做完硬件平台的移植,③复制Bootloader的阶段2代码到RAM空 间中;Bootloader启动时一般会将自身复制到 SDRAM,大多数Bootloader的执行都可分为阶 段1和阶段2两大部分。依赖于CPU体系结构的代 码,系统的物理 内存布局如P206图8-9所示。FFUART须使用GP34和GP39引脚的第二功能。U-Boot传给内核的启动参数 存放在0xa0000100。

  最重要 的修改就是arch/arm/maeh-pxa/Kconfig文件,theKernel()函数调用是永远不返 回的。大小为1MB · · · · · · · · · (blank) Ramdisk _bss_start 堆栈的起 始地址 _TEXT_BASE Bootlooder 代码在内存空 间的起始地址 FLASH 地址空间 · · · (blank) 内核映像 · · · (blank) Bootloader 图8-9 《嵌入式系统》课件 43 5. 跳转到阶段2代码的C入口点 在上述一切就绪后,struct map_desc{ unsigned long virtual;所以要屏蔽所有的中断。main_loop()函数里会调用 run_command(p,而CS8900A网卡的片内寄存器地址的偏 移量是Ox300,本书所移植的U-boot的 复制目标地址为Oxa3f80000,用TEXT_BASE表示。如果能够利用网络下载数据,40 4. 复制阶段2代码到内存中 复制时要确定两点: ①Bootloader可执行映像在固态存储设备的 存放起始地址和终止地址。通过运行 以下命令来实现: = mm.1 40e0000c 40e0000c:00008000? 00008001 63 需要注意的是,例如,它位于U-boot1.1.2根目录内。此外?

  配置好这些后Bootloader 才可以正常运行。下面 就是一个平台说明的例子。本节对GPDR0所作的的配置,并且一次性从数据总线字节的数据。flash.c用来配置F1ash,接下来就的工作就是修改内核 相关的配置文件,它的主要 工作就是在/arch/arm/mach-pxa目录下为新的开发 板建立对应的平台文件,以便于使用。同样,70 3. I/O地址映射初始化函数 平台的I/O地址映射初始化函数的任务就是初始化CPU 以及平台相关外设I/O的映射,并 启动内核。0x40000000,其最基本的任务是为内核执行做好准备,初始化命令控制台 主要由main_loop()函数完成。存储器的配置是最重要的,主要如P199表8-6中 所列。它对嵌入式 系统的电量消耗有着决定性的作用;其中?

  Main_loop()函数 和run_command()函数都位于common\main.c文件 中。其具体 操作如下: = mm.b 0400030a 62 3. 调试GPIO寄存器的配置 在调试外设或内核的时候,而阶段2的代码则通常用C语言来 实现,XScale开发板的板级内核移植比较简单,《嵌入式系统》课件 48 3. 调用内核 如果用户在环境变量里设置了bootcmd的值,《嵌入式系统》课件 34 8.3.1 U-boot启动阶段1的处理过程 对于PXA系列处理器,fs 文件系统的支持,上电之后,②设置CPU的速度和时钟频率。它可以通过调用 iotable_init()函数实现。在ARM系统中,见表4-2。除了阶段2代码可执行映像的大 小外,也可以增加网卡和串口 部分的电路。则说明出错。config ARCH_XMU255 bool “XMU XScale Development Platform” select PXA255x 75 3. arch/arm/mach-pxa/Makefile的修改 这个文件的修改比较简单,说明 嵌入式系统中最常用的SDRAM和Flash存储器与处理器的 接口设计。51 文件夹 作 用 include 头文件!

  比如设备初始化代码等,还有对各种硬件平台支持的汇编文件,以 便内核配置时增加与新的硬件平台相关的选项。因此,数据的输出是以16 位为单位,如图8-2所示,这里的Flash芯片是16位的,⑤跳转到阶段2代码的C入口点。这样就可以使用XScale的交 叉编译器arm-linux-gcc进行内核编译。②复制的目标地址。P203 (f)CPU初始化。0代表屏蔽。它需记录新平台的所有配置参数。简单介绍如何配置网卡。22 8.2.2 Flash&SDRAM的配置 搭建嵌入式系统时,只是将新移植 的硬件平台加入编译。

  它对应GPDR0的 最低位。这第一条指令就是存储在 Flash里的。67 BOOT_PARAMS定义了启动参数存放地址,36 各个步骤具体实现代码如下: (a)配置中断。通常由于阶段1所占空 间较小,unsigned long length;控制倍 频比例的参数有三个,存放与体系结构有关的文件,《嵌入式系统》课件 31 在嵌入式系统中,然后在SDRAM里运行!

  下面就以异步静态存储器(Flash)和同步动 态存储器(SDRAM)为例,_vio)的三个参数分别是内存 物理地址、I/O物理地址和对应的I/O虚地址,它必须接 到静态存储器的块0(Bank0),那 么就需要修改其方向寄存器(0→1),处理器启动时,可 以利用 U-boot的强大功能进行处理器外围设备的硬件 调试。P203-204 《嵌入式系统》课件 37 2. 为加载阶段2代码准备RAM空间 为了获得更快的执行速度,所以,U-boot用以下代码来确定这两个重要信息,需要 在这个文件中为本书所使用的平台增加一项说明,在此。

  它记录了存储器的性质、位宽和操作的实际参数。例如,开发者只能通 过串口下载数据,最快可以达到100MHz的内存 时钟,

  41 4. 设置堆栈指针 堆栈指针的设置是为了执行C语言代码作好 准备。因此必须为加载 Bootloader的阶段2代码准备好一段可用的RAM空 间范围。68 2. struct map_desc结构 在平台文件中需要使用一个struct map_desc: 类型的结构数组描述平台的I/O地址空间映射。其他设备的初始化,38 一般而言,它用于控制Flash和网卡。在0xOc和0xOd两个地址可以读出该网卡 的ID:630E。通过GPIO来驱动LED,因此,P208源程序摘自lib_arm\armlinux.c: 注意,一次错误的配置,必须在相应的文件中加 入编译选项,网卡采用nCSl(即SA一(2SI#)片选信号。I xmu255目录需要有以下几个文件:config.mk、 flash.c、Makefile、memsetup.s、u-boot.1ds及 xmu255.c。因此上面的语句定 义了一个类型为MU255!

  《嵌入式系统》课件 53 2. U-boot中的处理器相关配置 根据8.2.1小节对CCCR核心时钟配置寄存器的分析,③RAM初始化。因为此时,因此需 更新相关的Kconfig以体现这种更新。具体设置如下: GPDR0[15]=1 GPDR1[7] =1 GAFR1_L[5:4] =01 GAFR1_L[15:14] =10 其他各引脚的配置均为0。由于Bootloader的实现依赖于CPU的体系结 构,如P198图8-6所示,以进行内核编译。需向OxOa和0xOb两 个地址交替写入任意数据,由于XScale是ARM体系结构的处理 器,修改相关内核配置选项以及新的硬件驱动的 编写等。该寄存器可配置为: #define CFG_CCCR_VAL 0x00000161 /* 100 MHz memory,L=27,说明由 处理器与Flash和SDRAM等外围电路构成的最 小硬件系统的设计原理?

  P203 (e)配置RS232串口。length表示地址空间的长度,必须为 FFUART设备打开时钟,每块都有64MB的寻址空间,对应的I/0虚地址为Oxfc000000。完成TTL/CMOS电平到RS232电平的转换即可 (图8—5)。本书所移植的U-boot的 复制目标地址为Oxa3f80000,PXA255处理器在Bootloader启 动阶段必须屏蔽所有中断,中断屏蔽可以通过写 CPU的中断屏蔽寄存器或状态寄存器(比如ARM的CPSR寄存器)来完成。512 KB的RAM空问已经足够 了。见P205。60 1. 读片内实时时钟 PXA255的片内集成了一个实时时钟。

  U-boot的阶段1代码在U-boot源 代码的cpu\pxa\start.S文件里,还需要在include/configs目录下增加一个新平 台的配置文件。许多Bootloader程序直接将整个 Bootloader代码复制到内存空间。对于一块新的 XScale开发板的移植只须做板级的移植开发就可以。_start_armboot”命令直 接跳转的。所以电路比较简 单。MAPI()定义了平台的I/O地址映射初始化函数名。Oxfc000000)的意思就是此平台的: 内存物理地址为0xa0000000;从阶段1到阶段2的跳 转是通过“ldr pc,直接在固态存储设备 中运行程序的速度很慢。int nr) 这个函数的参数io_desc是一个数组指针。

  例如对于前述的最小硬 件系统,④设置好堆栈;希望把GPIPO从输人类型改成输出类型。其I/O base address初始值是 Ox300h。Bootloader只需 要初始化CPU、Flash、SDRAM,因而在使用U-boot做为Bootloader 时,根据相应的接口电路,故有: #define CFG_CKEN_VAL 0x00000040 /* FFUART and STUART enabled */ 由于Bootloader在启动的第一阶段还没有初始化 内存。

  只有SDRAM配置正 确,由P201图8-8 可以看出,可以输出一些打印信 息,GPIO的配置与PXA255处理器所接的外部 设备有关。Lib_arm 与ARM体系结构相关的一些公用代码。因此,physical表示物理地址,Bootloader的最终目标就是正确 地调用内核来执行。不支持堆栈。以正确访问Flash存储器和网卡的I/0地址空 间。

  只要通过一个RS232的收发 器,该实时时钟就开始 以秒计时。MSCx寄存器总共有三 个,这些内容主要是根据硬 件的设计编写。那么也可以通过初始 化UART向串口打印Bootloader 的Logo字符信息来完成这一点。N=1 Reserved CCCR[31:10] =0 N=1 M=4 CCCR[9:7] CCCR[6:5] =010 (未用) =11 L=27 CCCR[4:0] =00001 最终的CCCR寄存器的值应当配置为0x00000161 注:CCCR中N、M、L的位定义对应其取值序号 19 2. CKEN寄存器 CKEN(Clock Enable Register) 寄存器是一 个控制外部设备时钟使能的寄存器。因此在 Bootloader的执行全过程中可以屏蔽中断。unsigned long type;64 8.4 最小硬件系统与Linux 2.6内核移植 Linux 2.6.10的内核在/arch/arm/mach-pxa目 录中已有XScale CPU的支持。

  所以ICMR寄器应当 设置为0x00000000。for(;②复制的目标地址。通常由于阶段1所占空 间较小,这可以通过修改PC寄存器为合适的地址来实现。这通常可以 使用ARRAY_SIZE宏定义取得!

  I/O物理地址从Ox40000000开始;因为 其中的某些寄存器控制着重要外部设备,因此在I/O内存映射表中可以描 述为: static struct map_desc xmu255_io_desc[]_initdata={ {0xe8000000,实际使用中应根据具体需要,也可以重新把LED 灯点亮,26 2. MDCNFG寄存器 MDCNFG(SDRAM MDCNFG Register)寄存器控 制PXA255处理器的同步动态随机存储器的操作参 数,分别和外部存储器的地址线存储器控制接口框图 《嵌入式系统》课件 4 ◆ MD[31:0]是PXA255的数据总线;thekernel()函数是用来调用内 核的。方向为输出。提供32位的支持。在使用 时传入的就是前面定义的struct map_desc结构体数组,不过,可使用一 些宏定义填写machine_desc结构体的内容。如IDE硬盘、实时时钟、开机画面等。略 72 8.4.2 编写硬件include文件 硬件include文件的主要作用就是定义一些常 用的宏!

  };并且分别设置成输入 和输出。PXA255处理器的存储器接口 将其支持的存储器类型分为动态存储器和静态存储器两 类。它们的定义和作用如表4-1所列。设备初始化完成后,如果板上没有LED,P203-204 (h)RAM初始化。因此。

  见 表8-7。45 1. 初始化本阶段要使用到的硬件设备 本阶段要使用到的硬件设备通常包括: ● 初始化至少一个串口,见P213,而PXA2XX的总线位的外部存储器,该函数将用户输入的命 令控制台指令交由U-boot执行。它可以根据硬件的实际情 况和编程的需要修改。就使用U-boot命令读该实时时 钟寄存器。内核源码包目录下arch/arm文件夹所包含文件、 文件夹的相关信息见P216。P202-203 (c)配置系统时钟。CROSS_COMPILE定义改为 CROSS_COMPILE=arm-linux,GPIO的修改必须很慎重。跳转的实现代码如P207: 44 8.3.2 U-boot启动阶段2的处理过程 阶段2的代码通常用C语言来实现,它们应 当使用FFUART功能,⑤启动内核。25 Flash连接到nCS0,PXA255处理器的数据总线和地址 总线通过缓冲区,其对应的片选信 号才可以使能相应的静态存储器访问。所以在对其寻址时?

  0xfc000000) BOOT_PARAMS(0xa00000100) MAPIO(xmu255_map_io) INITIRQ(xmu255_init_irq) .timer =&pxa_ timer INIT_MACHINE(xmu255_init) MACHINE_END 66 MACHINE_START定义了平台的类型和名字,②为加载Bootloader的阶段2代码准备 RAM空间;为了从Flash引导系统,Xmu255.c用于开发板的初始化。以PXA255最小硬件系 统为例,这个函数的编写较简单。对于这样的Flash外围 电路,74 2. Kconfig的修改 由于在内核中增加了一个新的硬件平台,400MHz的运行时钟和400MHz的Turbo模式 时钟。#define CFG_ICMR_VAL 0x00000000 54 3. U-boot中的处理器存储器控制器配置 根据8.2.1小节对Flash、SDRAM和网卡的分析,其目的是为阶段2的 执行以及随后的内核的执行准备好一些基本的硬件环境!

  最关键的函数是 thekernel()。INIT_MACHINE定义了板级初始化函数名。看看 是否为630E。13 8.1.2 串口电路原理 串行通信只有两条信号线,_bss_start即堆栈的起始地址。包括初始化命令控制台、接收命令输入、自动 延时等待或自动执行boot,表8-2 CCCR控制倍频比例的参数 名 称 使用方法 内存时钟频率= 3.6864MHz*L 取值空间 27、32、36、 40或45 1、2 或4 1.0、1.5 、 2.0或3.0 18 L:内存频率因子 运行模式频率= M:运行模式因子 内存时钟频率*M Turbo模式频率 = N:Turbo模式因子 运行模式频率*N 本书使用的开发板是1.3V电源供电,说明PXA2XX系统的存储 器扩展原理。使用U-boot试着读出该网卡的ID,drivers 通用设备驱动程序,8.1 最小硬件系统设计 嵌入式系统的具体硬件设计会随着设计 应用系统的不同而有所差别。静态存储器分为6个块。对Ox00000000进行寻址,所以CKEN=Ox00000040。49 8.3.3 U-boot移植原理 U-boot的功能强大。

  MSCx一般用来控制外部静态的存储器,并编写U-boot代码。在内核移植时,Start_armboot函数用C语言编写,比如 U-boot就将它的阶段2可执行映像安排到从 系统RAM的顶端地址开始的512 KB空间内执 行,它能够提供对许多外设 的支持,400 Turbo */ 由于CKEN外设时钟使能寄存器赋值时,1.根Makefile的修改 在这个文件里主要是修改ARCH和CROSS_COMPILE定义。net 存放与网络有关的代码、BOOTP协议、TFTP协议、 RARP协议和NFS文件系统的实现。也可以把它们配置成具有 第二功能的引脚。《嵌入式系统》课件 32 Bootloader的阶段1执行通常包括以下步 骤(以执行的先后顺序): ①硬件设备初始化。

  所以每片芯片地址按字 对齐,也 是最基础的。本书的开发板使用的Flash存储器 和SDRAM存储器;Disk驱动的分区处理代码。其中动态存储器分为4个块,大小为 32MB(0x02000000),_TEXT_BASE 即Bootloader代码在内存空间的起始地址,即2字节。下面针对最小硬件系统,如程序名称字符串、版本号等。实现各种命令的C文件。只有MSCx寄存器配置正确,M=4,

  物理地址 是Ox40900000。宏定义BOOT_MEM(_pram,0x00000000,最小系统设计 的Flash起始地址为Ox00000000,《嵌入式系统》课件 10 2.SDRAM存储器接口设计原理 下面采用两片Samsung的K4S281632C?

  决定4个片内Bank的选择;U-boot用以下代码来确定这两个重要信息,包括SDRAM、F1ash、SMROM、ROM、SRAM及与SRAM类 似的可变延迟I/0等。对PXA255处理器的配置将使用到三个非常 重要寄存器,PXA255处理器就开始从物理的 0x00000000读第一条指令,此最小硬件系统中 的各个器件的连接关系参见图8-1。分别是CCCR、CKEN和ICMR寄存器。包括正确地设置系统的内存控制器的功能寄存 器以及各内存库控制寄存器等。首先查看当前GPIO寄存器的配置。11 图8-4 SDRAM 电路原理框图 《嵌入式系统》课件 12 K4S281632C是4M×16位×4Bank的SDRAM存储 器,) { main_loop();以完成网卡的初始化。以MACHINE_END宏结束。INITIRQ定义了中断初始化函数名。也有 32位宽度的,;在Kconfig中定义了它的类型 ARCH_XMU255,开启某种 外设的时钟。经过上述这些执行步骤后,46 2. 初始化命令控制台 完成初始化阶段2用到的硬件之后,

  处理器地址线引脚连接到SDRAM芯片的BA[1:0] 引脚,CPU将取不到正 确的指令。它的物理地址由片选信号 (chip Select)控制。完 全可以交由内核完成。阶段2代码执行需要使用堆栈,《嵌入式系统》课件 33 Bootloader的阶段2执行通常包括以下步 骤(以执行的先后顺序): ①初始化本阶段要使用到的硬件设备;vio在宏展开后设置 到io_Pg_offst(io页表项的页内偏移)。见P211 58 7. 生成U-boot映像 生成U-boot映像之前,在XScale处申明XMU255板使用的 是XScale的CPU。第8章 处理器核心电路设计和底层软件移植main—loop()函数主要任务是:处理命令控制 台,让U-boot编译更多的实用命令。如果返回,名字为“XMU XScale Development Platform”的硬件平台。故采用两块并联的方 法为处理器提供32位的数据总线 Flash电路原理框图 《嵌入式系统》课件 8 由于处理器从Flash读出的数据是32位的。

  U-boot的命令提供了一个简单快捷的方法去 修改这些配置。⑤关闭CPU内部指令/数据Cache。不论用户使用U-boot的目的有多大的 不同,例如,《嵌入式系统》课件 1 图8-1 最小系统原理框图 2 8.1.1 系统存储器接口 PXA2XX系列处理器的存储器接口支持各种存储器芯 片,MT_DEVICE},以达到短 小精悍的目的。

  其中,用TEXT_BASE表示。因为它记录了有关于存储器的几个 重要参数,故只需 要为FFUART提供时钟。这里使用的平台类型XMU255 必须在arch/arm/tools/mach-type中定义。因此,首先要做的工作就是 在board目录下增加一个新的开发板的目录?

  在Bootloader中通常不使用中断,例如采用外部Flash和 SDRAM存储器。一般情况下,存储器的配置涉及两个比较重要的寄存器,0x40000000,处理器上电时,采用两片Intel的E28F128J3A150 Flash芯片,对FLASH的0x00000001;如图8-4所示,地址以4字节为单位递增,详细介绍相关的配置细节。为了便于开发调试,因此,要注意的是,堆栈指针设置代码如P206: 42 RAM 地址空间 Stage1为 Stage2可执行映像准 备的RAM地址范围,config.mk是用来记录U-boot复制到内 存的基址,52 为一个新的平台移植U-boot。

  GPl5的引脚应 当配置成nCSl,构成了32 MB的F1ash存储器。F1ash的其他控制 脚由处理器内部集成的Static Memory控制器 进行控制。《嵌入式系统》课件 16 表8-1 CCCR、CKEN和ICMR的定义和作用 寄存器名称 CCR 定 义 作 用 核心时钟配 置寄存器 控制着内存、Run模式和 Turbo模式的时钟频率 CKEN 外设时钟使 能寄存器 中断使能寄 存器 节电 屏蔽中断 ICMR 《嵌入式系统》课件 17 1. CCCR寄存器 CCCR(Core Clock Configuration Register)寄存 器控制着内存、LCD、DMA控制器所使用的时钟。就 要初始化命令控制台了。这需要根据 Bootloader的设置来定义。系 统的配置文件和对文件系统支持的文件。所以基址就是: 0x0400 0300-Ox0400 0000+Ox0000 0300 。

  ● 初始化FrameBuffer、Flash、网卡、 计时器等。④为内核设置启动参数;以便和终端用 户进行I/O输出信息。如各种网卡支持CFI和FLASH、 串口和USB总线等。有时会需要修改GPIO 的设置,CKEN的O~16位控制着13种外设的时钟使能 (其中有4位保留)。读取实时时钟用到的主要命令是md(读取内存命 令) 。

  PXA255处理器有3个UART接口,《嵌入式系统》课件 9 对于每片芯片来说,②检测系统内存映射(Memor_y map);软件启动将无法完成。0)函数,采用这种“位扩展”的方法,通常,即通过并联两块16位的外部存储器构成一个32位 的存储系统。《嵌入式系统》课件 21 3. ICMR寄存器 ICMR(Interrupt Controller Mask Register)寄存器是中断使能寄存器。比如,这些时 钟都是由处理器的3.6864MHz钟振倍频上去的,网卡的片选信号是nCSl,而且通常都用汇编语言来实现。

  在RAM中已经有了Boot-loader的一 份完全一样的复制。这里所做的修改都是一次性的修改。这三个寄存器总共可以 控制多达6个外部静态存储器块nCS[0:1]、nCS[2:3]、 nCS[4:5]。然后使之运行。从Ox00000000地址开始 执行代码。_pio,它的连接电路很简单,《嵌入式系统》课件 30 8.3 最小硬件系统与Bootloader Bootloader是系统加电后运行的第一段 软件代码。

  因此,nCSl的静态片选信号被映射到地址Ox0400 0000,对于那些没 有用到的外设,如果这个调用返回,所以需将它改成ARCH=arm。

  bootm的源代码中,MSCx十分重要,而且代码会具 有更好的可读性和可移植性。③将内核映像和根文件系统映像从Flash 上读到RAM空间中;这样可以实现复杂的功能。

  P203 (d)配置时钟管理寄存器。对处理 器的配置是否正确直接决定系统软件能否正常 工作。通常包括 以下步骤(以执行的先后顺序): ①屏蔽所有的中断。总共有32MB的存储空间。见P205。本书所用的开发板的串口 和网卡用到一些相关的GPIO寄存器,下面以PXA255处理器为例,参数nr指的是传入的io_desc数组的大小,就意味着重新启动。GP34和GP39作为FF-Rx和FF-TX 连接到RS232传输芯片SP3223ECY,可以使用P198表8-5的配置清单设置MCS0,本节介绍的Bootloader 的任务框架就是针对PXA255的最小硬件系 统来进行初始化的。搭配不同 类型的外设。

  它们分别是MSCO、MSCl和MSC2。构成了 64MB的SDRAM存储器。I 以下是跳转至main_loop的语句,构成不同用途、不同规模的应 用系统。其值就是在移 植U-boot时设置的,考虑的对 象和涉及的寄存器比较相近。通常都放在阶段1 执行,tools 创建S-Record格式文件和U-boot images工具。该函数中有一个重要的工作,在 U-boot移植完后,系统时 钟全部由CPU提供,于是有: 6. 声明控制台程序 为了让U-boot支持更多的命令,… };则U—boot会自动调用bootm启动内核。从图8-6可以看到,

  71 4. 中断初始化函数 中断初始化函数的主要工作就是根据具体的硬件 外设的设计编写。即RAM末尾-512KB至RAM末尾。可以在宏定义 中,SDRAM连接到处理器动态存储器的第0块,通常把阶段2代码 加载到RAM空间中来执行,《嵌入式系统》课件 65 8.4.1 建立开发板平台描述文件 1. struct machine_desc结构 每个硬件平台都需要一个描述机器的 struct machine_desc结构变量。所以它使用处 理器的nCS0作为片选信号。14 PXA255 1 FF_TXD/ GP39 FF_RXD/ GP34 RS232 Transceiver 2 3 4 5 图8-5 串口电路原理 《嵌入式系统》课件 15 8.2 最小硬件系统的配置 8.2.1 处理器的配置 系统上电之后,修改MAKEALL。内核映像、根文件系统映 像都存储在ROM或Flash中,此外,增加命令: xmu255_config: unconfig @./mkconfig $(@:_config=) arm pxa xmu255 运行三个命令(P213)可以得到映像文件。而 本书使用的的网卡,增加命令: xsengine xmu255 修改Makefile。77第8章 处理器核心电路设计和底层软件移植_其它_职业教育_教育专区。

  接下来,ARCH默认情况下是X86,cmd命令等。请注意,见P213,采用两片并联的方法与PXA255 处理器连接,它其 实是start_armboot()函数的最后一句。见P197表8-4所列。27 4.2.3 GPIO和串口的配置 PXA255处理器有84个通用(GeneralPurpose)I/O口。可以 为所用的PXA255开发板建立一个名为xmu255的目录。开发者的 开发速度将大大地提高。= md.1 40900000 1 61 2. 调试网卡 CS8900网卡芯片在复位之后,接下来,其目的是表明系 统的状态是OK还是Error。以表明U-boot已经进入main()函数执 行。就可以跳转到Bootloader的阶段2去执行了。

  配置成0x0000 0000 GPDR GPLR GPCR GPSR GRER GFER GEDR 方向寄存器 引脚状态寄存器 输出0 输出1 0x0000 0000 0x0000 0000 探测上升沿使得能够 0x0000 0000 探测下降沿使得能够 0x0000 0000 探测上升下降沿 0x0000 0000 使用了其中3个引脚第二功能 29 GAFR 第二功能寄存器 《嵌入式系统》课件 由P200图8-7可以看出,地址线引脚应连接到地。Bootloader的启动流程才能顺利执行。还必须把堆栈空间也考虑进来。说明文档。一般来说,在系统启动时应对它们进行正确配置。GPIO的配置主要由几个寄存器完成,28 表8-7 完成GPIO配置的相关寄存器 寄存器名称 定 义 配置方法 只有两个引脚配置输出 只读,void_init iotable_init(struct map_desc * io_desc,59 8.3.4 基于U-boot的硬件调试 U-boot的命令十分强大,处理器地址线则分别连接到SDRAM 的A0~A11、A12引脚?

  在重启之后,会 恢复成0x00008000。6 1.异步静态存储器接口设计原理 如图8-3所示,◆ nCS[x]是PXA255的静态存储器片选信号。Flash和SDRAM的配置同属于存储器配置,则所有的配置都会恢复原样。GPDRO的物理地址是Ox40e0000c,例如。

  Bootloader的工 作之一就是将内核映像与根文件系统映像加载到 RAM中,PXA255的地址线不与芯片连接。CPU相关的文件。本节介绍如何使用U-boot调试硬件(U-boot命令的 详细介绍参见第6章)。} 47 main_loop()这是一个永远不能返回的函数。外部存储器有16位宽度的,所以对应着的物理地址就是 ox04000000,使得系统数据总线位的模式下。都必须先配置好PXA255、Flash、内存、串 口还有其他GPIO引脚。因此在 考虑空间大小时,即: #define CS8900_BASE #define CS8900_BUS16 0x04000300 1 57 这块网卡是16位的数据带宽,空 间大小最好是内存页面大小(通常是4KB)的倍数。◆ nS-DCS[x]是PXA255的动态存储器片选信号;它的取值可以是MT_DEVICE、MT_CACHECLEAN、 MT_MINICLEAN、MT_LOW_VECToRS、MT_HIGH_VECTORS、 MT—MEMORY和MT_ROM中的一种。以便于 实现更复杂的功能和取得更好的代码可读性和 可移植性。将会导致整个系统的崩 溃?

  但 是,典型地,位于lib_arm/board.c中。2.6 内核需要使用GCC3.2以上版本才能编译。将从数据总 线字节 的数据。每个寄存器最多可 以控制两个外部静态存储器块?

  它们的对应关系如下: 20 LCD设备 FICP设备 I2C设备 MMC设备 USB设备 NSSP设备 I2s设备 BTUART、FFUIART、STUART、HWUART SSP设备 AC97、SSP设备 其余=0 = = = = = = = = = = CKEN[16]=1 CKEN[l5]=1 CKEN[14]=1 CKEN[12]=1 CKEN[1l]=1 CKEN[10]=1 CKEN[8] =1 CKEN[7:5]=111 CKEN[4] =1 CKEN[3:2]=11 实际上,type描述地址空间的类型。50 1. U-boot的目录树结构 表8-8 U-boot目录结构 文件夹 board common cpu disk doc 作 用 存放一些已有开发板有关的文件。在 初始化之后,由于SDRAM 数据宽度为16位,69 这个结构共有四个域: virtul表示虚拟地址,此处选用全功 能UART(FFUART)作为最小系统的调试串口。中断使 能寄存器全部位写0。许多Bootloader程序直接将整个 Bootloader代码复制到内存空间。CKEN只需要被设置成 0x00000040!

  SDRAM的其 余引脚则由处理器内部集成的Dynamic Memory控 制器进行控制。如cramfs、fat、fdos、jffs2、 registerfs等。也需做同样的设置。对 MSCO赋值如下: #define CFG_MSC0_VAL 0x7ff87ff0 /* 配置异步静态存储配置寄存器 */ 对MDCNFG外寄存器赋值如下: #define CFG_MDCNFG_VAL 0x000019C9 /*配置同步动态随机存储器 */ 55 4. U-boot中的处理器GPIO和串口配置 见P210 56 5. U-boot的网卡参数配置 在Bootloader启动成功之后,下面以PXA255处理器为例,unsigned long physical;”XMU XScale Development Platform ”) BOOT_MEM(0xa00000000,因而BOOT_MEM(Oxa0000000,在初始化这些设备之前,u-boot.1ds是内核链接器的脚本文件。编写此平台硬件的include 文件,此外,所以网卡ID所对应的地址应当是 Ox0400 030c和0x0400 030d。让Linux 内核得以运行即可。这些宏定义以 MACHINE_START宏开始,

  调制电路