임베디드 소프트웨어 라즈베리 파이 - Yocto - 라즈베리 - PIGPIO - Qt 컴퓨터 프로그램의 스크린 샷

Yocto - Raspberry - PIGPIO - Qt

pigpio 라이브러리 및 Qt 툴체인이 있는 Linux

pigpio 비트베이크 레시피

pigpio 라이브러리용 레시피 만들기

이 프로젝트에서 하나의 라이브러리로 I2C, SPI 및 기타 GPIO에 액세스하려면 pigpio 라이브러리가 필요합니다.

안타깝게도 Yocto의 일반적인 메타 레이어에서 레시피를 찾을 수 없었고 우리만의 것을 만들어야 했습니다.

pigpio_git.bb 레시피

Yocto를 위한 커스텀 레시피를 만드는 것은 그리 어렵지 않습니다. 하지만 세부적으로 들어가면 어려울 수 있습니다.

표준 절차는 소스를 가져와서 비트베이크하게 하는 것입니다.

DESCRIPTION = "pigpio"
SECTION = "devel/libs"
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://UNLICENCE"

COMPATIBLE_MACHINE = "^rpi$"

SRC_URI = "git://github.com/joan2937/pigpio.git;protocol=https;tag=v79 \
"

S = "${WORKDIR}/git"

inherit pkgconfig cmake

하지만 'bitbake pigpio'를 사용하면 몇 가지 오류가 발생합니다. 왜냐하면 구성된 라이브러리 버전이 없고 manpages 파일의 위치가 올바르지 않기 때문입니다.

manpages 오류

먼저 다음 오류가 발생합니다.

ERROR: pigpio-git-r0 do_package: QA Issue: pigpio: Files/directories were installed but not shipped in any package:
  /usr/man
  /usr/man/man1
  ...

다음과 같이 설정하여 이 오류를 해결할 수 있습니다.

FILES:${PN}-doc += "\
     /usr/man/man1/pigs.1 \
     /usr/man/man1/pig2vcd.1 \
     /usr/man/man1/pigpiod.1 \
     /usr/man/man3/pigpio.3 \
     /usr/man/man3/pigpiod_if.3 \
     /usr/man/man3/pigpiod_if2.3 \
"

non-symlink 오류

manpages에서 오류를 수정하면 다음 오류가 나타납니다.

ERROR: pigpio-git-r0 do_package_qa: QA Issue: pigpio rdepends on pigpio-dev [dev-deps]
ERROR: pigpio-git-r0 do_package_qa: QA Issue: -dev package pigpio-dev contains non-symlink .so '/usr/lib/libpigpio.so'
-dev package pigpio-dev contains non-symlink .so '/usr/lib/libpigpiod_if2.so'
-dev package pigpio-dev contains non-symlink .so '/usr/lib/libpigpiod_if.so' [dev-elf]

'CMakeLists.txt'에서 생성된 라이브러리 버전이 없기 때문에 발생합니다. 이 문제를 해결하려면 다음을 추가합니다.

SOLIBS = ".so"
FILES_SOLIBSDEV = ""

systemd 자동 시작 pigpiod

pigpio 데몬을 자동 시작하려면 다음을 추가합니다.

do_install() {
    install -d ${D}${bindir}
    install -d ${D}${libdir}
    install -d ${D}${PYTHON_SITEPACKAGES_DIR}
     
    install -m 0644 ${S}/pigpio.py ${D}${PYTHON_SITEPACKAGES_DIR}

    install -d ${D}${systemd_system_unitdir}
    install -m 0644 ${S}/util/pigpiod.service ${D}${systemd_system_unitdir}

    cmake_do_install
}

SYSTEMD_SERVICE:${PN} = "pigpiod.service"

참고

개발을 위해 헤더 파일 설치가 필요하다면, IMAGE_FEATURES 'dev-pkgs'를 설치해야 합니다.

IMAGE_FEATURES += "package-management dev-pkgs doc-pkgs"

