一、yocto 编译raspberrypi 4B并启动

2024-03-18 15:52

本文主要是介绍一、yocto 编译raspberrypi 4B并启动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

yocto 编译raspberrypi 4B并启动

  • yocto 编译raspberrypi 4B并启动
    • 环境准备
    • 代码下载
    • 编译及配置
    • 烧录

yocto 编译raspberrypi 4B并启动

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

环境准备

最近到手一个树莓派4B,准备拿来玩一玩,下面记录下使用yocto构建RaspberryPi的镜像并刷写启动的过程。
首先准备主机编译环境,必要组件安装:

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)来进行开发,最好不要用太新的分支,可能会有适配问题。
在这里插入图片描述

代码下载

首先下载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

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

编译及配置

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

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 uartENABLE_UART="1"## packagesIMAGE_INSTALL:append = " openssh-sftp-server sudo python3 python3-pip rpi-gpio raspi-gpio"IMAGE_FEATURES:append = " ssh-server-openssh"## systemd settingsDISTRO_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
在这里插入图片描述

烧录

编译得到刷写的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

这篇关于一、yocto 编译raspberrypi 4B并启动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822854

相关文章

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运