參考
- Run Armbian with Klipper on a Fly Gemini 3.0 board
- reemo3dp / mellowfly-geminipi-armbian
- https://gist.github.com/actuino/7801a03342665dc988b0f9bb7c257348?permalink_comment_id=3510647
- https://4pda.to/forum/index.php?showtopic=1019126&st=880#entry117519487
- https://github.com/Snitro/fbtft-ili9488
- https://github.com/s6t/armbian-mellow-fly-pi -- 另一個作法
為了要編譯網卡的驅動,必須有預裝的而且使用非官方的 image,不會使用 cn 網域的伺服器,快多了。
Fly 提供的 Armbian image,沒有 kernel source,所以無法使用。
自已 build image
有較多選擇性。步驟如下
要先 git clone https://github.com/reemo3dp/mellowfly-geminipi-armbian,再執行下面的步驟。
# Check out armbian's build repository
$ git clone https://github.com/armbian/build/ armbian
$ cd armbian/
# Apply patches from this repository
$ git am ../mellowfly-geminipi-armbian/patches/*.patch
# Compile ubuntu jammy with default kernel config
$ ./compile.sh BOARD=mellowflygeminipi BRANCH=current RELEASE=jammy BUILD_MINIMAL=no BUILD_DESKTOP=no KERNEL_CONFIGURE=no INSTALL_HEADERS=yes
不要只執行 ./compile.sh,透過互動界面選擇選項,那樣的選項較少。
建立 debian / legacy 的 image。
----------------
建好了,但無法開機。
還是不要這麼麻煩自己建,git 是有建好的 image,下載來用就好。
步驟
下載 image,燒到 sd 卡。
接上 Type-C 接口,再使用 putty 連線。baud rate 115200。
用 root 登入,密碼 cc1234,登入後,會要求改密碼。然後,立刻要建一個普通帳號,例如 klipper / cc1234。
較特殊的網路設定,如要指定固定 IP,可以使用 nmtui 來設定。
記得,一定要執行 armbian-config ,Disable updating kernel,然後再執行 apt update。不然,更新後,可能無法開機。
以 root 身分執行 armbian-add-overlay <overlay_file.dts>,藉以 Compile and activate the overlay , 例如 sudo armbian-add-overlay sht15.dts。
可惜沒有 fb_ili9488.ko。
連接 LCD 測試
反組譯它的 dtbo,確認 FPC 連線的接腳後,設定 dts 如下。
$ cat /boot/overlay-user/ili9341_lcd.dts
/dts-v1/;
/plugin/;
/ {
compatible = "xunlong,orangepi-one", "allwinner,sun8i-h3";
fragment@0 {
target = <&spi1>;
__overlay__ {
status = "okay";
cs-gpios = <&pio 0 13 0>; /* PA13*/
// cs-gpios = <&pio 0 10 0>, <&pio 0 20 0>; /* PA10 PA20 */
ili9341: ili9341@0 {
compatible = "ilitek,ili9341";
reg = <0>; /* Chip Select 0 */
#spi-cs-high;
spi-max-frequency = <40000000>;
rotate = <90>;
bgr = <0>;
fps = <30>;
width = <240>;
height = <320>;
buswidth = <8>;
reset-gpios = <&pio 6 6 1>; /*RESET=PG6*/
dc-gpios = <&pio 6 7 0>; /*DC_RS=PG7*/
led-gpios = <&pio 0 0 0>; /*LED=PA0*/
debug = <4>;
};
};
};
};
先用 ili9341 的驅動測試。
它把 LED 直接 enable,因此不能控制亮度,LCD 也會有點燙。可以顯示畫面,只是解析度不對。這表示可以用 16 位元的格式,用 656 儲存 RGB 資料。
依據官方文件,它使用 ST7796 控制晶片。
直接把 fb_ili9341.c 拿來線譯成 external module,Makefile 如下。$ cat Makefile
CONFIG_LOCALVERSION="-tegra"
EXTRAVERSION= -test
CDIR=/lib/modules/`uname -r`/build
#KDIR=/usr/src/linux-headers-6.6.36-current-sunxi64
MODULE_NAME := fb_ili9341n
MODDESTDIR=/lib/modules/`uname -r`/kernel/drivers/staging/fbtft/
KVER=`uname -r`
#@echo $(KERNELVERSION)
obj-m := fb_ili9341n.o
modules:
@echo $(KERNELVERSION)
make -C ${CDIR} M=${PWD}
install:
install -p -m 644 $(MODULE_NAME).ko $(MODDESTDIR)
/sbin/depmod -a ${KVER}
clean:
rm -f *.mod* *.o *.ko modules.order Module.symvers
為了區別,只改名成 fb_ili9341n。
結果是不成功,載入 module 時會出現 "Unable to handle kernel paging request at ... " 的錯誤。沒辦法,官方沒有主動支援自己編譯的 image。
overlay 設定,可參考 FLY-TFT/rpi-overlays/fly-tft-v2.dts。
沒有留言:
張貼留言