Raspberry PI Yocto BMC 研究筆記(一)

前言

因為在工作上會在RDK-B的框架下開發,而RDK-B的Build system就是用Yocto,終於最近比較有動力,就搭建一下環境及手邊樹梅派的板子,把這部份摸熟一點也記錄一下。

Yocto簡介

做嵌入式軟體開發應該都會常常聽到BuildRoot和Yocto,他們都是一種建立Embedded Linux distribution的build system,關於更多Yocto介紹可以到他們官網了解更多,這邊就不再贅述,接下來就是開始建置環境。

環境建置

首先需要在一台電腦上先安裝虛擬磯的環境,我是習慣用VMWare,接著就是開一個新的虛擬磯,大概的配置如下:

  1. CPU核心:8
  2. RAM:8G
  3. OS:20.04.6 LTS
  4. Storage: 120 GB

一切都就緒後,就可以開始安裝相依性的套件

相依套件安裝

在編譯Yocto之前需要以下的相依套件,更多細節可參考 https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html

1
2
3
$ sudo apt install 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 python3-subunit mesa-common-dev zstd liblz4-tool file locales libacl1

$ sudo locale-gen en_US.UTF-8

配置及編譯

首先當然需要先下載Yocto source code,我們先建立一個資料夾,並透過git clone source code.

1
2
mkdir my-rpi && cd my-rpi
git clone -b kirkstone git://git.yoctoproject.org/poky.git

接著就是下載Raspberry Pi的meta層

1
git clone -b kirkstone git://git.yoctoproject.org/meta-raspberrypi

初始化yocto開發環境

1
source poky/oe-init-build-env build-rpi

加入剛剛下載的Raspberry Pi的meta層

1
bitbake-layers add-layer ../meta-raspberrypi

修改配置

1
2
3
4
5
6
7
8
9
sed -i 's/^MACHINE.*/MACHINE ?= "raspberrypi3"/g' conf/local.conf
sed -i '/^#DL_DIR ?= "${TOPDIR}\/downloads"/ a DL_DIR ?= \"${HOME}/yocto/downloads"' conf/local.conf
sed -i 's/^PACKAGE_CLASSES.*/PACKAGE_CLASSES ?= "package_ipk"/g' conf/local.conf

# 設定透過uboot開機
echo 'RPI_USE_U_BOOT = "1"' >> conf/local.conf

#設定開啟uart console
echo 'ENABLE_UART = "1"' >> conf/local.conf

編譯image

1
bitbake core-image-minimal

編譯完成後image大概會在下面的路徑

1
/my-rpi/build-rpi/tmp/deploy/images/raspberrypi3/core-image-minimal-raspberrypi3.wic.bz2

他是一個symbollink實際上對應到像這樣檔名的image

1
core-image-minimal-raspberrypi3-20231111193508.rootfs.wic.bz2  

之後就可以透過balenaEtcher等工具燒錄image到SD卡

開機後的console畫面會像這樣

這樣就大功告成囉!

參考資料

使用 Yocto 打造你的 Raspberry Pi 系統