Raspberry Pi活用/Yocto設定

提供: Medeshima wiki
< Raspberry Pi活用
2024年11月8日 (金) 13:10時点におけるHosakino (トーク | 投稿記録)による版 (→‎USBブート)
ナビゲーションに移動 検索に移動

参考

Yocto環境取得

~/yocto$ git clone -b scarthgap https://git.yoctoproject.org/poky
~/yocto$ source poky/oe-init-build-env

gitで通信できる場合

~/yocto/build$ bitbake-layers layerindex-fetch -b scarthgap meta-raspberrypi

gitで通信できない場合

~/yocto/poky$ git clone -b scarthgap https://git.yoctoproject.org/meta-raspberrypi
~/yocto/poky$ bitbake-layers add-layer meta-raspberrypi

layerの確認

bitbake-layers show-layers

設定変更

~/yocto/build/conf/local.conf

MACHINE ?= "raspberrypi4-64"

DL_DIR ?= "${TOPDIR}/downloads"

https://meta-raspberrypi.readthedocs.io/en/latest/ipcompliance.html

ビルド

core-image-base

最小構成

~/yocto/build$ bitbake core-image-minimal

X環境

~/yocto/build$ bitbake core-image-sato

SDカードへの書き込み

$ sudo bmaptool copy --bmap core-image-minimal-raspberrypi4-64.rootfs.wic.bmap core-image-minimal-raspberrypi4-64.rootfs.wic.bz2 /dev/SDX

QEMUを使用する場合

~/yocto/build/conf/local.conf

MACHINE ?= "qemuarm64"

$ bitbake core-image-base
$ runqemu qemuarm64 nographic

SDK

~/yocto/build$ bitbake core-image-sato -c populate_sdk

~/yocto/build/tmp/deploy/sdk/poky-glibc-x86_64-core-image-sato-cortexa72-raspberrypi4-64-toolchain-4.0.17.sh

$ . /opt/poky/4.0.17/environment-setup-cortexa72-poky-linux

$ pkg-config --list-all

自作アプリの追加

デバッグ

git clone -b kirkstone https://git.openembedded.org/meta-openembedded
bitbake-layers add-layer meta-oe
bitbake-layers add-layer meta-python

local.conf

CORE_IMAGE_EXTRA_INSTALL += " python3 apache2 gdb gdbserver"
DISTRO_FEATURES += " debuginfod"

debuginfod

local.conf

gdb /bin/cat

ホスト

oe-debuginfod

gdbserver

local.conf

IMAGE_GEN_DEBUGFS = "1"
IMAGE_FSTYPES_DEBUGFS = "tar.bz2"

EXTRA_IMAGE_FEATURES:append = " tools-debug"

mkdir debugfs
cd debugfs
tar xjf build/tmp/deploy/images/qemuarm64/core-image-minimal-qemuarm64.rootfs.tar.bz2
tar xjf build/tmp/deploy/images/qemuarm64/core-image-minimal-qemuarm64.rootfs-dbg.tar.bz2

build-dir/tmp/sysrootfs/host/usr/bin/architecture/architecture-gdb

gdbserver localhost:1234 /bin/gzip -help

cd debugfs
aarch64-poky-linux-gdb
(gdb) set sysroot debugfs
(gdb) set substitute-path /usr/src/debug debugfs/usr/src/debug
(gdb) target remote IP-of-target:1234

~/.gdbinit

bitback bash
bitbake -c devshell bash
cd ..
scp packages-split/bash/bin/bash target:/bin/bash
cp -a packages-split/bash-dbg/* path/debugfs

ターゲット上でのみデバッグ

local.conf

EXTRA_IMAGE_FEATURES:append = " tools-debug"
IMAGE_INSTALL:append = " packagename-dbg"
EXTRA_IMAGE_FEATURES:append = " dbg-pkgs"

DEBUG_BUILD = "1"

USBブート

local.conf

CMDLINE_remove = "root=/dev/mmcblk0p2"
CMDLINE_append = "root=/dev/sda2"

NFSルート