RK3566-移植5.10内核Ubuntu22.04
说明
记录了本人使用泰山派(RK3566)作为平台并且成功移植5.10.160版本kernel和ubuntu22.04,并且成功配置&连接网络的完整过程。
本文章所用ubuntu下载地址:ubuntu-cdimage-ubuntu-base-releases-22.04-release安装包下载_开源镜像站-阿里云
本文章所用内核下载地址:
Rockchip Kernel - Rockchip open source Document
文件系统
配置Ubuntu
解压文件系统(ubuntu22.04)
root@ubuntu:/home/zq/Desktop# mkdir ubuntu
root@ubuntu:/home/zq/Desktop# mv ubuntu-base-22.04-base-arm64.tar.gz ubuntu
root@ubuntu:/home/zq/Desktop# cd ubuntu/
root@ubuntu:/home/zq/Desktop/ubuntu# tar -xzvf ubuntu-base-22.04-base-arm64.tar.gz
cd 到kernel目录,复制WIFI固件到ubuntu
root@ubuntu:/home/zq/Desktop/ubuntu# cp -p ../external/rkwifibt/firmware/broadcom/all/wifi/ lib/firmware/
查看固件
root@ubuntu:/home/zq/Desktop/Release/kernel# ls lib/firmware/
clm_bcm43752a2_ag.blob fw_bcm43455c0_ag.bin nvram_ap6212a_ap.txt nvram_AP6493.txt
clm_bcm43752a2_pcie_ag.blob fw_bcm43455c0_ag_mfg.bin nvram_ap6212a_cy.txt nvram_awnb108.txt
fw_awnb108_ap.bin fw_bcm43456c5_ag.bin nvram_ap6212a.txt nvram_azw256.txt
fw_awnb108.bin fw_bcm43456c5_ag_mfg.bin nvram_ap6212.txt nvram_azw372.txt
fw_bcm40181a2.bin fw_bcm4354a1_ag.bin nvram_ap6233f.txt nvram_B23.txt
fw_bcm40181a2_mfg.bin fw_bcm4354a1_ag_mfg.bin nvram_AP6234.txt nvram_cyw43438.txt
fw_bcm40183b2_ag.bin fw_bcm4356a2_ag.bin nvram_ap6236.txt nvram_cyw43455.txt
fw_bcm40183b2.bin fw_bcm4356a2_ag_mfg.bin nvram_ap6255.txt nvram_RK901.txt
fw_bcm43013c1_ag.bin fw_bcm4359c0_ag.bin nvram_ap6256.txt nvram_RK903_26M.cal
fw_bcm43013c1_ag_mfg.bin fw_bcm4359c0_ag_mfg.bin nvram_AP6275P.txt nvram_RK903.cal
fw_bcm43241b4_ag.bin fw_bcm43752a2_ag.bin nvram_ap6275s.txt nvram_RK903.txt
fw_bcm4330.bin fw_bcm43752a2_ag_mfg.bin nvram_ap62x2.txt rk912_fw.bin
fw_bcm43341b0_ag.bin fw_bcm43752a2_pcie_ag.bin nvram_AP6330.txt rk912_patch.bin
fw_bcm4334b1_ag.bin fw_bcm43752a2_pcie_ag_mfg.bin nvram_AP6335.txt rk912_patch_cal.bin
fw_bcm4339a0_ag.bin fw_cyw43438.bin nvram_ap6354.txt wifi_efuse_8189e.map
fw_bcm4339a0_ag_mfg.bin fw_cyw43455.bin nvram_ap6356s.txt wifi_efuse_8723bs-vq0.map
fw_bcm43436b0.bin nvram_4330_oob.txt nvram_ap6356.txt wifi_efuse_8723cs.map
fw_bcm43436b0_mfg.bin nvram_4330.txt nvram_ap6398s.txt wifi_efuse_8723ds.map
fw_bcm43438a0.bin nvram_ap6181.txt nvram_AP6441.txt
fw_bcm43438a1.bin nvram_AP6210_24M.txt nvram_ap6452.txt
fw_bcm43438a1_mfg.bin nvram_AP6210.txt nvram_AP6476.txt
给ubuntu22.04_base arm64版本换源,只需要把对应的20.04的版本代号变为22.04即可
参考我前面的博客为ARM64架构移植Ubuntu20.04换源的发现_ubuntu20 arm源-CSDN博客https://blog.csdn.net/qq_65198598/article/details/145145101?spm=1001.2014.3001.5501https://blog.csdn.net/qq_65198598/article/details/145145101?spm=1001.2014.3001.5501
https://blog.csdn.net/qq_65198598/article/details/145145101?spm=1001.2014.3001.5501
| 版本号 | 代号 |
| 23.10 | mantic |
| 23.04 | lunar |
| 22.10 | kinetic |
| 22.04 | jammy |
| 21.10 | impish |
| 21.04 | hirsute |
| 20.10 | groovy |
| 20.04 | focal |
| 19.10 | eoan |
| 19.04 | disco |
| 18.10 | cosmic |
| 18.04 | bionic |
为Ubuntu更新软件
参考:基于 RK3588 构建 Ubuntu 22.04 根文件系统_rk3588 ubuntu-CSDN博客https://blog.csdn.net/qq_34117760/article/details/130909986https://blog.csdn.net/qq_34117760/article/details/130909986
https://blog.csdn.net/qq_34117760/article/details/130909986
配置好网络过后,安装必要软件:我安装的有:
#必要
apt install vim bash-completion net-tools iputils-ping ifupdown ethtool ssh rsync udev htop rsyslog curl openssh-server apt-utils dialog nfs-common psmisc language-pack-en-base sudo kmod apt-transport-https -y
#开发
apt install gcc g++ make cmake ninja-build build-essential ffmpeg libopencv-dev libv4l-dev v4l-utils yavta -y
#网络
apt install bluetooth* bluez* blueman* wireless-tools network-manager -y
内核
配置内核
修改kernel中的Makefile为自己的编译器(kernel/Makefile里)

