Try   HackMD

Raspberry pi 4b using Yocto

這一篇主要紀錄Open Source Camera Project建置系統的步驟。

因為會用到攝影機,無線網路等功能,所以將一些必要套件也一起編譯進去

會用到的套件清單:

  • meta-raspberrypi
  • meta-openembedded
  • meta-qt5
  • meta-python2
  • meta-browser
  • meta-clang

範例有啟用Serial,所以不用透過螢幕也可以操作Raspberry pi。

登入=>
帳號: root
密碼: root


  1. 下載yocto:
git clone git://git.yoctoproject.org/poky cd poky
  1. 下載必須套件:
git clone git://git.yoctoproject.org/meta-raspberrypi cd meta-raspberrypi git checkout fb253346c2fe85f8fdd49e5a66dff04d8f2bd53e
git clone https://github.com/openembedded/meta-openembedded
git clone https://github.com/meta-qt5/meta-qt5
git clone https://github.com/OSSystems/meta-browser
git clone git://github.com/kraj/meta-clang
git clone git://git.openembedded.org/meta-python2
  1. 新增專案:
source oe-init-build-env rpi-build

source oe-init-build-env <自己取專案名稱>

  1. 設定配方:
vim conf/bblayers.conf

將裡面改成:

# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly POKY_BBLAYERS_CONF_VERSION = "2" BBPATH = "${TOPDIR}" BBFILES ?= "" BBLAYERS ?= " \ PATH/poky/meta \ PATH/poky/meta-poky \ PATH/poky/meta-yocto-bsp \ PATH/poky/meta-raspberrypi \ PATH/poky/meta-openembedded/meta-oe \ PATH/poky/meta-openembedded/meta-multimedia \ PATH/poky/meta-openembedded/meta-networking \ PATH/poky/meta-openembedded/meta-python \ PATH/poky/meta-qt5 \ PATH//poky/meta-python2 \ PATH//poky/meta-browser/meta-chromium \ PATH//poky/meta-clang \ "

PATH改為自己的實際路徑

  1. 設定環境變數:
vim conf/local.conf

新增:

MACHINE ??= "raspberrypi4" KERNEL_IMAGETYPE = "Image" ENABLE_UART = "1" RASPBERRYPI_HD_CAMERA = "1" VIDEO_CAMERA = "1" PARALLEL_MAKE = "-j 4" GPU_MEM_256="192" DISABLE_OVERSCAN = "1" DISABLE_SPLASH = "1" DISABLE_RPI_BOOT_LOGO = "1" MACHINE_FEATURES_append=" vc4graphics xf86-video-fbdev" DISTRO_FEATURES_append = " opengl x11 fbdev" MACHINE_FEATURES_remove=" wayland" VC4GRAPHICS = "1"

fbdev針對HDMI和DSI螢幕

加上註解:

#MACHINE ??= "qemux86-64"

解開註解:

DL_DIR ?= "${TOPDIR}/downloads" SSTATE_DIR ?= "${TOPDIR}/sstate-cache" TMPDIR = "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm" 改成 PACKAGE_CLASSES ?= "package_ipk"

尾端新增:

IMAGE_ROOTFS_EXTRA_SPACE = "20971520" IMAGE_INSTALL_append = " python3" IMAGE_INSTALL_append = " python3-pip" IMAGE_INSTALL_append = " ntp" IMAGE_INSTALL_append = " v4l-utils" IMAGE_INSTALL_append = " opkg" IMAGE_INSTALL_append = " opencv" IMAGE_INSTALL_append = " userland" IMAGE_INSTALL_append = " libgpiod" IMAGE_INSTALL_append = " vim" IMAGE_INSTALL_append = " rsync" IMAGE_INSTALL_append = " tslib" IMAGE_INSTALL_append = " openssh" IMAGE_INSTALL_append = " python3-pyqt5" IMAGE_INSTALL_append = " chromium-x11" TOOLCHAIN_TARGET_TASK_append = " opencv" INHERIT += "extrausers" EXTRA_USERS_PARAMS = "usermod -P root root; " LICENSE_FLAGS_WHITELIST="commercial"

IMAGE_INSTALL_append=" <套件>"

INHERIT += "extrausers"
EXTRA_USERS_PARAMS = "usermod -P <登入帳號> <登入密碼>; "

擴展rootfs到20GB
IMAGE_ROOTFS_EXTRA_SPACE = "20971520"

6.相機patch:
patch下載

將patch丟到meta-raspberry資料夾底下,並應用。

git apply <PATH檔案>
  1. 編譯:
bitbake core-image-x11

會看到:

Build Configuration: BB_VERSION = "1.51.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "ubuntu-20.04" TARGET_SYS = "x86_64-poky-linux" MACHINE = "qemux86-64" DISTRO = "poky" DISTRO_VERSION = "3.3+snapshot-c553b55a48af077ce25480abcadac289c91051b5" TUNE_FEATURES = "m64 core2" TARGET_FPU = "" meta meta-poky meta-yocto-bsp = "master:c553b55a48af077ce25480abcadac289c91051b5" NOTE: Fetching uninative binary shim http://downloads.yoctoproject.org/releases/uninative/3.1/x86_64-nativesdk-libc.tar.xz;sha256sum=5d0611df544edff6428cef7d871257a91aa6ba1bd92f5365a2df8deb54b6b31e (will check PREMIRRORS first) Initialising tasks: 44% |######################################################################## | ETA: 0:00:00
  1. 將編譯好的映像檔燒到SDCRD中開機:
sudo bmaptool copy tmp/deploy/images/raspberrypi4/core-image-x11-raspberrypi4.wic.bz2 <SDCORD所在位置>
  1. 燒錄完成後,插上Raspberry pi開機,即可在console操作Raspberry pi

這裡透過screen操作console

sudo screen /dev/ttyUSB0 115200