三星公司uboot模式下更改分區(EMMC)大小fdisk命令
一、分區
三星平台一般把它分為四個區:
(1)、fat分區,作為sd卡用;
(2)、系統磁碟分割,相當為電腦c 盤,用來安裝android系統;
(3)、userdata分區;
(4)、cache分區。
二、分區更改操作過程
1, 更改uboot中代碼/common/cmd_mmc_fdisk.c
在這個檔案中我們可以看到對四個分區大小的定義:
#defineBLOCK_SIZE512#defineBLOCK_END0xFFFFFFFF#define_10MB(10*1024*1024)#define_100MB(100*1024*1024)#define_300MB(300*1024*1024)#define_8_4GB(1023*254*63)#define_1GB(1024*1024*1024)#defineDISK_STARTRAW_AREA_SIZE//mj (16*1024*1024) //same as raw area size#defineSYSTEM_PART_SIZE_1GB //_300MB#defineUSER_DATA_PART_SIZE_1GB //_300MB //_1GB#defineCACHE_PART_SIZE_300MB#defineCHS_MODE0#defineLBA_MODE!(CHS_MODE)
2、重新分區 fdisk -c 0 命令
3、分區格式法
3.1、輸入如下命令 fatformat mmc 0:1
3.2、輸入如下命令fatformat mmc 0:2
3.3、輸入如下命令fatformat mmc 0:3
3.4、輸入如下命令fatformat mmc 0:4
3.5在超級終端中輸入“fastboot”
4、把整個系統重新燒錄
在PC機上運行“USB_fastboot_tool”-->“platform-tools”檔案夾中的檔案
“cmd.exe”(cmd.exe可執行檔是Windows內建的命令列工具,光碟片裡面的是Win7下
的,如果提示版本不相容,請使用你自己系統裡面的cmd.exe工具)
[html] view plain copy fastboot.exe flash bootloader u-boot-iTOP-4412.bin fastboot.exe flash kernel zImage fastboot.exe flash ramdisk ramdisk-uboot.img fastboot.exe flash system system.img
三、fdisk 命令分析
int do_fdisk(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { if ( argc == 3 || argc ==6 ) { if ( strcmp(argv[1], "-c") == 0 ) return create_mmc_fdisk(argc, argv); //格式化分區 else if ( strcmp(argv[1], "-p") == 0 ) return print_mmc_part_info(argc, argv); //列印出分區的資訊 } else //如果不滿足argc條件,列印出協助資訊 { printf("Usage:\nfdisk <-p> <device_num>\n"); printf("fdisk <-c> <device_num> [<sys. part size(MB)> <user data part size> <cache part size>]\n"); } return 0; }
2、do_fdisk的實現函數
我們平時用的fdisk -c 0 格式化inand ,fdisk -p 0 查看分區資訊,在這裡可以看到對這兩條命令的解析: [cpp] view plain copy int do_fdisk(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { if ( argc == 3 || argc ==6 ) { if ( strcmp(argv[1], "-c") == 0 ) return create_mmc_fdisk(argc, argv); //格式化分區 else if ( strcmp(argv[1], "-p") == 0 ) return print_mmc_part_info(argc, argv); //列印出分區的資訊 } else //如果不滿足argc條件,列印出協助資訊 { printf("Usage:\nfdisk <-p> <device_num>\n"); printf("fdisk <-c> <device_num> [<sys. part size(MB)> <user data part size> <cache part size>]\n"); } return 0; }
3、如果為fdisk -c 0進,進入 create_mmc_fdisk,我們再分析這個函數