zoukankan      html  css  js  c++  java
  • S3C6410移植uboot2010.3(5)Dnw for linux

      现在开始记录在linux上安装dnw功能

      想要源代码,可以到这里fork

    https://github.com/Qunero/dnw4linux

      详细的使用,README里面讲得很清楚了,不加赘述了。

      这里只讲一下怎么使用。

      1、加载模块.ko文件

    $ cd secbulk_driver/
    $ insmod secbulk.ko

      然后确认一下已经加载

    $ lsmod | grep secbulk
    //若正确加载了,应该有回显
    secbulk                12728  0 

      2、插入USB to miniUSB线

      然后查看一下系统信息

    $ dmesg
    //正常情况下应该有如下信息在最末端
    [15424.424366] usb 1-3: new full-speed USB device number 9 using ohci_hcd
    [15424.657680] secbulk:secbulk probing...
    [15424.657684] secbulk:bulk out endpoint found!

      3、下载uImage镜像

      首先是目标板端

    # dnw 50008000

      然后是PC端

    $ dnw arch/arm/boot/uImage

      目标板显示如下内容时则完成传输 

    Download Done!! Download Address: 0x50008000, Download Filesize:0x378414
    Checksum is being calculated....
    Checksum O.K.

      接着进行如下操作

    # nand erase 10000 50000
    //将1M - 5M的空间清除,即为Image的存放地址
    # nand write 50008000 10000 50000
    //将50008000除下载的uImage写入刚才清除的空间
    # reset
    //重启
    
    //然后会发现卡在starting kernel的地方进入不了系统

      此时出现的问题有两种可能:

      1)BOOTCOMMAND设置不对,回头检查一下自己的/include/configs/smdk6410.h

      2)make uImage的时候未设定参数

      具体原因可以参详

    http://www.cnblogs.com/sywtt/archive/2012/01/25/2329284.html

      这里我的具体方案是

    $ mkimage -n 'linux-3.0.1' -A arm -O linux -T kernel -C none -a 0x50008000 -e 0x50008040 -d zImage uImage
    //zImage得在当前目录下
    //创建的uImage权限未0664, 改为0775

      此时能启动开发板了,但是在启动过程中卡在下面的错误

    s3c-rtc s3c64xx-rtc: setting system clock to 2021-04-14 21:21:47 UTC (1618435307)
    Root-NFS: no NFS server address
    VFS: Unable to mount root fs via NFS, trying floppy.
    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
    [<c003aca8>] (unwind_backtrace+0x0/0xfc) from [<c04a7d58>] (dump_stack+0x18/0x1c)
    [<c04a7d58>] (dump_stack+0x18/0x1c) from [<c04a7dbc>] (panic+0x60/0x1ac)
    [<c04a7dbc>] (panic+0x60/0x1ac) from [<c0008fd0>] (mount_block_root+0x204/0x25c)
    [<c0008fd0>] (mount_block_root+0x204/0x25c) from [<c00090b0>] (mount_root+0x88/0xd0)
    [<c00090b0>] (mount_root+0x88/0xd0) from [<c0009204>] (prepare_namespace+0x10c/0x1a8)
    [<c0009204>] (prepare_namespace+0x10c/0x1a8) from [<c00084c4>] (kernel_init+0xf0/0x130)
    [<c00084c4>] (kernel_init+0xf0/0x130) from [<c0035a34>] (kernel_thread_exit+0x0/0x8)

      这个问题比较好理解VFS挂载的问题

      我的做法是diff一下uboot1.1.6与uboot2010的include/configs/smdk6410.h

      找到BOOTARGS,在uboot1.1.6中

    #define CONFIG_BOOTARGS       "root=/dev/mtdblock2 rootfstype=yaffs2 console=ttySAC0,115200"

      我将uboot2010中的同样参数替换成这个,然后重新编译一次uboot

      重新执行一次dnw, 终于成功运行了!

      下周继续进行kernel的移植。

      

        

      

      

      

  • 相关阅读:
    SmartDb代码修改
    windows下Nginx+RTMP部署
    嵌入式linux下获取flash分区大小
    (转)Qt添加windows开机自启动
    (转)交叉编译lrzsz
    关于海思SDK在Ubuntu下安装错误问题
    电总协议串口调试助手
    使用git将本地仓库上传到远程仓库(转)
    c++中包含string成员的结构体拷贝导致的double free问题
    59. 可变参数
  • 原文地址:https://www.cnblogs.com/plinx/p/3020455.html
Copyright © 2011-2022 走看看