搜索
您的当前位置:首页正文

U-Boot在S3C2440上的分析和移植

来源:榕意旅游网
第30卷2016.06 第2期 沈阳化工大学学报 VoI.30 No.2 Jun.2016 JOURNAL OF SHENYANG UNIVERSITY OF CHEMICAL TECHNoLoGY 文章编号:2095—2198(2016)02—0156—04 U—Boot在¥3C2440上的分析和移植 夏礼勇,符秀辉 (沈阳化工大学信息工程学院,辽宁沈阳110142) 摘要: 分析U—Boot的启动流程,介绍了在¥3C2440上移植U—Boot的方法和步骤.该方法以 smdk2410开发板的U—Boot源码为基础,对比分析smdk2410开发板和移植目标平台的硬件差异, 修改smdk2410开发板的U—Boot源码,通过VMWare虚拟机搭建的编译环境编译修改好的U-Boot 代码,并将系统编译生成的uboot.bin文件下载到¥3C2440开发板的NOR Flash存储器中,实现u— Boot在¥3C2440上的移植.通过移植工作可以发现这种移植方法简便易行,移植后系统运行稳定, 并能够大量缩短工程周期.该方法适用于基于ARM和X86等架构的嵌入式Linux系统的Boot— loader移植工作. 关键词:Bootloader;U—Boot;¥3C2440;移植 doi:10.3969/j.issn.2095—2198.2016.02.012 中图分类号:TP368 文献标识码:A 移植Bootloader的目的是在系统上电后,使 用Bootloader初始化系统硬件,构建系统软件环 境,最后引导系统跳转到Linux内核继续运行. 在不同的嵌入式平台上,需要对于针对特定的硬 件配置制作对应的Bootloader.Bootloader种类 1 U—Boot简介 u-Boot是一种业界广泛使用的Bootloader, 其程序开源,兼容性好,源代码可在互联网上直接 很多,每种Bootloader都具有平台针对性,其中 U—Boot对于ARM架构的芯片支持更加完善. 目前研究U—Boot移植的文献大多数介绍的 是在NAND Flash上的移植操作,在文献中没有 下载.U—Boot支持很多架构的CPU,如X86、ARM、 MIPS等架构的CPU,能够引导Linux和Wince等 嵌入式操作系统.本文基于1.1.6版本的U—Boot 进行移植,根据U—Boot源码文件夹下各个目录的 挣陛进行分类,可分为5类,如表1所示. 表1 目录分类 Table 1 Catalogue classiicatfion 介绍U—Boot如何引导系统跳转到Linux内核的 实现细节,只有移植步骤和实现现象,不能明显 体现移植目的.本文通过虚拟机搭建编译环境, 分析U.Boot启动流程,并在启动流程第二阶段 中具体介绍U—Boot引导系统跳转到Linux内核 的实现细节,详细分析U—Boot的移植步骤,最后 在NOR Flash上移植U—Boot.文中移植U—Boot 类别 目录名称 board cpu;libarm;libavr32;libblackfin;lib———— 开发板相关 平台相关 通用函数 i386;lib——m68k;lib——microblaze;libmips;libnios;libnios2;libppc include;libgeneric;common —的操作是后续嵌入式Linux系统开发的基础,同 时文中介绍的U—Boot启动流程和移植步骤也能 通用设备驱动 文档、例程、工具 disk;drivers;dtt;fs;nandspl;net;post; —rtc 给类似平台移植Bootloader提供参考. 收稿日期:2014—12—16 基金项目: 国家自然科学基金资助项目(51375477) doc;examples;tools 作者简介: 夏礼勇(1989一),男,江苏泰州人,硕士研究生在读,主要从事嵌入式系统设计和应用的研究 通讯联系人:符秀辉(1963一),男,辽宁沈阳人,教授,博士,主要从事智能机器人控制方面的研究. 第2期 夏礼勇,等:U—Boot在¥3C2440上的分析和移植 157 行 川.¥(CPU)和¥(BOARDDIR)分别代表 2 U—Boot的移植环境 SoC内部的CPU型号、进行移植的开发板名称, 2.1硬件环境 移植平台是以¥3C2440A为核心的ARM9 开发板,¥3C2440A芯片内部的CPU型号为 ARM920T.¥3C2440A内部集成SRAM,具有5 级流水线,支持NOR Rash和NAND Rash .开 发板主要资源如表2所示. 表2板载主要元器件 Table 2 Plate main components 2.2软件环境 通过在VMware Workstation虚拟机上运行 Ubuntul4.10系统搭建移植软件编译环境,ann— linux—gcc-4.3.2作为编译器,使用JTAG作为下 载和调试工具. 3 U—Boot的启动流程分析 U-Boot可以设置从NOR Rash启动,也可 以设置从NAND Rash启动,因为NAND Rash 容易产生坏块,所以选择从NOR Rash启动,在 本文后续的移植过程中将编译生成的uboot.bin 文件烧录到NOR Rash中,实现从NOR Hash启 动系统程序. 3.1 U—Boot启动流程第一阶段 U—Boot是具有两阶段启动过程的Bootload— er,通常用汇编语言实现第一阶段程序,用C语 言实现第二阶段程序.在启动第一阶段系统执行 start.S和lowlevel_init.S汇编文件,这两个文件 分别位于cpu/¥(CPU)和board/¥(BOARD— DIR)目录中,主要完成以下工作:(1)初始化开 发板相关的硬件;(2)初始化板载内存芯片;(3) 将U-Boot代码拷贝到初始化好的SDRAM中; (4)设置栈;(5)跳到第二阶段C代码中继续执 两个变量的值分别为arm920t和my2440. 3.2 U—Boot启动流程第二阶段 U—Boot启动流程第二阶段如图1所示 图1 U-Boot启动流程第二阶段 Fig.1 U—Boot second stage boot process 在第一阶段第5步中,U—Boot通过l(1r指令 将第二阶段C语言程序start—armboot函数入口 地址赋值给PC寄存器,使系统跳转到第二阶段 执行C语言代码. 在第二阶段启动过程中,程序初始化系统时 钟、初始化定时器、初始化串口模块,检测Rash 上环境参数是否设置.完成上述步骤后,start— armboot函数继续初始化NOR Rash,将存储在 NOR Rash上的环境参数读入SDRAM,初始化 网卡模块,调用main—loop()函数. 在main_loop()函数中,系统会检测U.Boot 环境参数bootdelay和bootcmd的值是否定义, 如果没有定义系统会不断检测串口输入,并解析 执行串口输入的命令;如果已经定义bootdelay 和bootcmd,系统则会倒数bootdelay秒;若在 bootdelay秒内串口有输入,系统会进入读取串 口输人命令、执行命令的循环中;若没有输入,系 158 沈阳化工大学学报 统会执行环境参数bootcmd中定义的命令,环境 参数bootcmd中定义了系统内核的读取指令和 启动内核指令 ,执行bootcmd命令后便成功跳 4.3修改系统时钟设置 查阅芯片数据手册可知¥3C2410A主频 转到Linux内核中继续运行. 4 U-Boot在¥3C2440上的移植步骤 4.1 下载U—Boot-1.1.6源码包解压缩 本文的移植平台是¥3C2440开发板,要在 此硬件平台上移植U—Boot,需要根据板载硬件 修改U—Boot源码.首先从互联网下载1.1.6版 本的U—Boot源码压缩包,把源码压缩包放人到 Ubantul4.10主机的/work/system目录下,在 Linux主机上进入/work/system目录下,在终端 命令行中执行“tar xjr U.Boot一1.1.6.tar.bz2”命 令,待命令执行完毕后,可以得到已经解包解压 缩的U—Boot一1.1.6文件夹. 4.2创建工程相应目录和文件 目前1.1.6版本的U.Boot源码已经能够支 持大部分的2410开发板,本文基于smdk2410的 U—Boot程序对¥3C2440开发板移植U—Boot.在 解压好的u—boot 1.1.6文件夹中的board目录 下存在smdk2410文件夹,首先进行以下6步操 作: (1)在U-Boot源码根目录board文件夹下 新建my2440文件夹; (2)将smdk2410目录下的所有文件拷贝到 my2440文件夹中; (3)在include/configs目录下新建 my2440.h文件; (4)复制相同目录下smdk2410.h中的全 部内容到my2440.h中; (5)在U—Boot源码根目录下的Makefile中 添加如下配置命令 : my2440一config:unconfig @¥(MKCONFIG)¥(@:一config=)arm arm920t my2440 NULL s3 c24x0 (6)修改board目录下my2440目录中的 Makefile,将Makeftle文件中的“COBJS:=”项 后smdk2410.O修改为my2440.O. 为200 MHz,¥3C2440A主频为400 MHz.从 ¥3C2440A数据手册中得知系统频率MPLL和 USB控制器频率UPLL计算公式如下 J: MPLL=(2×m× )/(P×2 ) (1) UPLL=(m xfi )/(P×2 ) (2) 在公式(1)和(2)中,m=MDIV+8,P= PDIV+2,S=SDIV,fi 为外接晶振频率.本文的 移植平台上外接晶振为12 MHz,所以 的值是 12 MHz.在系统晶振输入为12 MHz的情况下, 要改变系统时钟频率和USB控制器频率,需要 在系统时钟的宏定义中给PLLCON寄存器赋 值.根据¥3C2440A数据手册可知PLLCON寄 存器分为MDIV,PDIV,SDIV三个部分,要使系 统频率倍频到400 MHz,需要将MDIV,PDIV, SDIV分别赋值为0x5c,0x01,0x01;要使USB 控制器频率变成48 MHz,需要将MDIV,PDIV, SDIV分别赋值0x38,0x02,0x02. 综合上述分析,在board—init函数中添加如 下宏定义: #define¥3 C2440_MPLL TO 400 MHz ((0x5c<<12)l(0x01《4)I(0x01)) 栉defineS3 C2440一UPLLTO48 MHz 一((0x38<<12)I(0x02<<4)l(0x02)) 其中,board—init函数定义于my2440目录下的 my2440.C文件中.完成上述设置后,还需要设置 时钟分频比,根据¥3C2440A数据手册给CLK. DIVN寄存器赋值0x05,实现FCLK、HCLK、 PCLK的分频比为1:4:8.具体步骤为在 my2440.C文件中继续添加如下宏定义: #deftne S3 C2440 CLKDIVN 0x05 4.4设置支持DM9000网卡 在嵌入式Linux系统中,网络功能很重要. U—Boot一1.1.6已经支持smdk2410开发板板载 的CS8900网卡,¥3C2440开发板板载的是 DM9000网卡,要实现网络支持,首先需要在in。 clude/configs文件夹下的my2440.h文件中删除 如下所示的支持CS8900网卡的宏定义 。 : #deftne CONF1G DRIVER CS8900 l 第2期 郑小帆,等:主动控制和状态反馈控制相结合的超混沌系统同步 165 Active Static State Feedback Control for Synchronization of Hyperchaotic Systems ZHENG Xiao—fan,YAN Min—xiu (Shenyang University of Chemical Technology,Shenyang 1 10142,China) Abstract:The synchronization and anti—synchronization of hyperchaotic systems was investigated in this paper.Based on Lyapunov theory,the active static state feedback controller is presented to guarantee the asymptotic stability.The error feedback gain matrix Can be obtained by the iterative linear matrix inequali— ty(ILMI).Finally,the effectiveness of the proposed controller is veriifed and demonsrtated by the syn— chronization of the hyperchaotic Lorenz systems and the anti—synchronization of Chen systems. Key words:hyperchaotic synchronization; static state feedback; iterative LMI;Lyapunov theory (上接第159页) [3]韦东山.嵌入式Linux应用开发完全手册[M].北 京:人民邮电出版社,2008:261—264. controller User S Manual Revision 0.12[EB/OL]. (2004—03—15)[2013—07—19].http://www. docin.corn/p-679498723.htm1. [4] 申爽.基于¥3C2440的Uboot分析与移植[J].计 算机系统应用,2012,21(5):222—225. [5] Samsung Electronics.¥3C2440A 32一Bit Risc Micro [6] 冯林琳,耿恒山.基于¥3C6410的Uboot分析与移 植[J].计算机与现代化,2013(1):119—121. Analysis and Porting of U—Boot Based on S3C2440 XIA Li-yong,FU Xiu—hui (Shenyang University of Chemical Technology,Shenyang 1 10142,China) Abstract:This article analyzes the boodng sequence of U—Boot,nd expataiates the process and methods of transplanting U—Boot based on¥3C2440.This method is based on the U—Boot source code of smdk2410 developing board,and modifies the U—Boot source code according to the difference between smdk2410 de— veloping board and the target platform,and uses VMWare virtual machine to build compiling environment which is used to compile the revised U—Boot source code,and downloads the uboot.bin to NOR Flash memory,through the above steps the process of porting has been completed.It is found that the method is simple and easy to operate,and the system is stable,in addiiton it speeds up the proceeding of project greatly.The method is suitable for transplanting Bootloader of Linux Embedded operating system based on platform such as ARM and X86 etc. Key words: bootloader; U—Boot;¥3 C2440;trnsaplntaation 

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

Top