일반적으로 emWin 은 bare-metal 또는 RTOS 환경에서 LCD/터치 UI를 직접 그리는 형태이고 Qt는 Linux/Windows/macOS 같은 운영체제 위에서 동작하는 경우가 일반적이다.
MA35D1 보드에서 리눅스를 지원하기 때문에 Qt를 써도 되지만 emWin이 가볍고 간단한 수준의 동작만을 요구한다면 강점이 있기 때문에 리눅스 기반으로 emWin 빌드를 해보았다.
(대부분은 Non-OS나 RTOS 기반이라 조금 헤맸다..)

PTE7A0MI-16GI
# 압축해제
$ tar -zxvf MA35_Family_Linux_emWin_64bit_Package_20241125.tar.gz -C ~/
# 예제폴더로 이동
$ cd ~/MA35_Family_Linux_emWin_64bit_Package_20241125/Sample/SimpleDemoAppWizard
# 1. SDK 환경 변수 설정 : 설치한 경로의 environment-setup 파일 실행
$ source /usr/local/oecore-x86_64/environment-setup-aarch64-poky-linux
# 2. 컴파일러 확인: 아래명령어를 쳤을 때 경로가 길게 나오면 됌
$ which $CC
> /usr/local/oecore-x86_64/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc
SimpleDemoAppWizard 폴더 안에 있는 Makefile을 텍스트 에디터(VS Code, vi 등)로 열고 가이드 문서대로 수정 .SUFFIXES : .x .o .c .s
# environment로 source한
#CC=${CC} <-- 기존 aarch64-linux-gnu 주석처리
LINK=$(CC)
#STRIP=${STRIP} <-- 기존 aarch64-linux-gnu-strip 주석처리
CFLAGS=-MD -O2 -std=gnu99
LDFLAGS=-L../../Lib -lNUemWin -lm -lts -ldl -pthread
APPDIR=.
CONFHEADER=../../Config
GUIHEADER=../../Include
CONFDIR=$(CONFHEADER)
TSLIBDIR=tslib
TSLIBHEADER=$(TSLIBDIR)
GUIX=GUI_X
BINARY=SimpleDemoAppWizard
APPSOURCES := $(shell find $(APPDIR) -name '*.c')
APPOBJECTS := $(addprefix ,$(APPSOURCES:%.c=%.o))
APPDFILES := $(addprefix ,$(APPSOURCES:%.c=%.d))
RM=rm -rf
all: $(BINARY)
$(APPDIR)/%.o: $(APPDIR)/%.c
$(CC) $(CFLAGS) -I. -I$(CONFHEADER) -I$(GUIHEADER) -I$(TSLIBHEADER) -c $< -o $@
$(CONFDIR)/$(GUIX).o: $(CONFDIR)/$(GUIX).c
$(CC) $(CFLAGS) -I. -I$(CONFHEADER) -I$(GUIHEADER) -c $< -o $@
$(BINARY): $(APPOBJECTS) $(CONFDIR)/$(GUIX).o
$(LINK) $(APPOBJECTS) $(CONFDIR)/$(GUIX).o $(LDFLAGS) -o $(BINARY)
$(STRIP) $(BINARY)
clean:
$(RM) $(BINARY) $(APPOBJECTS) $(APPDFILES) $(CONFDIR)/$(GUIX).o $(CONFDIR)/$(GUIX).d
# 빌드 실행
$ make
# NFS rootFs으로 복사
$ cp SimpleDemoAppWizard /opt/nfsroot/home/root
# 터치 설정 파일 복사
$ cp ../../ts.conf /opt/nfsroot/etc/
# 1. 터치 환경 변수 설정
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_TSDEVICE=/dev/input/event0
# 2. 터치 보정 (최초 1회 필수)
ts_calibrate
# 3. App 실행
cd /home/root
chmod +x SimpleDemoAppWizard
./SimpleDemoAppWizard
root@numaker-som-ma35d16a81:~# ./SimpleDemoAppWizard
uVideoSize = 4915200
fb_vinfo.xres = 1024
fb_vinfo.yres = 600
fb_finfo.line_length = 4096
pVideoBuffer = 0xB2599000
Touch Task thread
Touch Task start
Main Task 2 thread
### g_xres=1024 g_yres=600 g_bits_per_pixel=32
button 3 clicked!
button 3 clicked!