meta-interelectronix-rpi에서 레시피로 압축된 메타레이어를 다운로드하세요.

전역 이미지 구성

local.conf 설정

rpi4-build에서 압축된 빌드 구성 파일을 다운로드합니다.

먼저 bblayers.conf 파일을 살펴봅시다. 내부에는 필요한 메타 레이어가 있습니다. 아직 다운로드하지 않은 경우 메타 레이어를 다운로드하고 bblayers.conf 파일을 조정하세요.

다음으로, local.conf 파일을 살펴봅시다.

I2C 설정

I2C에 연결된 센서 칩(예: 온도 센서)을 사용하려면 local.conf 파일에서 I2C를 활성화해야 합니다.

ENABLE_I2C = "1"
KERNEL_MODULE_AUTOLOAD_rpi += " i2c-dev"

X11 및 Wayland 제거

X11과 Wayland를 제거하지 않으면 비트베이크 프로세스에 많은 오류가 생깁니다.

여기서는, 여러 개의 창이 필요하지 않으므로 창을 제거합니다.

DISTRO_FEATURES:remove = "ptest x11 wayland vulkan directfb"

eglfs를 제대로 사용하려면 다음을 추가합니다.

VC4DTBO ?= "vc4-fkms-v3d"

Raspberry 비트베이크 이미지

이미지 설정 파일 만들기

'rpi4-64-qt5-gpio-image.bb' 파일에서 우리는 Linux 배포판에서 필요한 패키지를 정의합니다. 여기서는 앞서 언급했듯 IMAGE_FEATURES 'dev-pkgs'를 포함할 수 있습니다.

파일은 쉽게 필요한 패키지를 추가하기 위해 DEV-SDK, EXTRA_TOOLS 등과 같이 여러 섹션으로 분리됩니다.

pigpio 패키지

이 패키지는 CUSTOM_STUFF에 추가됩니다.

CUSTOM_STUFF = " \
    pigpio \
"

Qt 패키지

Qt에 필요한 패키지는 패키지 그룹에 추가되며 이 패키지 그룹은 여기에 추가됩니다:

IMAGE_INSTALL:append += " packagegroup-qt5 packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug"

'packagegroup-qt5.bb' 파일에서 'packagegroup-qt5'를 찾아 Qt 패키지를 추가하거나 삭제할 수 있습니다.

meta-interelectronix-rpi-qt에서 이미지와 함께 압축된 메타 레이어를 다운로드합니다.

그런 다음 이미지를 비트베이크할 수 있습니다.

bitbake rpi4-64-qt5-gpio-image

SDK 비트베이크

SDK 툴체인 만들기

이 커스텀 Linux 배포판용 Qt 응용 프로그램을 개발하려면 QtCreator 구성에 추가하도록 크로스 컴파일 툴체인을 반드시 설치해야 합니다.

다음과 같은 비트베이크 명령으로 SDK를 쉽게 만들 수 있습니다.

bitbake -c populate_sdk rpi4-64-qt5-gpio-image

이미지 구성 파일에 패키지 그룹 'packagegroup-qt5-toolchain-target packagegroup-qt5-qtcreator-debug'가 추가되었습니다.

SDK 설치

디렉터리에서 생성된 SDK를 찾을 수 있습니다.

/tmp/deploy/sdk

여기서는 'poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh' 라고 명명됩니다.

이 파일에는 설정 지침과 필요한 모든 파일(압축 형식)이 포함되어 있습니다.

이 파일을 개발 컴퓨터에 복사하여 실행합니다.

./poky-glibc-x86_64-rpi4-64-qt5-gpio-image-cortexa72-raspberrypi4-64-toolchain-3.4.3.sh

설명에 따라 SDK를 설치합니다.

저작권 라이선스

Copyright © 2022 Interelectronix e.K.
이 프로젝트 소스 코드는 GPL-3.0 라이선스에 따라 라이선스가 부여됩니다.