0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

buildrootでlvgl

Last updated at Posted at 2025-04-08

目的

組み込み(arm linux)環境でlvglを使用したアプリを作成する

確認環境

  • fedora(rawhide:20250304) + xfce
  • qemu 9.2.0

buildroot

lvglが作成しているbuildrootがあるのでそれを使用した

動作確認した commit id は以下
00060bf86143fac7ad8a2cc2d2f0ff95eb28b149

手順

基本的には 公式の通り

ただし、こちらの環境だとビルドエラーになったりしたのでその回避方法など含めて記載

git clone --depth=1 --recursive https://github.com/lvgl/lv_buildroot.git
cd lv_buildroot

以下のpatchを適当な名前(例えば fix_overlay.patch など)で保存

fix_overlay.patch
diff --git a/build.sh b/build.sh
index 2abf422..535d122 100755
--- a/build.sh
+++ b/build.sh
@@ -7,4 +7,4 @@ cd buildroot
 make defconfig O=../output BR2_DEFCONFIG=../resources/configs/raspberrypi4_lvgl_defconfig
 
 cd ../output
-make
+make V=1
Submodule buildroot contains modified content
diff --git a/buildroot/linux/linux.hash b/buildroot/linux/linux.hash
index ffc25f7959..81a55e6525 100644
--- a/buildroot/linux/linux.hash
+++ b/buildroot/linux/linux.hash
@@ -16,3 +16,5 @@ sha256  b5539243f187e3d478d76d44ae13aab83952c94b885ad889df6fa9997e16a441  linux-
 sha256  fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0  COPYING
 sha256  f6b78c087c3ebdf0f3c13415070dd480a3f35d8fc76f3d02180a407c1c812f79  LICENSES/preferred/GPL-2.0
 sha256  8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f  LICENSES/exceptions/Linux-syscall-note
+
+sha256  dab3052783c68c46a5bc645b1c38d9705da995ab42823566518b62eb1fa1ef97  linux-576cc10e1ed50a9eacffc7a05c796051d7343ea4.tar.gz
diff --git a/buildroot/linux/linux.mk b/buildroot/linux/linux.mk
index 16d9f19470..cd5f555f1f 100644
--- a/buildroot/linux/linux.mk
+++ b/buildroot/linux/linux.mk
@@ -163,7 +163,9 @@ LINUX_MAKE_FLAGS = \
 	CROSS_COMPILE="$(TARGET_CROSS)" \
 	WERROR=0 \
 	REGENERATE_PARSERS=1 \
-	DEPMOD=$(HOST_DIR)/sbin/depmod
+	DEPMOD=$(HOST_DIR)/sbin/depmod \
+	CFLAGS_KERNEL=-g
+	CFLAGS=-g
 
 ifeq ($(BR2_REPRODUCIBLE),y)
 LINUX_MAKE_ENV += \
diff --git a/buildroot/package/e2fsprogs/e2fsprogs.mk b/buildroot/package/e2fsprogs/e2fsprogs.mk
index cbaac4f40b..dad393e71a 100644
--- a/buildroot/package/e2fsprogs/e2fsprogs.mk
+++ b/buildroot/package/e2fsprogs/e2fsprogs.mk
@@ -17,6 +17,7 @@ E2FSPROGS_INSTALL_STAGING = YES
 # problems for other packages.
 E2FSPROGS_DEPENDENCIES = host-pkgconf util-linux
 HOST_E2FSPROGS_DEPENDENCIES = host-pkgconf host-util-linux
+HOST_E2FSPROGS_APPLY_PATCH = YES
 
 E2FSPROGS_SELINUX_MODULES = fstools
 
@@ -35,7 +36,10 @@ HOST_E2FSPROGS_CONF_OPTS = \
 	--enable-elf-shlibs \
 	--with-crond-dir=no \
 	--with-udev-rules-dir=no \
-	--with-systemd-unit-dir=no
+	--with-systemd-unit-dir=no \
+	CFLAGS="$${CFLAGS} -std=gnu17 "
+
+HOST_E2FSPROGS_MAKE_OPTS += CFLAGS="$${CFLAGS} -std=gnu17 "
 
 # Set the binary directories to "/bin" and "/sbin", as busybox does,
 # so that we do not end up with two versions of e2fs tools.
diff --git a/buildroot/package/gawk/gawk.mk b/buildroot/package/gawk/gawk.mk
index ff1b9920af..d15f6eafdf 100644
--- a/buildroot/package/gawk/gawk.mk
+++ b/buildroot/package/gawk/gawk.mk
@@ -32,6 +32,7 @@ GAWK_CONF_OPTS += --without-readline
 endif
 
 HOST_GAWK_CONF_OPTS = --without-readline --without-mpfr
