湃兔更新映象檔案的製作與燒寫

澆築菜鳥發表於2021-07-06

學習linux系統移植的三大步驟分別是UBoot、核心&裝置樹、根檔案系統的製作與燒寫。之前我已經實現了UBoot、核心、裝置樹的編譯與燒寫以及根檔案的製作,但是並未對根檔案系統進行燒寫。現在分享根檔案系統的燒寫過程,每個開發版的燒寫過程不一樣,這裡只是分享湃兔的映象檔案燒寫。

一、準備材料

可以根據自己的需要準備相應材料,以下是我自己使用的:
開發環境:VMware
作業系統:ubuntu
開發版:湃兔i2S-6UB
燒寫工具:SD卡

二、準備製作所需的檔案

1.zImage和dtb檔案,可以找開發版提供的韌體,也可以自己製作,教程見核心與裝置樹的編譯和燒寫
2.根檔案系統,可以直接在ubuntu官網直接下載,也可以自己製作,教程見通過busybox製作根檔案系統詳細過程
3.湃兔官方提供的映象檔案製作工具,下載地址https://i2som-zh.oss-cn-beijing.aliyuncs.com/i2S-6UB-BuildSWU.tar.gz

三、i2S-6UB-BuildSWU工具使用

1.將下載後的工具拷貝到開發環境下進行解壓

sudo tar -vxf i2S-6UB-BuildSWU.tar.gz

解壓後的目錄如下圖所示

2.可以看出製作工具中已經有一些專案案例,對其中一個專案進行編譯

./mkupdate_package i2s6uby2-emmc-core

編譯完成後會生成一個.swu的檔案,這個就是更新韌體所需的檔案,如下圖所示

這樣更新韌體已經制作完成,但是這個湃兔提供的系統,我們需要將自己製作的檔案加入其中進行製作。
3.進入i2s6uby2-emmc-core專案中,檢視檔案目錄如下圖所示

檔案作用見下表所示:

檔案 說明
core-image-base-i2c6ulxbe-20180505071829.boot.vfat 裝置樹和核心
core-image-base-i2c6ulxbe-20180505071829.rootfs.ext4 根檔案系統
imx-emmc-postinstall.sh shell指令碼
sw-description 專案檔案

由此可知,只需要將.vfat.ext4檔案替換成我們需要更改的內容即可。

四、打包根檔案系統

使用過linux的朋友都知道根檔案系統的目錄結構,如下圖所示

現在需要將所有的檔案打包成.ext4,具體打包流程如下所示
1.將製作工具中的i2s6uby2-emmc-core專案複製一份

sudo cp -pr i2s6uby2-emmc-core ./i2s6uby2-emmc-core-test

然後將core-image-base-i2c6ulxbe-20180505071829.rootfs.ext4檔案刪除

cd i2s6uby2-emmc-core-test
sudo rm core-image-base-i2c6ulxbe-20180505071829.rootfs.ext4

2.建立.ext4檔案

dd if=/dev/zero of=./rootfs.ext4 bs=1024 count=409600
mkfs -t ext4 ./rootfs.ext4


3.掛載.ext4檔案並將根檔案系統中所有檔案拷貝至掛載目錄下

sudo mount -o loop rootfs.ext4 /mnt
sudo cp /home/rootfs/* /mnt -avrf
sync


完成後解除安裝檔案

 sudo umount /mnt

4.修復並調整檔案大小

e2fsck -p -f rootfs.ext4
resize2fs -M rootfs.ext4


到此已經完成根檔案系統的打包。

五、替換核心與裝置樹檔案

掛載core-image-base-i2c6ulxbe-20180505071829.boot.vfat檔案

sudo mount -o loop core-image-base-i2c6ulxbe-20180505071829.boot.vfat /mnt

掛載完成後便可以看到核心與裝置樹檔案,如下圖所示

然後只需將zImage.dtb名稱更改一致並替換相應的檔案即可,完成後記得解除安裝檔案

sudo umount /mnt

注:拷貝時記得將裝置樹與核心的權健更改為777,否則更新後會啟動失敗。

六、製作映象檔案

因為我們將.ext4檔案替換為rootfs.ext4檔案,所以需要對sw-description檔案進行更改,如下圖所示

編譯檔案

./mkupdate_package i2s6uby2-emmc-core-test

完成後將編譯生成的.swu檔案拷貝至VFAT分割槽格式的SD卡內,如下圖所示

七、燒寫映象檔案

將具有.swu檔案的sd卡插入湃兔的開發版中,啟動並進入UBoot命令列,輸入更新命令

setenv mmcpart 2
run bootcmd


更新完成後會有相應的日誌輸出,如下圖所示

啟動完成後會看到我們自己製作的根檔案系統,如下圖所示

到此我們linux系統移植的入門過程已經完成了,將系統成功移植到開發版後就可以進行應用軟體和驅動的開發了,有時間再和小夥伴們一起學習系統移植。

相關文章