树莓派编译uboot及内核

为了实验ebpf,需要自己编译内核开启相关选项,正好手头有树莓派的板子,所以正好用上。

更换内核

首先我自己用官方工具在sd卡上烧录了64位无桌面的系统,然后按照官方的文档,进行了内核的交叉编译,更换后使用uname -a发现确实更换成功了。wsl2挂载sd卡,折腾了好久,详见WSL2简单探索
挂载sd卡:

#!/bin/bashsudo mkdir -p /mnt
sudo mkdir -p /mnt/fat32
sudo mkdir -p /mnt/ext4
sudo mount /dev/sdd1 /mnt/fat32
sudo mount /dev/sdd2 /mnt/ext4

卸载sd卡

#!/bin/bashsudo umount /mnt/fat32
sudo umount /mnt/ext4

编译:

#!/bin/bashKERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs -j12

安装:

#!/bin/bash
root=/mnt
bootfs=${root}/fat32
rootfs=${root}/ext4
sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=${rootfs} modules_install
#sudo mkdir -p ${bootfs}
#sudo mkdir -p ${bootfs}/overlays/
sudo cp arch/arm64/boot/Image ${bootfs}/kernel-myconfig.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb ${bootfs}/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* ${bootfs}/overlays/
sudo cp arch/arm64/boot/dts/overlays/README ${bootfs}/overlays/
#tar -acvf output.tar.gz output/
#sudo scp output.tar.gz pi@link.local:/home/pi

安装uboot使用tftp升级。

使用以下脚本编译一次成功

#!/bin/bash
ARCH=arm64
CROSS_COMPILE=aarch64-linux-gnu-
make rpi_3_defconfig
make -j 12

config.h的配置,最主要的可能是这一句。

kernel=u-boot.bin

然而编好改完启动不起来,怀疑是配置有问题,但是看了官方文档,确认64位 3b的板子就是这个defconfig.
重新编译另一个defconfig,成功加载。

#!/bin/bash
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
#make rpi_3_defconfig
make rpi_arm64_defconfig
make -j 12

最终uboot能成功加载,并且从sd卡启动系统成功:

U-Boot> help
?         - alias for 'help'
...
fatload   - load binary file from a dos filesystem
fatls     - list files in a directory (default /)
mmc       - MMC sub system
U-Boot> mmc partPartition Map for MMC device 0  --   Partition Type: DOSPart    Start Sector    Num Sectors     UUID            Type1     8192            524288          95d33193-01     0c2     532480          61988864        95d33193-02     83
U-Boot> fatls mmc 0:1 overlays/29707   bcm2710-rpi-2-b.dtb18693   COPYING.linux1594   LICENCE.broadcom145   issue.txt 
...52476   bootcode.bin131   cmdline.txt2217   config.txt
...8219600   kernel8.img624640   u-boot.bin
...21590528   kernel-myconfig.img
41 file(s), 4 dir(s)U-Boot> fatload mmc 0:1 ${kernel_addr_r} kernel-myconfig.img
21590528 bytes read in 903 ms (22.8 MiB/s)
U-Boot> booti ${kernel_addr_r} - ${fdt_addr}
Moving Image from 0x80000 to 0x200000, end=17e0000
## Flattened Device Tree blob at 2eff7f00Booting using the fdt blob at 0x2eff7f00
Working FDT set to 2eff7f00Using Device Tree in place at 000000002eff7f00, end 000000002f002ffe
Working FDT set to 2eff7f00

树莓派4B U-boot移植并加载裸机程序
在树莓派3b上运行uboot
树莓派4 嵌入式Linux开发过程详解

使用U-Boot让树莓派从U盘启动
RPI 3 booting from U-boot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3组合式-依赖注入provideinject

一、注意点 专门强调了是3.0且是组合式,不是2.0不支持也不是选项式不支持provide&&inject,是支持但是有很明显的弊端,不建议使用 二、场景 官方的解释: 通常情况下,当我们需要从父组件向子组件传递数据时,会…

MySQL MyCAT读写分离

MyCAT读写分离 环境部署 1.下载JDk:官网下载 2.解压文件 tar -xf jdf-8u181-linux-x64.tar.gz -C /usr/local/3.配置环境变量 [rootmycat ~]# vim /etc/profile.d/java.sh export JAVA_HOME/usr/local/java export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.…

论文阅读——X-Decoder