使用rockchip的默认config开始配置,这里只演示配置wifi
root@ubuntu:/home/zq/Desktop/Release/kernel# make menuconfig rockchip_linux_defconfig
进入menuconfig,搜索“ap6”,如图选择/输入路径

注意需要选择的是SDIO接口并且 编辑正确的固件路径(ap6212a的固件),若固件路径不正确会导致wlan0开启失败从而不显示接口。
另外一个点是虽然在DTS里面写的模块是AP6212并且原理图上也是AP6212,但是实际上的固件加载的是AP6212A才可以正常运行,加载AP6212的固件无法运行!
编译内核&模块
开始编译内核
root@ubuntu:/home/zq/Desktop/Release# ./build.sh kernel
等待七七四十九天之后编译好了内核
然后开始编译模块
make modules
等待七七四十九天之后把编译好的模块安装到即将烧录到的文件系统rootfs中
make ARCH=arm64 modules_install INSTALL_MOD_PATH=../ubuntu
安装modules过后可以看到目录下有对应内核的模块目录
![]()
烧录&测试
调整内存分区(选做)
烧录本次文件系统&内核后使用立创原提供的内存分区文件(parameter.txt)烧录后的大小

可以看到这里的空间已经是相当极限了,基本上除了烧录文件系统什么都干不了
为了使得烧录过后的文件系统内存大一些,可以参考
泰山派调整分区大小 - 哔哩哔哩
调整分区并且下载(记得使用 以下命令调整)过后可以看到
resize2fs /dev/mmcblk0p6

内存实现了质的飞跃
烧录过后进入系统
查询版本
显示文件系统版本使用
lsb_release -a
显示内核版本使用
unema -r
网络测试
检查网络接口是否检测到
root@localhost:/home/zq# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 276 bytes 24350 (24.3 KB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 276 bytes 24350 (24.3 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet6 2409:8a0c:221f:a80:338e:d9d2:50c0:8a95 prefixlen 64 scopeid 0x0<global>inet6 2409:8a0c:221f:a80:d14a:5f82:9b6c:1485 prefixlen 64 scopeid 0x0<global>inet6 fe80::e8df:7d96:1f6:14e1 prefixlen 64 scopeid 0x20<link>ether b8:13:32:b0:47:90 txqueuelen 1000 (Ethernet)RX packets 47 bytes 6071 (6.0 KB)RX errors 0 dropped 3 overruns 0 frame 0TX packets 65 bytes 8910 (8.9 KB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
检测网络过后搜索wifi
root@localhost:/home/zq# nmcli dev wifi list
可以看到类似于

然后连接WIFI
sudo nmcli dev wifi connect "WIFI名字" password "密码" ifname wlan0
然后就可以看到wlan0下面有了IP地址,说明已经连接上了

尝试安装一下 neofetch
root@localhost:/home/zq# sudo apt install neofetch
WUHU成功