+HOST_GAWK_MAKE_OPTS += CFLAGS="$${CFLAGS} -Wno-error=incompatible-pointer-types"
 
 define GAWK_CREATE_SYMLINK
 	ln -sf gawk $(TARGET_DIR)/usr/bin/awk
diff --git a/buildroot/package/gmp/gmp.mk b/buildroot/package/gmp/gmp.mk
index 7e8da9025c..6ff9ff0d07 100644
--- a/buildroot/package/gmp/gmp.mk
+++ b/buildroot/package/gmp/gmp.mk
@@ -14,6 +14,8 @@ GMP_CPE_ID_VENDOR = gmplib
 GMP_DEPENDENCIES = host-m4
 HOST_GMP_DEPENDENCIES = host-m4
 
+HOST_GMP_CONF_OPTS += CFLAGS="$${CFLAGS} -std=gnu17 "
+
 GMP_CONF_ENV += CC_FOR_BUILD="$(HOSTCC) -std=c99"
 
 # GMP doesn't support assembly for coldfire or mips r6 ISA yet
diff --git a/buildroot/package/m4/m4.mk b/buildroot/package/m4/m4.mk
index 39ad898b10..2f6af275d4 100644
--- a/buildroot/package/m4/m4.mk
+++ b/buildroot/package/m4/m4.mk
@@ -10,4 +10,7 @@ M4_SITE = $(BR2_GNU_MIRROR)/m4
 M4_LICENSE = GPL-3.0+
 M4_LICENSE_FILES = COPYING
 
+HOST_M4_MAKE_OPTS += CFLAGS="$${CFLAGS} -std=gnu17 "
+
+
 $(eval $(host-autotools-package))
diff --git a/resources/configs/raspberrypi4_lvgl_defconfig b/resources/configs/raspberrypi4_lvgl_defconfig
index 8b57ea2..25f8b40 100644
--- a/resources/configs/raspberrypi4_lvgl_defconfig
+++ b/resources/configs/raspberrypi4_lvgl_defconfig
@@ -3,7 +3,8 @@ BR2_cortex_a72=y
 BR2_ARM_FPU_VFPV4=y
 BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y
 BR2_TOOLCHAIN_BUILDROOT_CXX=y
-BR2_GLOBAL_PATCH_DIR="board/raspberrypi/patches"
+BR2_BINUTILS_VERSION_2_42_X=y
+BR2_BINUTILS_VERSION="2.42"
 BR2_DOWNLOAD_FORCE_CHECK_HASHES=y
 BR2_TARGET_GENERIC_HOSTNAME="lvgl-buildroot"
 BR2_TARGET_GENERIC_ISSUE="Welcome to LVGL Buildroot! "
patch -p1 < fix_overlay.patch
./build.sh
# ここで数10分くらいかかる

cd output
make sdk
mkdir -p ~/sdk
tar -xzf images/aarch64-buildroot-linux-gnu_sdk-buildroot.tar.gz -C ~/sdk
cd ../application/lv_benchmark
source ../setup-build-env.sh
cmake -B build -S .
make -j $(nproc) -C build
cd ../..
cp application/lv_benchmark/bin/lvgl-app resources/board/rootfs_overlay/usr/bin/
cd output
make
cd ..

実行(qemu)

こちらの環境ではなぜかkeyboard入力を受け付けず、ログイン出来なかった
仕方がないのでrcSを以下のように修正した

echo lvgl-app >> output/target/etc/init.d/rcS

再度ビルドして SDカードの容量をpaddingする

make -C output 
truncate -s 512M  output/images/sdcard.img

以下でqemu実行

qemu-system-aarch64 -M raspi4b -m 2G -cpu cortex-a72 \
 -kernel output/images/Image \
 -dtb ./bcm2711-rpi-4-b.dtb \
 -drive if=sd,id=sd1,file=output/images/sdcard.img,format=raw \
 -append "root=/dev/mmcblk1p2 rw rootwait rootfstype=ext4 console=tty0" \
 -display gtk \
 -device usb-kbd \
 -device usb-mouse 

点滅注意のためコードブロックを置きます

光過敏性発作の可能性があるため、スクロールされる方は自己責任でお願いします








































実行イメージ

optimized_animation.gif

自前アプリ

application/lv_benchmark内のコードを編集することで
自由にアプリを作成出来る

なお、デフォルトだとfbdevを使用する設定になっている

(2) へ続く

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?