您的位置:首页 > 其它

S3C6410 启动u-boot 加载内核和文件系统

2014-03-18 03:05 337 查看
一。通过sd引导u-boot。通过tftp烧写内核zimage镜像到SRAM。通过nfs网络文件服务 烧写

思路:

1.sd卡u-boot

2.tftp 把zimage kenel镜像 传到0x50008000 [为什么是0x50008000???,请参考s3c6410 手册 memorymap这一章]

bootm 0x50008000

3.内核启动后 其中bootargs 根文件系统 通过nfs从主机的/nfsroot 传到系统的/dev/nfs下。 此处有个疑问 更文件系统还未烧写 。怎么会有/dev/nfs? 【/dev/nfs 是虚拟的】

注意:

第二步的前提是 主机的ftp下要有zimage



配置tftp的根目录

/etc/default/tftpd-hpa

cp镜像文件到tft根目录

cp ~/up6410/images/* /tftpboot

第三步的前提是

网络文件系统要建立

安装nfs服务器

修改nfs配置 vim /etc/exports

重启服务

4.当然要设置好启动路径

bootargs== root=/dev/nfs rw nfsroot=192.168.1.254:/nfsroot ip=192.168.1.253 console=ttySAC0,115200

二.通过nand flash启动u-boot

0x00000000-0x00040000 : "Bootloader"

0x00040000-0x00400000 : "Kernel"

0x00400000-0x05400000 : "Rootfs"

0x05400000-0x10000000 : "File System"

思路:

1.写u-boot到nandflash 0x00000000-0x00040000

2.写内核到nandflash 0x00040000-0x00400000

3.写根文件系统到nandflash 0x00400000-0x05400000

4.minicom配置u-boot 内核 根文件系统环境变量。

5.arm板子板子上把跳线,跳到nandflash启动。重启启动。

三.

具体分析

在没有nand write之前nandflash里没没有u-boot等信息,minicom是没有信息打出的。。

对u-boot的设置,如果sd卡,则printe信息保存在对应的sd卡里面。

如果nandflash启动u-boot,则printe对应的信息,保存在nandflash里面。

用两张不同的sd卡,分别设置 保存的u-boot信息,在不同的sd卡上。

注意下面两个都是从sd启动u-boot的。【从那启动u-boot,是有板子上的跳线决定的】

比如sd卡1

[uplooking]# printe

bootdelay=3

baudrate=115200

gatewayip=192.168.1.1

netmask=255.255.255.0

ethaddr=64:31:50:a3:41:b5

ipaddr=192.168.1.253

serverip=192.168.1.254

bootargs_nfs=root=/dev/nfs rw nfsroot=192.168.1.254:/nfsroot ip=192.168.1.253 console=ttySAC0,115200

bootargs_nand=root=/dev/mtdblock2 rw console=ttySAC0,115200

bootcmd=nand read 0x50008000 0x40000 0x220000; bootm 0x50008000

bootargs=root=/dev/mtdblock2 rw console=ttySAC0,115200

stdin=serial

stdout=serial

stderr=serial

从printe打印的信息我们可以看出 内核是从nandflash上读到sram上的。

而根文件系统已经烧到nandflash上并且挂载在/dev/mtdblock2路径下。

sd卡2

[uplooking]# printe

bootdelay=3

baudrate=115200

ethaddr=00:40:5c:26:0a:5b

ipaddr=192.168.1.253

serverip=192.168.1.254

gatewayip=192.168.1.1

netmask=255.255.255.0

bootargs_nand=root=/dev/mtdblock2 rw console=ttySAC0,115200

bootcmd=tftp 500000000 buzzer.bin;go 50000000

bootargs_nfs=root=/dev/nfs rw nfsroot=192.168.1.254:/nfsroot ip=192.168.1.253 console=ttySAC0,115200

bootargs== root=/dev/nfs rw nfsroot=192.168.1.254:/nfsroot ip=192.168.1.253 console=ttySAC0,115200

stdin=serial

stdout=serial

stderr=serial

从上面的打印信息可以看出。。。看出问题了。因为没有加载内核zImage。而是把一个buzzer烧到sdam里面。所以无法启动内核。

修改sd卡2的配置位如下

修改为:

set bootcmd tftp 0x50008000 zImage\; bootm 0x50008000

save



然后reset就ok了

[uplooking]# printe

bootdelay=3

baudrate=115200

gatewayip=192.168.1.1

netmask=255.255.255.0

ethaddr=64:31:50:a3:41:b5

ipaddr=192.168.1.253

serverip=192.168.1.254

bootargs_nfs=root=/dev/nfs rw nfsroot=192.168.1.254:/nfsroot ip=192.168.1.253 console=ttySAC0,115200

bootargs_nand=root=/dev/mtdblock2 rw console=ttySAC0,115200

bootcmd=nand read 0x50008000 0x40000 0x220000; bootm 0x50008000

bootargs=root=/dev/mtdblock2 rw console=ttySAC0,115200

stdin=serial

stdout=serial

stderr=serial
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: