uboot 下更改NAND的分割槽 fdisk

2021-09-07 02:58:47 字數 3739 閱讀 9595

舉報

flash

平台cache

android

三星null

平台資訊:

核心:linux3.0

系統:android4.0.3

inand:sdin5c2-8g-l(sandisk)

平台:s5pv310(samsung exynos 4210)

一、nand分割槽大小:

我們的機器用的是8g的inand,三星平台一般把它分為四個區:

(1)、fat分割槽,作為sd卡用;

(2)、系統分割槽,相當為電腦c 盤,用來安裝android系統;

(3)、userdata分割槽;

(4)、cache分割槽。

二、分割槽更改操作過程

1,  更改uboot中**/common/cmd_mmc_fdisk.c

在這個檔案中我們可以看到對四個分割槽大小的定義:

2,編譯uboot 、燒錄

#sudo fastboot flash bootloader u-boot.bin(三星平台的命令,不同平台也許不同)

重啟,進入uboot命令列模式,一定要重啟。

3,重新分割槽 fdisk -c 0

#fdisk –c 0 //重新把inand分割槽

#fdisk –p 0 //檢視inand分割槽資訊

如下所示,600mb為我們新分的空間。

[html]view plain

copy

smdkv310 # fdisk -c 0 

count: 10000 

fdisk is completed 

partion # size(mb) block start # block count partition_id  

1 6233 2610960 12766380 0x0c       //fat分割槽,作為sd卡用   

2 303 136620 622380 0x83           //系統分割槽,相當為電腦c 盤 

3 600 759000 1229580 0x83          //userdata分割槽 

4 303 1988580 622380 0x83          //cache分割槽 

4,把整個系統區重新格式化

系統重重分割槽後,原來燒錄程式位置發生改變,系統分割槽(相當於電腦的c盤)也變化,所以要重新格式化。(下面的命令是三星平台下的,因平台而不同)

[html]view plain

copy

fatformat mmc 0:1 

ext4fromat mmc 0:2 

ext4fromat mmc 0:3 

ext4fromat mmc 0:4 

5、把整個系統重新燒錄

[html]view plain

copy

sudo fastboot flash fwbl1 v310n.nbl1.bin  

sudo fastboot flash bootloader u-boot.bin  

sudo fastboot flash zimage 

sudo fastboot flash ramdisk-uboot.img 

sudo fastboot flash system.img 

6,開啟機器,如下圖所示,檢視更改結果

三、fdisk 命令分析

1、命令定義

[cpp]view plain

copy

u_boot_cmd( 

fdisk, 6, 0, do_fdisk, 

"fdisk\t- fdisk for sd/mmc.\n", 

"-c \t- create partition.\n"

"fdisk -p \t- print partition information\n"

); 

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) 

else //如果不滿足argc條件,列印出幫助資訊

return 0; 

}3、如果為fdisk -c 0進,進入 create_mmc_fdisk,我們再分析這個函式

[cpp]view plain

copy

int create_mmc_fdisk(int argc, char *argv) 

4、我們看下格式化函式make_mmc_partition是怎麼實現的吧。

在這裡我們可以看到

[cpp]view plain

copy

#define     system_part_size        (300*1024*1024)

#define     user_data_part_size     (600*1024*1024)

#define     cache_part_size         (300*1024*1024)

這幾巨集的應用,block_start= calc_unit(cfg_partition_start, sdinfo),計算分割槽大小

[cpp]view plain

copy

int make_mmc_partition(int total_block_count, unsigned char *mbr, int flag, char *argv) 

5、fidsk – p 0的實現函式也很簡單

[cpp]view plain

copy

int print_mmc_part_info(int argc, char *argv) 

u boot從nand讀取的核心格式

位於nand中的核心是uimang格式,其結構為頭部加上真正的核心,頭部對應的型別為 typedef struct image header image header t 這裡我們主要關注 uint32 t ih load data load address 和uint32 t ih ep entr...

Win Debian下更改硬碟分割槽的影響及解決辦法

前不久第一次裝了debian系統,之前對linux的了解幾乎是空白,後來為了在win10下安裝臨時使用的軟體以便於刪除,就分割了出乙個10g的新卷,那麼問題來了,開不開機了,顯示error unknown filesystem。這是因為引導指向的位置順序數沒變 就是假如原來指向4位置的分割槽,現在還...

uboot與kernel的flash分割槽

1.我們可以在uboot中修改flash分割槽。2.我們也可以在kernel中修改flash分割槽,但是需要與uboot中的分割槽表一致。3.我們可以通過uboot用引數傳給kernel分割槽資訊,這樣只需要維護uboot的分割槽表即可。這要對bootloader對核心重新分割槽 這需要重新設定一下...