嵌入式启动之五:基于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添加\cpu\s5pc11x 文件夹的文件。UBOOT
第一阶段的第一条语句就包含在这个目录的start.S中。CPU目录配置的是S5PV210芯片的硬件初始化。

2)board是厂商开发板定制部分相关代码,source
insight添加\board\samsung\smdkc110文件夹的文件。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。重新上电即可。

时间: 2024-10-28 16:23:27

嵌入式启动之五:基于S5PV210的UBOOT概述的相关文章

嵌入式启动之四:S5PV210 IROM BL0启动

三星S5PV210基于A8内核,是arm v7体系,广泛应用于手机和平板解决方案中.市场上也有很多基于S5PV210芯片的开发板(如smart210, gec210等),用于学习高级ARM体系编程.S5PV210跟S5PC11X基本一致,很多人认为两者是同样的SOC,只不过是封装不同,事实上,两者确实略有不同.跟S5PC11X相比,S5PV210没有内置16MSRAM和电源管理模块,解码能力也有些许不同.但从软件使用的角度,两者在内核体系.集成模块.管脚封装上确实有很大的相似性,以致UBOOT在

基于s5pv210的uboot总结

1.启动过程特征总结 (1)第一阶段为汇编阶段.第二阶段为C阶段 (2)第一阶段在SRAM中.第二阶段在DRAM中 (3)第一阶段注重SoC内部.第二阶段注重SoC外部Board内部 2.uboot的第一阶段做了哪些工作 (1)构建异常向量表 (2)设置CPU为SVC模式 (3)关看门狗 (4)开发板供电置锁 (5)时钟初始化 (6)DDR初始化 (7)串口初始化并打印"OK" (8)重定位 (9)建立映射表并开启MMU (10)跳转到第二阶段 3.uboot第二阶段主要是对开发板级别

嵌入式Linux学习笔记(基于S5PV210 TQ210)

基于S5PV210.TQ210平台. 本文更多的是教会大家如何学习! 包括如下内容: 1.前言 2.开发环境搭建 3.制作交叉编译器 4.裸机编程 4.1.汇编学习 4.2.S5PV210启动流程 4.3.点亮一个LED 4.4.串口 4.5.实现printf 4.6.时钟配置 4.7.重定位 4.8.DDR 4.9.NAND读写 4.11.LCD操作 5.移植u-boot(基于u-boot-2014.4版本) 5.1.概述 5.2.u-boot配置过程分析 5.3.u-boot编译过程分析 5

嵌入式启动之二:资源宽裕型嵌入式系统

上一篇介绍了资源紧缺型嵌入式系统的启动过程,如今介绍资源宽裕型嵌入式系统的启动过程. 内存资源宽裕型操作系统一般都外挂SDRAM,而且CPU的计算能力都比較强,比如基于cortex A.MIPS 74k等核心的SOC. 下图是两种嵌入式系统架构的差别: 图1,对于资源紧缺型系统,内置flash和ram. 上电之前就已经通过烧写工具将代码写到内置flash(nor flas).而iram用于data读写. 图2是资源宽裕型系统.其代码都放在外置存储介质中,如nand.sd卡等,包含引导OS的启动代

u-boot学习(一):u-boot概述

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 看到不错的文章,不要添加收藏夹,想着以后有时间再看,因为很有可能你以后再也不会看它们了. 想写总结的文章,不要想着等到以后有时间了再总结,因为很有可能你以后更没有时间总结它们了. --送给自己 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Linux 嵌入式启动以及优化

转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201312/19-2717.html 第一步: BootLoader -- U boot 1 在cpu/arm926ejs/start.s中 a) b reset ; //jump to reset b) set cpsr ;svc mode ,disable I,F interrupt c)调用lowlevel_init  (在board\xxxx\lowlevel_init.S中 将调用

嵌入式启动之三:应用程序的三种存储和加载方式

通过前面嵌入式启动方式的学习,再来理解嵌入式应用程序的三种加载方式是比较容易的.一般意义上,启动是为了引导OS到内存,而应用程序则是操作系统run起来后的用户选择,两者是比较相似的.先根据启动的两种方式来介绍应用程序的加载. 1. 对于资源有限型的嵌入式系统,应用程序在编译.链接之后,会通过二进制工具分析可执行文件的格式,抽出code和data段数据,生成.HEX格式或者.BIN格式,下载到SOC内置的flash中.在上电之后就直接执行了.这种加载方式称为离线加载. 2. 对于资源宽裕型的嵌入式

tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动

我们知道 s5pv210启动方式有非常多种,sd卡和nand flash 启动就是当中的两种,前面我们实现的都是基于sd卡启动,这节我们開始实现从nand flash 启动: 从 NAND 启动 u-boot,须要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存.这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-boot.bin.在 u-boot.bin 中的 NAND 驱动比較大,它包括了非常多功能,而 u-boot-spl

tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——NAND 启动

我们知道 s5pv210启动方式有很多种,sd卡和nand flash 启动就是其中的两种,前面我们实现的都是基于sd卡启动,这节我们开始实现从nand flash 启动: 从 NAND 启动 u-boot,需要 BL1 初始化 NAND 控制器,然后从 NAND 拷贝 BL2 到 DDR 内存.这里的BL1 即我们移植的 u-boot-spl.bin,BL2 即我们移植的 u-boot.bin.在 u-boot.bin 中的 NAND 驱动比较大,它包含了很多功能,而 u-boot-spl.b