- 1 -
U-boot在 OMAP5912平台上的移植方法
阙大顺,刘彬,杨亚雄
武汉理工大学信息工程学院,武汉(430070)
摘 要:Bootloader 是在嵌入式系统运行之前执行的第一段代码,通过这段代码,可以初
始化硬件设备,建立好内存空间映射表,从而建立适当的系统软硬件环境,为最终调用操作
系统内核做好准备。U-boot(Universal Bootloader)是一种通用的功能强大的 Bootloader,本文
详细介绍 U-boot 在基于 TI 公司的 OMAP5912 平台上的移植过程。
关键词:U-boot;OSK5912;嵌入式系统;移植
中图法分类号: 文献标识码:B
1 Bootloader和 OMAP处理器简介
Bootloader是在操作系统内核运行之前运行的一段程序,通过这段程序,可以完成硬件
设备的初始化,并建立内存空间的映射图的功能,从而将系统的软硬件环境带到一个合适的
状态,为最终调用系统内核做好准备。每当嵌入式设备上电或复位时,CPU 总是先执行
Bootloader,初始化硬件设备,如 CPU、Cache、存储器、MMU(内存管理单元)控制器、总
线控制器、各种 I/O接口等;然后从远程主机或者本地非易失存储设备中装载操作系统和可
执行的应用程序,为整个嵌入式系统准备运行环境。
开放式多媒体应用平台(Open Multimedia Applications Platform,简称 OMAP)是 TI公司
推出的适合第三代移动通信的开发平台。开发板是基于 OMAP5912处理器,OMAP5912处
理器是由 TI 应用最为广泛的低功耗、高性能的 TMS320C55x DSP 内核与高控制性能的
ARM926EJ-S 微处理器组成的双核应用处理器。C55x 系列可支持低功耗应用的实时多媒体
处理,ARM926 可满足控制和接口方面的处理需要。OMAP5912 处理器采用了开放式、易
于开发的软件设施,支持广泛的操作系统:Linux、Windows、WinCE、Nucleus、Palm OS、
VxWorks等。
本文详细介绍了 U-boot在基于 TI公司 OMAP5912处理器的 OSK5912系统开发板上的
移植过程。
2 U-boot编译
本系统采用的 U-boot是一种通用的功能强大的 Bootloader,它具有如下特点:开放源码;
支持多种嵌入式操作系统内核,如 Linux、NetBSD、VxWorks、QNX、RTEMS、ARTOS、
LynxOS;支持多个处理器,如 PowerPC、ARM、x86、MIPS、Xscale;较高的可靠性和稳
定性;高度灵活的功能设置,适合 U-boot 调试,操作系统不同引导要求,产品发布等;丰
富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、
键盘等;较为丰富的开发调试文档与强大的网络技术支持。
建立开发环境
嵌入式的目标开发板是基于 TI的 OMAP5912处理器,板载 32M的 NOR Flash,32M的
Mobile DDR,USB接口,串口。下面是硬件连接图,如图 1所示。
建立软件开发环境,主机采用 Suse Linux 操作系统;建立交叉编译环境,要得到下
载到目标板的 U-boot 二进制启动代码,需要对下载的 进行编译。U-boot 的编
- 2 -
译在 Linux 系统下进行,用 arm-linux-gcc 交叉编译工具进行编译。下载交叉编译工具
,解压后在/usr/local/arm/
图1 OSK5912硬件连接图
[root@localhost] # tar –jxvf
Windows 环境下,可以在 网址上下载到最新的
U-boot程序。本文下载的版本是 。在 Linux环境下解压文件。
[root@localhost] # tar –jxvf
编译U-boot的过程
版本对 OSK5912开发板有着良好的支持,大部分的源程序不需要修改,只
需根据使用需要对目录下的程序进行相应的改写,与 OSK5912有关的文件和目录主要有主
目录下的 Makefile 文件,board/omap5912osk/目录,include/configs 目录,cpu/arm926ejs 目
录。
修改 include/configs目录下的 omap5912osk..h文件:
a) 修改 U-boot的环境变量
设置启动参数,文件系统采用nfs挂载:
#define CONFIG_BOOTARGS "mem=32M console=ttyS0,115200n8 noinitrd \
root=/dev/nfs rw nfsroot=: \
/home/share/rootfs ip=dhcp rootfstype=jffs2"
设置子网掩码:
#define CONFIG_NETMASK
设置OSK5912IP地址:
#define CONFIG_IPADDR
设置主机IP地址:
#define CONFIG_SERVERIP
b) 修改处理器的时钟频率
当输入时钟为24MHz时omap5912的时钟频率为192MHz:
#define CONFIG_SYS_CLK_FREQ 24000000
修改完后进行编译:
[root@localhost U-boot] # make mrproper
- 3 -
[root@localhost U-boot] # make omap5912osk_config
[root@localhost U-boot] # make
最后生成 3种映像格式文件 U-boot(ELF格式),(S-Record格式)
(原始的二进制格式)。 格式最为常用,可以直接下载,并且按照绝对地址烧写
到 Flash中即可。
3 U-boot的移植实现
在 Linux下编译生成了 文件,下一步就需要将其下载到开发板中,完成整个
移植工作。
TFTP下载方式
这种方式直接通过 U-boot 命令下载二进制文件,适用于开发板中已经有了老版本的
U-boot,在 Linux下通过 TFTP来更新 U-boot。
配置串口工具
在 Linux操作系统中使用的是 minicom串口通讯工具,在使用 minicom串口终端之前必
须先进行参数配置。minicom的配置界面为菜单方式,配置前需要切换到 root用户权限。
[root@localhost] # minicom
系统会显示配置菜单。通过光标选择“Serial port setup”菜单项,根据快捷键进入子项来
配置参数, Serial Device设置为 ttyS0,Bps/Par/Bits设置为115200 8N1,Hardware Flow Control
设置为 No,Software Flow Control设置为 No。参数配置完后,敲回车键返回主配菜单,移
动光标选择“Save setup as dfl”菜单项,回车保存缺省设置。最后移动光标选择“Exit from
Minicom”退出。再启动 minicom时,就可以进入 minicom的控制台。
配置 TFTP服务
TFTP协议是简单的文件传输协议,文件传输基于 UDP,适合 的下载。配置
TFTP时也需要切换到 root用户权限,通过 Vi编辑器编辑 TFTP配置文件。
[root@localhost] # vi /
把disable=yes这一行删除或修改成disable=no用来启用TFTP,server_args指定了输出文件
的根目录为/tftpboot,并且确保tftpboot目录的访问权限至少为“drwxr-xr-x”,文件必须放在
/tftpboot目录下才能被传输。
[root@localhost] # service xinetd restart
Shutting down xinetd: done
Starting INET service. (xinet) done
二进制文件的下载
连接好开发板,进入minicom串口通讯工具,当开发板启动到U-boot时按任意键暂停启
动进入U-boot命令模式,设置开发板的环境变量,然后通过TFTP下载。
OMAP5912 OSK # tftpboot 0x10000000
此过程是下载到SDRAM中,当下载完毕会显示出文件大小(16进制的形式)
Bytes transferred = xxxxxxx (xxxxx hex)
解除Flash写保护:
OMAP5912 OSK # protect off 1:0-1
擦除Flash:
- 4 -
OMAP5912 OSK # erase 1:0-1
从先前的下载地址拷贝到Flash的0x0处:
OMAP5912 OSK # 0x10000000 0x0 xxxxx
JTAG下载方式
JTAG是1985年指定的检测PCB和IC芯片的一个标准。1990年被修改成IEEE的一个标准,
即,JTAG标准所采用的主要技术为边界扫描技术。此种方式用于开发板中无
U-boot或者自行研发的基于OMAP5912的硬件平台。
CCS的安装和配置
CCS(Code Composer Studio)是一个基于Windows的集成开发环境,CCS支持实时、多
任务、可视化的软件开发,是程序设计、制作、调试的利器。以上版本支持OMAP
处理器,CCS环境下运行的程序实际上是运行在OMAP芯片的仿真设备上,采用
Emulator硬件仿真器。安装好和仿真器的驱动,就可以运行Setup
CCS进行配置,在Available Configurations选择OMAP5912 Emulator,然后
Import配置,OSK5912的配置顺序应该是1、ARM 2、DSP 3、BYPASS,GEL文件分别使用
,。配置好后进入调试管理器,通过调试管理
器的Open菜单,就可以选择打开MPU端或DSP端。如果进入下载模式,开发板的跳线JP3需
跳至12处。
建立烧写 Flash的工程
由于U-boot在Linux操作系统下通过arm-linux-gcc工具编译生成的文件后缀为.bin,而
CCS只支持后缀为.out的文件,所以必须对文件的格式进行转换,用bin2header工
具把转换为,在CCS建立Flash的烧写工程,然后在烧写工程中
当头文件加载进去。OSK5912开发板的BSP提供了对Flash操作的一些函数,Flash烧写工程
的步骤为初始化开发板使omap5912的时钟频率,初始化Flash对其进行解锁, 擦除下载
U-boot所需的空间,把数据拷贝到Buffer中,最后从Buffer写到Flash的0x0首地址处。通过JTAG
连上开发板,在CCS下运行烧写Flash的程序。下载成功后,用串口连接上主机和开发板,在
Linux系统下的终端运行minicom会显示以下启动结果,如图2所示。
图 2 终端显示结果
- 5 -
4 结束语
U-boot移植是嵌入式开发的一个重要环节,是移植 Linux内核和文件系统以及嵌入式应
用软件开发的首要步骤。本文介绍了两种不同条件下的 U-boot下载方式,在 OMAP5912硬
件平台上成功地实现了 U-boot 移植,并成功地引导嵌入式 Linux 操作系统,为基于
OMAP5912处理器的相关嵌入式产品研发打下了基础。
参考文献
[1] 彭启琮, 杨 鍊, 潘 晔. 开放式多媒体应用平台-OMAP处理器的原理及应用[M]. 北京:电子工业出版
社,2005
[2] DENK W. The DENK U-boot and Linux guide (DULG) for TQM8xxL [EB/OL].
2005
[3] Texas Instruments: OMAP5912 Data Manual[Z], 2004
[4] Texas Instruments: OSK5912 User’s Guide Installation Instructions[Z], 2005
Porting Method of U-boot on OMAP5912 Platform
Que Dashun,Liu Bin,Yang Yaxiong
School of Information Engineering,Wuhan University of Technology,Wuhan (430070)
Abstract
Bootloader(Boot Load Program) is the first running codes before Embedded System running. These
codes can perform the hardware devices initialization and set up the memory space map, therefore the
proper system environment can be established for starting the Operating System kernel.
U-boot(Universal Bootloader), is a universal and powerful Bootloader. This paper details the porting
method of U-boot based on the OMAP5912 Platform produced by Texas Instruments (TI)Company.
Keywords:U-boot;OSK5912;embedded system;porting
作者简介:
阙大顺(1963-),男,武汉人,副教授,博士,主要研究方向:智能信息传输与处理、网络
信息安全;
刘彬(1979-),男,武汉人,硕士研究生,主要研究方向:嵌入式系统应用、智能信息传输
与处理;
杨亚雄(1982-),男,武汉人,硕士研究生,主要研究方向:嵌入式系统软硬件开发。