Q考吧

移植U-Boot支持新的单板

本文主要是基于MPC8560讲解U-Boot移植过程,其他相关单板可以参考这个过程。U-Boot简介
  • UBOOT,即为通用启动引导程序(Universal Boot Loader),它的前身是PPCBoot,后融合了ARM、XScale、X86以及MIPS体系结构的支持
  • 嵌入式单板的引导程序一般会固化在启动ROM上,它用于初始化、测试硬件或者下载程序代码执行
  • 目前开源社区网站:[ypan=http://www.denx.de/wiki/U-Boot]http://www.denx.de/wiki/U-Boot[/url]
U-Boot支持的程序格式
  • 独立程序
       > 基于U-Boot提供的环境可以直接执行       > 独立程序执行完后,你还可以继续在U-Boot下进行其它的事
  • 系统内核映像
       > 嵌入式系统内核映像在U-Boot引导后获取系统整个控制权,进一步初始化MMU、挂载异常处理向量、加载设备驱动等       > 如果不重启,它是不能重新回到U-Boot控制下的。
  • 基于内存的系统(RAMDisk)
       > 它包含文件系统的数据块       > 在启动时,它会传递各种参数(如地址、大小等)至系统内核
  • 多文件格式程序
       > 它包含数种格式程序,典型例子是系统内核映像(如Linux),加上RAMDisk
  • 固件程序
      > 二进制固件如FPGA程序代码,这些固件经常被烧写到flash上
  • 脚本程序
      > 能够被U-Boot命令行解释器所能执行的命令系列      > U-Boot命令解释器是基于hush算法的U-Boot启动引导过程堆栈、全局数据初始化
  • U-Boot一般是从ROM(如Flash)上启动执行的,这个时候内存控制器还未初始化,不能直接访问系统内存
  • 相应的BSS段未被置0,数据段和BSS段也不能读写
  • 需要至少分配一个小的桟,C语言执行环境才能工作
内存管理
  • U-Boot在系统状态下,能够直接访问物理地址。对于有些处理器,如e500,MMU虽然一直是使能的,实际的有效地址或虚拟地址与物理地址是一一对应的,这种模式也成为特权模式。
  • 通过内存控制器,可访问内存的空间被映射到固定的物理地址范围。同时,映射不同存储类型(如Flash、DDR、SRAM等)单元,我们可以得到一个连续的虚拟地址空间,可能它实际上包含好几个物理内存区。
  • U-Boot固件程序一般放在flash/rom最后的512KB区域,如PQ3(0xFFF80000-0xFFFFFFFF);CPU执行的第一条指令是从0xFFFFFFFC开始,位于flash/rom最后4K地址范围如0xFFFFF000-0xFFFFFFFF。如e500,这个最后4k的有效地址由MMU L2 TLB1的第一个表项在CPU复位后映射的。U-Boot映像中.bootpg段就是这个最后的4K页代码,它的基本功能如:
       > SPR寄存器清零       > 异常向量表初始化       > 由TLB添加映射更大的有效地址范围
  • 一但TLB映射了启动ROM,C语言环境就可以开始继续执行了;这个时候,需要锁住一部分L1 D-Cache作为初始化所需的内存
  • 系统复位后,CCSRBAR基地址为CFG_CCSRBAR_DEFAULT,其地址范围(如0xFF700000-0xFF7FFFFF)为1MB;CCSR寄存器(如L2寄存器,LAR寄存器等)是由TLB1添加1MB映射区域后才能访问,映射建立之后需要立即重定向CFG_CCSRBAR为CFG_CCSRBAR_DEFAULT的值;
  • DDR初始化后,启动执行代码地址被重地位至DDR高端区域,之后是预留的动态内存范围如malloc区域(由CFG_MALLOC_LEN定义范围大小),然后是单板全局信息相关的数据结构,以及栈空间范围(向下);一些系统异常处理程序被搬移到DDR低地址8KB范围。
  • U-Boot基于128MB DDR的典型内存空间如下:
U-Boot识别的映像格式
  • U-Boot加载运行映像是通过'bootm'命令
  • 映像文件是带有特殊文件头的任何文件,其头文件定义的属性如下:(include/image.h中定义)
      > 目标操作系统,目前支持:Linux, NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS      > 目标CPU架构,目前支持:PowerPC, ARM, Intel X86, MIPS, NIOS      > 压缩方式,如gzip, bzip2, lzma以及非压缩的      > 加载地址      > 程序入口地址      > 映像名称      > 映像时间戳
  • 文件头通过一个特殊魔法数(Magic Number)来标记;整个文件映像包含文件头通过CRC32验证来保证其完整性和安全性
U-Boot启动流程以下以PQ3来说明U-Boot的启动流程
U-Boot源代码树
基本结构
板级相关
板级驱动
移植U-Boot至MPC8560单板
MPC8560单板
这两块单板区别
U-Boot添加新单板支持
  • 添加新单板的配置
       > 修改Makefile以及MAKEALL       > 添加相应的单板表项
  • 新建目录来增加单板相关代码
       > Makefile       > <board>.c       > flash.c       > u-boot.lds
  • 为新单板创建配置文件:
       > include/configs/<board>.h
  • 如果涉及新CPU的支持,需要另外创建目录来添加单板CPU的相关代码。
针对MPC8560单板相关的移植
  • CPU相关目录
       > u-boot/cpu/mpc85xx/       > 需要改动的文件:           * tsec.c           * tsec.h           * u-boot/cpu/mpc85xx/Makefile
  • 单板相关目录
       > u-boot/board/mpc8560xx       > 需要修改的文件:           * mpc8560sk.c           * flash.c           * init.S           * u-boot.lds
  • 单板相关的配置文件
       > u-boot/include/configs/MPC8560xxx.h       > 需要修改的文件:           * MPC8560xxx.h
  • 其他相关文件
       >需要修改的文件:           * u-boot/lib_ppc/board.c           * u-boot/Makefile           * u-boot/MAKEALL
U-Boot交叉编译系统编译主机
  • P4 3.2GHz
  • Ubuntu 12.04/Fedro 10
交叉编译源码
  • binutils-2.14
  • gcc-3.3 e500 branch
  • glibc-2.3.2
  • glibc-linuxthreads-2.3.2
  • linux-2.x.xx
交叉工具链
  • [ypan=http://www.embeddedlinuxinterfacing.com/chapters/03/buildtoolchain]http://www.embeddedlinuxinterfac ... s/03/buildtoolchain[/url]
U-Boot编译过程
  • 修改u-boot/Makefile,设置编译器路径以及gcc交叉编译前缀(如powerpc-linux-)
  • make distclean
  • make MPC8560XX_config(注意区分大小写)
  • make
  • 最终输出的映像文件
       >"u-boot/u-boot.bin"    :原二级制映像文件       >"u-boot/u-boot"        :ELF格式映像文件       >"u-boot/u-boot.srec"   :Motorola S-Record格式文件
烧写U-Boot至单板
  • 使用Metrowerks CodeWarrior (v1.0.4 or later)
  • 目标配置---选择目标处理器:8540
  • Flash配置---设备:AM29LV320DT 结构:2Mx16x2
  • 擦除flash最后512 KB: 0xFFF80000 – 0xFFFFFFFF
  • 烧写目标文件
基于U-Boot命令行更新U-Boot固件映像
  • 启动U-Boot至命令行模式
  • 设置单板IP地址以及TFTP服务器IP地址,如下:
       > setenv ipaddr 10.196.31.128       > setenv serverip 10.196.31.35
  • TSEC1端口连接网线,通过TFTP下载image并烧写如下:
  1. tftp 1000000 u-boot.bin”protect off fff80000 fffffffferase fff80000 ffffffffcp.b 1000000 fff80000 80000
复制代码
|8[/ypan]
资料评论(0 条)

  • 授课专家

  • 授课机构

  • 聆听您的建议
欢迎您提出对网站宝贵的建议,我们竭诚为您服务。
请填写建议:
论坛注册名:
客服中心 升级VIP
快速回复 返回顶部 返回列表