RKAndroidTool工具的各項image詳解(RK2918版本)
/********************************************************************************************
* author:[email protected]大鐘
* E-mail:[email protected]
*
* 注:本文為原創,僅作為學習交流使用,轉載請標明作者及出處。
********************************************************************************************/
..\rockdev\表示RKAndroidTool所在目錄的上一層目錄下的rockdev資料夾。
工具預設目錄為..\rockdev\,若掃描有Paremeter ,則載入,讀出分割槽表資訊,關於Paremeter ,參看第2點。
工具的“偏移”(offset)表示分割槽的起始地址,也參看第2點。
1、Loader.bin (100K左右)
系統啟動必須的引導檔案
RK29xxLoader(L)_V2.08.bin
2、Paremeter 分割槽資訊表(50K左右)
開啟rockdev目錄下的Paremeter 檔案,內容如下
FIRMWARE_VER:0.2.3
MACHINE_MODEL:rk29sdk
MACHINE_ID:007
MANUFACTURER:RK29SDK
MAGIC: 0x5041524B
ATAG: 0x60000800
MACHINE: 2929
CHECK_MASK: 0x80
KERNEL_IMG: 0x60408000
#COMBINATION_KEY: 0,6,A,1,0
CMDLINE: console=ttyS1,115200n8n androidboot.console=ttyS1 init=/init initrd=0x62000000,0x800000
mtdparts=rk29xxnand: [email protected](misc),[email protected](kernel),[email protected](boot),
[email protected](recovery),[email protected](backup),[email protected](cache),
[email protected](userdata),[email protected](kpanic),[email protected](system),[email protected](user)
misc
kernel——核心映象
boot——系統引導
recovery
backup
cache——快取區
userdata——使用者rom區
kpanic
system——系統程式
user———使用者儲存區
前面是關於機器韌體版本,機器型號,機器製造廠商的資訊,當然也可以改成自己所喜歡的。下面的
mtdparts=rk29xxnand
則表示機器nand flash的分割槽資訊。
[email protected](misc)
右邊的0x00002000表示起始地址,左邊的0x00002000表示misc分割槽的容量大小。至於為什麼要從0x00002000開始,因為分割槽表Paremeter 也要佔有flash的容量,Paremeter 是從0x00000000開始的。左右兩邊數值相加,就等於下一個分割槽的起始地址,如此類推。如到了recovery分割槽。[email protected](recovery)
起始地址為0x00010000,recovery分割槽大小為0x00008000,所以下一個backu分割槽的起始地址為0x00018000。
另外,關於使用者區userdata,也就是rom區。常說的擴容就是擴充套件此分割槽。
[email protected](userdata),
先來算算此分割槽的大小。
0x00100000為十六進位制,折算成十進位制為1048576,因為瑞芯微rockchip採用的是0.5K為單位。折算結果為
1048576*0.5K=524288K
524288K/1024=512M
也就是說rom區容量為512M。
假若要擴充套件此分割槽,則往後的各個偏移量都要相加推移。
到了最後一個user分割槽,
[email protected](user)
左邊的“-”表示user分割槽佔有剩餘的nand flash所有容量。也就是常常存放一些使用者的資料如電影、音樂之類的。不同於rom區的存放安裝軟體。
3、Misc.img(1K左右)
cpu加電之後,啟動bootloader,(即是RK29xxLoader(L)_V2.08.bin),就會讀取MISC分割槽第一塊的內容, 決定進入recovery模式還是升級基帶Baseband Processor(BP)或做其它事情。而更改Misc內容的操作為按下某個按鍵或者使用者設定系統。
4、kernel.img(6M左右)
核心映象,經過編譯得出zImage,即為Kernel.img。或者SDK包直接附帶。
5、boot.img(8M左右)
系統bootload啟動之後,進入正常啟動模式,就會讀取boot.img進去系統正常模式。
boot.img包括了kernel.img映象和一個根檔案系統(rootfs)
6、recovery.img(12M左右)
系統bootload啟動之後,通過讀取Misc分割槽的內容,確認如果是進入Recovery模式的話,進去讀取Recovery.img。
recovery.img包括了一個kernel.img與一個根檔案系統(rootfs),kernel映象與boot,img的完全一樣。
7、system.img(100+M左右)
包括了系統必要的app,詳細參考
http://blog.csdn.net/conowen/article/details/7251057
8、擦除IDB
表示清空分割槽表,就是低階格式化nand flash。這樣的話,要重新刷入parameter分割槽。
附:Recovery 根檔案系統目錄結構
$ tree
.
├── advanced_meta_init.rc
├── data
├── default.prop
├── dev
├── etc
├── init
├── init.factory.rc
├── init.goldfish.rc
├── init.quacomm.rc
├── init.rc
├── meta_init.rc
├── proc
├── res
│ ├── images
│ │ ├── icon_error.png
│ │ ├── icon_installing.png
│ │ ├── indeterminate1.png
│ │ ├── indeterminate2.png
│ │ ├── indeterminate3.png
│ │ ├── indeterminate4.png
│ │ ├── indeterminate5.png
│ │ ├── indeterminate6.png
│ │ ├── progress_empty.png
│ │ └── progress_fill.png
│ └── keys
├── sbin
│ ├── adbd
│ ├── advanced_meta_init
│ ├── meta_init
│ ├── meta_tst
│ └── recovery
├── sys
├── system
└── tmp