主题 : Tiny210v2( S5PV210 )平台下: 利用uboot启动远程Kernel(TFTP)以及挂载远程ROOTFS(NFS) 复制链接 | 浏览器收藏 | 打印
级别: 骑士
UID: 5844
精华: 9
发帖: 64
金钱: 770 两
威望: 154 点
综合积分: 308 分
注册时间: 2009-05-11
最后登录: 2019-05-14
楼主  发表于: 2013-01-23 22:22

 Tiny210v2( S5PV210 )平台下: 利用uboot启动远程Kernel(TFTP)以及挂载远程ROOTFS(NFS)

管理提醒: 本帖被 xoom 执行加亮操作(2013-01-24)
0. 准备工作
1. 编译uboot
2. 将uboot写入SD卡
3. 编译kernel,设置其可以通过NFS挂载根文件系统
4. 开发环境安装TFTP服务器
5. 开发环境安装NFS服务器
6. 目标环境设置uboot参数
7. 制作根文件系统(optional)。
8. 完整的启动LOG。


    有几位网友发信问我uboot挂载文件系统的方法,其实这个部分也不是我原创的,大部分都是参考其他网友的方法,现在将我的手顺记录下来,希望对大家有所帮助。

    整体思路大概是这样:
    * 将uboot烧写到SD卡。
    * 从SD卡启动系统,SD卡中的uboot通过TFTP协议将远程的的Kernel下载到内存中。
    * uboot将内核参数设定为ROOT分区为远程的NFS-SERVER共享的一个目录,并JUMP到内核的START ADDRESS。
    * kernel自解压,并JUMP 到解压后的新的内核START ADDRESS,内核正常启动。
    * 最后通过内核通过uboot设置的ROOTFS参数得知根文件系统在远程,并通过NFS挂载ROOTFS。
    * 根文件系统挂载完了以后,就会去执行init程序, init程序被uboot指定为 /linuxrc。

    我的开发环境是 ubunto 12.04LTS。
    目标系统的内核是 3.0.8 ,源代码位于 /opt/S5PV210/rootfs/usr/src/linux-3.0.8。
    uboot的源代码位于 /opt/S5PV210/rootfs/usr/src/opencsbc-u-boot。
    目标环境的根文件系统位于 /opt/S5PV210/rootfs。
    交叉编译器位于 /opt/linaro-gcc473-eglibc216-armv7a-neon。


0. 准备工作

    编译uboot和linux内核都需要使用到交叉编译器,所以需要确保shell 的PATH 环境中包含了你的交叉编译器的路径。
    比如我的PATH为:(通过export查看)

    declare -x PATH="/usr/lib/lightdm/lightdm:/opt/linaro-gcc473-eglibc216-armv7a-neon/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    这样,就可以直接查找到 arm-linux-gcc 这条命令了,不许要输入 arm-linux-gcc 的绝对路径。

1. 编译uboot

    uboot来自于kasim修改的uboot,原帖在http://www.aiothome.net/read.php?tid-16001.html。
    可以通过 https://gitorious.org/opencsbc/u-boot/trees/mini210_linaro-2012.11-stable 右边的 download mini210_linaro-2012.11-stable as tar.gz 这个按钮获取到打包的源代码。

    将源代码下载下来以后,解压到某一个目录,我机器上是位于 /opt/S5PV210/rootfs/usr/src/opencsbc-u-boot 这个目录。进入到这个目录。
    首先配置uboot是针对 tiny210 环境的。 tiny210v2 也是使用的这个配置项:

复制代码
  1.         make ARCH=arm CROSS_COMPILE=arm-linux- tiny210_config

    然后才是真正的编译uboot:
复制代码
  1.         make ARCH=arm CROSS_COMPILE=arm-linux- all spl

    编译完成以后,就可以看到uboot的二进制文件 spl/tiny210-spl.bin 和 uboot.bin。

    另外还有一个用于制作 uImage 的工具 tool/mkimage。为了方便,把这个文件拷贝到 /usr/bin:

复制代码
  1.         sudo cp tool/mkimage  /usr/bin/


2. 将uboot写入SD卡

    注意,这部需要特别留心,别因为误写入,把你的硬盘给弄坏了。
    注意,SD卡的内容最好备份好。

    将SD卡放到读卡器里面,并将SD卡读卡器接入开发环境,在我的环境中, SD卡会被识别为 /dev/sdc。

    通过下面的命令将uboot写入SD卡,保证这个SD卡可以启动。

复制代码
  1.     sudo dd iflag=dsync oflag=dsync if=spl/tiny210-spl.bin of=/dev/sdc seek=1
  2.     sudo dd iflag=dsync oflag=dsync if=u-boot.bin of=/dev/sdc seek=49


    如果怕写入不同步,可以再执行一下  sync 这个命令,保证cache都写入到磁盘中。
    到此为止,就可以通过SD卡启动uboot了。


3. 编译kernel,设置其可以通过NFS挂载根文件系统

    光盘中带的内核,默认不支持从NFS挂载ROOTFS。需要重新配置并编译内核。
    在/opt/S5PV210/rootfs/usr/src/linux-3.0.8目录下,通过 make menuconfig 启动ncurses图形配置界面。
    下面几个个内核配置项,必须选中。

复制代码
  1.     * Networking support -> Networking options ->IP:kernel level autoconfiguration

        注意,这个选项下面的 IP:DHCP support / IP:BOOTP support / IP:RARP aupport 不能选。
        因为我的开发环境中没有安装 DHCP server。开发板的 IP 是在内核启动参数中指定的。


