Target
Board
Raspberry Pi4
Host
PC - Ubuntu 22.04
목표
Raspberry Pi4 - YOCTO 개발 환경 구축(1)

 


Yocto image build

1. 사전 준비

2. Poky 시스템

3. 빌드 환경 준비

4. QEMU에서 이미지 실행

 

Cross Compile?

- 임베디드 시스템은 매우 제한된 리소스를 가지고 있어 S/W 개발은 호스트 시스템에서 이루어져야 한다.

- Host System의 프로세서와 Embedded System의 프로세서가 서로 다르기 때문에 Host System의 컴파일러로 Embedded의 S/W를 컴파일 할 수 없다.

- 따라서 호스트 시스템에서 작성된 프로그램을 임베디드 시스템에서 수행시키기 위해서는 cross compiler(교차 컴파일러)가 필요하다.

 

bitbake?

- 임베디드 리눅스의 크로스 컴파일 과정을 위한 패키지와 관련 파일들을 빌드하는데 사용되는 툴

- yocto를 최초 설치할 때, bitbake를 입력하여 yocto 설치에 필요한 소스를 가져오고, bb의 SRC_URI에 정의된 패치 파일을 이용하여 빌드한다.

 


1. 사전 설치

PC $ sudo apt update
 
PC $ sudo apt install git git-lfs tar python3 python3-pip gcc 
 

 

1-1. 필수 패키지 설치

PC $ sudo apt invlstall gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool 
 

 

1-2. 작업 디렉토리 생성

PC $ mkdir yocto
PC $ cd yocto 
 

 

2. Poky 다운로드

PC $ git clone git://git.yoctoproject.org/poky
PC $ cd poky
PC $ git checkout -b dunfell origin/dunfell
 
 

 

3-1. 빌드 디렉토리 생성(및 환경 설정)

PC $ source oe-init-build-env
 

 

빌드 옵션

core-image-base
타깃 하드웨어를 완전히 지원하는 콘솔 전용 이미지.
core-image-minimal
작은 이미지를 사용하여 디바이스를 부팅
core-image-sato
Sato 지원 이미지, 모바일 환경 및 모바일 디바이스와 연동되는 비주얼 스타일
core-image-clutter
OpenGL 기반의 툴킷 Clutter를 지원하는 이미지
core-image-full-cmdline
보다 풀기능이 탑재된 Linux 시스템 기능이 탑재된 콘솔 전용 이미지

 

3-2. 빌드에 필요한 리소스 가져오기

PC $ bitbake core-image-sato --runall=fetch
 

 

4. 리소스를 가져오면 빌드 시작

PC $ bitbake core-image-sato
 

 

5-1. QEMU 에뮬레이터로 빌드 결과 검증

PC $ runqemu qemux86-64 nographic
 

 

5-2. image 생성 확인

 

 

'Raspberry Pi > YOCTO' 카테고리의 다른 글

Raspberry Pi4 - YOCTO 개발 환경 구축 및 확인(2)  (0) 2025.03.19

 

Target
Board
Raspberry Pi4
Host
PC - Ubuntu 22.04
목표
Raspberry Pi4 - Flutter 개발 환경 구축 확인 A-3

4. Linux PC

- raspberry_test 예제 파일 생성

PC $ flutteer create raspberry_test
 

- build raspberry_test

PC $ cd raspberry test/
 
PC $ flutterpi_tool build --arch=arm64 --release
 

- 생성된 file raspberry로 복사

PC $ rsync -a --info=progress2 ./build/flutter_assets/ id@xxx.xxx.xxx.xxx:/home/pi/dev/raspberry_test
 

- 실행 하여 동작 확인

pi $ flutter-pi --release /home/pi/dev/raspberry_test
 

 

 

 

 
Target
Board
Raspberry Pi4
Host
PC - Ubuntu 22.04
목표
Raspberry Pi4 - Flutter 개발 환경 구축 A-2

2. PC

2-2. Raspberry Pi Imager로 64bit OS SD CARD 생성

 

3. Raspberry Pi4

3-1. Raspberry Pi에서 IP확인 및 SSH open

편하게 작업하기 위해 Linux에서 SSH로 접속한다.

- Raspberry에서 IP 확인

pi $ ifconfig
 

- SSH Open

pi $ sudo raspi-config
 

- reboot

pi $ reboot
 

 

3-2. Linux PC에서 SSH로 Raspberry 접속

- SSH 접속을 위해 keygen

PC $ ssh-keygen
 

- 만든 key copy

PC $ ssh-copy-id id@xxx.xxx.xxx.xxx
 
PC $ ssh id id@xxx.xxx.xxx.xxx
 

- Raspberry Pi 기본 update

pi $ sudo apt update
 

- Raspberry Pi 기본 upgrade

pi $ sudo apt upgrade
 

- flutter engine binaries 설치

