在线问答
直播中

yqwucheng

9年用户 31经验值
擅长:105536
私信 关注

【OK210试用体验】基于S5PV210的UBOOT概述

启动引导(boot loader)是包括两个部分:1.引导加载os 2. 为了让os能够正常运行所要做的硬件和软件初始化工作。从OS引导的方式来看,启动又分两种模式,一种是用于开发人员调试的“下载模式”,配置好网络环境、网络文件系统变量之后,OS可以从PC宿主机进行引导;另一种是量产产品的启动模式,OS已经存在于产品系统的外存设备中,启动即从外存中加载。

       常见的启动引导模块技术如下图:

                           

          uboot是一个通用的boot loader,被广泛应用于多种芯片架构的不同操作系统的引导。uboot是由德国 DENX中心维护的开项目,至今已经支持超过200块不同的主板启动. S5PV210是三星研发的基于arm cortex a8的SOC,也得到uboot支持。由于S5PV210和S5PC11X基本一致(不同点请看上一篇:嵌入式启动之四),uboot在源码目录支持体现的是SP5PC11X。

          uboot源码目录如下:


         主要目录解释如下,用source insight可以将这些相关目录添加进去。

          1)CPU是与体系相关的代码。source insight添加cpus5pc11x 文件夹的文件。UBOOT 第一阶段的第一条语句就包含在这个目录的start.S中。CPU目录配置的是S5PV210芯片的硬件初始化。

          2)board是厂商开发板定制部分相关代码,source insight添加boardsamsungsmdkc110文件夹的文件。smdkc110是三星针对S5PV210芯片研发的开发板。国内大部分基于A8的学习开发板都是仿照这个开发板进行研制。因此此类开发板的UBOOT移植工作量不大。

         3)common是UBOOT与平台(体系架构)无关的命令代码,如setenv,nand等命令相关的代码实现。source insight添加common 文件夹的文件

         4)lib_arm是UBOOT与系统相关的一些命令的代码实现。source insight添加lib_arm。

         5)driver 驱动,rtc,lcd,i2c,mtd等等。如果开发板连接了跟smdkc110开发板不同的外围器件,那需要对该目录的对应驱动进行移植。source insight添加driver目录。

        6)fs,文件系统支持,如fat32,yaffs2,cramfs等。source insight添加fs目录。

        7)net,网络协议栈支持,如tftp、nfs等。source insight添加net目录。

        8)include,头文件。选择s5pc11x,arm相关的头文件添加  。

        9)根目录的makefile, mkconfig. mkconfig是字符配置方式,在makefile之前进行配置,并创建一些配置文件,在makefile阶段会使用。mkconfig方便项目进行多体系支持,当需要产生某个开发板的引导固件时,就需要先配置好要编译哪个体系的哪个开发板,配置的结果就是产生一个特定的文件。然后makefile编译链接前会读取该文件获得配置信息,进行相应的编译过程。

       mkconfig的目标在include/configs/目录,如smdk110.h。要支持S5PV210,可以拷贝smdk110.h为s5pv210_config.h,并修改相关的配置(以后移植时会谈到)。然后./mkconfig s5pv210_config即完成配置。接着make完成编译链接过程,生成uboot.bin。

        uboot.bin可以通过sd_fuse目录创建card启动,也可以通过UBOOT自身的tftp命令和nand读写命令进行uboot更新。

        tftp下载固件到内存,需要先配置好网络环境,开发板和宿主机需要设置在同一个局域网。如果是vmare的linux需要和板子连通,需要设置为bridge方式,不能用NAT方式。同时,还需要在宿主机上配置好tftp服务器。设置同一个局域网的命令是:(通过uboot命令行设置:)

        setenv ipaddr 192.168.1.xxx (开发板的网卡IP)

        setenv serverip 192.168.1.yyy (宿主机的网络IP)     

        setenv gatewayip 192.168.1.1

        saveenv

        tftp的格式为:tftp 内存地址 文件名,即将文件的内容下载到内存地址所指的地方。文件所在的目录在tftp服务器上设定。

        nand write 内存地址 nand起始地址(为0) 长度,即可将内存中的文件内容写到nand。重新上电即可。



博客:blog.csdn.net/yueqian_scut  
微信公众号:嵌入式企鹅圈,资深嵌入式架构师,百分百原创,敬请关注!



更多回帖

发帖
×
20
完善资料,
赚取积分