配置过程还有一些比较好的参考文章:
泰山派移植Ubuntu22.04 - Zhh Blog基于 RK3588 构建 Ubuntu 22.04 根文件系统_rk3588 ubuntu-CSDN博客立创泰山派学习01--ubuntn系统的WIFI配置及SSH的安装 - zbl1118 - 博客园make modules 和 make modules_install-CSDN博客
相关文章:
RK3566-移植5.10内核Ubuntu22.04
说明 记录了本人使用泰山派(RK3566)作为平台并且成功移植5.10.160版本kernel和ubuntu22.04,并且成功配置&连接网络的完整过程。 本文章所用ubuntu下载地址:ubuntu-cdimage-ubuntu-base-releases-22.04-release安装包下载_开源…...
从零开始实现一个双向循环链表:C语言实战
文章目录 1链表的再次介绍2为什么选择双向循环链表?3代码实现:从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…...
PostgreSQL 数据库模式基础操作
查看数据库或者使用pgAdmin或者QGIS查看PG数据库时,可以看到数据库名下面有一个Public,然后才是具体的表,搜索了一下,按照PG官网:https://www.postgresql.org/docs/current/ddl-schemas.html 的说明,这个Pu…...
51单片机 06 定时器
51 单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 作用:1、用于计时;2、替代长时间的Delay,提高CPU 运行效率和处理速度。 定时器个数:3个(T0、T1、T2)…...
CSS 值和单位详解:从基础到实战
CSS 值和单位详解:从基础到实战 1. 什么是 CSS 的值?示例代码:使用颜色关键字和 RGB 函数 2. 数字、长度和百分比2.1 长度单位绝对长度单位相对长度单位 2.2 百分比 3. 颜色3.1 颜色关键字3.2 十六进制 RGB 值3.3 RGB 和 RGBA 值3.4 HSL 和 H…...
【C++】P1957 口算练习题
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式:输出格式: 💯我的做法代码实现: 💯老师的做法代码实现: 💯对比分析&am…...
Workbench 中的热源仿真
探索使用自定义工具对移动热源进行建模及其在不同行业中的应用。 了解热源动力学 对移动热源进行建模为各种工业过程和应用提供了有价值的见解。激光加热和材料加工使用许多激光束来加热、焊接或切割材料。尽管在某些情况下,热源 (q) 不是通…...
CCF-GESP 等级考试 2023年12月认证C++八级真题解析
2023年12月真题 一、单选题(每题2分,共30分) 正确答案:C 考察知识点:数学问题 解析:本题可抽象为分类计数问题,应使用加法原理,而不是乘法原理。答案为 ACB 的方案数 2 加上 ADB 的…...
Vant框架:助力移动端开发的利器
Vant框架:助力移动端开发的利器 在移动互联网飞速发展的今天,开发一款用户体验出色、界面美观且功能强大的移动端应用并非易事。而Vant框架,作为一款专为移动端设计的Vue.js UI组件库,凭借其轻量级、高度可定制化以及丰富的组件库…...
vscode搭建git
vscode搭建git 一、安装git二、vscode上搭建git(1) 先创建本地仓库再上传到远程仓库,远程仓库名是根据本地仓库名一致(2) 先创建远程仓库,再将本地仓库上传到指定远程仓库 一、安装git 网络教程很多,在此就不赘述了 参考:git安装…...
解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题
mac安装软件时,如果出现这个问题,其实很简单 首先打开终端,输入下面的命令 sudo xattr -r -d com.apple.quarantine 输入完成后,先不要回车,点击访达--应用程序--找到你无法打开的app图标,拖到终端窗口中…...
gltf工具
gltf 在线工具 ONLINE 3D VIEWER 3dviewer.netgltf-viewer cos.3dzhanting.cnviewer www.niushifu.topglTF Viewer gltf-viewer.donmccurdy.comGLTF 在线编辑器 gltf.nsdt.cloudgltfeditor...
ChatGPT-4o和ChatGPT-4o mini的差异点
在人工智能领域,OpenAI再次引领创新潮流,近日正式发布了其最新模型——ChatGPT-4o及其经济实惠的小型版本ChatGPT-4o Mini。这两款模型虽同属于ChatGPT系列,但在性能、应用场景及成本上展现出显著的差异。本文将通过图文并茂的方式࿰…...
在K8S中,如何把某个worker节点设置为不可调度?
在Kubernetes中,如果你想要把一个worker节点设置为不可调度,意味着你不想让Kubernetes调度器在这个节点上调度新的Pod。这通常用于维护或升级节点,或者当节点遇到硬件故障或性能问题时,要将某个worker节点设置为不可调度。 方法1…...
解决 LeetCode 922 题:按奇偶排序数组 II
解决 LeetCode 922 题:按奇偶排序数组 II 题目描述 给定一个非负整数数组 nums,其中一半整数是奇数,一半整数是偶数。要求对数组进行排序,以便当 nums[i] 为奇数时,i 也是奇数;当 nums[i] 为偶数时&#…...
读书笔记--分布式架构的异步化和缓存技术原理及应用场景
本篇是在上一篇的基础上,主要对分布式应用架构下的异步化机制和缓存技术进行学习,主要记录和思考如下,供大家学习参考。大家知道原来传统的单一WAR应用中,由于所有数据都在同一个数据库中,因此事务问题一般借助数据库事…...
BUU10 [极客大挑战 2019]LoveSQL1
万能用户名(密码随便) 登录进去以后发现是这个东西,然而并没有什么卵用 然后就开始爆破数据库名字--表名--列名 注意:这道题需要将所有的表名都爆出来,需要在payload里头写 group_concat(),否则页面只会显…...
tomcat核心组件及原理概述
目录 1. tomcat概述 1.1 概念 1.2 官网地址 2. 基本使用 2.1下载 3. 整体架构 3.1 核心组件 3.2 从web.xml配置和模块对应角度 3.3 如何处理请求 4. 配置JVM参数 5. 附录 1. tomcat概述 1.1 概念 什么是tomcat Tomcat是一个开源、免费、轻量级的Web服务器。 Tomca…...
【实战篇】Android安卓本地离线实现视频检测人脸
实战篇Android安卓本地离线实现视频检测人脸 引言项目概述核心代码类介绍人脸检测流程项目地址总结 引言 在当今数字化时代,人脸识别技术已经广泛应用于各个领域,如安防监控、门禁系统、移动支付等。本文将以第三视角详细讲解如何基于bifan-wei-Face/De…...
冰蝎v4.0.5 来啦
webshell始终是渗透测试的热门,上次护网写冰蝎检测规则,加密流量,有点压力,今天终于有空来复现一下,我知道玩知乎的大佬很多,轻一点喷,学习新知识不丢人~ ailx10 1949 次咨询 4.9 …...
【C++】B2120 单词的长度
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述💯我的做法代码实现:思路解析: 💯老师的第一种做法代码实现:思路解析: 💯老师的…...
使用线性回归模型逼近目标模型 | PyTorch 深度学习实战
前一篇文章,计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 使用线性回归模型逼近目标模型 什么是回归什么是线性回归使用 PyTorch 实现线性回归模型代码执行结…...
鱼香ros——编写第一个c++节点
ROS2中的节点了解 在 ROS 2(Robot Operating System 2)中,节点(Node) 是一个独立运行的进程,它可以执行特定的功能,如接收传感器数据、控制机器人执行任务或进行数据处理。 ROS 2 是一个分布式…...
深入浅出:频谱掩码 Spectral Masking —— 噪音消除利器
在语音处理领域,噪声是一个常见的敌人。无论是语音通话、语音识别,还是语音合成,噪声都会大大降低语音的质量和可理解性。为了解决这个问题,Spectral Masking(频谱掩码) 模型应运而生。它通过从带噪信号的频…...
C++ Primer 多维数组
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
Mac M1 ComfyUI 中 AnyText插件安装问题汇总?
Q1:NameError: name ‘PreTrainedTokenizer’ is not defined ? 该项目最近更新日期为2024年12月,该时间段的transformers 版本由PyPI 上的 transformers 页面 可知为4.47.1. A1: transformers 版本不满足要求,必须降级transformors &#…...
使用Java操作Redis数据类型的详解指南
SEO Meta Description: 详细介绍如何使用Java操作Redis的各种数据类型,包括字符串、哈希、列表、集合和有序集合,提供代码示例和最佳实践。 介绍 Redis是一种开源的内存数据结构存储,用作数据库、缓存和消息代理。它支持多种数据结构&#…...
数据结构(AVL树、B-Tree、B+Tree)
AVL树 AVL树是一种自平衡的二叉搜索树,它的特点是每个节点的左子树和右子树的高度差(平衡因子)的绝对值不超过1。这种平衡性保证了AVL树在进行查找、插入和删除操作时都能保持较高的效率。 平衡因子 在AVL树中,每个节点都维护一…...
可靠度的HLRF算法
一次可靠度的HLRF算法。随机向量的概率模型采用Nataf分布,考虑变量相关性。验算点搜寻采用U空间的梯度迭代算法。 资源文件列表 HLRF_method/HLRF_method.m , 4248 HLRF_method/Sample.m , 300 HLRF_method/Sample2.m , 335 HLRF_method/说明.txt , 659...
C++基础(2)
目录 1. 引用 1.1 引用的概念和定义 1.2 引用的特性 1.3 引用的使用 2. 常引用 3. 指针和引用的关系 4. 内联函数inline 5. nullptr 1. 引用 1.1 引用的概念和定义 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开…...