pi $ git clone --depth 1 https://github.com/ardera/flutter-engine-binaries-for-arm.git engine-binaries
 
pi $ cd engine-binaries
 
pi $ sudo ./install.sh
 

- cmake, graphics, system libraries, fonts 설치

pi $ sudo apt install cmake libgl1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev libdrm-dev libgbm-dev ttf-mscorefonts-installer fontconfig libsystemd-dev libinput-dev libudev-dev  libxkbcommon-dev
 

- system fonts update

pi $ sudo fc-cache
 

- git clone flutter-pi

pi $ git clone https://github.com/ardera/flutter-pi
 
pi $ cd flutter-pi
 

- Compile flutter-pi

pi $ mkdir build && cd build
 
pi $ cmake ..v
 
pi $ make -j`nproc`
 

- install flutter-pi

pi $ sudo make install
 

 

 

 
Target
Board
Raspberry Pi4
Host
PC - Ubuntu 22.04
목표
Raspberry Pi4 - Flutter 개발 환경 구축 A-1

Qt?

- 주로 사용되는 UI 프레임워크임

- Qt는 다양한 플랫폼을 지원하고, 강력한 기능을 제공하며, 개발이 쉬움

- 상업용으로 Qt를 사용할 경우, Qt Commercial 라이센스를 구매하며 비용이 매우 비쌈

- Qt 오픈 소스 버전을 사용하지만 한계에 다다름

- Qt의 라이센스 비용이 부담스러워 지면서 Flutter가 대안으로 떠오름

 

Flutter?

- 구글에서 개발한 UI 오픈 소스 크로스 플랫폼 개발 프레임워크

- Android, iOS, Web, Desktop 등 다양한 플랫폼을 지원하며, Dart 언어를 사용

 

Target Device를 라즈베리 파이로 지정하고 개발 환경을 구축해 본다.

라즈베리 파이는 ARM 아키텍처를 사용하기 때문에 윈도우나 리눅스에서 라즈베리 파이를 위한 소프트웨어를 개발하려면 크로스 컴파일 환경을 구축해야 한다.

워크플로우 A-1. 윈도우에 크로스 컴파일 환경 구축 방법

- mingw-w64를 사용하여 GCC 크로스 컴파일러 설치

- Visual Studio에서 크로스 컴파일러를 사용하여 빌드

워크플로우 A-2. 리눅스에 크로스 컴파일 환경 구축 방법

- gcc 또는 clang을 사용하여 ARM 아키텍처용 크로스 컴파일러 설치

워크플로우 B. 라즈베리파이에서 직접 개발/실행

- 크로스 컴파일 환경 구축 없이 라즈베리 파이에서 바로 개발 및 실행

리눅스에서 ARM 아키텍처용 크로스 컴파일러가 기본적으로 제공되기 때문에 리눅스에서 크로스 컴파일 환경을 구축하는 것이 더 쉽고 빠르다고 알려져 있다.

지금부터 워크플로우 A : 리눅스에 크로스 컴파일 환경 구축 방법을 설명한다.

리눅스에 크로스 컴파일 환경 구축 하는 방법은 아래 글에서 참조 한다.

 

https://blog.naver.com/engineer4ever/223198674134

 

Raspberry Pi4 크로스 컴파일 환경 구축(1)

라즈베리 파이는 ARM 아키텍처를 사용하기 때문에 윈도우나 리눅스에서 라즈베리 파이를 위한 소프트웨...

blog.naver.com


1. Linux PC

1-1. Linux에 snapd를 이용하여 Flutter 설치

(아래 링크를 참조하여 작성 되었음)

https://docs.flutter.dev/get-started/install/linux

 

 

Choose your first type of app

Configure your system to develop Flutter on Linux.

docs.flutter.dev

 

- Linux 기본 update

PC $ sudo apt update
 

- snapd 설치

PC $ sudo apt install snapd
 
 
PC $ sudo reboot
 
PC $ sudo snap install core
 

- flutter 설치

PC $ sudo snap install flutter --classic
 
PC $ flutter sdk-path
 

- 설치 위치 확인

PC $ which flutter dart
 

압축을 풀면 install-Linux-tar.txt에 설치 방법이 나와있다.

압축 푼 installation/bin에 가서

PC $ ./studio.sh
 

하면 Android Studio가 실행 된다.

- Android SDK Command-line Tools 설치

- Android lincenses 동의

PC $ flutter doctor --android-licenses
 

 

1-3. FlutterPi-Tool 설치

PC $ flutter pub global activate flutterpi_tool
 
PC $ flutter pub global run flutterpi_tool -h
 

- nano 편집기를 이용하여 bashrc 맨 아랫줄에 추가 후 저장

PC $ nano ~/.bashrc
 
export PATH="$PATH":"$HOME/.pub-cache/bin"
 
PC $ source ~/.bashrc
PC $ flutterpi_tool
 

 

+ Recent posts