如何編譯Rock Chip SDK release note 文件裡沒有說明的開發板版本的固件

      一般來說如果說明文件有開發板固件編譯的相關說明, 只需要依照文件說明一步步操作就可以成功, 但是如果說明文件還沒更新, 拿到新版本的開發板時該怎麼操作.

      以下以RK3308 V20 的開發板為例子, 將一步步說明改如何修改SDK 裡的設定來製作符合開發板的 image, 當中學到編譯 image 的相關技巧也可以用在非開發板的板子上.

     1. 找到絲印

     首先在開發板的PCB 上找到絲印編號, 由於RK3308 開發板是由兩片板子所組成.(如下圖)

板子正面
開發板正面

     
板子背面
開發板背面

我們可以分別在RK3308 的主板以及 MIPI 屏幕或是 MIC array 的子板. 兩片板子上各找到一個絲印如下照片所示.

主板絲印
絲印


子板絲印絲印
     
     從板子上我們可以找到絲印

     主板為 RK_EVB_RK3308_DDR3P116SD4_V20

     子板為RK_EVB_RK3308B屎-S_MIPI_DISPLAY V10_20210902KYY

     由於RK3308 Linux SDK 的發布說明文件 Rockchip_RK3308_Linux_SDK_Release_V1.3.2_20191031_CN.pdf 沒有更新, 文件裡最新只有寫到V13板的開發板編譯說明,
     而由主板跟子板搭配的開發板版本只有到V11, 沒有編譯V20 開發板的相關說明, 如下圖所示.

 SDK

  1. 板級文件

      我們必須到SDK 的目錄裡尋找RK3308B V20 開發板的板級文件, 然後在編譯 image 時選用適當的板級文件才能正確編譯出可以在RK3308B V20 開發板上執行的image,
      因為板級文件裡記錄了板子的硬件配置, 如果板級文件配置不正確, 編譯出來的 image 燒錄到開發板就會不開機, 問題嚴重時甚至可能會弄壞板子.

  1. 開發板線路

      由於我們不清楚開發板上有那些硬件的配置, 在開始確認RK3308B V20 開發板的板級文件之前, 先把RK3308B V20 開發板的線路圖打開確認一下板子的規格.

      線路圖的檔案名稱會與板子上的絲印相同, 開發板主板與子板的線路圖檔名分別是

      RK_EVB_RK3308_DDR3P116SD4_V20_20211027_final

      RK_EVB_RK3308B-S_MIPI_DISPLAY_V10_20210902ZXT

    從開發板主板的線路圖名稱我們發現RK3308的型號是RK3308B-S, RK3308 有多種型號, 例如內建DDR2的RK3308G, 或是與RK3308B規格相同但是在不同晶圓廠生產的RK3308B-S.(RK3308B-S 與  RK3308B 的硬件差異可以在文件 RK3308_Series_S-version_Chip_Hardware_Design_Modification_Introduction_V1.0.1_20211019.pdf 查詢, 軟件部份如果已經同步SDK 版本到 rk3308_linux_release_v1.5.2_20220124.xml 之後的版本就有支援RK3308B-S 不需要額外打補釘.)

 SDK

 

知道RK3308的版本之後, 我們可以開始來確認SDK裡有無適合RK3308B V20 的板級文件, 板級文件在device/rockchip/rk3308 的目錄下如圖所示.

 boardconfig

很幸運的我們可以看到只有兩個板級文件的檔名符合RK3308B-S, 分別是32/64bit 兩種

BoardConfig_RK3308BS_32bit.mk

BoardConfig_RK3308BS_64bit.mk

 

我們以BoardConfig_RK3308BS_64bit.mk 為例子, 從內容找到deconfig 以及dts的檔案名稱, 再確認其內容.

 # Kernel defconfig 描述的是 deconfig 的檔名

 # Kernel dts 描述的是 dts 的檔名

