NXP NavQPlus 平台的映像檔編譯步驟

NavQPlus 是 NXP 推出的 AI/ML 伴隨電腦評估套件(EVK),專為移動機器人、ROS(Robot Operating System)、地面站和智能相機等應用設計。有一些主要特點:如處理器是基於 i.MX 8M Plus 應用處理器,包含四個 Arm® Cortex®-A53 核心和一個 Cortex®-M7 核心,並配備 2.3 TOPS 的神經處理單元(NPU)。記憶體支持 8GB LPDDR4 記憶體和 32GB eMMC 存儲。周邊的連接介面則配備雙 USB Type-C 接口、雙 CAN-FD 接口、I2C、SPI、UART、GPIO 和一個千兆以太網接口(僅限某些型號)顯示和攝像頭接口可支持兩個 MIPI-CSI 攝像頭接口、一個 Micro-HDMI、MIPI-DSI 和兩個 LVDS 顯示接口。安全性:內置 SE050 安全元件,提供 NFC 支持。軟件支持:支持 Linux 桌面 POC、Python、eIQ 和 ROS2,適合低功耗機器學習、視覺計算、路徑規劃和導航。

此為第三方開發平台,可到https://nxp.gitbook.io/navqplus 網站查看相關的資訊。建構映像檔可參考Build steps for current image release 的步驟。

本篇博文分享實作編譯映像時,所發生問題及修改的方法。

建構映像檔的步驟:

  • 建立目錄,在目錄下執行 clone Docker repository的命令。

          git clone https://github.com/rudislabs/docker-imx-builder.git   

  • 安裝Docker(with docker compose) 映像檔指令

          將目錄切到 docker.sh所在的路徑,並執行docker.sh

          cd /home/$USER/git/docker-imx-builder/navqplusbuilder/install

           ./docker.sh

  •  構建docker 映像檔指令。

           cd /home/$USER/git/docker-imx-builder/navqplusbuilder

           docker compose build

  • 在Docker 中 構建 NavQPlus Humble映像檔

    1. 將路徑切換到navqplusbuilder的目錄,執行docker compose run navqplusbuilder 指令。

        cd /home/$USER/git/docker-imx-builder/navqplusbuilder

        docker compose run navqplusbuilder

    2. 在navqplusbuilder Docker 容器中執行 Humble  建構的腳本指令。

               wget https://raw.githubusercontent.com/rudislabs/meta-navqplus-apt-ros/imx-6.1.22-humble/scripts/build.sh

               chmod a+x build.sh

                ./build.sh


            如構建過程中遇到問題,造成構建映像檔無法正常生成,可參考本篇的解決方法: 
             Q1. 執行 docker compose run navqplusbuilder,出出現The “SSH_AUTH_SOCK” variable is not set.Defaulting to a blank string”的waring 訊息,造成無法進到Docker 環境。
             AnS: 建議可以先執行 eval "$(ssh-agent -s)" 的指令後,再執行 docker compose run navqplusbuilder。則可正常進入work 的目錄。      



           Q2: work目錄權根不足問題。


           Ans:在執行在navqplusbuilder Docker 容器中執行 Humble  建構的腳本指令前建議先修改Dockerfile中UID_USER的數值,要跟本機Unbuntu 環境下的User ID一致,避免下載源代碼及執行指令權根不足問題
                  如本機Ubuntu 的的user ID 為1006(pennylin),所以在Dockefile 中的UID_USER也改為1006。再執行一次docker compose build 指令。

                 

                  Dockerfile 的修改內容:

                 
           
           Q3:因github權限問題無法下載
           
Ans: build.sh 中 下載檔案的路徑寫為 git clone -b $BRANCH git@github.com:rudislabs/${i}.git || exit $?  建議先修改為git clone -b $BRANCH https://github.com/rudislabs/${i}.git || exit $? 

           
             
         
 Q4: 出現"ERROR: imx-image-desktop-ros-22.04.2-r0 do_rootfs: /usr/bin/apt-get failed to execute as expected! 的問題。

           Ans:  可仔細查看建構中的錯誤訊息,在log 訊息中" ERROR: Logfile of failure stored in: /home/user/work/build-desktop/builddir/tmp/work/imx8mpnavq-fsl-linux/imx-image-desktop-ros/22.04.2-r0/temp/log.do_rootfs.28978",
                     表示failure logfile 存放的位置為 log.do_rootfs.28978,查看此failure log 可發現造成的原因為"E: Unable to locate package ros-humble-dataspeed-dbw-msgs".
                     所以在build-desktop/sources/meta-navqplus-apt-ros/recipes-fsl/images/ros2-packages.inc 的檔案中移除 "ros-humble-dataspeed-dbw-msgs"  程式碼 就可再正常建構映像檔。
 
           Q5: 出現"run.do_install_home_files.17092: 172: /home/user/work/build-desktop/builddir/tmp/work/imx8mpnavq-fsl-linux/imx-image-desktop-ros/22.04.2-r0/rootfs/home/user/CycloneDDSConfig.xml: Permission denied" 問題。
       
   Ans: 主因是https://github.com/voxelbotics/meta-vb-imx8mp/commit/c0e4125174758aeef381942f61a55234fe2e6d45 中修改,所造成的錯誤。
                    建議可以在build-desktop/sources/meta-navqplus-apt-ros/recipes-fsl/images/imx-image-desktop-ros.bb 的檔案中移除如下的程式碼。

${APTGET_CHROOT_DIR}/home/user/CycloneDDSConfig.xml
${APTGET_CHROOT_DIR}/home/user/.bashrc
${APTGET_CHROOT_DIR}/home/user/.cache/
${APTGET_CHROOT_DIR}/home/user/install_cognipilot.sh

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論