FIRMWARE_VER:7.0.0
#固件版本 固件版本留美,打包update.img使用痴施,升級工具會根據(jù)這個識別固體版本胜卤。Boot loader 會讀取這個版本傳遞給kernel使用
MACHINE_MODEL:rk312x #機型瑟曲,打包update.img使用驶臊,不同的項目,可以自己修改耘婚,用于升級工具顯示
MACHINE_ID:007
#產(chǎn)品開發(fā)ID罢浇,可以為字符和數(shù)字組合,打包update.img使用,不同的項目使用不同的ID嚷闭,可以用于識別機器機型
MANUFACTURER:RK30SDK
#廠商信息攒岛,打包update.img使用,可以自己修改胞锰,用于升級工具顯示
MAGIC: 0x5041524B
#不能修改
ATAG: 0x60000800
#不能修改
MACHINE: 312x
#內(nèi)核識別用灾锯,不能修改
CHECK_MASK: 0x80
#保留,不能修改
KERNEL_IMG: 0x60408000
#內(nèi)核地址嗅榕,boot loader會將內(nèi)核加載到這個地址,kernel編譯地址改變時顺饮,這個只需要相應(yīng)修改
#RECOVER_KEY: 1,1,0,20,0
#按鍵信息,不過這里沒用
#GPIO定義:上例中定義的是GPIO 4 C5
#判斷電平:0 = 低電平凌那,1 = 高電平
#AD 定義(通道兼雄,下限值,上限值)
#:上例中帽蝶,1 表示 ADC通道 1赦肋,8表示下限值為80,20表示上限值為200励稳,也就是AD值在80~200內(nèi)的按鍵都認(rèn)為是COMBINATION_KEY佃乘。
#Combination 按鍵定義,可以定義多個麦锯,用戶可以根據(jù)實際機型定義按鍵
#功能說明:
#1恕稠、按住recovery按鍵并接USB開機,進(jìn)入loader rockusb升級模式扶欣。
#2鹅巍、按住recovery按鍵不接USB開機,3s左右會引導(dǎo)recovery.img
#3料祠、按住combination按鍵開機骆捧,會引導(dǎo)recovery.img,進(jìn)入android的recovery模式髓绽。
#用戶可以根據(jù)菜單選擇操作
CMDLINE:console=ttyFIQ0 androidboot.baseband=N/A androidboot.selinux=permissive androidboot.hardware=rk30board androidboot.console=ttyFIQ0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(trust),0x00002000@0x00006000(misc),0x00008000@0x00008000(resource),0x00006000@0x00010000(kernel),0x00006000@0x00016000(boot),0x00010000@0x0001C000(recovery),0x00020000@0x0002C000(backup),0x00040000@0x0004C000(cache),0x00008000@0x0008C000(metadata),0x00002000@0x00094000(kpanic),0x00400000@0x00096000(system),0x00020000@0x00496000(radical_update),0x00000400@0x004B6000(frp),-@0x004B6400(userdata)
#console=ttyFIQ0 androidboot.console=ttyFIQ0,串口定義敛苇。
#initrd=0x62000000,0x00800000,第一個參數(shù)是boot.img,加載到sdram的位置顺呕,第二個參數(shù)為ramdisk的大小枫攀,目前ramdisk大小沒有限制
#MTD分區(qū):
#mtdparts=rk29xxnand:? //nand flash分區(qū),因為系統(tǒng)是安裝在nandflash里面的
#0x00002000@0x00002000(uboot) //uboot分區(qū)? 前面表示大小株茶,后面表示起始地址
#0x00002000@0x00004000(trust) //trust分區(qū)
#0x00002000@0x00006000(misc) //misc分區(qū)
#0x00008000@0x00008000(resource) //resources分區(qū)
#0x00006000@0x00010000(kernel) //內(nèi)核分區(qū)
#0x00006000@0x00016000(boot) //引導(dǎo)分區(qū)
#0x00010000@0x0001C000(recovery) //恢復(fù)區(qū)
#0x00020000@0x0002C000(backup) //備份區(qū)
#0x00040000@0x0004C000(cache) //緩存區(qū)
#0x00008000@0x0008C000(metadata) //用戶數(shù)據(jù)區(qū)
#0x00002000@0x00094000(kpanic) //重要數(shù)據(jù)保存區(qū)
#0x00400000@0x00096000(system) //系統(tǒng)文件區(qū)
#0x00020000@0x00496000(radical_update)
#0x00000400@0x004B6000(frp)
#-@0x004B6400(userdata)
/分區(qū)定義說明:
//為了兼容性,RK30xx来涨、RK29xx 和 RK292x 都是用 rk29xxnand 做標(biāo)識。
//單個分區(qū)說明:
//例如:0x00002000@0x00008000(boot),@符號之前的數(shù)值是分區(qū)大小,@符號之后的數(shù)
//值是分區(qū)的起始位置,括號里面的字符是分區(qū)的名字启盛。所有數(shù)值的單位是 sector,1 個 sector
//為 512Bytes.
//上例中,boot 分區(qū)起始位置為 0x8000 sectors 位置,大小為 0x2000 sectors(4MB).
//目前 flash 最大的 block 是 4MB(0x2000 sectors),所以每個分區(qū)需要 4MB 對齊,也就是每個分區(qū)都必須為 4MB 的整數(shù)倍大小蹦掐。
//Backup 及之前的分區(qū)為固件區(qū),在 linux 系統(tǒng)里是只讀的,在確定大小后,后續(xù)升級時不能修改分區(qū)大小技羔。
//Backup 之后的分區(qū)在 linux 系統(tǒng)里是可讀寫的。在后續(xù)升級時可以調(diào)整分區(qū)大小,調(diào)整分區(qū)大小后需要進(jìn) android 的 recovery 系統(tǒng)格式化 cache 等分區(qū)卧抗。
#parameter文件最大不超過64Kb 以上參數(shù)由bootloader解析藤滥;
GPIO 控制信息
例如:
PWR_HLD:0,0,C,7,1 //控制 GPIO0C7 輸出高電平
PWR_HLD:0,0,C,7,2 //控制 GPIO0C7 輸出低電平
PWR_HLD:0,0,A,0,3 //配置 PWR_HLD 為 GPIO0A0,在 Loader 需要鎖定電源時,輸出高電平鎖定電源
GPIO 控制信息和 PWR_HLD 管腳定義信息復(fù)用,因此定義 GPIO 控制信息后,最后一條需要配置真正的 PWR_HLD 引腳,不然 loader 不會鎖定電源。代碼不會配置 IOMUX,被配置為特殊功能的 IO 是不可以控制的,
這些 IO 有:SD0,SD1,NANDFLASH(不包含 D8~D15),SPI0,UART2 等使用到的 IO社裆。
定義格式和 COMBINATION_KEY 的 GPIO 定義類似,只有最后一個字節(jié)(電平判斷)不同拙绊。
電平判斷解釋:
1:= 解析 parameter 時,輸出高電平
2:= 解析 parameter 時,輸出低電平
3:= 在 Loader 需要控制電源時,輸出高電平
0:= 在 Loader 需要控制電源時,輸出低電平
常見問題:
1、 system 分區(qū)修改為 ext3 格式時,parameter 的 mtd 分區(qū)怎么定義?
Ext3 為可寫文件系統(tǒng),那么 system 分區(qū)需要定義在 backup 分區(qū)之后浦马。
2时呀、怎么增加一個 mtd 分區(qū)?
在 parameter MTD 分區(qū)中按照分區(qū)定義格式增加分區(qū),如果在系統(tǒng)中需要可寫的,那么要把分區(qū)定義在 backup分區(qū)之后,只讀的,那么分區(qū)定義在backup 分區(qū)之前。
3晶默、由于系統(tǒng)固件變大,backup 分區(qū)起始位置和大小變大后整個系統(tǒng)不正常怎么處理?
Backup 分區(qū)之前的區(qū)域為只讀區(qū)域,為保證系統(tǒng)固件可靠性和穩(wěn)定性,這個區(qū)域有做特殊處理,在第一次升級固件后就不可以把分區(qū)改大(改小不會有問題),所以在開發(fā)階段定義分區(qū)大小時盡量預(yù)留足夠空間。
出現(xiàn)問題的機器,需要按住 recovery 按鍵進(jìn) loader rockusb 升級模式,等待 10 秒后,用量產(chǎn)工具或者用戶工具的修復(fù)模式升級固件,也可以用開發(fā)工具的擦除 idb 功能低格 flash 后再升級固件航攒。
針對這個問題,目前新發(fā)布的 SDK 使用新的解決方案,buckup 分區(qū)不再備份 system.img,當(dāng)system.img 分區(qū)變大時,就不會有這個問題磺陡。