一、測試環境
硬體:SemiDrive G9X Spider
軟體:PTG5.0 Linux + FreeRTOS
圖(1)
二、布署方法介紹
1.需求背景:
在 G9 平台的軟體開發中,有時候需要將 APP 可執行程序放在在根文件系統中,或者 需要上電運行一個腳本程序,那麼就需要預先將這些文件預先放在根文件系統中,以便打包到鏡像文件中,然後燒寫到 EMMC
中去。
2.布署方法:
針對以上需求,最為簡單高效的方式就是將 yocto 編譯後生成的 rootfs 的 .ext4 格式先掛載到本地 linux 系統上,將編譯好的 APP 可執行程序或者腳本文件複製到對應的路徑下。G9X 的 Linux 鏡像編譯後放在 buildsystem/yocto/build-g9x_ref/tmp/deploy/images/g9x_ref/,其中,core-image-base-g9x_ref-20231007073409.rootfs.ext4 便是最終的根文件系統。見圖(2)。
圖(2)
分析 Make linux 的行為,最終 core-image-base-g9x_ref-20231007073409.rootfs.ext4 會被複製到 buildsystem/binary_G9X_Ref_Linux_1G_2133 下的 cluster-rootfs.ext4。可以直接操作這個文件,然後打包到鏡像裡面去。圖(3)為文件系統用到的兩個 .ext4 文件。
圖(3)
三、布署操作
1.驗證案例1: 執行一個上電自運行腳本。操作方法如下:
$sudo mkdir /tmp/data //創建一個臨時路徑
$sudo mount cluster-rootfs.ext4 /tmp/data/ //掛載根文件系統
$sudo touch /tmp/data/etc/rc5.d/S99test.sh //創建上電自運行腳本
編輯 S99test.sh,上電列印 ====test====,修改權限後保存退出,並卸載 cluster-rootfs.ext4。
$sudo vim /tmp/data/etc/rc5.d/S99test.sh //編輯測試腳本 echo “====test====”
$sudo chmod a+x /tmp/data/etc/rc5.d/S99test.sh
$sudo umount /tmp/data
操作步驟見圖(4)
圖(4)
完成以上操作後
$make genpac
將新生成 global.pac 燒寫到 EMMC,觀察啟動 LOG,可以看到腳本正常運行。圖(5)所示為腳本運行 LOG。
圖(5)
2.驗證案例2:將一個 APP 可執行程序放在系統 /data 路徑下,供上電後運行。
圖(2)所示,/data 路徑的 .ext4 文件不包含在 cluster-rootfs.ext4 中,這個文件是在 make genpac 時,通過圖(6)所示的兩條命令創建的。因此,如果已經生成該文件,並對其修改後,需要將 buildsystem/路徑下的 Makefile 文件中的兩條指令注釋掉,再 make genpac,否側修改將會被覆蓋。
圖(6)
操作和示例 1 相同,這裡用一個 shell 腳本代替 APP 鏡像文件。圖(7)為操作命令。
圖(7)
重新打包後燒寫到 EMMC,運行 /data 路徑下的 test.sh, 結果如圖(8)所示。
圖(8)
如對此有更多需求,敬請聯繫世平集團 ATU 部門, atu.cn@wpi-group.com
四、 參考文獻:
- SD_G9_SDK_Reference_Manual_Rev1.4.pdf
- SD_G9H_Quick_Start_Rev1.01.pdf
- G9_Processor_TRM_Rev01.00.pdf
如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com 作者:Sim Guo / 郭夕峰
更多資訊,請掃碼關注我們!
評論