复制代码
  1.     * File systems -> Network File System -> NFS client support
  2.     * File systems -> Network File System -> NFS client support for NFS version 3 或者 4
  3.     * File systems -> Network File System -> Root file system on NFS

    
    将退出配置,并保存。
    执行下面的命令生成 uImage 内核镜像文件,这个过程其实是先生成了 zImage ,然后调用了刚才uboot的那个 mkimage 生成 uImage。

复制代码
  1.         make uImage


    下面的LOG表明 uImage 生成了,位于 arch/arm/boot/uImage。
复制代码
  1.       CHK     include/linux/version.h
  2.       CHK     include/generated/utsrelease.h
  3.     make[1]: `include/generated/mach-types.h' is up to date.
  4.       CALL    scripts/checksyscalls.sh
  5.       CHK     include/generated/compile.h
  6.       Kernel: arch/arm/boot/Image is ready
  7.       SHIPPED arch/arm/boot/compressed/lib1funcs.S
  8.       AS      arch/arm/boot/compressed/lib1funcs.o
  9.       LD      arch/arm/boot/compressed/vmlinux
  10.       OBJCOPY arch/arm/boot/zImage
  11.       Kernel: arch/arm/boot/zImage is ready
  12.       UIMAGE  arch/arm/boot/uImage
  13.     Image Name:   Linux-3.0.8-TINY210V2+
  14.     Created:      Wed Jan 23 21:10:56 2013
  15.     Image Type:   ARM Linux Kernel Image (uncompressed)
  16.     Data Size:    3555872 Bytes = 3472.53 kB = 3.39 MB
  17.     Load Address: 20008000
  18.     Entry Point:  20008000
  19.       Image arch/arm/boot/uImage is ready

    编译内核的时候,如果你使用的是 4.6以后的 gcc,需要在Makefile中添加 -mno-unaligned-access 给 KBUILD_CFLAGS 防止内核解压完以后启动不了。
复制代码
  1.          367 KBUILD_CFLAGS   := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
  2.          368            -fno-strict-aliasing -fno-common \
  3.          369            -Werror-implicit-function-declaration \
  4.          370            -Wno-format-security \
  5.          371            -fno-delete-null-pointer-checks \
  6.          372            -mno-unaligned-access


    如果你生成的内核有问题,可以试一试我的内核配置文件 my_config。

4. 开发环境安装TFTP服务器

    接下来,就是要在开发环境上安装 TFTP 服务器,使开发板可以通过TFTP协议下载 uImage 这个文件。
    在 ubuntu 下,可以通过下面的命令安装 TFTP 服务器,这个服务是通过 inet 监听的。

复制代码
  1.         sudo apt-get install atftpd openbsd-inetd


    安装完以后,需要配置一下 TFTP 的默认查找目录,我将其设定为 /srv/tftp:
    确认 /etc/inetd.conf 文件中有如下一行:

[code]        #:BOOT: TFTP service is provided primarily for booting.  Most sites
        #       run this only on machines acting as "boot servers."
        tftp        dgram   udp wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp[/code]

    因为 TFTP 服务主要是给 uboot 提供内核镜像文件,为了避免每次内核编译完以后都拷贝到 /srv/tftp 目录中,
    我在 /srv/tftp 目录中,建立了一个 符号文件,指向 /opt/S5PV210/rootfs/usr/src/linux-3.0.8/arch/arm/boot/uImage。

[code]        ln -s /opt/S5PV210/rootfs/usr/src/linux-3.0.8/arch/arm/boot/uImage  /srv/tftp/uImage[/code]

    可以通过下面的命令重启 inetd ,保证这个 supper服务器能够监听 TFTP 端口:
[code]        sudo service  openbsd-inetd restart[/code]

    可以通过 查看端口确认 inetd 是否真的在监听 TFTP 端口:
[code]        zoulz@Seagate:/tmp$ netstat  -a | grep tftp
        udp        0      0 *:tftp                  *:*  [/code]

    可以通过下面的命令测试一下 TFTP 服务是否正常工作:
[code]        zoulz@Seagate:/tmp$ tftp localhost
        tftp> get uImage
        Received 3578106 bytes in 0.3 seconds[/code]

5. 开发环境安装NFS服务器

    接下来是配置 NFS 服务器,用于开发板上内核启动以后挂载开发环境的ROOTFS。

    通过下面的命令安装 nfs 服务器:

[code]        sudo apt-get  install nfs-kernel-server [/code]

    安装完成以后,还需要修改 /etc/exports 文件,设置 NFS 共享的文件目录。我们需要将 /opt/S5PV210/rootfs 设置为NFS共享目录。
[code]        # Example for NFSv2 and NFSv3:
        # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
        #
        # Example for NFSv4:
        # /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
        # /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
        #
        /opt/S5PV210/rootfs *(rw,sync,no_subtree_check,no_root_squash)[/code]

    每一次修改 /etc/exports 这个文件,都需要重新启动 NFS 服务器:
[code]         sudo service nfs-kernel-server restart[/code]

    可以通过下面的命令测试 NFS 服务器是否设置正确:
[code]        zoulz@Seagate:/tmp$ rm a b
        zoulz@Seagate:/tmp$ mkdir /tmp/a
        zoulz@Seagate:/tmp$ sudo mount -t nfs -o nolock localhost:/opt/S5PV210/rootfs /tmp/a
        zoulz@Seagate:/tmp$ ls /tmp/a
        bin  dev  etc  home  lib  linuxrc  proc  root  run  sbin  sys  tmp  usr  var
        zoulz@Seagate:/tmp$ ls /opt/S5PV210/rootfs
        bin  dev  etc  home  lib  linuxrc  proc  root  run  sbin  sys  tmp  usr  var[/code]

    也可以通过 df 命令查看挂载情况:
[code]        zoulz@Seagate:/tmp$ df
        Filesystem                    1K-blocks     Used Available Use% Mounted on
        localhost:/opt/S5PV210/rootfs 125439744 36394112  89045632  30% /tmp/a[/code]

6. 目标环境设置uboot参数

    注意: ubuntu 的 network manager, 如果开发板和开发环境的PC直连的话, 每次开发板哪掉电,开发环境PC会检测为网络未链接,
        nm 就会将已经设置好的网卡 down 掉。这在开发板reset的时候特别讨厌,你得每次都重新去设置PC的IP地址。


    因此我将桌面右上角的network manager的 Enable Networking 设置为 不选中,禁止 network manager 去管理网络。
    然后在终端里通过下面的命令,将网卡设置为 192.168.1.5,这样每次开发板reset就不用再设置开发环境PC的IP了。

[code]        sudo ifconfig eth0 192.168.1.5[/code]

    当然,如果你的开发板和开发环境PC都是链接到路由器或者HUB,就没有这个烦恼。

    现在所有的东西都准备好了。将SD卡插入开发板,并调整switch,设置从SD卡启动系统。

    正常情况下,就应该能够看到 uboot 的界面了( FriendlyLEG-TINY210 )了:
    在 uboot 的shell中,通过 setenv 命令设置相关参数。

[code]        setenv baudrate 115200
        setenv stderr serial
        setenv stdin  serial
        setenv stdout serial
        setenv bootdelay 3
        setenv ethact dm9000
        setenv ethaddr 00:40:5c:26:0a:5b
        setenv gatewayip 192.168.1.1
        setenv ipaddr 192.168.1.80
        setenv netmask 255.255.255.0
        setenv serverip 192.168.1.5
        setenv bootargs root=/dev/nfs rw nfsroot=$serverip:/opt/S5PV210/rootfs,nolock,tcp ip=$ipaddr console=ttySAC0,115200 ctp=1 kgdboc=ttySAC0,115200
        setenv bootcmd "tftp 21000000 uImage;bootm 21000000"[/code]

    bootcmd参数中的 tftp 21000000 用于: 通过 TFTP 命令,将 192.168.1.5 的 /srv/tftp/uImage 下载到 0x21000000 这个位置。
    bootcmd参数中的 bootm 21000000 用于: uboot将CPU执行权地交给 0x21000000 这个位置的内核镜像,也就是启动内核。
    bootargs参数用于设置内核的启动参数,其中 root=/dev/fs rw nfsroot=$serverip:/opt/S5PV210/rootfs,nolock,tcp 告诉内核通过NFS启动,
        根文件系统位于 192.168.1.5:/opt/S5PV210/rootfs
        NFS 的参数为 nolock,tcp ,用于防止 udp 不稳定导致 NFS 读取NG 的情况。
        ip=$ipaddr 设置开发板自身的ip地址为 192.168.1.80 。

    通过 saveenv 将上面的参数写入到 SD卡中,这样就不用每次reset都输入一遍uboot的参数了。

    通过 boot 命令,将CPU 执行权专递给 Kernel。


7. 制作根文件系统(optional)。
    待续,busybox + toolchain。

8. 完整的启动LOG。

[code]root@Seagate:/tmp# minicom  /dev/ttyS0

Welcome to minicom 2.5

OPTIONS: I18n
Compiled on May  2 2011, 00:39:27.
Port /dev/ttyS0

Press CTRL-A Z for help on special keys                                                                        
                                                                                                              
OKOK                                                                                                        
                                                                                                              
U-Boot 2013.01-rc2 (Jan 07 2013 - 10:18:16) for FriendlyLEG-TINY210                                            

CPU:    S5PC110@1000MHz

Board:   FriendlyLEG-TINY210
DRAM:  512 MiB
WARNING: Caches not enabled

PWM Moudle Initialized.
GPD0CON  : 1111, GPD0DAT  : e
NAND:  2048 MiB
MMC:   SAMSUNG SD/MMC: 0, SAMSUNG SD/MMC: 1
In:    serial
Out:   serial
Err:   serial
Net:   dm9000
Hit any key to stop autoboot:  0
dm9000 i/o: 0x88001000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:40:5c:26:0a:5b
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.5; our IP address is 192.168.1.80
Filename 'uImage'.
Load address: 0x21000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################################
done
Bytes transferred = 3555936 (364260 hex)
## Booting kernel from Legacy Image at 21000000 ...
   Image Name:   Linux-3.0.8-TINY210V2+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3555872 Bytes = 3.4 MiB
   Load Address: 20008000
   Entry Point:  20008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.0.8-TINY210V2+ (zoulz@Seagate) (gcc version 4.7.3 20121205 (prerelease) (crosstool-NG hg+unknown-20130103.094521 - S5PV210) ) #5 PREEMPT Wed Jan 23 10:04:06 CST 2013
[    0.000000] CPU: ARMv7 Processor [412fc082] revision 2 (ARMv7), cr=10c53c7f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: MINI210
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] CPU S5PV210/S5PC110 (id 0x43110220)
[    0.000000] s5pv210_init_clocks: initializing clocks
[    0.000000] S3C24XX Clocks, Copyright 2004 Simtec Electronics
[    0.000000] s5pv210_setup_clocks: registering clocks
[    0.000000] s5pv210_setup_clocks: clkdiv0 = 14131440, clkdiv1 = 00000400
[    0.000000] s5pv210_setup_clocks: xtal is 24000000
[    0.000000] S5PV210: PLL settings, A=1000000000, M=667000000, E=80000000 V=54000000
[    0.000000] S5PV210: ARMCLK=1000000000, HCLKM=200000000, HCLKD=166750000
[    0.000000] HCLKP=133400000, PCLKM=100000000, PCLKD=83375000, PCLKP=66700000
[    0.000000] sclk_dmc: source is sclk_a2m (0), rate is 200000000
[    0.000000] sclk_onenand: source is hclk_dsys (1), rate is 166750000
[    0.000000] uclk1: source is mout_mpll (6), rate is 66700000
[    0.000000] uclk1: source is mout_mpll (6), rate is 66700000
[    0.000000] uclk1: source is mout_mpll (6), rate is 66700000
[    0.000000] uclk1: source is mout_mpll (6), rate is 66700000
[    0.000000] sclk_mixer: source is sclk_dac (0), rate is 54000000
[    0.000000] sclk_fimc: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_fimc: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_fimc: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_cam0: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_cam1: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_fimd: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_mmc: source is mout_mpll (6), rate is 47642857
[    0.000000] sclk_mmc: source is mout_mpll (6), rate is 47642857
[    0.000000] sclk_mmc: source is mout_epll (7), rate is 80000000
[    0.000000] sclk_mmc: source is mout_epll (7), rate is 80000000
[    0.000000] sclk_mfc: source is sclk_a2m (0), rate is 200000000
[    0.000000] sclk_g2d: source is sclk_a2m (0), rate is 200000000
[    0.000000] sclk_g3d: source is sclk_a2m (0), rate is 200000000
[    0.000000] sclk_csis: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_spi: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_spi: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_pwi: source is ext_xtal (0), rate is 24000000
[    0.000000] sclk_pwm: source is ext_xtal (0), rate is 24000000
[    0.000000] s5p: 36864 kbytes system memory reserved for mfc at 0x3dbf5000, 0-bank base(0x3dbf5000)
[    0.000000] s5p: 36864 kbytes system memory reserved for mfc at 0x3b7f5000, 1-bank base(0x00000000)
[    0.000000] s5p: 6144 kbytes system memory reserved for fimc0 at 0x3b1f5000, 1-bank base(0x00000000)
[    0.000000] s5p: 16 kbytes system memory reserved for fimc1 at 0x3b1f1000, 1-bank base(0x00000000)
[    0.000000] s5p: 6144 kbytes system memory reserved for fimc2 at 0x3abf1000, 1-bank base(0x00000000)
[    0.000000] s5p: 8192 kbytes system memory reserved for jpeg at 0x3a3f1000, 0-bank base(0x3a3f1000)
[    0.000000] s5p: 13060 kbytes system memory reserved for fimd at 0x39730000, 1-bank base(0x00000000)
[    0.000000] s5p: 8192 kbytes system memory reserved for g2d at 0x38f30000, 0-bank base(0x38f30000)
[    0.000000] On node 0 totalpages: 102203
[    0.000000]   Normal zone: 1024 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 101179 pages, LIFO batch:31
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 101179
[    0.000000] Kernel command line: root=/dev/nfs rw nfsroot=192.168.1.5:/opt/S5PV210/rootfs,nolock,tcp ip=192.168.1.80 console=ttySAC0,115200 ctp=1 kgdboc=ttySAC0,115200
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 399MB 0MB = 399MB total
[    0.000000] Memory: 396940k/512416k available, 11872k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     DMA     : 0xff000000 - 0xffe00000   (  14 MB)
[    0.000000]     vmalloc : 0xe0800000 - 0xfd000000   ( 456 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .init : 0xc0008000 - 0xc002d000   ( 148 kB)
[    0.000000]       .text : 0xc002d000 - 0xc06911ec   (6545 kB)
[    0.000000]       .data : 0xc0692000 - 0xc06d9c40   ( 288 kB)
[    0.000000]        .bss : 0xc06d9c64 - 0xc071e000   ( 273 kB)
[    0.000000] SLUB: Genslabs=11, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000] NR_IRQS:393
[    0.000000] VIC @fd000000: id 0x00041192, vendor 0x41
[    0.000000] VIC @fd010000: id 0x00041192, vendor 0x41
[    0.000000] VIC @fd020000: id 0x00041192, vendor 0x41
[    0.000000] VIC @fd030000: id 0x00041192, vendor 0x41
[    0.000000] mult[140737]
[    0.000000] max_delta_ns[2937815369]
[    0.000000] min_delta_ns[30517]
[    0.000000] rate[32768]
[    0.000000] HZ[256]
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [ttySAC0] enabled
[    0.491824] Calibrating delay loop... 994.84 BogoMIPS (lpj=1941504)
[    0.515576] pid_max: default: 32768 minimum: 301
[    0.515827] Mount-cache hash table entries: 512
[    0.516312] Initializing cgroup subsys debug
[    0.516362] Initializing cgroup subsys cpuacct
[    0.516419] Initializing cgroup subsys freezer
[    0.520295] CPU: Testing write buffer coherency: ok
[    0.530660] print_constraints: dummy:
[    0.530949] NET: Registered protocol family 16
[    0.549032] S3C Power Management, Copyright 2004 Simtec Electronics
[    0.565355] fimd at 0x39730000
[    0.565467] hsmmc0: sclk_mmc: source is mout_mpll, rate is 47642857
[    0.565534] hsmmc1: sclk_mmc: source is mout_mpll, rate is 47642857
[    0.565594] hsmmc2: sclk_mmc: source is mout_mpll, rate is 47642857
[    0.565654] hsmmc3: sclk_mmc: source is mout_mpll, rate is 47642857
[    0.573248] S5PV210: Initializing architecture
[    0.577794] s3c-adc s5pv210-adc: attached adc driver
[    0.581035] s3c24xx-pwm s3c24xx-pwm.0: tin at 66700000, tdiv at 66700000, tin=divclk, base 0
[    0.590202] print_constraints: pd_tv_supply: 5000 mV normal
[    0.595088] print_constraints: pd_lcd_supply: 5000 mV normal
[    0.600797] print_constraints: pd_g3d_supply: 5000 mV normal
[    0.606515] print_constraints: pd_mfc_supply: 5000 mV normal
[    0.612256] print_constraints: pd_audio_supply: 5000 mV normal
[    0.679867] bio: create slab <bio-0> at 0
[    0.682650] SCSI subsystem initialized
[    0.688076] usbcore: registered new interface driver usbfs
[    0.688866] usbcore: registered new interface driver hub
[    0.689384] usbcore: registered new device driver usb
[    0.690919] s3c-i2c s3c2440-i2c.0: slave address 0x10
[    0.690978] s3c-i2c s3c2440-i2c.0: bus frequency set to 378 KHz
[    0.694312] s3c-i2c s3c2440-i2c.0: i2c-0: S3C I2C adapter
[    0.698209] s3c-i2c s3c2440-i2c.1: slave address 0x10
[    0.703096] s3c-i2c s3c2440-i2c.1: bus frequency set to 65 KHz
[    0.709538] s3c-i2c s3c2440-i2c.1: i2c-1: S3C I2C adapter
[    0.714317] s3c-i2c s3c2440-i2c.2: slave address 0x10
[    0.719208] s3c-i2c s3c2440-i2c.2: bus frequency set to 260 KHz
[    0.726196] s3c-i2c s3c2440-i2c.2: i2c-2: S3C I2C adapter
[    0.732195] Advanced Linux Sound Architecture Driver Version 1.0.24.
[    0.737949] Bluetooth: Core ver 2.16
[    0.740770] NET: Registered protocol family 31
[    0.744847] Bluetooth: HCI device and connection manager initialized
[    0.751091] Bluetooth: HCI socket layer initialized
[    0.755912] Bluetooth: L2CAP socket layer initialized
[    0.760971] Bluetooth: SCO socket layer initialized
[    0.766890] cfg80211: Calling CRDA to update world regulatory domain
[    0.773644] Switching to clocksource clock_source_systimer
[    0.781205] Switched to NOHz mode on CPU #0
[    0.814450] NET: Registered protocol family 2
[    0.814719] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.815436] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    0.815751] TCP bind hash table entries: 16384 (order: 6, 327680 bytes)
[    0.817762] TCP: Hash tables configured (established 16384 bind 16384)
[    0.823843] TCP reno registered
[    0.826926] UDP hash table entries: 256 (order: 1, 12288 bytes)
[    0.832817] UDP-Lite hash table entries: 256 (order: 1, 12288 bytes)
[    0.839450] NET: Registered protocol family 1
[    0.843904] RPC: Registered named UNIX socket transport module.
[    0.849390] RPC: Registered udp transport module.
[    0.854022] RPC: Registered tcp transport module.
[    0.858686] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.865330] PMU: registered new PMU device of type 0
[    0.870717] cpuidle: phy_regs_save:0x389ff000
[    0.874682] Loaded driver for PL330 DMAC-0 s3c-pl330
[    0.879385]  DBUFF-64x8bytes Num_Chans-8 Num_Peri-2 Num_Events-32
[    0.885545] Loaded driver for PL330 DMAC-1 s3c-pl330
[    0.890354]  DBUFF-8x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
[    0.896527] Loaded driver for PL330 DMAC-2 s3c-pl330
[    0.901343]  DBUFF-8x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
[    0.916582] ashmem: initialized
[    0.948580] ROMFS MTD (C) 2007 Red Hat, Inc.
[    0.949199] yaffs: yaffs built Jan 21 2013 17:12:49 Installing.
[    0.949318] msgmni has been set to 775
[    0.952233] io scheduler noop registered
[    0.952280] io scheduler deadline registered
[    0.952505] io scheduler cfq registered (default)
[    0.953022] start plist test
[    0.964738] end plist test
[    0.965544] s3cfb s3cfb: win 2: pmem_start=0x39b95000
[    0.965600] s3cfb s3cfb: [fb2] dma: 0x39b95000, cpu: 0xe1000000, size: 0x0085c000
[    0.980388] FIMD src sclk = 166750000
[    0.980503] s3cfb s3cfb: registered successfully
[    0.999445] s5pv210-uart.0: ttySAC0 at MMIO 0xe2900000 (irq = 16) is a S3C6400/10
[    1.004497] s5pv210-uart.1: ttySAC1 at MMIO 0xe2900400 (irq = 20) is a S3C6400/10
[    1.012278] s5pv210-uart.2: ttySAC2 at MMIO 0xe2900800 (irq = 24) is a S3C6400/10
[    1.020063] s5pv210-uart.3: ttySAC3 at MMIO 0xe2900c00 (irq = 28) is a S3C6400/10
[    1.028139] kgdb: Registered I/O driver kgdboc.
[    1.029336] leds     initialized
[    1.029853] pwm      initialized
[    1.030397] mini210-adc      initialized
[    1.031294] backlight        initialized
[    1.033368] PA FB = 0x39B95000, bits per pixel = 32
[    1.033419] screen width=800 height=480 va=0xd9b95000 pa=0x39b95000
[    1.037300] xres_virtual = 800, yres_virtual = 1440, xoffset = 0, yoffset = 0
[    1.044271] fb_size=8765440
[    1.046967] Back frameBuffer[0].VAddr=d9d0c000 PAddr=39d0c000 size=1536000
[    1.053883] Back frameBuffer[1].VAddr=d9e83000 PAddr=39e83000 size=1536000
[    1.060711] Video Y Buffer[0].VAddr=d9ffa000 PAddr=39ffa000 size=921600
[    1.067274] Video Y Buffer[1].VAddr=da0db000 PAddr=3a0db000 size=921600
[    1.073853] Video Y Buffer[2].VAddr=da1bc000 PAddr=3a1bc000 size=921600
[    1.080435] Video UV Buffer[0].VAddr=da29d000 PAddr=3a29d000 size=462848
[    1.087114] Video UV Buffer[1].VAddr=da30e000 PAddr=3a30e000 size=462848
[    1.093781] Video UV Buffer[2].VAddr=da37f000 PAddr=3a37f000 size=462848
[    1.116968] brd: module loaded
[    1.125950] loop: module loaded
[    1.129049] S3C NAND Driver, (c) 2008 Samsung Electronics
[    1.232765] MLC nand initialized, 2012 ported by FriendlyARM
[    1.232829] S3C NAND Driver is using hardware ECC.
[    1.232908] NAND device: Manufacturer ID: 0xec, Chip ID: 0xd5 (Samsung NAND 2GiB 3,3V 8-bit)
[    1.232996] Creating 5 MTD partitions on "s5pv210-nand":
[    1.234619] 0x0000000c0000-0x000000100000 : "misc"
[    1.241942] 0x000000100000-0x000000600000 : "recovery"
[    1.247967] 0x000000600000-0x000000b00000 : "kernel"
[    1.252719] 0x000000b00000-0x000000e00000 : "ramdisk"
[    1.257397] 0x000000e00000-0x000080000000 : "system"
[    1.599156] PPP generic driver version 2.4.2
[    1.600049] PPP Deflate Compression module registered
[    1.600107] PPP BSD Compression module registered
[    1.601243] PPP MPPE Compression module registered
[    1.601298] NET: Registered protocol family 24
[    1.601345] tun: Universal TUN/TAP device driver, 1.6
[    1.605267] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[    1.611828] dm9000 Ethernet Driver, V1.31
[    1.616853] eth0: dm9000a at e0838000,e083c00c IRQ 39 MAC: 00:40:5c:26:0a:5b (chip)
[    1.623722] usbcore: registered new interface driver ath9k_htc
[    1.629099] sdhci: Secure Digital Host Controller Interface driver
[    1.634953] sdhci: Copyright(c) Pierre Ossman
[    1.639317] s3c-sdhci s3c-sdhci.0: clock source 0: hsmmc (133400000 Hz)
[    1.645807] s3c-sdhci s3c-sdhci.0: clock source 2: sclk_mmc (47642857 Hz)
[    1.652605] mmc0: no vmmc regulator found
[    1.656922] Registered led device: mmc0::
[    1.661006] mmc0: SDHCI controller on samsung-hsmmc [s3c-sdhci.0] using ADMA
[    1.667701] s3c-sdhci s3c-sdhci.1: clock source 0: hsmmc (133400000 Hz)
[    1.674146] s3c-sdhci s3c-sdhci.1: clock source 2: sclk_mmc (47642857 Hz)
[    1.682986] mmc1: no vmmc regulator found
[    1.685346] Registered led device: mmc1::
[    1.689318] mmc1: SDHCI controller on samsung-hsmmc [s3c-sdhci.1] using ADMA
[    1.699252] s3c-sdhci s3c-sdhci.2: clock source 0: hsmmc (133400000 Hz)
[    1.702486] s3c-sdhci s3c-sdhci.2: clock source 2: sclk_mmc (47642857 Hz)
[    1.709288] mmc2: no vmmc regulator found
[    1.715636] Registered led device: mmc2::
[    1.717615] mmc2: SDHCI controller on samsung-hsmmc [s3c-sdhci.2] using ADMA
[    1.724348] s3c-sdhci s3c-sdhci.3: clock source 0: hsmmc (133400000 Hz)
[    1.730824] s3c-sdhci s3c-sdhci.3: clock source 2: sclk_mmc (47642857 Hz)
[    1.740810] mmc3: no vmmc regulator found
[    1.741967] Registered led device: mmc3::
[    1.746035] mmc3: SDHCI controller on samsung-hsmmc [s3c-sdhci.3] using ADMA
[    1.752951] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.761432] s5p-ehci s5p-ehci: S5P EHCI Host Controller
[    1.764380] s5p-ehci s5p-ehci: new USB bus registered, assigned bus number 1
[    1.771406] s5p-ehci s5p-ehci: irq 87, io mem 0xec200000
[    1.789533] s5p-ehci s5p-ehci: USB 0.0 started, EHCI 1.00
[    1.790770] hub 1-0:1.0: USB hub found
[    1.790847] hub 1-0:1.0: 1 port detected
[    1.791927] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    1.798054] s5p-ohci s5p-ohci: EXYNOS OHCI Host Controller
[    1.801174] s5p-ohci s5p-ohci: new USB bus registered, assigned bus number 2
[    1.808229] s5p-ohci s5p-ohci: irq 87, io mem 0xec300000
[    1.872876] hub 2-0:1.0: USB hub found
[    1.872960] hub 2-0:1.0: 1 port detected
[    1.874844] usbcore: registered new interface driver usbserial
[    1.874907] usbserial: USB Serial Driver core
[    1.874948] Initializing USB Mass Storage driver...
[    1.878576] usbcore: registered new interface driver usb-storage
[    1.879346] USB Mass Storage support registered.
[    1.884519] s3c-udc : S3C HS USB Device Controller Driver, (c) 2008-2009 Samsung Electronics
[    1.884530] s3c-udc : version 15 March 2009 (DMA Mode)
[    1.906446] android_usb gadget: Mass Storage Function, version: 2009/09/11
[    1.906517] android_usb gadget: Number of LUNs=1
[    1.908906]  lun0: LUN: removable file: (no medium)
[    1.917974] android_usb gadget: android_usb ready
[    1.935143] Registered gadget driver 'android_usb'
[    1.936127] mousedev: PS/2 mouse device common for all mice
[    1.937682] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[    1.939892] touchscreen-1wire        initialized
[    1.939941] backlight-1wire  initialized
[    1.943390] setup_irq: ret = 0
[    1.949344] PWM clock = 66700000
[    1.949382] TCNT_FOR_SAMPLE_BIT = 433, TCFG1 = 00010000
[    1.955703] input: fa_ts_input as /devices/virtual/input/input1
[    1.962284] ts-if    initialized
[    1.964422] S3C24XX RTC, (c) 2004,2006 Simtec Electronics
[    1.969103] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
[    1.976461] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
[    1.979792] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
[    1.985189] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
[    1.990673] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
[    2.000583] using rtc device, s3c, for alarms
[    2.000695] s3c-rtc s3c64xx-rtc: rtc core: registered s3c as rtc0
[    2.007003] i2c /dev entries driver
[    2.012407] Linux video capture interface: v2.00
[    2.014907] gspca: v2.13.0 registered
[    2.018650] usbcore: registered new interface driver zc3xx
[    2.023604] mfc_init: <6>S5PC110 MFC Driver, (c) 2009 Samsung Electronics
[    2.023610]
[    2.035622] S3C JPEG Driver, (c) 2007 Samsung Electronics
[    2.037195] JPEG driver for S5PV210
[    2.041789] i2c i2c-1: attached s5p_ddc into i2c adapter successfully
[    2.047438] S5PC11X HPD Driver, (c) 2010 Samsung Electronics
[    2.053696] S5PC11X CEC Driver, (c) 2010 Samsung Electronics
[    2.060876] usbcore: registered new interface driver uvcvideo
[    2.064060] USB Video Class driver (v1.1.0)
[    2.110690] input: mma7660 as /devices/platform/s3c2440-i2c.0/i2c-0/0-004c/input/input2
[    2.111368] mma7660 0-004c: MMA7660 device is probed successfully.
[    2.111789] i2c-core: driver [mma7660] using legacy suspend method
[    2.111853] i2c-core: driver [mma7660] using legacy resume method
[    2.114800] MMA7660 sensor driver registered.
[    2.119136] S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
[    2.125786] s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
[    2.134915] device-mapper: uevent: version 1.0.3
[    2.138459] device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com
[    2.145779] Bluetooth: HCI UART driver ver 2.2
[    2.150063] Bluetooth: HCI H4 protocol initialized
[    2.154842] Bluetooth: HCI BCSP protocol initialized
[    2.159764] Bluetooth: HCILL protocol initialized
[    2.164444] Bluetooth: HCIATH3K protocol initialized
[    2.169384] Bluetooth: Generic Bluetooth USB driver ver 0.6
[    2.175389] usbcore: registered new interface driver btusb
[    2.180717] cpuidle: using governor ladder
[    2.185080] cpuidle: using governor menu
[    2.208617] usbcore: registered new interface driver usbhid
[    2.208677] usbhid: USB HID core driver
[    2.211671] ALSA device list:
[    2.211711]   No soundcards found.
[    2.211742] oprofile: hardware counters not available
[    2.211784] oprofile: using timer interrupt.
[    2.214112] TCP cubic registered
[    2.216531] NET: Registered protocol family 17
[    2.220996] NET: Registered protocol family 15
[    2.225725] Bluetooth: RFCOMM TTY layer initialized
[    2.230259] Bluetooth: RFCOMM socket layer initialized
[    2.235331] Bluetooth: RFCOMM ver 1.11
[    2.239059] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    2.244356] Bluetooth: BNEP filters: protocol multicast
[    2.249546] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    2.255892] NET: Registered protocol family 35
[    2.260125] lib80211: common routines for IEEE802.11 drivers
[    2.265489] lib80211_crypt: registered algorithm 'NULL'
[    2.270687] Registering the dns_resolver key type
[    2.275418] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
[    2.282994] ThumbEE CPU extension supported.
[    2.287734] s5pv210_cpufreq_init: S5PV210 cpu-freq driver
[    2.294262] regulator_init_complete: pd_mfc_supply: disabling
[    2.298338] regulator_init_complete: pd_tv_supply: disabling
[    2.304023] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling
[    2.309451] s3c-rtc s3c64xx-rtc: setting system clock to 2013-01-23 10:13:49 UTC (1358936029)
[    2.323559] FIMC0 registered successfully
[    2.325558] FIMC1 registered successfully
[    2.327653] FIMC2 registered successfully
[    2.330330] S5PC1XX TVOUT Driver, (c) 2009 Samsung Electronics
[    2.336619] s5p-tvout s5p-tvout: hpd status is cable removed
[    2.371581] usb 1-1: new high speed USB device number 2 using s5p-ehci
[    2.383306] dm9000 dm9000: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[    2.398891] IP-Config: Guessing netmask 255.255.255.0
[    2.399198] IP-Config: Complete:
[    2.399239]      device=eth0, addr=192.168.1.80, mask=255.255.255.0, gw=255.255.255.255,
[    2.399315]      host=192.168.1.80, domain=, nis-domain=(none),
[    2.399365]      bootserver=255.255.255.255, rootserver=192.168.1.5, rootpath=
[    2.502828] hub 1-1:1.0: USB hub found
[    2.503021] hub 1-1:1.0: 4 ports detected
[    2.653901] VFS: Mounted root (nfs filesystem) on device 0:13.
[    2.654047] Freeing init memory: 148K
[    5.735512] s3c-rtc s3c64xx-rtc: rtc disabled, re-enabling

Please press Enter to activate this console.
[    6.200469] udevd[876]: starting version 175

[root@FA-HF /]#
[   12.817109] vo_open::check tvout start !!
[   12.821308] vo_open::check tvout start !![/code]

附件: my_config.gz (17 K) 下载次数:246
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-01-24 06:47
非常不错,谢谢分享。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 54383
精华: 0
发帖: 61
金钱: 315 两
威望: 63 点
综合积分: 122 分
注册时间: 2011-08-29
最后登录: 2016-09-14
2楼  发表于: 2013-01-24 09:37
非常好很强大,感谢!
级别: 侠客
UID: 26926
精华: 0
发帖: 98
金钱: 470 两
威望: 100 点
综合积分: 196 分
注册时间: 2010-08-16
最后登录: 2017-09-15
3楼  发表于: 2013-01-24 10:32
好详细的资料
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
4楼  发表于: 2013-01-24 13:39
多谢分享!
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 侠客
UID: 44031
精华: 0
发帖: 53
金钱: 265 两
威望: 53 点
综合积分: 106 分
注册时间: 2011-04-21
最后登录: 2014-05-14
5楼  发表于: 2013-01-24 14:43
happyzlz,非常感谢你的无私奉献。
昨晚我的启动成功了。
我从SD卡启动,SD分了一个FAT分区一个EXT4分区,从FAT分区加载内核,文件系统解压放在EXT4分区
setenv bootargs root=/dev/mmcblk0p2 rootfstype=ext4 bootdelay=5 init=/linuxrc console=ttySAC0,115200
setenv bootcmd fatload mmc 0:1 21000000 uImage\;bootm 21000000
u-boot中MACH_TYPE需要注意与内核一致。
级别: 骑士
UID: 5844
精华: 9
发帖: 64
金钱: 770 两
威望: 154 点
综合积分: 308 分
注册时间: 2009-05-11
最后登录: 2019-05-14
6楼  发表于: 2013-01-24 15:01

 回 5楼(wjgksc) 的帖子

不用客气,最大的贡献者还是 kasim 以及 kasim借鉴的那个网友。
也谢谢你提供相应的信息,多了一个选择。

我之前也用 SD卡,想要将开发环境放进去,这样就便携了,我在SD卡里面装了一个 ubuntu。
SD卡通过USB接口的读卡器连接PC,PC相当于只用了CPU和内存资源。

但没用多久,SD卡就坏了,可能编译软件包IO太多了吧。没办法,我就换了一个移动硬盘,毕竟是磁盘,这样就OK了。
如果是开发阶段,还是觉得网络挂载rootfs的方式要省事很多:)
级别: 侠客
UID: 44031
精华: 0
发帖: 53
金钱: 265 两
威望: 53 点
综合积分: 106 分
注册时间: 2011-04-21
最后登录: 2014-05-14
7楼  发表于: 2013-01-24 16:11

 回 6楼(happyzlz) 的帖子

确实是这样的,文件系统放在SD卡,读写太多SD卡寿命也就短了,开发还是用TFTP + NFS的好。
级别: 侠客
UID: 44031
精华: 0
发帖: 53
金钱: 265 两
威望: 53 点
综合积分: 106 分
注册时间: 2011-04-21
最后登录: 2014-05-14
8楼  发表于: 2013-01-24 16:25

 回 6楼(happyzlz) 的帖子

确实是这样的,SD卡使用寿命有限,最好还是采用TFTP+NFS来开发,FAT+EXT4适合刷机。
级别: 风云使者
UID: 36096
精华: 3
发帖: 2513
金钱: 14075 两
威望: 2815 点
综合积分: 5086 分
注册时间: 2011-01-11
最后登录: 2015-11-15
9楼  发表于: 2013-01-24 17:08
不错,做个记号
极度缺钱,求捐赠……支付宝兼邮箱:huming2207@qq.com