Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686262
  • 博文数量: 845
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:22
文章分类

全部博文(845)

文章存档

2011年(1)

2008年(844)

我的朋友

分类:

2008-10-15 16:28:52

  摘 要:BootLoader(引导装载程序)是系统软件开发的第一个环节,它把操作系统和硬件平台衔接在一起,对于系统的后续软件开发十分重要,在整个开发中也占有相当大的比例。U-BOOT是当前比较流行、功能强大的BootLoader,可以支持多种体系结构。LH7A400是Sharp公司生产的一款基于922T内核的32位RISC芯片,本文详细介绍U-BOOT的功能、特点以及在LH7A400处理器上的移植过程。
 
  关键词:BootLoader U-BOOT移植 LH7A400 922T

       引 言:

        本文以U-BOOT为例,介绍了如何在ARM9开发板上移植BootLoader的过程。LH7A400学习板是旋极公司推出的一款高性能嵌入式开发板,其采用的处理器LH7A400是Sharp公司生产的一款基于ARM922T内核的32位RISC芯片。该芯片集成了高性能的32位RISC处理器核922T(运算速度200MHz,总线速度100MHz) ,能使处理速度达到每秒220百万条指令(MIPS),能耗为1.33mW/MIPS,可以在低电压状态下工作(核心1.8V,输入/输出3.3 V),片内带有锁相回路(PLL)和低能耗核心。此外该芯片还包括: 16KB 高速缓存(Cache), 器管理单元(MMU), 80KB 静态器(SRAM), 彩色液晶显示控制器(LCD), 直接存储控制器(10通道DMA), 异步串行口控制器(UART), 同步串行口控制器(SSP), PCMCIA控制器, AC97声音控制器, 智能卡控制器, 多媒体卡控制器, 电池控制器, USB控制器和时钟/供电管理器。值得一提的是,LH7A400是一款宽温芯片,其工作温度范围为-40℃~+85℃(降低时钟频率),可广泛应用于无线手持设备、智能电话、PDA、家庭娱乐控制器、PocketPC及各种工控设备。
 
  该学习板还包括如下硬件:由2片16位Flash (32MB)和2片16位的SDRAM(64M)构成32位宽的高速存储器结构;10/100M自适应网络芯片DM9000;Sharp 3.5‘TFT LCD彩屏;触摸屏;USB Host/Device;CF卡插槽;全功能JTAG接口等。
 
  1 U-BOOT简介U-BOOT是由德国的工程师Wolfgang Denk从8XXROM代码发展而来的,它支持很多处理器,比如PowerPC、、MIPS和x86.目前,U-BOOT源代码在sourceforge网站的社区中,Internet上有一群自由开发人员对其进行维护和开发,它的项目主页是的最新版本源代码可以在Sourceforge的CVS中匿名获得。
 
  #cvs -d:pserver::/cvsroot/U-BOOT login #cvs -z6 -d:pserver::/cvsroot/U-BOOT \ co -P modulename 1.1 U-BOOT源代码目录结构◆ board:和一些已有开发板有关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。
 
  ◆ common:与体系结构无关的文件,实现各种命令的C文件。
 
  ◆ cpu:CPU相关文件,其中的子目录都是以U-BOOT所支持的CPU为名,比如有子目录926ejs、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c,start.S.其中cpu.c初始化CPU、设置指令Cache和数据Cache等;interrupt.c设置系统的各种中断和异常,比如快速中断、开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S是U-BOOT启动时执行的第一个文件,它主要是设置系统堆栈和工作方式,为进入C程序奠定基础。
 
  ◆ disk:disk驱动的分区处理代码。
 
  ◆ doc:文档。
 
  ◆ drivers:通用设备驱动程序,比如各种网卡、支持CFI的Flash、串口和USB总线等。
 
  ◆fs:支持文件系统的文件,U-BOOT现在支持cramfs、fat、fdos、jffs2和registerfs.◆ include:头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。
 
  ◆ net:与网络有关的代码,BOOTP、TFTP、RARP和NFS文件系统的实现。
 
  ◆ lib_arm:与体系结构相关的代码。
 
  ◆ tools:创建S-Record格式文件 和U-BOOT images的工具。
 
  1.2 U-BOOT的特点U-BOOT支持SCC/FEC以太网、OOTP/TFTP引导、IP和MAC的预置功能,这一点和其它BootLoader(如BLOB和RedBoot等)类似。但U-BOOT还具有一些特有的功能。
 
  ◆ 在线读写Flash、DOC、IDE、IIC、EEROM、RTC,其它的BootLoader根本不支持IDE和DOC的在线读写。
 
  ◆ 支持串行口kermit和S-record代码,U-BOOT本身的工具可以把ELF32格式的可执行文件转换成为 S-record格式,直接从串口并执行。
 
  ◆ 识别二进制、ELF32、uImage格式的Image,对Linux引导有特别的支持。U-BOOT对Linux 内核进一步封装为uImage.封装如下:#{CROSS_COMPILE}-objcopy -O binary -R.note -R.comment -S vm \ .bin #gzip -9 linux.bin #tools/mkimage -A arm -O linux -T kernel -C gzip -a 0xc0008000 -e\ 0xc0008000 -n “Linux-2.4.20” -d linux.bin.gz /tftpboot/uImage即在Linux内核镜像vmLinux前添加了一个特殊的头,这个头在include/image.h中定义,包括目标操作系统的种类(比如Linux,VxWorks等)、目标CPU的体系机构(比如ARM、PowerPC等)、映像文件压缩类型(比如gzip、bzip2等)、加载地址、入口地址、映像名称和映像的生成时间。当系统引导时,U-BOOT会对这个文件头进行CRC校验,如果正确,才会跳到内核执行。如下所示:WT-9# bootm 0xc1000000 ## Checking Image at 0xc100000 ……
 
  Image Name: Linux-2.4.20 Created: 2004-07-02 22:10:11 UTC Image Type: Linux Kernel Image (gzip compressed)
 

[1]   

【责编:Luzi】

--------------------next---------------------

阅读(240) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~