부팅할때 LCD 왼쪽 구석에 보이는 쬐끄만 펭귄 로고를 나만의 로고 이미지로 변경하고 싶으면 아래 절차를 따르면 된다.
먼저 로고 이미지를 만들어 보자.
FoxNux의 7인치 LCD 해상도는 1024x600 이므로 같은 크기의 JPG 포맷의 그림 파일을 만들어 저장한다.
이번 예제어서는 파일 이름은 1024x600_fox_board_logo.JPG으로 정했다.
u-boot에서 지원하는 로고 이미지는 256종류의 색상을 지원하는 8-bit BMP만 지원한다.
시스템 메모리가 부족하던 시절에 메모리 사용량을 최대한 절약하기 위해서 생긴 제약이 아직도 유지되는 것 같다.
색상의 종류에 대한 제한이 크므로 사진같은 이미지 보다는 단순한 로고 형태의 이미지를 추천한다.
"sudo apt install netpbm" 명령어로 개발용 리눅스 컴퓨터에 그래픽 포맷을 변경하는 유틸리티를 먼저 설치하였다.
그리고 아래와 같은 명령으로 JPEG 형식의 그림 파일을 my_uboot_logo.bmp라는 8bit Bitmap 형식의 이미지로 변환시켰다.
변환시킨 bmp 파일의 크기는 615,478바이트로 1024x600=614,400보다 조금 더 큰 이유는 bitmap header와 pallete 테이블이 포함되어 있기 때문일 것이다.
$ jpegtopnm 1024x600_fox_board_logo.JPG | ppmquant 31 | ppmtobmp -bpp 8 > my_uboot_logo.bmp
jpegtopnm: WRITING PPM FILE
ppmquant: making histogram...
ppmquant: 256 colors found
ppmquant: choosing 31 colors...
ppmquant: mapping image to new colors...
ppmtobmp: analyzing colors...
ppmtobmp: 31 colors found
ppmtobmp: Writing 8 bits per pixel with a color pallette
이렇게 만들어진 BMP 파일을 u-boot 소스 코드 폴더의 u-boot/tools/logos/ 에 복사한다.
이렇게 만든 로고 이미지를 LCD에 출려되게 하려면 2개의 소스를 수정하여야 한다.
먼저 u-boot/tools/Makefile을 수정하여 내가 만든 bmp파일을 C언어 header파일 변경하도록 한다. diff 결과는 다음과 같다.
diff --git a/tools/Makefile b/tools/Makefile
index 5b81dde4b0..50898958a9 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -215,7 +215,8 @@ LOGO-$(CONFIG_VIDEO_LOGO) += $(LOGO_DATA_H)
# Generic logo
ifeq ($(LOGO_BMP),)
-LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
+#LOGO_BMP= $(srctree)/$(src)/logos/denx.bmp
+LOGO_BMP= $(srctree)/$(src)/logos/my_uboot_logo.bmp
# Use board logo and fallback to vendor
u-boot/include/configs/sun8i.h를 아래와 같이 수정하여 로고 이미지를 출력하도록 설정한다.
index b8454bab4e..82b543cb42 100644
--- a/include/configs/sun8i.h
+++ b/include/configs/sun8i.h
@@ -27,6 +27,9 @@
#define CONFIG_SUNXI_USB_PHYS 2
#endif
+#define CONFIG_VIDEO_LOGO
+#define CONFIG_VIDEO_BMP_LOGO
+
/*
* Include common sunxi configuration where most the settings are
*/
끝으로 u-boot/drivers/video/cfb_console.c 파일에 "#define CONFIG_HIDE_LOGO_VERSION"을 추가하면 LCD 화면 상단에 출력되는 u-boot 버전 정보를 감추어 깔끔한 로고 출력을 구현할 수 있다.
위 모든 내용을 Github의 u-boot repo에 commit 하였다.
https://github.com/foxnux/u-boot/commit/2453611c1a6ff496f4d8bafff9a7cf43da3110c5
'임베디드' 카테고리의 다른 글
CH330N/CH340 Windows 10 드라이버 설치 (0) | 2019.12.31 |
---|---|
u-boot Ethernet 기능 활성화 (0) | 2019.12.25 |
FoxNux용 u-boot 빌드와 설치 (0) | 2019.12.19 |
FoxNux SBC(Single Board Computer)의 부팅 과정 (0) | 2019.12.19 |
Allwinner i3 CPU 소개 (0) | 2019.12.16 |