安裝開發(fā)包:
如果不是在 SDK 里編譯內(nèi)核,則需要先指定 ARCH 和 CROSS_COMPILE:
export ARCH=arm export CROSS_COMPILE=/path/to/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-
在內(nèi)核源碼目錄里執(zhí)行:
make fireprime-linux_defconfig make -j8 rk3128-fireprime.img
在內(nèi)核源碼目錄里執(zhí)行:
make modules mkdir modules_install make INSTALL_MOD_PATH=./modules_install modules_install
內(nèi)核模塊是需要拷到根文件系統(tǒng)中即可:
rsync -av ./modules_install/ /path/to/your/rfs/
也可以遠(yuǎn)程拷貝到開發(fā)板的根文件系統(tǒng)中,這需要開發(fā)板可以通過(guò) ssh 遠(yuǎn)程連接:
rsync -av ./modules_install/ root@開發(fā)板IP:/
最后清理一下模塊安裝目錄(該目錄含有鏈接,會(huì)影響 SDK 的編譯):
rm -rf ./modules_install
內(nèi)核啟動(dòng)時(shí)會(huì)加載內(nèi)存盤作為初始的根文件系統(tǒng),再加載實(shí)際的根存儲(chǔ)設(shè)備,最后切換過(guò)去。
git clone -b fireprime https://github.com/TeeFirefly/initrd.git make -C initrd
將 kernel 和 initrd 打包成 linux-boot.img:
truncate -s "%4" initrd.img mkbootimg --kernel arch/arm/boot/zImage --ramdisk initrd.img -o linux-boot.img
Linux 的根文件系統(tǒng)(RFS)可能在不同的分區(qū)或存儲(chǔ)設(shè)備上(eMMC、TF 卡或 U 盤),所以需要在內(nèi)核的參數(shù)中指定。修改 parameter 文件中的 CMDLINE 行,根據(jù)實(shí)際情況加入以下之一(# 后是注釋,不需要加入):
root=/dev/block/mtd/by-name/linuxroot # 名為 "linuxroot" 的 nand 分區(qū) root=/dev/mmcblk0p1 # TF 卡的第一個(gè)分區(qū) root=/dev/sda1 # U 盤或 USB 硬盤的第一個(gè)分區(qū) root=LABEL=linuxroot # 卷標(biāo)為 "linuxroot" 的分區(qū),可以是任一存儲(chǔ)設(shè)備
以下是官方雙啟動(dòng)固件所使用的 parameter 文件,供參考:
FIRMWARE_VER:5.1 MACHINE_MODEL:rk312x MACHINE_ID:007 MANUFACTURER:RK30SDK MAGIC: 0x5041524B ATAG: 0x60000800 MACHINE: 312x CHECK_MASK: 0x80 KERNEL_IMG: 0x60408000 #RECOVER_KEY: 1,1,0,20,0 CMDLINE:console=ttyFIQ0,115200 earlyprintk androidboot.hardware=rk30board androidboot.console=ttyFIQ0 board.ap_has_alsa=0 init=/init initrd=0x62000000,0x00800000 mtdparts=rk29xxnand:0x00002000@0x00002000(uboot),0x00002000@0x00004000(misc),0x00008000@0x00006000(resource),0x00008000@0x0000e000(kernel),0x00010000@0x00016000(boot),0x00010000@0x00026000(recovery),0x0001a000@0x00036000(backup),0x00040000@0x00050000(cache),0x00002000@0x00090000(kpanic),0x00180000@0x00092000(system),0x00002000@0x00212000(metadata),0x00200000@0x00214000(userdata),0x00020000@0x00414000(radical_update),-@0x00434000(user)
參考《升級(jí)固件》燒寫 parameter 和相應(yīng)的分區(qū)映像。如果是在官方固件的基礎(chǔ)上更新,則需要根據(jù)固件的類型,將 linux-boot.img 燒寫至對(duì)應(yīng)的分區(qū):
如果還沒有燒寫根文件系統(tǒng)的,可以下載預(yù)先做好的鏡像,或定制自己的根文件系統(tǒng),并燒寫到 parameter 文件指定的根分區(qū)中。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35295 -
安卓
+關(guān)注
關(guān)注
5文章
2126瀏覽量
57145 -
Firefly
+關(guān)注
關(guān)注
2文章
538瀏覽量
7027
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論