Raspberry pi 4b using Yocto === 這一篇主要紀錄[Open Source Camera Project](https://hackmd.io/hUajGa4ORECGzliqR-K4ow)建置系統的步驟。 因為會用到攝影機,無線網路等功能,所以將一些必要套件也一起編譯進去 會用到的套件清單: - meta-raspberrypi - meta-openembedded - meta-qt5 - meta-python2 - meta-browser - meta-clang 範例有啟用Serial,所以不用透過螢幕也可以操作Raspberry pi。 :::info 登入=> 帳號: root 密碼: root ::: --- 1. 下載yocto: ```bash= git clone git://git.yoctoproject.org/poky cd poky ``` 2. 下載必須套件: ```bash= git clone git://git.yoctoproject.org/meta-raspberrypi cd meta-raspberrypi git checkout fb253346c2fe85f8fdd49e5a66dff04d8f2bd53e ``` ```bash= git clone https://github.com/openembedded/meta-openembedded ``` ```bash= git clone https://github.com/meta-qt5/meta-qt5 ``` ```bash= git clone https://github.com/OSSystems/meta-browser ``` ```bash= git clone git://github.com/kraj/meta-clang ``` ```bash= git clone git://git.openembedded.org/meta-python2 ``` 3. 新增專案: ```bash= source oe-init-build-env rpi-build ``` :::info source oe-init-build-env <自己取專案名稱> ::: 4. 設定配方: ```bash= vim conf/bblayers.conf ``` 將裡面改成: ```bash= # 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 \ " ``` :::info PATH改為自己的實際路徑 ::: 5. 設定環境變數: ```bash= vim conf/local.conf ``` 新增: ```bash= 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" ``` :::info fbdev針對HDMI和DSI螢幕 ::: 加上註解: ```bash= #MACHINE ??= "qemux86-64" ``` 解開註解: ```bash= DL_DIR ?= "${TOPDIR}/downloads" SSTATE_DIR ?= "${TOPDIR}/sstate-cache" TMPDIR = "${TOPDIR}/tmp" ``` ```bash= PACKAGE_CLASSES ?= "package_rpm" 改成 PACKAGE_CLASSES ?= "package_ipk" ``` 尾端新增: ```bash= 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" ``` :::info IMAGE_INSTALL_append=" <套件>" ::: :::info INHERIT += "extrausers" EXTRA_USERS_PARAMS = "usermod -P <登入帳號> <登入密碼>; " ::: :::info 擴展rootfs到20GB IMAGE_ROOTFS_EXTRA_SPACE = "20971520" ::: 6.相機patch: [patch下載](https://drive.google.com/file/d/1e-CXmADIytuON-DWXSOUohHLmj_VLtaG/view?usp=sharing) 將patch丟到meta-raspberry資料夾底下,並應用。 ```bash= git apply <PATH檔案> ``` 7. 編譯: ```bash= bitbake core-image-x11 ``` 會看到: ```bash= 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 ``` 8. 將編譯好的映像檔燒到SDCRD中開機: ```bash= sudo bmaptool copy tmp/deploy/images/raspberrypi4/core-image-x11-raspberrypi4.wic.bz2 <SDCORD所在位置> ``` 9. 燒錄完成後,插上Raspberry pi開機,即可在console操作Raspberry pi 這裡透過screen操作console ```bash= sudo screen /dev/ttyUSB0 115200 ```