2025年6月26日 星期四

build armbian image,修改 kernel 原始碼

目的,加上 ILI9488 LCD 的驅動程式。

因為建立的 external module,載入時會失敗,只好把驅動程式加入建立 image 時的 kernel source 中,這樣建立的 module 就可以使用。只是很難debug,就找現成的來用吧。

後記,買 ST7796 驅動的 LCD,可以使用 565 的格式,直接用 ILI9341 的驅動。ILI9488 只能用 666 的格式,實在很麻煩,儘量不要用。

先 git clone https://github.com/armbian/build

再執行一次 build,不用到最後,只要建立 kernel source 就好

-----------------
./compile.sh \
BOARD=orangepione MAKE_THREADS=4  \
BRANCH=legacy RELEASE=bookworm \
BUILD_MINIMAL=yes BUILD_DESKTOP=no  \
NETWORKING_STACK="network-manager" \
KERNEL_CONFIGURE=no \
INSTALL_HEADERS=yes \
KERNEL_BTF=yes
-----------------

然後把 cache 下的對應的 kernel source,整個複製到新的目錄,如 [6.6_sunxi_armhf_wk]。然後,到新的目錄下,執行 make clean,把編譯的檔案刪掉。刪掉 .git 檔,再執行下列指令,建立啟始的 git 專案。

-----------------
git init
git add .
git commit -m "Initial kernel state for patching"
-----------------

再把驅動程式,如 fb_ili9488.c,複製到對應的目錄下,如 drivers/staging/fbtft,並修改相關的檔案,如 drivers/staging/fbtft 目錄下的 Kconfig 和 Makefile。

然後執行下列指令,提交程式修改。

-----------------
# 首先,提交你的修改
git add drivers/staging/fbtft/fb_ili9488.c drivers/staging/fbtft/Kconfig drivers/staging/fbtft/Makefile
git commit -s -m "Add: FB_TFT ILI9488 driver"
# 然後生成從上次提交到現在的 patch (或者指定範圍)
# 範例:從上一次提交到 HEAD
git format-patch -1 HEAD
# 這會生成一個類似 0001-Add-FB_TFT-ILI9488-driver.patch 的檔案。
-----------------

再將這個 patch 檔,複製到 patch/kernel/archive/sunxi-6.6/patches.armbian/ 下,並修改 series.armbian 和 series.conf,加入這個 patch 檔。

修改 config/kernel/linux-sunxi-legacy.config,加入 CONFIG_FB_TFT_ILI9488=m。

然後,build image,測試結果。

若是加了自己的 patch,或改了 kernel 的 config,重新 build image 的時間,就會花很多時間。

使用 docker 來 build (ArchLinux)

參考 Gemini 教的步驟。

-----------------

-----------------





沒有留言:

張貼留言

網誌存檔