| mx6上使用了Ramdisk的烧写启动方式
  使用制卡工具制作SD烧写卡之后,有两个分区  ├─system (烧写进emmc的镜像) │ imx6ul-14x14-evk.dtb
 │ imx6ul-14x14-evk-4.3-r.dtb
 │ imx6ul-14x14-evk-5.6-r.dtb
 │ imx6ul-14x14-evk-7.dtb
 │ imx6ul-14x14-evk-8-r.dtb
 │ imx6ul-14x14-evk-10.4-r.dtb
 │ u-boot.imx
 │ zImage
 │ rootfs.tar.bz2
 │ logo-8.bmp
 │ logo-5.6.bmp
 │ logo-4.3.bmp
 │ logo-7.bmp
 └─bin(该文件夹内容的作用是将system文件夹的内容烧写到emmc或nandflash中,文件内容不要修改)
 │ ramdisk.img.u
 │ u-boot.imx
 │ zImage
 │ imx6ul-14x14-evk.dtb
  拨码开关到SD之后,上电,CPU到SD卡加载u-boot.imx,并启动uboot
  查看bootcmd命令  if mmc rescan; then if run loadbootscript;
 then run bootscript;
 else
 if test ${bootdev} = sd1;
 then echo update firmware.........;
 run update_from_sd;
 else
 echo mmc boot..........;
 if run loadimage;
 then run mmcboot;
 else run netboot;
 fi;
 fi;
 fi;
 else
 run netboot;
 fi;
  而bootdev在SD卡启动时为sd1,在mmc启动时为mmc2
 所以最重要的是update_from_sd命令和loadimage & mmcboot
  update_from_sd=run update_emmc;update_emmc=mmc rescan;
 fatload mmc 0 ${loadaddr} /bin/${image};
 fatload mmc 0 ${initrd_addr} /bin/ramdisk.img.u;
 fatload mmc 0 ${fdt_addr} /bin/${fdt_file};
 set bootargs console=${console},${baudrate} cma=320M rdinit=/linuxrc;
 bootz ${loadaddr} ${initrd_addr} ${fdt_addr};
  其主要是启动一个ramdisk,即内存文件系统,然后将mmc当成外设挂载,对mmc进行分区格式化和拷贝的操作  对mmc进行的操作脚本为linuxrc **************************************************************************linuxrc
 **************************************************************************
 #!/bin/shexport PATH=/sbin:/bin:/usr/sbin:/usr/bin
 mount -t sysfs none /sysmount -t proc none /proc
 mount -t devtmpfs none /dev
 sleep 3
 # disable turn off display#echo -e "\033[9;0]" > /dev/tty0
 echo "start fuse emmc--->" > /dev/tty0
 echo "format emmc" > /dev/tty0
 /bin/sh /mksdcard.sh /dev/mmcblk1
 dd if=/dev/zero of=/dev/mmcblk1 bs=1k seek=384 conv=fsync count=129
 mkdir -p /run/mmc0mkdir -p /run/mmc1
 mount /dev/mmcblk0p1 /run/mmc0
 echo "burn uboot" > /dev/tty0echo 0 > /sys/block/mmcblk1boot0/force_ro
 dd if=/run/mmc0/system/u-boot.imx of=/dev/mmcblk1boot0 bs=512 seek=2
 echo 1 > /sys/block/mmcblk1boot0/force_ro
 echo 8 > /sys/block/mmcblk1/device/boot_config
 echo "create fat partition" > /dev/tty0mkfs.vfat /dev/mmcblk1p1
 mount /dev/mmcblk1p1 /run/mmc1
 echo "burn zImage" > /dev/tty0cp /run/mmc0/system/zImage /run/mmc1/zImage
 echo "burn logo"   > /dev/tty0cp /run/mmc0/system/logo-7.bmp /run/mmc1/logo-7.bmp
 cp /run/mmc0/system/logo-8.bmp /run/mmc1/logo-8.bmp
 cp /run/mmc0/system/logo-5.6.bmp /run/mmc1/logo-5.6.bmp
 cp /run/mmc0/system/logo-4.3.bmp /run/mmc1/logo-4.3.bmp
 echo "burn dtbs" > /dev/tty0cp /run/mmc0/system/imx6ul-14x14-evk.dtb /run/mmc1/imx6ul-14x14-evk.dtb
 cp /run/mmc0/system/imx6ul-14x14-evk-7.dtb /run/mmc1/imx6ul-14x14-evk-7.dtb
 cp /run/mmc0/system/imx6ul-14x14-evk-5.6-r.dtb /run/mmc1/imx6ul-14x14-evk-5.6-r.dtb
 cp /run/mmc0/system/imx6ul-14x14-evk-10.4-r.dtb /run/mmc1/imx6ul-14x14-evk-10.4-r.dtb
 cp /run/mmc0/system/imx6ul-14x14-evk-8-r.dtb /run/mmc1/imx6ul-14x14-evk-8-r.dtb
 cp /run/mmc0/system/imx6ul-14x14-evk-4.3-r.dtb /run/mmc1/imx6ul-14x14-evk-4.3-r.dtb
 umount /run/mmc1
 echo "burn rootfs" > /dev/tty0
 mkfs.ext3 -E nodiscard /dev/mmcblk1p2
 mount -t ext3 /dev/mmcblk1p2 /run/mmc1
 tar xvf /run/mmc0/system/rootfs.tar.bz2 -C /run/mmc1
 umount /run/mmc1
 umount /run/mmc0 echo "Update Complete!!!!!!!"  > /dev/tty0
 echo "Update Complete!!!!!!!"
 
 while truedo
 echo 1 > /sys/class/leds/led3/brightness
 sleep 1
 echo 1 > /sys/class/leds/led3/brightness
 sleep 1
 done
 **************************************************************************
 mksdcard.sh
 **************************************************************************
 #!/bin/sh # partition size in MBBOOT_ROM_SIZE=10
 # call sfdisk to create partition table
 # destroy the partition table
 node=$1
 dd if=/dev/zero of=${node} bs=1024 count=1
 sfdisk --force -uM ${node} << EOF${BOOT_ROM_SIZE},500,0c
 600,,83
 EOF
 ****************************************************************************************************************************************************
  在uboot查看mmc分区可以看见  => mmc part  Partition Map for MMC device 1  --   Partition Type: DOS  Part    Start Sector    Num Sectors     UUID            Type1     20480           1024000         00000000-01     0c  <---10*1024*1024/512=20480,500*1024*1024/512=102400
 2     1228800         13877248        00000000-02     83  <---600*1024*1024/512=1228800,
  mmc分区情况说明(对于USD区来说)
 有两个分区,第一个分区从20480到1024000,即从10M到510M,共500M大小
 第二个分区从600M到结束
  根据程序可以看到u-boot.imx写到了mmcblk1boot0区中
 内核,logo,设备树,写到了USD区中的第一个分区中,并被格式化成了fat格式
 文件系统被解压缩到了USD区中的第二个分区中,并被格式化成了ext3格式
 
 
 
 
 |