一、实战篇-Yocto编译raspberrypi 4B并启动

本文详细介绍了如何在RaspberryPi4B上使用yocto工具链构建定制Linux镜像,包括环境设置、代码下载、配置poky和meta-raspberrypi层,以及最终的编译和烧录过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Yocto编译raspberrypi 4B并启动

本篇文章为基于raspberrypi 4B单板的yocto实战系列的开篇之作。

1. 树莓派4B介绍

在这里插入图片描述
树莓派 4B(Raspberry Pi 4 Model B)是一款广泛应用于教育、物联网和嵌入式开发领域的单板计算机。自其发布以来,以其低成本、高性能、灵活扩展性和广泛的社区支持,吸引了大量开发者和爱好者。它采用了博通的 BCM2711芯片,包含四核ARM Cortex-A72(ARM v8)64 位处理器,主频为1.5GHz,能够处理较复杂的计算任务。

树莓派 4B 的核心硬件特点:

  1. 处理器:四核 ARM Cortex-A72 处理器,性能优越,适用于需要多任务处理的嵌入式项目。
  2. 内存配置:提供 2GB、4GB 和 8GB 的 LPDDR4 内存,能应对不同需求,从轻量应用到内存密集型任务。
  3. 网络连接:千兆以太网支持,带来高速网络连接能力,且在物联网等领域尤为重要。同时,它集成了 2.4GHz 和 5GHz 双频 Wi-Fi,支持蓝牙 5.0,增强了无线连接的灵活性。
  4. 存储:采用 microSD 卡作为存储介质,同时支持 USB 启动,扩展存储方式灵活。
  5. 外设接口:拥有丰富的接口,包括 2 个 USB 3.0 和 2 个 USB 2.0 接口,双 HDMI 接口支持最高 4K 分辨率输出,GPIO 针脚允许与传感器、显示器、键盘等外围设备连接,进一步提升了硬件扩展的可能性。
  6. 供电和散热:5V/3A 的 USB-C 供电接口,满足其高性能的电力需求,主动散热设计确保其长时间运行的稳定性。

为什么要选择树莓派 4B 作为 Yocto 实战的目标开发板呢

  1. 广泛的社区支持

    树莓派是全球最流行的开发板之一,拥有庞大且活跃的社区。Yocto 项目本身是一个复杂的系统构建工具,而树莓派 4B 在社区中有丰富的支持资源,包括预构建的元数据(meta-raspberrypi 层)和各种问题解决方案,这使得开发者能够快速搭建定制 Linux 系统,极大降低了学习曲线。

  2. 高性能

    树莓派 4B 的四核 64 位 ARM 处理器、千兆网络和 USB 3.0 接口,使其能够处理较为复杂的应用场景,比如图形界面、视频处理、物联网设备管理等。在 Yocto 构建系统中,树莓派 4B 拥有足够的计算能力来构建和运行各种复杂的嵌入式应用。

  3. 灵活性和扩展性

    树莓派 4B 的硬件接口丰富,GPIO 针脚、I2C、SPI 等接口使得它可以轻松连接各种传感器和外设,适用于多种嵌入式应用场景。使用 Yocto 构建系统时,这些硬件接口可以灵活定义,允许开发者根据项目需求定制内核和设备树配置,提升定制化的能力。

  4. 成本效益

    相较于其他同类嵌入式开发板,树莓派 4B 的价格相对较低,但提供的性能却非常出色,适合个人开发者、小型开发团队甚至是教育环境进行学习和项目开发。这使得它成为入门 Yocto 开发和构建嵌入式 Linux 系统的首选平台。

  5. 广泛的操作系统支持

    树莓派 4B 不仅支持 Raspbian 等主流 Linux 发行版,还能够非常好地支持 Yocto 项目。Yocto 为树莓派提供了相对成熟的 BSP(板级支持包),能够快速定制系统,使其适应不同的应用需求。

所以树莓派 4B 凭借其强大的性能、良好的社区支持和极具竞争力的价格,是我们 Yocto 实战开发中最理想的硬件平台。话不多说,开始我们定制发行版的第一步:编译树莓派4B的官方发行版镜像,并烧录镜像到SD卡完成启动。

2. 环境准备

首先准备主机编译环境,必要组件安装:

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 pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

https://github.com/agherzan/meta-raspberrypi这个layer支持多个分支,我们选择一个特定的分支(kirkstone)来进行开发,最好不要用太新的分支,可能会有适配问题。
在这里插入图片描述

3. 代码下载

首先下载kirkstone 分支的poky源码:

git clone -b kirkstone https://gitlab.com/yoctoproject/poky.git poky-kirkstone

下载完成以后的产物:
在这里插入图片描述
然后进入poky-kirkstone文件夹执行如下指令下载kirkstone 分支的meta-raspberrypi:

git clone -b kirkstone https://github.com/agherzan/meta-raspberrypi.git meta-raspberrypi

下载完成以后的产物:
在这里插入图片描述

4. 编译及配置

首先执行如下指令创建编译工作区:

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

执行完成以后会自动进入rpi-build文件夹下

  • 首先修改conf/bblayers.conf文件将刚才下载的meta-raspberrypi
    加入编译:
    在这里插入图片描述
  • 然后修改conf/local.conf修改编译的目标:
    修改MACHINE为raspberrypi4-64:
    在这里插入图片描述
    如果你使用的不是raspberrypi4B这块单板,根据自己的树莓派型号选择对应的machine即可。可选项为.conf之前的名字:
    在这里插入图片描述

在local.conf末尾添加一些自定义项:

############################ Add by tao #######################################
IMAGE_FSTYPES = "ext4.xz rpi-sdimg"
SDIMG_ROOTFS_TYPE="ext4.xz"

## enable uart
ENABLE_UART="1"
 
## packages
IMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"
IMAGE_FEATURES:append = " ssh-server-openssh"
 
## systemd settings
DISTRO_FEATURES:append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED:append = " sysvinit"
VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
########################### End by tao ########################################

开始编译:

bitbake core-image-base

此过程首次编译需要耗费多个小时,根据编译主机情况决定,而且需要连接外网,最好挂VPN。
等待编译完成以后编译镜像在如下路径:
rpi-build/tmp/deploy/images/下面的core-image-base-raspberrypi4-64-xxxxx-rootfs.rpi-sdimg
在这里插入图片描述

5. 烧录

编译得到刷写的image以后将内存卡插入主机,确认好SD卡对应的快设备,例如我的是/dev/sda,使用dd指令刷机:

sudo dd if=/home/a/work/raspberry/rpi-build/tmp/deploy/images/raspberrypi4-64/core-image-base-raspberrypi4-64-20240313101906.rootfs.rpi-sdimg of=/dev/sda
sync

完成以后将内存卡插入树梅派,连接好串口,raspberrypi的默认串口是Pin 8(TX) 和Pin 10(RX), 波特率115200:
在这里插入图片描述

上电开机,可以看到串口打印如下启动日志:
在这里插入图片描述
启动完成需要输入登陆用户root即可进入系统:
在这里插入图片描述

这样就完成的整个流程,后续需要什么包只需要自己通过yocto定制即可。DONE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值