天天看點

嵌入式 uboot、fs、kernel制作和燒錄簡記-hi3518c

NULL RAM :

mkdir ramdisk_test  臨時挂在點

dd if=/dev/zero of=rootfs.ramdisk bs=1k count=10000 建立空硬碟//15000(15M)

losetup /dev/loop0 rootfs.ramdisk 挂在臨時硬碟

mke2fs -m 0 /dev/loop0 格式化此硬碟

mount –t ext2 rootfs.ramdisk ./ramdisk/ramdisk_test/

cp -rf ./rootfs_uclibc/* ./ramdisk/ramdisk_test/ 拷貝檔案系統

(umount ramdisk_test(rootfs.ramdisk---ramdisk-real))

預設:

使用tftp之前要對uboot-env中的ipaddr和serverip(主控端local-host)進行設定

{

 setenv ipaddr 10.10.1.242

 setenv serverip 10.10.1.103

}

setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs)

ramdisk啟動:

(12M)setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/ram0 rw ramdisk=32768 initrd=0x82500000,10M init=/linuxrc mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs);tftp 0x82500000 rootfs.ramdisk;tftp 0x82000000 uImage

(16M)setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/ram0 rw ramdisk=32768 initrd=0x82500000,16M init=/linuxrc mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),16384k(rootfs);tftp 0x82500000 rootfs.ramdisk;tftp 0x82000000 uImage

nfs啟動

tftp uclibc_64k.jffs2

sf probe 0

sf erase 0x380000 0x600000

sf write 0x80008000 0x380000 0x500000

bootcmd sf probe 0\;sf read 0x82000000 0x80000 0x300000\;bootm 0x82000000

setenv spi_boot setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs)\;sf probe 0\;sf read 0x82000000 0x80000 0x300000\;bootm 0x82000000

模組Uboot-info:ov9712

bootdelay=1

baudrate=115200

netmask=255.255.255.0

bootfile="uImage"

ipaddr=192.168.2.100

serverip=192.168.2.15

ethaddr=00:01:02:03:04:05

bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),3584k(rootfs),9088k(home),128k(vd)

bootcmd=sf probe 0;sf read 0x82000000 0x80000 0x300000;bootm 0x82000000

stdin=serial

stdout=serial

stderr=serial

verify=n

ver=U-Boot 2010.06 (Jan 05 2013 - 18:34:21)

Environment size: 475/131068 bytes

setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs)'

sf probe 0;sf erase 0x0 0x80000;sf write 0x82000000 0x0 0x80000;

燒錄核心:

    sf probe 0;mw.b 82000000 ff 300000;tftp 82000000 uImage;sf erase 80000 300000;sf write 82000000 80000 300000

   //mw.b表示按位元組顯示  mw: 對RAM中的内容寫操作, mw 32000000 ff 10000(把記憶體0x32000000開始的0x10000位元組設為0xFF)

燒錄檔案系統:

    sf probe 0 ;mw.b 82000000 ff C80000 ;tftp 82000000 rootfs_64k.jffs2;sf erase 380000 C80000 ;sf write 82000000 380000 C80000

    注:15M檔案系統的時候偏移量是F00000 12M(C80000 )

檔案系統制作:

    以前的核心系統支援的是yaffs檔案系統,現在使用的是yaffs2檔案系統,是以需要不同的制作工具,我們在此把它稱為mkyaffs2image,按照上面的指令解壓後它會被安

裝到/usr/sbin目錄下,并産生2個檔案:mkyaffs2image 和mkyaffs2image-128M。

yaffs:

   #mkyaffs2image root_qtopia root_qtopia.img

cramfs:

   ./mkcramfs _install rootfs.cramfs

  uboot env:ar0130

jffs2:

mkfs.jffs2 -d ./rootfs -l -e 0x20000 -o jffs2-root.img (128K)

(qy)mkfs.jffs2 -d ./joseph_rootfs/ -l -e 0x10000 -o rootfs_kj_last.jffs2 (64K)

設定好之後直接下載下傳對應檔案系統就可以在記憶體中運作檔案系統了:

tftp rootfs.ramdisk

注:使用序列槽工具進行燒錄的時候把tftp改成loadb

 ubootenv:

  setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock3 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,256k(env),3584k(kernel),11264k(rootfs)

 kernel:

    sf probe 0;mw.b 82000000 ff 300000;loadb 0x82000000;sf erase 80000 300000;sf write 82000000 80000 300000

 HI3518C(最終的):

 Spi(cs1): 

 Block:64KB 

 Chip:16MB 

 Name:"W25Q128B"

 spi size: 0x16777216

 chip num: 1

 5 cmdlinepart partitions found on MTD device hi_sfc

 Creating 5 MTD partitions on "hi_sfc":

 0x000000000000-0x000000040000 : "boot"

 0x000000040000-0x000000060000 : "env"

 0x000000060000-0x000000080000 : "config"

 0x000000080000-0x000000380000 : "kernel"

 0x000000380000-0x000000e80000 : "rootfs"

 Fixed MDIO Bus: probed

繼續閱讀