当前位置:  技术问答>linux和unix

S3C2416从NAND Flash启动系统思路

    来源: 互联网  发布时间:2016-11-30

    本文导语:  本帖最后由 heshanxingzhe 于 2011-04-16 15:12:33 编辑 目前系统的启动情况是:uboot在NOR flash中,上电从nor flash启动,到uboot命令行时,手动加载服务器上的uImage到内存中,然后从内存启动。 #tftp 0x30007fc0 uImage #bootm 顺利进...

本帖最后由 heshanxingzhe 于 2011-04-16 15:12:33 编辑
目前系统的启动情况是:uboot在NOR flash中,上电从nor flash启动,到uboot命令行时,手动加载服务器上的uImage到内存中,然后从内存启动。
#tftp 0x30007fc0 uImage
#bootm
顺利进入系统(参考附件)。

想改为:不要手动加载服务器上的uImage,改成从nand  flash加载,即从本地启动。

我目前的思路是:把rootfs放到nand中,然后挂接nand中的文件系统,实现开发板的本地启动,当然当前的uboot也是要修改的。

但我不知道这样行不行,且以前没有弄这方面的东西,不知道具体流程是怎么样,应该弄些什么,请哪位大侠了解或做过的指点一下,多谢了!

附1:目前的启动过程:
U-Boot 2010.06 (Dec 23 2010 - 20:00:58) for SMDK2416
CPU:   S3C2416@400MHz
       Fclk = 800MHz, Hclk = 133MHz, Pclk = 66MHz
Board: SMDK2416 DDR2
DRAM:  64 MiB
Flash: 0 Bytes
NAND:  128 MiB
In:    serial
Out:   serial
Err:   serial
Net:   dm9000
Hit any key to stop autoboot:  0 
J2534# tftp 0x30007fc0 uImage
dm9000 i/o: 0x28000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
could not establish link
Using dm9000 device
TFTP from server 192.168.0.201; our IP address is 192.168.0.200
Filename 'uImage'.
Load address: 0x30007fc0
Loading: T T #################################################################
 #################################################################
 ##############################################################
done
Bytes transferred = 2800036 (2ab9a4 hex)
J2534# bootm
## Booting kernel from Legacy Image at 30007fc0 ...
   Image Name:   Linux-2.6.36
   Created:      2011-01-21   2:28:54 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2799972 Bytes = 2.7 MiB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.36 (root@virtual-linux) (gcc version 4.4.5 (crosstool-NG-1.9.0) ) #468 Fri Jan 21 10:14:13 CST 2011
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: SMDK2416
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] CPU S3C2416/S3C2450 (id 0x32450003)
………………………………………………
………………………………………………
………………………………………………
[    1.645000] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[    2.410000] IP-Config: Complete:
[    2.410000]      device=eth0, addr=192.168.0.200, mask=255.255.255.0, gw=192.168.0.1,
[    2.415000]      host=192.168.0.200, domain=, nis-domain=(none),
[    2.420000]      bootserver=192.168.0.201, rootserver=192.168.0.201, rootpath=
[    2.430000] Looking up port of RPC 100003/2 on 192.168.0.201
[    2.480000] Looking up port of RPC 100005/1 on 192.168.0.201
[    2.630000] VFS: Mounted root (nfs filesystem) on device 0:14.
[    2.645000] devtmpfs: mounted
[    2.645000] Freeing init memory: 152K
[    5.625000] yaffs: dev is 32505858 name is "mtdblock2" rw
[    5.625000] yaffs: passed flags ""
[    5.655000] yaffs: dev is 32505859 name is "mtdblock3" rw
[    5.655000] yaffs: passed flags ""
Dec 27 00:11:37 J2534 syslog.info syslogd started: BusyBox v1.17.3
[    8.805000] led name:led0 gpio:45
Starting Wrieless networking...
*************************************
     Welcome to J2534 FileSystem!                    
Please press Enter to activate this console. 
Dec 27 00:11:55 J2534 daemon.info init: starting pid 67, tty '': '-/bin/sh'
BusyBox v1.17.3 (2010-12-10 20:18:06 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
root@J2534:/#
附2:硬件环境
ARM:S3C2416
NOR FLASH: SST39VF6401B(64 Mbit (x16))
NAND FLASH: HY27UF081G2A(128M X 8b)

|
如果你的uboot中有对应的nandflash的驱动,同时也有nandflash的cmd,那就可以直接可以采用类似这样的命令来启动nand read 0xc0008000 0x80000 0x880000;bootm 0xc0008000来启动。不过不仅仅是rootfs还要有image如果你想把nor flash都省了的话,你可以把u-boot.bin image rootfs都烧写在nandflash中。然后在u-boot中的start.S来修改uboot从哪儿读数据。

|
搞个busybox来弄吧

|
这个问题是因为内核没有找到文件系统。

看看你的文件系统放的位置对否?UBOOT传给内核的参数对否?

|
用uboot 命令 nand write 相应地址

|
nandflash分好区对应依次是 u-boot 、 kernel 、root、 user ,u-boot已经烧好,用nand write 写zImage rootfs.cramfs user.jffs2 到相应地址


|
赞成!

|
内核有问题吧

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3