zoukankan      html  css  js  c++  java
  • 烧写uboot、kernel、fs到开发板

    一、前期准备配置

    DNW配置:

    设置波特率(115200)和端口号
    设置设置USB下载地址(0xd0020010、0x23e00000)

    安装USB驱动:

    1)首先将J2开关拨至SD-BOOT处,打开串口工具,设置好参数,然后开发板上电,提示安装USB下载驱动,这里注意不要选择自动安装软件,而是要选择选择从列表或指定位置安装,然后点击下一步;

    2)选择搜索位置包括这个位置,然后点击浏览;

    3)找到光盘里工具软件文件夹的“USB driver”,然后点击确定,然后下一步;直至USB驱动安装完成。

    交叉编译工具的安装:很简单,先解压后添加到PATH

    NFS和TFTP服务器的安装和配置:http://www.cnblogs.com/klcf0220/articles/3099040.html

    然后启动TFTP、NFS

    注意: ubuntu 的 network manager, 如果开发板和开发环境的PC直连的话, 每次开发板哪掉电,开发环境PC会检测为网络未链接,nm 就会将已经设置好的网卡 down 掉。这在开发板reset的时候特别讨厌,你得每次都重新去设置PC的IP地址。因此我将桌面右上角的network manager的 Enable Networking 设置为 不选中,禁止 network manager 去管理网络。然后在终端里通过下面的命令,将网卡设置为 192.168.0.22(当然要跟你开发板的ip地址在同一个网段),输入命令:ifconfig eth0 192.168.0.22 ,这样每次开发板reset就不用再设置开发环境PC的IP了(此方法我试了不行,不过可以试试)。当然,如果你的开发板和开发环境PC都是链接到路由器或者HUB,就没有这个烦恼。

    二、用TFTP网络

    1、通过setenv 命令设置相关参数
    # setenv baudrate 115200
    # setenv bootdelay 3
    # setenv ethact dm9000
    # setenv ipaddr 192.168.1.11
    # setenv serverip 192.168.1.22
    # setenv gatewayip 192.168.1.1
    # saveenv

    2、 烧写u-boot
    # tftp 0x40000000 u-boot-7-ok.bin
    # nand erase 0x0 0x600000
    # nand write 0x40000000 0x0 0x600000
    nand boot启动方式启动,重启开发板;

    3、烧写kernel
    # tftp 0x40000000 uImage-7-ok
    # nand erase 0x600000 0x500000
    # nand write 0x40000000 0x600000 0x500000
    # setenv bootcmd nand read 0x30008000 0x600000 0x500000 \;bootm 0x30008000
    # saveenv
    重新启动开发板。

    4、 烧写fs
    # tftp 0x40000000 gec-qt4-rootfs-7.img
    # nand erase 0xe00000 0xf200000 //擦除可以擦大点
    # nand write.yaffs 0x40000000 0xe00000 0xxxxx(根据下载大小确定)

    重新启动开发板即可。

    三、用超级终端

    loadb 0x4000000
    然后发送文件
    nand erase ... ...
    nand write ... ... ...
    步骤跟TFTP下载相同。

    四、用Fastboot (推荐)

      1. 前期准备先完成,即先安装好USB驱动,这里选择从列表或指定位置安装,浏览选择到gec_android_driver文件夹,点击确定。“USB:OK”,表示驱动OK,USB线已经正常跟板子连接。然后打开DNW,设置好相关参数,download adress设置为:0xd0020010,选择“connect”;
      2. 选择Transmit”,先下载gec210_usb.bin,文件下载后,DNW标题栏的USB状态会有“USB:0K”变为“USB:X”,然后再迅速变回“USB:OK”,即表示gec210_usb.bin下载成功,这时210的相关寄存器初始化完毕。然后设置DNW参数,Download adress修改为0x23e00000。
      3. 接下来我们就可以下载u-boot文件,点击USB Port > Transmit;选择images中Linux_image文件下的u-boot-7-ok.bin文件,此时只是下载到内存中,接下来就用fastboot固化;
      4. 格式化nand flash,输入nand scrub ,输入y,然后Enter。NADN FLASH格式化完毕。

    说明:在固化程序到flash之前,我们需要先将flash格式化,否则在进入文件系统的时候会进行ECC校验,等待时间较长。

    • 在串口终端输入“fastboot”,然后按下回车键“Enter”;
    • 在windows点击开始,选择“运行”,然后输入“cmd”,按回车;
    • 进入到fastboot文件夹,然后输入“fastboot devices”,查询当前设备;然后输入下列执行如下烧写指令,烧写系统的uboot和内核及文件系统;
    fastboot flash uboot f:\GEC_IOT_SYS\linux_image\u-boot-7-ok.bin
    fastboot flash kernel f:\GEC_IOT_SYS\linux_image\uImage-7-ok
    fastboot flash root f:\GEC_IOT_SYS\linux_image\gec-qt4-rootfs.img

    系统更新之后,关掉电源,将启动方式选择为nand(S4),重新上电开发板,设置系统启动的参数:

    • 串口终端输入:# setenv bootcmd nand read 0x30008000 0x600000 0x500000 \;bootm 0x30008000
    • 串口终端输入:#setenv bootargs root=/dev/mtdblock4 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs rw
    • 串口终端输入saveenv ,保存环境变量。至此,Linux系统镜像固化或者更新完毕。
    • 重启开发板,进入Linux系统。


    五、搭建交叉编译开发平台

    PC端:
    vim hello.c

    void (*printf)(char *,...)=0xc3e1520c;
    int main()
    {
            printf("############## gec210!###############\n");
            return 0;
    }

    vim Makefile

    all:hello.bin clean
    hello.bin:hello.o
            arm-linux-ld -Ttext=0x40000000 hello.o -o hello.elf
            arm-linux-objcopy -O binary -S hello.elf hello.bin
    hello.o:hello.c
            arm-linux-gcc -c -nostdlib hello.c -o hello.o
    clean:
            cp ./*.bin /tftpboot
            rm -rf ./*.elf ./*.bin ./*.o

    vim start.S

    .text
    .global _start
    _start:
        b ResetHandler
    ResetHandler:
        ldr r0,=fmt
        mov lr,pc
        ldr pc,printf
    printf:
        .word 0xc3e1520c
    fmt:
        .asciz "############ welcome to gec210 ############\n"
    .end

    开发板端:
    1、烧写新的u-boot.bin
    2、重启开发板后,执行如下配置
    # setenv bootcmd tftp 40000000 xx.bin \;go 40000000
    # saveenv
    3、重启开发板,可以看到实验结果。

    参考链接:http://www.arm9home.net/read.php?tid-27737.html

    资料下载:http://download.csdn.net/detail/klcf0220/5813123

    http://www.kuaipan.cn/file/id_43409466388906195.htm

    作者:快乐出发0220 ;Android群:151319601 ; Linux群:96394158 ;转载请注明出处 http://klcf0220.cnblogs.com/ !!!
  • 相关阅读:
    出错处理函数abort、exit、atexit、strerror. . .
    linux查询系统信息命令
    [转载]比google和百度强十倍的搜索类网站
    陶  朱  商  经
    ip的划分,超详细.【网管常识】
    linux的hostname修改详解
    勤于寻找谈话资料
    Windows常用命令集
    C语言中printf格式
    How to disable SELinux
  • 原文地址:https://www.cnblogs.com/klcf0220/p/3101735.html
Copyright © 2011-2022 走看看