[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v2022.04-rc5版本)
🍇 博主主頁:Systemcall小酒屋
🍇 博主簡介:Neutionwei,C站嵌入式領域新星創作者之一,一枚熱愛開源技術、喜歡分享技術心得的極客,注重簡約風格,熱衷于用簡單的案例講述復雜的技術,“假傳萬卷書,真傳一案例”,這是廈大一位教數學的院士說過的一句話,另外“成就是最好的老師”,技術既要沉淀,也得分享,成就感的正反饋是支持我持續耕耘的動力!
🍇 專欄目錄:Firefly-RK3399板卡
🍇 專欄說明:本專欄主要基于Firefly旗下的RK3399板卡進行入門篇講述,歡迎訂閱,博主會持續更新!
文章目錄
- 一、編譯環境
- 二、交叉工具鏈
- 三、克隆源代碼
- 四、編譯源代碼
- 五、燒錄固件
一、編譯環境
我的 PC 機用的是 Ubuntu 18.04,執行以下命令安裝必要工具:
$ sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \ qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \ unzip device-tree-compiler python-pip ncurses-dev python-pyelftools二、交叉工具鏈
從 Firefly 倉庫克隆交叉工具鏈并添加到環境變量,這里的 GCC 版本為 6.3.1:
$ git clone https://gitlab.com/firefly-linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu $ export PATH=$PATH:/home/neutionwei/project/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin如果需要使用更高版本交叉編譯工具鏈,可以點擊以下鏈接:
http://releases.linaro.org/components/toolchain/binaries/
三、克隆源代碼
從 GitHub 倉庫克隆主線U-Boot:
$ git clone git@github.com:u-boot/u-boot.git使用 git tag 命令可以查看版本情況:
$ git tag把頁面翻到最底下,可以看到當前最新版本為 v2022.04-rc5:
切換到 v2022.04-rc5分支:
$ git checkout -b v2022.04-rc5 v2022.04-rc5四、編譯源代碼
在主線 U-Boot 中,ROC-RK3399-PC Plus使用的是roc-pc-rk3399_defconfig配置文件,由于ROC-RK3399-PC Pro是ROC-RK3399-PC Plus硬件迭代版本,因此兩者是兼容的。
執行以下命令生成.config:
$ make roc-pc-rk3399_defconfig指定交叉工具鏈并開始編譯:
$ make CROSS_COMPILE=aarch64-linux-gnu-
編譯完成后打印了一個警告,意思是說沒找到 bl31.elf文件!通過查閱 doc/README.rockchip文檔了解到這個bl31.elf是必須的!
回到u-boot的上一層目錄,克隆arm-trusted-firmware:
$ git clone git@github.com:ARM-software/arm-trusted-firmware.git編譯 RK3399 的bl31.elf文件:
$ cd arm-trusted-firmware $ make realclean $ make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399編譯后報出一個缺少arm-none-eabi-gcc工具鏈的錯誤:
安裝該工具鏈并重新編譯:
編譯完成,我們可以看到bl31.elf文件所在目錄:
回到 U-Boot 源代碼根目錄,指定 BL31環境變量并重新編譯:
編譯完成:
我們可以看到添加bl31.elf后生成以下三個文件:
五、燒錄固件
準備一張 TF卡,TF 卡接上讀卡器,執行以下命令查看生成的設備節點:
$ dmesg | tail我的設備節點是/dev/sdd,分別把idbloader.img燒錄到第64扇區與 u-boot.itb燒錄到16384扇區:
$ sudo dd if=idbloader.img of=/dev/sdd seek=64 conv=notrunc $ sudo dd if=u-boot.itb of=/dev/sdd seek=16384 conv=notrunc把 TF 卡接入到 ROC-RK3399-PC Pro,接上串口調試,上電可以看到主線U-Boot相關日志。
總結
以上是生活随笔為你收集整理的[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v2022.04-rc5版本)的全部內容,希望文章能夠幫你解決所遇到的問題。