u-boot


/
一、S5PV210的启动方式


iROM:BL0,BootLoader 0,初始化系统时钟,初始化对应的设备和启动设备(Nand,SD卡),三星固化在芯
片的代码,我们是不能修改。

BL1:BootLoader 1,uboot前面的16KB代码。
.重新初始化系统时钟,CPU=1GHz,初始化串口、Nand、DDR2等硬件设备。
.拷贝整个u-boot到DDR2内存当中,拷贝512KB大小。
BL2:BootLoader 2,它是整个uboot。
.带有调试功能
.启动内核,将内核拷贝到内存0x30008000地址当中。
///

一、嵌入式的启动过程 


uboot ---> kernel ---> 根文件系统 ---> 应用程序
              加载        挂载            调用
 
bios ---> winnt ---> ntfs ---> 应用程序  

二、什么是u-boot?

1.u-boot是通用的引导程序。 


U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-

Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上

,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序,这从

U-Boot源码的注释中能体现这一点。


选择U-Boot的理由:
 
① 开放源码;
 
② 支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;
 
③ 支持多个处理器系列,如PowerPC、ARM、x86、MIPS;
 
④ 较高的可靠性和稳定性;
 
⑤ 高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
 
⑥ 丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
 
⑦ 较为丰富的开发调试文档与强大的网络技术支持;




2.u-boot官网


主页:http://www.denx.de/wiki/U-Boot/


源码:ftp://ftp.denx.de/pub/u-boot/




3.特征
1)通用性
.支持多种硬件:MIPS、ARM、x68、PowerPC
.支持多种操作系统:Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android






2)BootLoader
.Boot 启动及初始化
.CPU级别的初始化:时钟、看门狗、DDR2、Uart
.板级的初始化:网络设备DM9000、I2C设备、音频设备等。


.Loader
.将Nand Flash存储的kernel拷贝到DDR2内存当中
.向Kernel传递启动参数,会放在0x3000_0100地址当中
.bootargs=root=/dev/mtdblock4 rootfstype=yaffs2 init=/linuxrc 


console=ttySAC0,115200
.启动内核
.the_kernel
3)带有调试功能
.loady tftp go .....


4.u-boot不是Linux的一部分,我们也可以设计一个bootloader


5.u-boot就是一个复杂的裸机程序而已


6.u-boot一般来说分为两个阶段:BL1,BL2



三、u-boot的使用



1.查看u-boot支持的命令
GEC210 # help
或者
GEC210 # ?


2.ping
默认状态下,u-boot是将网卡进行关闭的。所以使用ping命令的时候,一定要主动ping电脑主机。

成功:
GEC210 # ping 192.168.1.2
dm9000 i/o: 0x88000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
host 192.168.1.2 is alive

失败:
GEC210 # ping 192.168.1.254
dm9000 i/o: 0x88000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
ping failed; host 192.168.1.254 is not alive

3.setenv 设置环境变量
bootargs=root=/dev/mtdblock4 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200
bootcmd=nand read 0x30008000 0x600000 0x500000 ;bootm 0x30008000
bootdelay=3
baudrate=115200
ethaddr=00:40:5c:26:0a:5b
gatewayip=192.168.0.1
netmask=255.255.0.0
ipaddr=192.168.1.3
serverip=192.168.1.2


例如现在设置开发板的IP
GEC210 # setenv ipaddr 192.168.1.3
GEC210 # saveenv
Saving Environment to SMDK bootable device...
Erasing Nand...
Writing to Nand... 
Saved enviroment variables



例如现在u-boot加载内核的延时时间
GEC210 # setenv bootdelay 5
GEC210 # saveenv
Saving Environment to SMDK bootable device...
Erasing Nand...
Writing to Nand... 
Saved enviroment variables


4.reset 复位开发板
GEC210 # reset
reset... 


5.bdinfo 开发板信息

GEC210 # bdinfo
arch_number = 0x00000998 //机器码,跟Linux Kernel内置的机器码进行匹配,如果匹