Generalized Decoding for Pixel, Image, and Language Towards a Generalized Multi-Modal Foundation Model 1、概述 X-Decoder没有为视觉和VL任务开发统一的接口,而是建立了一个通用的解码范式,该范式可以通过采用共同的(例如语义&#…

IDEA Maven Helper插件 解决jar冲突

Jar包冲突报错 程序抛出java.lang.ClassNotFoundException异常; 程序抛出java.lang.NoSuchMethodError异常; 程序抛出java.lang.NoClassDefFoundError异常; 程序抛出java.lang.LinkageError异常等;Maven Jar包管理机制 在Maven项…

【Dart】P2 数据类型(int、double、String、bool、List、Map)

Dart 数据类型 Dart 数据类型一览Dart 判断数据类型字符串类型数值类型布尔类型数组类型字典类型 Dart 数据类型一览 类型数据类型描述数值int整型数值double浮点型字符串String布尔bool数组List又称为列表字典Maps键值对 Dart 判断数据类型 void main() {var str 123;print…

微信小程序使用canvas制作海报并保存到本地相册(超级详细)

案例图 分析案例图都有哪些元素 1.渐变背景 2.圆形头像 3.文字 4.文字超出换行 5.图片居中 6.文字居中 7.单位适配 8.弹窗保存图片。因为一个个绘制图形太麻烦所以这里都采用了方法封装。 canvas api介绍 最后有全部代码,复制即用。 data数据 data() {return {myO…

【Linux--信号】

目录 一、信号的概念1.1查看系统的信号1.2信号的处理方式 二、信号的产生方式2.1通过终端按键2.2kill命令2.3系统调用2.4软条件产生信号2.5硬件异常产生信号 三、信号的保存3.1概念的认识3.2sigset_t3.3信号集操作函数3.4sigprocmask && sigpending3.4.1sigprocmask3.4…

Cassandra入门试用

文章目录 1. 安装1.1 官方文档1.2 安装前提1.3 安装cassandra 2. 集群配置3. Java客户端3.1 Maven依赖3.2 客户端代码 4. 性能测试4.1 压测结论4.2 压测代码 1. 安装 1.1 官方文档 http://cassandra.apache.org/doc/latest/getting_started/index.html 1.2 安装前提 安装Ja…

【云原生、k8s】管理Kubernetes应用搭建与部署

一、Kubernetes部署方式 官方提供Kubernetes部署3种方式 (一)minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方文档:https://kubernetes.io/docs/setup/minikube/ (二)二进制包 …

【工具使用-A2B】使用A2B配置16通道车载音频系统

一,简介 工作中需要使用A2B搭建车载16通道演示系统,故本文记录一下,16通道车载音频系统中A2B工程相关配置,供参考。 使用FPGA输出双TDM8的信号给到A2B Master节点,音频数据经过A2B双绞线,传输到A2B Slave…

uni-app上传音频,图片步骤

在uni-app中,上传音频和图片通常需要借助小程序的API来完成。下面是一个简单的步骤: 上传图片 首先,你需要使用uni.chooseImage方法从相册或相机中选择图片文件。然后,利用选择的图片路径来调用小程序的uni.uploadFile方法进行上…

【开源】基于JAVA语言的企业项目合同信息系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合同签订模块2.4 合同预警模块2.5 数据可视化模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 合同审批表3.2.2 合同签订表3.2.3 合同预警表 四、系统展示五、核心代码5.1 查询合同…

大师计划1.0 - log2 CRTO笔记

CRTOⅠ笔记 log2 这个笔记是我在2023年11月23日-12月22日中,学习CRTO所做的一些笔记。 事实上TryHackMe的路径和htb学院包含了许多CRTO的知识并且甚至还超出了CRTO(CS除外),所以很多东西在THM和htb学院学过,这次CRTO等…

ubuntu18.04安装sqlserver2019

下载 wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -注册ubuntu存储库 安装add-apt-repository sudo apt-get install software-properties-common sudo apt-get update注册ubuntu存储库 sudo add-apt-repository "$(wget -qO- h…

3分钟快速安装 ClickHouse、配置服务、设置密码和远程登录以及修改数据目录

下面是一个完整的 ClickHouse 安装和配置流程,包括安装 ClickHouse、配置服务、设置密码和远程登录以及修改数据目录。 安装 ClickHouse 安装 YUM 工具包: sudo yum install -y yum-utils添加 ClickHouse YUM 仓库: sudo yum-config-manager…

【NI-RIO入门】如何格式化实时控制器

1.当使用CompactRIO时有时会出现硬盘已满或出现IO错误,如下如图 2.出现上下位机软件版本不匹配 3.rt组件损坏 4.实时控制器意外进入安全模式 5.设备非正常断电 6.访问被拒绝:目标被另一个进程(例如 VI 或 NI 分布式系统管理器)锁定…

中间继电器的文字符号和图形符号

中间继电器的文字符号和图形符号 中间继电器主要用途是当其他继电器触头数量或容量不够时,可借助中间继电器扩充触头数目或增大触头容量,起中间转换作用。将多个中间继电器相组合,还能构成各种逻辑运算电器或计数电器。 中间继电器文字符号…

Kafka、RocketMQ、RabbitMQ消息丢失可能存在的地方,以及解决方案

这里主要对比:Kafka、RocketMQ、RabbitMQ 介绍一下消息生产、存储、消费三者的架构形式。 消息丢失可能存在的场景: 情况一: 生产者发送给MQ的过程消息丢失 在写消息的过程中因为网络的原因,还没到mq消息就丢失了;或…

Android开发中常见的Hook技术有哪些?

Hook技术介绍 Hook技术是一种在软件开发中常见的技术,它允许开发者在特定的事件发生时插入自定义的代码逻辑。常见的应用场景包括在函数调用前后执行特定的操作,或者在特定的事件发生时触发自定义的处理逻辑。 在Android开发中,Hook通常是通…

TypeScript入门笔记1

You 按照下面目录,制作通俗易懂的 TypeScript 教程,给一个懂一点python的新手。 首先通俗解释概念。 然后给出3个实际例子进行讲解。 并详细解释其中的语法规则,和新手注意事项,易犯错误 python对应的可能写法。 ### 目录&#x…