欢迎来到天天文库
浏览记录
ID:14428506
大小:346.00 KB
页数:6页
时间:2018-07-28
《u-boot在mpc8265平台上的移植与分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、U-Boot在MPC8265平台上的移植与分析系统处理器启动时,首先执行一个预定地址处的指令,通常这个位置是只读内存,存放系统初始化或引导程序,其功能是执行CPU初始化并配置其他硬件,然后copy操作系统到RAM中。 在嵌入式Linux系统中,这些工作由Bootloacler(引导加载程序)完成,它是在嵌入式系统CPU加电复位和进入操作系统之前运行的代码,主要用于完成由硬件启动到操作系统启动的过渡,为操作系统提供基本的运行环境,如初始化CPU、堆栈、存储器系统等,其数值必须要符合用户的硬件配置,并且按特定顺序
2、写入。嵌入式Linux系统的引导、配置甚至应用程序的运行都与Bootloader有关。 Bootloader源代码与CPU的内核结构和嵌入式设备的板级配置有关,必须根据具体的系统设计要求进行移植。目前,开源社团已经发展了多种引导Linux内核的bootloader,比如PowerPC体系的U-Boot、miniBoot,ARM体系的blob,Intelx32体系的gurb、openBIOS等。 以MPC8265微处理器和嵌入式Linux为背景,针对性地提出U-Boot的移植方法并进行分析研究,此方法可广泛用
3、于基于MPC282xx系列处理器的嵌入式Linux系统应用开发中。1U-Boot引导加载程序1.1U-Boot简介 U-Boot(UniversalBootLoader)是遵循GPL条款的开放源码项目。它支持多种嵌入式处理器,如ARM、PowerPC、MIPS等,也支持Linux、VxWorks、QNX、RTEMS、ARTOS、LynxOS等多种嵌入式操作系统。这2个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。 U-Boot支持的主要功能如下:1)系统引导:支持NFS挂
4、载、从Flash中引导(压缩或非压缩)系统内核;RAMDISK(压缩或非压缩)形式的根文件系统;2)强大的操作系统接口功能,可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布:3)支持目标板环境参数多种存储方式(如flash、NVRAM、EEPROM);4)CRC32校验,可校验Flash中内核、RAMDISK镜像文件是否完好;5)设备驱动:串口、SDRAM、Flash、以太网、LCD、NVRAM、EEP-ROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;6)上电自检
5、功能:SDRAM、Flash自动检测,SDRAM故障检测,CPU型号。1.2U-Boot主要目录结构 U-Boot源代码采用高度模块化的编程方式,便于在不同的硬件平台上移植。U-Boot源代码包含多个目录,其中与移植相关的主要有:1)board:目标板相关文件,存放U-Boot支持的所有目标板的子目录。目标板上大部分资源的初始化代码就在这个文件夹中,如SDRAM、Flash驱动;2)common:独立于处理器体系结构的通用代码,实现U-Boot各种公共命令的C文件;3)cpu:存放U-Boot支持的各类型CP
6、U的相关文件,主要是初始化执行环境,比如mpc8260子目录包含串口、网口、LCD驱动及中断初始化等文件;4)drivers:通用设备的驱动程序,如CFIflash驱动;5)fs:U-Boot支持的文件系统,如ext2、cramfs、fat、fdos、jffs2和registeRFs等;6)net:与网络功能有关的文件,如B00TP、TFTP、RARP和NFS相关代码;7)include:存放头文件。子目录include/configs下与目标板相关的配置头文件是移植过程中经常要修改的文件,可配置目标板的各项参
7、数(如波特率、引导启动参数等)。还有对各种硬件平台支持的汇编文件、系统的配置文件和对文件系统支持的文件。U-Boot源代码可以从DENX的网站(http://www.denx.de)下载,本文使用的版本是U-Boot-1.2.0。2U-Boot的运行流程 U-Boot的运行流程如图1所示,目标板上电,启动MPC8265存储控制器CS0有效,选中Flash,CPU地址线上输出硬件复位中断向量对应的地址,此时执行第1条指令,对应\cpu\mpc8260\start.S中的_start:开始执行。完成CPU本身基本
8、的初始化后,初始化CPU内部寄存器,设置IMMR、ICTRL等。然后跳转到\cpu\mpc8260\cpu_init.c的函数cpu_init_f处,进行CPU的底层初始化,主要设置watchdog、SIUMCR寄存器、PIT、锁相环、系统定时器、存储控制器和CPM等。从start.S中跳转到\lib_ppe\board.c的函数board_init_f处,实现目标板上的第1次初始化,
此文档下载收益归作者所有