配成功,则能启动内核;反之,就不能启动内核。
boot_params = 0x30000100 //存放启动参数的位置,给Linux内核启动的时候进行访问
DRAM bank   = 0x00000000 //DDR2内存通道0
-> start    = 0x30000000 //通道0内存起始地址0x30000000
-> size     = 0x10000000 //通道0内存大小为256MB
DRAM bank   = 0x00000001 //DDR2内存通道1
-> start    = 0x40000000 //通道1内存起始地址0x40000000
-> size     = 0x10000000 //通道1内存大小为256MB
ethaddr     = 00:40:5C:26:0A:5B //网卡的MAC地址信息
ip_addr     = 192.168.1.3 //网卡的IP地址信息
baudrate    = 115200 bps //串口波特率


6.bootcmd uboot启动完之后接着要做的事情

bootcmd=nand read 0x30008000 0x600000 0x500000 ;bootm 0x30008000

1)nand read 0x30008000 0x600000 0x500000
从Nand Flash起始地址0x600000读取0x500000字节大小内容拷贝到0x30008000

2)bootm 0x30008000
在0x30008000地址上启动内核

有些时候不需要启动内核,只需要调试代码。
setenv bootcmd 'tftp 0x40000000 start.bin;go 0x40000000'
saveenv

setenv bootcmd 'nand read 0x30008000 0x600000 0x500000 ;bootm 0x30008000'
saveenv


7.启动参数


bootargs=root=/dev/mtdblock4 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200


1)root=/dev/mtdblock4
挂载的是Nand Flash第4个分区




2)rootfstype=yaffs2
根文件系统类型




3)init=/linuxrc
init是Linux启动的第一个进程,也是所有进程的父进程,PID=1,也是唯一的一个Linux内核发起


的进程。




4)console=ttySAC0,115200
当前使用串口0,波特率为115200




8.boot 启动内核





四、u-boot的编译


0.使用粤嵌公司制造好的u-boot
uboot-gec21020130916.tar.bz2


.将u-boot源码包解压到家目录,不能在共享目录进行编译,因为软链接在共享目录是失效的。


tar -jxf /mnt/hgfs/share/uboot-gec21020130916.tar.bz2 -C ~


1.交叉编译工具
arm-2009q3.tar.bz2


.切换到root权限
.安装到/usr/local/arm/arm-2009q3
tar -jxf /mnt/hgfs/share/arm-2009q3.tar.bz2 -C /usr/local/arm/


root@ubuntu:/usr/local/arm# ls
arm-2009q3




2.进入uboot-gec210目录,直接输入make命令显示以下的错误信息
root@ubuntu:~/uboot-gec210# make
System not configured - see README
make: *** [all] Error 1




Selection of Processor Architecture and Board Type:
---------------------------------------------------


For all supported boards there are ready-to-use default
configurations available; just type "make <board_name>_config".


Example: For a TQM823L module type:


cd u-boot
make TQM823L_config


在Makefile发现有对于gec210开发板平台的配置
gec210_nand_config : unconfig
@$(MKCONFIG) $(@:_config=) arm s5pc11x gec210 samsung s5pc110
@echo "TEXT_BASE = 0xc3e00000" > $(obj)board/samsung/gec210/config.mk




那么我们制定开发板平台,可以输入以下命令:
root@ubuntu:~/uboot-gec210# make gec210_nand_config 
Configuring for gec210_nand board...




3.在Makefile当中,要制定好交叉编译工具。


行147修改如下:
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-




4.输入make命令,进行编译uboot。




5.固化uboot到Nand Flash


tftp 0x40000000 u-boot.bin //将u-boot.bin下载到内存0x40000000地址处


nand erase 0x0 0x100000 //将Nand Flash起始地址0擦除0x100000字节大小的空间

nand write 0x40000000 0x0 0x100000 //将内存地址0x4000000地址处内容写入到Nand Flash 起始


地址0,大小为0x100000














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值