從板級文件的內容找到 deconfig 以及 dts 的檔名如下, 至此我們還無法確認這兩個檔案的設定是不是符合RK3308 V20 開發板, 還需要詳細比對檔案內容與線路圖是否符合我們的開發板.

# Kernel defconfig

export RK_KERNEL_DEFCONFIG=rk3308_linux_defconfig

# Kernel dts

export RK_KERNEL_DTS=rk3308bs-evb-amic-v11

雖然手冊沒有V20的開發板說明, 但是我們還是可以依照說明手冊 Rockchip_RK3308_Linux_SDK_Release_V1.3.2_20191031_CN.pdf 找到檔案的名稱從命名規則來幫助我們縮小範圍, 從文件裡的表格我們知道有帶屏幕的deconfig 與dts的檔名如下圖.

rk3308_linux_rk618_display_defconfig (有display 表示有顯示螢幕)

rk3308-evb-mipi-display v10.dts  (有display 表示有顯示螢幕)

 SDK


(開發板子板的 dts 檔名有 display 字樣, 表示是有帶LCD螢幕的版本, 從 SDK release note 文件可以發現開發板子板有多種樣式.)

從SDK 裡搜尋檔案名稱找到

rk3308_linux_rk618_display_defconfig 檔案在 kernel/arch/arm64/configs 底下

rk3308-evb-mipi-display v10.dts 檔案在 kernel/arch/arm64/boot/dts/rockchip 底下

如下圖所示.
deconfig

 
再度很幸運的在 kernel/arch/arm64/configs 下我們可以看到只有三個檔案跟RK3308有關,
 在 deconfig 的部分就可以確定選用 rk3308_linux_rk618_display_defconfig 是有帶屏幕的設定.

       rk3308_linux_defconfig

       rk3308_linux_rk618_display_defconfig

       rk3308_robot_defconfig

 但在kernel/arch/arm64/boot/dts/rockchip 下的dts 檔案就很多了, 依照說明手冊rk3308-evb-mipi-display v10.dts 是V11板帶屏幕的設定,
 我們的RK3308 V2.0的EVB 是RK3308B-S, 而且是有帶屏幕, 以display 跟B-S這兩個條件來篩選後,
 我們發現同時有 bs 以及 display 字樣的 rk3308bs-evb-mipi-display-v11.dts 是唯一的選擇, Lucky~.

 dts

  1. 修改板級文件 BoardConfig_RK3308BS_64bit.mk

           確定了deconfig 跟 dts 檔案之後, 我們就可以自行修改板級文件. 把 deconfig 跟 dts 替換我們找到的檔案名稱,
           之後就可以用這個板級文件來編譯image了.

            rk3308_linux_rk618_display_defconfig
            rk3308bs-evb-mipi-display-v11.dts

 BoardConfig_RK3308BS_64bit.mk 修改後的內容如下

#!/bin/bash

 

# Target arch

export RK_ARCH=arm64

# Uboot defconfig

export RK_UBOOT_DEFCONFIG=rk3308

# SPL INI

export RK_SPL_INI_CONFIG=RK3308MINIALL_UART4.ini

# Kernel defconfig

export RK_KERNEL_DEFCONFIG= rk3308_linux_rk618_display_defconfig

 # Kernel dts

export RK_KERNEL_DTS= rk3308bs-evb-mipi-display-v11

export RK_BOOT_IMG=zboot.img

# kernel image path

export RK_KERNEL_IMG=kernel/arch/arm64/boot/Image.lz4

# parameter for GPT table

export RK_PARAMETER=parameter-64bit.txt

# Buildroot config

export RK_CFG_BUILDROOT=rockchip_rk3308_bs_release

.bin

.

.

.

以下省略

  1. 編譯image

          編譯指令只有以下兩個步驟, 等程式跑完 image 就編譯完成了.

  1. 選用板級文件

./build.sh device/rockchip/rk3308/BoardConfig_RK3308BS_64bit.mk

  1. 開始編譯

./build.sh

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

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

評論