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

一。通过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









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值