一、u-boot的制作:sd卡,nandFlash

前提:

    1.安装了交叉编译器,arm-gcc

    2.有以下的目录

    [root@localhost 6410]# ls
    myDocument  s3c6410  s3c6410.bz2
    [root@localhost 6410]# cd s3c6410
    [root@localhost s3c6410]# ls
    code  resource  smdk6410_resource  tool
    [root@localhost s3c6410]# cd smdk6410_resource/
    [root@localhost smdk6410_resource]# ls
    busybox-1.13.3  datasheet  openJtag  schema  tools
    cross_compile   p_w_picpaths     rootfs    src     usb-rs232-redhat-driver
    [root@localhost smdk6410_resource]# cd src/
    [root@localhost src]# ls    
    busybox-1.13.3                  linux-2.6.28_smdk6410.tar.bz2  udev-128.tar.gz
    busybox-1.13.3-mini6410.tar.gz  u-boot-1.1.6_smdk6410
    linux-2.6.28_smdk6410           u-boot-1.1.6_smdk6410.tar.bz2
    [root@localhost src]# tar xvf u-boot-1.1.6_smdk6410.tar.bz2 

    [root@localhost src]# cd u-boot-1.1.6_smdk6410

    3.相关文件:

        1).修改编译器的位置:

            [root@localhost u-boot-1.1.6_smdk6410]# vim Makefile

             CROSS_COMPILE = /usr/local/arm/arm-none-linux-gnueabi/bin/arm-none-linux-\

gnueabi-     //即在CROSS——COMPILE上填写交叉编译器位置的前缀

        2).修改u-boot的参数和信息:

            [root@localhost u-boot-1.1.6_smdk6410]# vim include/configs/smdk6410.h

                a)设置命令提示符是什么

                    #define CFG_PROMPT              "yyj@up # "     /* Monitor Command Prompt

                b)设置把u-boot制作在sd卡启动还是nandFlash启动(只能选择一个,把其它都注释掉)

                 /* Boot configuration (define only one of next) */

                //#define CONFIG_BOOT_NOR
                #define CONFIG_BOOT_NAND   //nandFlash启动
                //#define CONFIG_BOOT_MOVINAND  //sd卡启动
                //#define CONFIG_BOOT_ONENAND


                c)设置ip,启动倒数等等

                    #define CONFIG_ETHADDR          00:40:5c:26:0a:5b
                    #define CONFIG_NETMASK          255.255.255.0
                    #define CONFIG_IPADDR           192.168.1.20
                    #define CONFIG_SERVERIP         192.168.1.12//服务器ip,一般为pc

                    #define CONFIG_GATEWAYIP        192.168.1.1

   
    4.步骤:

        sd卡:

            a)make clean;make distclean;

            b)vim Makefile  //修改CROSS_COMPILE =  XX(交叉编译器的前缀)

            c)vim include/configs/sdmk6410.h   (修改Boot configuration为sd卡启动,即把#define CONFIG_BOOT_MOVINAND的注释去掉,其它的注释,当然还可以修改ip-->CONFIG——IPADDR,命令提示符为什么CFG——PROMPT)

            d)make smdk6410_config;make;(smdk6410_config就是Makefile里面的定义的变量,make完成之后就会生成一个u-boot.bin)

            make的最后会生成下面的信息:

            -Map u-boot.map -o u-boot
            /usr/local/arm/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-objcopy --gap-    fill=0xff -O srec u-boot u-boot.srec
            /usr/local/arm/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
            /usr/local/arm/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-objdump -d u-boot > u-boot.dis

            所以在当前目录下会生成以下文件:

            [root@localhost u-boot-1.1.6_smdk6410]# ls u-boot*
            u-boot  u-boot.bin  u-boot.dis  u-boot.map  u-boot.srec

            e)[root@localhost u-boot-1.1.6_smdk6410]# ./mkmovi (生成u-boot-movi.bin)

            f)[root@localhost u-boot-1.1.6_smdk6410]# ls u-boot* -lh
                -rwxrwxrwx. 1 root root 648K 1月  15 22:20 u-boot
                -rwxrwxrwx. 1 root root 192K 1月  15 22:20 u-boot.bin
                -rwxrwxrwx. 1 root root 1.4M 1月  15 22:20 u-boot.dis
                -rwxrwxrwx. 1 root root 166K 1月  15 22:20 u-boot.map
                -rwxrwxrwx. 1 root root 264K 1月  15 22:24 u-boot-movi.bin
                -rwxrwxrwx. 1 root root 577K 1月  15 22:20 u-boot.srec

            //为什么要做step e)呢,因为google规定u-boot必须是264K,而我们自己制造出来的东西即u-boot.bin只有192K,不足,所以我们用./mkmovi来在u-boot.bin后面填充零来让其大小达到264K和制造成sd格式的u-boot

            g)插入sd卡,先把其umount media/XX;./write_sd /dev/sdb  ./u-boot-movi.bin(注意不能写分区,即/dev/sdb1不可以)

            h)板子插入sd卡,把板子选择启动开关调到sd卡启动即可!

    

        nandFlash:

            a)make clean;make distclean;

            b)vim Makefile  //修改CROSS_COMPILE =  XX(交叉编译器的前缀)

            c)vim include/configs/sdmk6410.h   (修改Boot configuration为nandFlash卡启动,即把#define CONFIG_BOOT_NAND的注释去掉,其它的注释,当然还可以修改ip-->CONFIG——IPADDR,命令提示符为什么 CFG——PROMPT)

            d)make smdk6410_config;make;(smdk6410_config就是Makefile里面的定义的变量,make完成之后就会生成一个u-boot.bin)

            e)[root@localhost u-boot-1.1.6_smdk6410]# ./mkmovi (生成u-boot-movi.bin,即生成nandFlash所能识别的格式)

            f)pc:安装并配置好tftp和设置好ip,并把u-boot-nand.bin拷贝到相应的位置即可

             arm:tftp 50001000 u-boot-nand.bin

                nand erase clean

                nand write 50001000 0 100000(1M)