您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页U-Boot 启动流程分析与S3C2410上的移植

U-Boot 启动流程分析与S3C2410上的移植

来源:好走旅游网
维普资讯 http://www.cqvip.com 第2O卷第8期 电脑开发与应用 文覃纲号:1003—5850(2007)08—0053—02 U—B00t启动流程分析与¥3C2410上的移植 Analysis Of U—Boot startup and Porting to S3C2410 董 晨 高金山 陈庆伟 王亚庭 (北京交通大学计算机与信息技术学院 北京 100044) 【摘 要】Bootloader(引导加载程序)是嵌入式系统开发的关键环节之一,通过这段代码,可以初始化硬件设 备,建立内存空问的映射图,从而将系统的软硬件设置成合适状态,以便为最终调用操作系统内核准备好正确 的环境。U—Boot是一个开放源码的功能强大的Bootloader,具备烧写flash、以太网下载等功能,移植U-Boot 可以为嵌入式系统的开发调试提供诸多方便。重点分析了与U—boot的启动流程相关的三个源文件,并介绍了 ¥3C2410开发板上的移植实例。为在其他嵌入式处理器上进行Bootloader程序设计提供了参考。 【关键词】S3C241O,Bootloader,U—Boot移植 中圈分类号:TP311.5 文献标识码:A ABSTRACT Bootloader is one of the key parts in embedded system development.By this code,hardware is initialized and memory space is mapped.As a result,the system’S hardware and software environment is suitable for OS kernel starting up.U—Boot is a powerful bootloader which can be utilized for embedded system applications’developing and debugging.After analyzing the startup process of U-Boot,the paper presents an approach tO port U—Boot on¥3C2410 board.All this work can be referred tO when designing Bootloader for other embedded processors. KEYWORDS¥3C2410,bootloader,U—boot porting. 引导加载程序(Bootloader)的开发和移植是嵌入 式系统开发的难点之一,同时也是系统运行的基本条 件。U—boot是当前比较流行、功能强大的BootLoader, 它可以支持多种体系结构的处理器,同时提供了完备 的命令体系。U—Boot具有以太网下载程序、网络启动 操作系统、烧写flash等功能,是理想的Bootloader,将 U—Boot移植到嵌入式开发板上可提高开发效率。 1 U—boot启动流程分析 图1 U—Boot届动代码沉程图 开发板上电后,执行u—boot的第一条指令,然后 start: 一顺序执行u—boot启动函数。函数调用顺序如图1所 因此,必须通知编译器以使其知道这个入口,该工 示。U—boot启动流程主要体现在3个文件上,即start. 作可通过修改连接器脚本文件u—boot.1ds来完成。u— S、lib arm/board.C和u—boot/common/main.c。下面 boot.1ds文件用来设置U—boot中各个目标文件的连 详细分析启动流程。 接地址。②设置异常向量(ExceptionVector):中断异 1.1 start.S文件 常向量表是u—boot与操作系统内核发生联系的关键 start.S文件主要是CPU的初始化,用汇编语言 地方之一。即使操作系统内核已经得到处理器的控制 编写,其主要代码流程如下: 权运行,一旦发生中断,处理器还是会自动跳转到从 ①定义入口:由于一个可执行的Image必须有一 OxO地址开始的异常中断向量表中的某个位置(依据 个入口点,并且只能有一个全局入口,通常这个入口放 于中断类型)处读取指令运行。异常中断向量表从0地 在RoM(Flash)的0x0地址,在start.S文件中有如下 址开始,连续8×4字节的空间,分别是复位、未定义指 语句: 令错误、软件中断、预取指令错误、数据存取错误、 .globl start IRQ、FIQ和一个保留的中断向量。③设置CPU的速 * 2007—01—12收到,2007—06—15改回 **董晨,男,1993年出生,硕士研究生,研究方向:嵌入式系统。 维普资讯 http://www.cqvip.com U—Boot启动流程分析与¥3C2410上的移植 度、时钟频率及中断控制寄存器:依次为关闭看门狗计 时器,屏蔽所有中断,配置时钟(包括三个寄存器: pWTCON、INTMR、CLKDIVN)。④初始化内存控制 器:内存控制器初始化主要通过设置13个从 0x48000000开始的特殊功能寄存器来完成,包括外部 数据总线宽度、访问周期、定时的控制信号等。⑤将 ROM中的程序复制到RAM中:首先利用PC取得 BootLoader在Flash的起始地址,再通过标号之差计 算出这个程序代码的大小。通过寄存器(r3到rl0)作 为复制的中间媒介,将代码复制到RAM中。 ⑥初始化堆栈:进入各种模式设置相应模式的堆 栈。 ⑦转到RAM中执行:该工作可使用指令ldr pc 来完成。即ldr pc,start armboot。 1.2 lib—arm/board.c文件  ‘U—boot/Lib arm/board.C中的start armboot 是C语言开始的函数,也是整个启动代码中C语言的 主函数,该函数调用一系列的初始化函数,进行各种初 始化设置。该函数完成的操作为: ①调用一系列的初始化函数,包括:interrupt— init(中断设置),env init(环境变量设置)等等。②初 始化Flash设备。③初始化系统内存分配函数。④如果 目标系统拥有NAND设备,则初始化NAND设备。⑤ 如果目标系统有显示设备,则初始化该类设备。⑥初始 化相关网络设备,填写IP、MAC地址等。 1.3 U—boot/common/main.c文件 完成上述初始化后,进人命令循环(即整个boot 的工作循环),代码为: for(;;){ mainloop(); —) main—loop函数存在于U—boot/common/main.C文 件中,启动过程会出现“Hit any key to stop autoboot” 提示,若回车则进人命令提示状态,否则U—boot从某 个位置(由bootemd参数设置)启动操作系统内核。 2 U—boot的移植实例 以北京恒颐高科生产的H2410EB开发板为例,存 储地址分布为:FLASH中0X0—0X1BFFF为U— BOOT代码,0X1C000—0X2BFFF为环境参数保存区, Ox2CO00一OX1FFFFF 为程序区,SDRAM 中 oX33F8oooo—OX33FFFFFF为U—Boot代码区。 在移植过程中需要根据自己开发板硬件的配置修 改相关的文件,修改的文件内容如下:board/my2410/ lowlevel-init.S:这段汇编代码的作用是初始化内存 控制器。通过设置从地址0x48000000开始的13个寄 存器的值,来初始化存储空间,设置刷新频率。本开发 板的情况是BANK0映射16位的Nor FLASH, BANK3映射8位工作模式的RTL8019以太网卡, BANK6映射32位的SDRAM,其容量是64M。根据 这些情况并参考s3c2410数据手册编辑lowleve1. init.S 添加Nor Flash驱动:开发板所用的Nor Flash与 参考板不同,因此要移植Flash的驱动程序。 添加以太网驱动:H2410EB开发板的网卡与参考 板不同,需要修改include/configs/my2410.h头文件 增加对RTL8019网卡的支持。 #define CONFIGDRIVERRTL801 9 1 ——l we have a RTL801 on—board | #define RTL801 9BASE 0x1 8000000 一/*定义RTL8019网卡的基地址bank 3*/ 此外还要定义目标板MAC地址、子网掩码、IP 地址以及宿主机IP地址。 代码修改完成后,重新进行编译。将编译后的U— boot.bin通过JTAG口烧写到目标板Flash的0x0地 址。移植成功后,开发板上电时U—boot启动,可以在 超级终端看到串口打印出的消息。 3结束语 对于嵌入式应用,一个高效且可定制的 Bootloader会使用户的开发事半功倍,而U—Boot正是 以此为目标。笔者移植的U—Boot已经能够稳定地运 行在开发板上,并且可以通过以太网加载linux内核 映像,为后续的软件开发奠定了很好的基础。 参考文献 El i DENX Software Engineering.Das U—Boot—the Universal Boot Loader[OL].http://www.denx.de/ wiki/UBoot/WebHome,Revision rl,2007—6—13. L2] Karim Yaghmour.Building Embedded Linux Systems [M].USA:O’Reilly,2003. -13] 陈渝,李 明,杨 晔.源码开放的嵌入式系统软件 分析与实践[M].北京:北京航空航天大学出版社, 2004. E4] 詹荣开.嵌入式系统Bootloader技术内幕.http:// WWW.ibm.corn/developerworks/cn/linux/1一btloodex/ index.html,Revision 1.0,2003—12—12. E53 孙纪坤,张小全.嵌入式Linux系统开发技术详解~基 于ARM[M].北京:人民邮电出版社,2006. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务