當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Sd卡啟動盤的制作(EXT2)
1.使用ubuntu12.04的版本來制作sd卡的啟動盤
打開應(yīng)用程序 application -> accessories ->Disk Unit 這個工具 ,插上sd卡后, 會顯示sd的容量信息,如下圖:
2.對sd卡進(jìn)行分區(qū)
對與sd卡來講, 要先進(jìn)行格式化, 格式化成uboot能夠識別的FAT32方式和EXT2的方式。
(1)先使用fdisk 分區(qū)命令對sd進(jìn)行分區(qū), 使用圖形工具控制不了分區(qū)的扇區(qū)的開始位置, 因?yàn)槲覀円褂们懊娴纳葏^(qū)進(jìn)行寫入uboot的內(nèi)容, 因此只能使用fdisk進(jìn)行分區(qū)的工作。
(2)Fdisk 的使用如下:
nux@linux:~$ sudo fdisk /dev/sdc
[sudo] password for linux:
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdc1 * 14818 4919575 2452379 c W95 FAT32 (LBA)
/dev/sdc2 8192000 15130623 3469312 83 Linux
Command (m for help): d
Partition number (1-4): 1
Command (m for help): d
Selected partition 2
Command (m for help): p
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15130623, default 2048): 2048 // 這里至少要用2048
Last sector, +sectors or +size{K,M,G} (2048-15130623, default 15130623): 819200
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdc1 2048 819200 408576+ 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (819201-15130623, default 819201):
Using default value 819201
Last sector, +sectors or +size{K,M,G} (819201-15130623, default 15130623):
Using default value 15130623
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdc1 2048 819200 408576+ 83 Linux
/dev/sdc2 819201 15130623 7155711+ 83 Linux
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))
Command (m for help): w
此時兩個分區(qū)建立完成 , sdc1 是fat32的分區(qū),sdc2的分區(qū)是linux的文件系統(tǒng)
3.對sd卡進(jìn)行分區(qū)
如上圖點(diǎn)擊 Format Volume ,進(jìn)行格式化分區(qū), 會出現(xiàn)下圖所示
參數(shù)如上圖 ,點(diǎn)擊Format 即可對sd的sdc1 進(jìn)行格式化格式化后下圖:
選中剩余的分區(qū), 點(diǎn)擊 Format Volume ,進(jìn)行格式化分區(qū), 會出現(xiàn)下圖所示:
此時sd卡的分區(qū)就可以了, 接下來往sd內(nèi)燒寫uboot。
3.Sd卡寫入uboot
在linux主機(jī)中執(zhí)行
sudo ./boot_format_sdk config_sram_p1020_667M.dat u-boot.bin -sd /dev/sdc
把uboot.bin 燒進(jìn)/dev/sdc 分區(qū)內(nèi)。
4.Sd卡中存放內(nèi)核和文件系統(tǒng)文件
往sd卡的第一個分區(qū)內(nèi)放入uImageuboot.binp1020rdb.dtb和rootfs_nor.jffs2這些內(nèi)容,經(jīng)過測試發(fā)現(xiàn)fatload命令在使用fat文件系統(tǒng)時對于大容量的sd卡支持的不好,因此對于大容量的sd卡,可以使用ext2load命令進(jìn)行。
1. 在sd卡啟動后使用如下命令進(jìn)行系統(tǒng)的燒寫 :
Sd卡啟動 讀取uboot的命令:
fatload mmc 0:1 1000000 /u-boot.bin
ext2load mmc 0:1 1000000 /u-boot.bin
Sd卡啟動 燒寫uboot的命令:
protect off all;erase eff80000 efffffff ; cp.b 1000000 eff80000 $filesize
Sd卡啟動,讀取內(nèi)核的命令:
fatload mmc 0:1 1000000 /uImage
ext2load mmc 0:1 1000000 /uImage
Sd卡燒寫uImage的命令:
erase ef100000 efefffff; cp.b 1000000 ef100000 $filesize;imi ef100000 ;
Sd卡燒寫dtb文件:
fatload mmc 0:1 1000000 /p1020rdb.dtb
ext2load mmc 0:1 1000000 /p1020rdb.dtb
erase ef000000 ef0fffff; cp.b 1000000 ef000000 $filesize;
Sd卡燒寫rootfs文件:
fatload mmc 0:1 1000000 /rootfs_nor.jffs2
ext2load mmc 0:1 1000000 /rootfs_nor.jffs2
erase e8000000 eeffffff ; cp.b 1000000 e8000000 $filesize ;
可以把這些命令做成一個自啟動的命令即可實(shí)現(xiàn)自動燒寫系統(tǒng)的功能
Fatload 自動更新
setenv sdupdate "fatload mmc 0:1 1000000 /u-boot.bin ; protect off all;erase eff80000 efffffff ; cp.b 1000000 eff80000 $filesize ;fatload mmc 0:1 1000000 /uImage;erase ef100000 efefffff ; cp.b 1000000 ef100000 $filesize ;imi ef100000 ;fatload mmc 0:1 1000000 /p1020rdb.dtb ;erase ef000000 ef0fffff ; cp.b 1000000 ef000000 $filesize ; fatload mmc 0:1 1000000 /rootfs_nor.jffs2 ;erase e8000000 eeffffff ; cp.b 1000000 e8000000 $filesize ;"
Ext2load自動更新
setenv sdupdate "ext2load mmc 0:2 1000000 /u-boot.bin ; protect off all;erase eff80000 efffffff ; cp.b 1000000 eff80000 $filesize ;ext2load mmc 0:2 1000000 /uImage;erase ef100000 efefffff ; cp.b 1000000 ef100000 $filesize ;imi ef100000 ;ext2load mmc 0:2 1000000 /p1020rdb.dtb ;erase ef000000 ef0fffff ; cp.b 1000000 ef000000 $filesize ; ext2load mmc 0:2 1000000 /rootfs_nor.jffs2 ;erase e8000000 eeffffff ; cp.b 1000000 e8000000 $filesize ;"
setenv bootcmd run norupdate ;saveenv;