rk3588编译Ubuntu固件,Linux SDK开发

基础认知

Linux SDK 是由 Firefly 官方提供的 Linux 软件开发工具包,旨在方便用户基于其进行模块开发与系统定制。

SDK 目录树

各个芯片平台的 Linux SDK 目录树可能略有差异,但一般如下:

├── app # 存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等一些应用程序。
├── buildroot # 基于 buildroot (2018.02-rc3) 开发的根文件系统。
├── build.sh -> device/rockchip/common/build.sh # Linux SDK 编译脚本。
├── device # 存放各芯片板级配置和 Parameter 文件,以及一些编译与打包固件的脚本和预备文件。
├── debian # 基于debian 开发的根文件系统。
├── docs # 存放芯片模块开发指导文档、平台支持列表、芯片平台相关文档、Linux开发指南等。
├── envsetup.sh -> buildroot/build/envsetup.sh # 配置 Buildroot 编译环境脚本。
├── external # 存放第三方相关仓库,包括音频、视频、网络、recovery 等。
├── kernel # 存放 kernel 开发的代码。
├── mkfirmware.sh -> device/rockchip/common/mkfirmware.sh # rockdev 目录链接更新脚本。
├── prebuilts # 存放交叉编译工具链。
├── rkbin # 存放 Rockchip 相关的 Binary 和工具。
├── rkflash.sh -> device/rockchip/common/rkflash.sh # 固件烧写脚本。
├── tools # 存放 Linux 和 Windows 操作系统环境下常用工具。
├── u-boot # 存放基于 v2017.09 版本进行开发的 uboot 代码。
└── yocto # 基于 yocto 开发的根文件系统。
准备工作

1、下载资源

从FireFly官网下载Ubuntu 根文件系统(64位)和Linux SDK(联系你购买开发板的商家获取)。这里我是百度网盘下载到Windows中,再用移动硬盘拷贝到Ubuntu中,其实还有很多方法,大家可以自由选择。

在这里插入图片描述

2、搭建编译环境

已安装库只会升级更新,未安装库将会安装。我安装之后没有发生环境冲突,可以放心操作。

sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool 
sudo apt-get install expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support
sudo apt-get install qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib
sudo apt-get install unzip device-tree-compiler ncurses-dev 

在这里插入图片描述

3、SDK初始化

输入下面命令计算MD5码,并对比所给md5sum.txt内的MD5码是否相同。

md5sum rk3588_repo_sdk_v0.1.0a.7z

然后解压sdk源代码。

7z x rk3588_repo_sdk_v0.1.0a.7z

在这里插入图片描述
使用repo工具链接Firefly仓库以进行SDK的初始化。

cd rk3588
.repo/repo/repo sync -l
.repo/repo/repo start rk3588/firefly --all

在这里插入图片描述

4、SDK更新(可选)

查看自己的版本号,这里会显示多个版本,以最后一个版本号为标准。

cd kernel
git tag

比如我SDK的版本就是v0.1.0a

rk3588/linux_release_v0.0.1a
rk3588/linux_release_v0.0.1b
rk3588/linux_release_v0.0.1c
rk3588/linux_release_v0.1.0a

复制bundle目录下的所有文件到rk3588下。

cp bundle/* rk3588/

然后执行升级脚本进行升级。

./update.sh

在这里插入图片描述

如果报错:bash: ./update.sh: 权限不够,命令sudo chmod 777 ./update.sh,可以看到执行权限发生改变。

在这里插入图片描述在这里插入图片描述
升级完成后,再检查自己的sdk版本,发现已成功升级。

在这里插入图片描述

正式编译

1、将根文件系统放到rk3588目录下。

7z x Ubuntu20.04-Gnome_RK3588_v2.11-99_20220810.img.7z
mkdir ubuntu_rootfs
mv Ubuntu20.04-Gnome_RK3588_v2.11-99_20220810.img rk3588/ubuntu_rootfs/rootfs.img

2、修改drivers目录下的驱动文件(.c),修改dts目录下的设备树文件(.dtsi)以及Makefile文件,都是在kernel下,这里根据自己需求修改。

3、编译前配置,在 device/rockchip/rk3588/ 目录下,有不同板型和系统的配置文件,这里我的是itx-3588j-ubuntu.mk,大家根据需求选择板型+系统:

./build.sh device/rockchip/rk3588/itx-3588j-ubuntu.mk

在这里插入图片描述编译配置可能出现以下错误:

./build.sh: line 119: /home/dzh/Linux-SDK/rk3588/device/rockchip/.BoardConfig.mk: No such file or directory

修改build.sh文件第119行内容:BOARD_CONFIG=$TOP_DIR/device/rockchip/rk3588/.BoardConfig.mk,再次执行上面命令:

在这里插入图片描述

4、./build.sh全自动编译,非常快,2分钟就编译打包完成(不是网上说的5小时)。生成的完整固件会保存到 rockdev/pack/ 目录。

在这里插入图片描述

5、也可以选择单独编译某个固件,非常方便。

编译 u-boot

./build.sh uboot

编译 kernel

./build.sh extboot

编译 recovery

./build.sh recovery

在这里插入图片描述

更新各部分镜像链接到 rockdev/ 目录:

./mkfirmware.sh

执行命令之后,log显示如下:

dzh@dzh-Lenovo-Legion-Y7000:~/Linux-SDK/rk3588$ ./mkfirmware.sh 
/usr/bin/fakeroot
create rootfs.img...done.
create parameter...done.
/home/dzh/Linux-SDK/rk3588/device/rockchip/rk3588/parameter-ubuntu-fit.txt
0x00002000@0x00004000(uboot),0x00002000@0x00006000(misc),0x00040000@0x00008000(boot:bootable),0x00040000@0x00048000(recovery),0x00010000@0x00088000(backup),0x00c00000@0x00098000(rootfs),-@0x00c98000(userdata:grow)
create misc.img...done.
warning:   not found!
create uboot.img...done.
uboot fotmat type is fit, so ignore trust.img...
create loader...done.
create boot.img...done.
mkupdate.sh will resize the rootfs partition.Image: image in rockdev is ready 

打包固件,生成的完整固件会保存到 rockdev/pack/ 目录。

./build.sh updateimg

执行命令之后,log显示如下:

Make firmware OK!
------ OK ------
********rkImageMaker ver 2.0********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...
Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making ./Image/update.img OK.
Make update image ok!/home/dzh/Linux-SDK/rk3588/rockdev/pack/ITX-3588J_Ubuntu_v0.1.0a_220909.img 
Running build_updateimg succeeded.

运行过程中的截图:

在这里插入图片描述

镜像烧录

瑞芯微ITX-3588J开发板烧录ubuntu桌面系统(图文详解)

在这里插入图片描述

参考资料:https://zhuanlan.zhihu.com/p/549804377
https://wiki.t-firefly.com/zh_CN/Core-3588J/linux_compile_ubuntu.html

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568开发笔记(五):在虚拟机上使用SDK编译制作uboot、kernel和ubuntu镜像

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127783966 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

Uniapp集成熊猫播放器

先源码分析 后续增加集成的例子 相关链接 官方文档:https://www.yuque.com/lahuayouyiliushuiwuqing/csqxe2插件地址:https://ext.dcloud.net.cn/plugin?id=6715 源码分析删掉不需要的组件 不知道路径问题

wordpress html音乐,【WordPress插件】QPlayer音乐播放器插件html5音乐插件

音乐播放器,这个大家不陌生了,wordpress也是可以直接插入的,但是不够美观,而且只支持本地的,今天给大家推荐一款自动解析各大音乐网站的播放器,界面美观,支持歌词显示。 使用方法: D…

QPlayer2-资源网各大程序背景音乐插件

介绍: QPlayer2一款简洁小巧的HTML5底部悬浮音乐播放器,支持网易云音乐解析,由GitHub用户Jrohy开发,最新版本为v1.3.4.2,更新于三年前,已不再更新。 如今,MoeShin将代码优化后制成QPlayer2&…

三款QPlayer2-背景音乐插件

简介: 一款简洁小巧的 HTML5 底部悬浮音乐播放器,支持云音乐,现已支持WordPress、Typecho、Z-Blog。 网盘下载地址: http://kekewangLuo.net/iTqbm3fJQ6y0 图片:

week6刷题

题解: 使用二分查找 class Solution { public:int minArray(vector<int>& numbers) {int low 0;int high numbers.size() - 1;while (low < high) {int pivot low (high - low) / 2;if (numbers[pivot] < numbers[high]) {high pivot;}else if (numbers…

[组图]一切从零开始 Symbian智能机之软件入门(转)

购买NOKIA智能手机的朋友们会发现&#xff0c;NOKIA采用的是一种叫做Symbian的操作系统。Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司&#xff0c;专门研发手机操作系统。而Symbian操作系统的前身是EPOC&#xff0c;而EPOC是Electro…

S60十大优秀软件

众所周知&#xff0c;智能手机是手机发展的一大趋势。由业界老大诺基亚领衔的symbian智能手机在市场上独占鳌头。占据绝对多数的市场份额。symbian智能操作系统中由以S60平台应用最广&#xff0c;最受消费者青睐。很多消费者选购了基于S60平台的symbian智能后&#xff0c;面对数…

2021高考放榜,还能无脑选计算机专业吗?

前言 古语有云&#xff1a;“久旱逢甘霖&#xff0c;他乡遇故知&#xff0c;洞房花烛夜&#xff0c;金榜题名时。”此为人生四大乐事也。 前段时间高考刚落下帷幕&#xff0c;虽说人生中最重要的考试已经过去 &#xff0c;但如何填报志愿也不能掉以轻心&#xff0c;这不仅关乎…

DebugInfo 模型功能系统介绍 文本上色 文本与表格对齐 分隔线 秒表计算器 语义日期

背景 今天系统性的为大家介绍一下 DebugInfo 模块。这个模块提供了一些丰富的基本功能的封装&#xff0c;希望能给有需要的人带来些许帮助。 文本上色 DebugInfo 模块引入了 colorama提供文本颜色支持。 # -*- coding:UTF-8 -*-# region 引入必要依赖 from DebugInfo.DebugI…

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)

时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价) 目录 时序预测 | MATLAB实现基于TSO-XGBoost金枪鱼算法优化XGBoost的时间序列预测(多指标评价)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于TSO-XGBoost金枪鱼算…

视频播放花屏问题

h264裸流播放视频&#xff0c;出现如下画面有可能是屏的线序问题

音视频问题汇总--视频花屏

最近工作上碰到两个问题&#xff0c;都是播放时候出现花屏现象&#xff0c;因此汇总一下&#xff0c;方便后续防止踩坑。 问题一 第一个是设备播放特定文件时出现花屏现象。 碰见类似问题&#xff0c;一般会进行问题怀疑点预设&#xff0c;初步猜想可能发生的原因&#xff1a;…

Compose - 交互组合项

按钮 Button OutLinedButton带外边框、TextButton只是文字、IconButton只是图标形状。 Button(onClick { }, //点击回调modifier Modifier,enabled true, //启用或禁用interactionSource MutableInteractionSource(),elevation ButtonDefaults.elevatedButtonElevation( /…

各种RTMP直播流播放权限_音视频_数据花屏_问题检测与分析工具EasyRTMPClient

之前的一篇博客《网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient》&#xff0c;我们介绍了RTSP流的检测和分析工具EasyRTSPClient&#xff0c;可以说已经是深入了我的平时运维工作中了&#xff0c;当我们发现有任何RTSP源或者摄像…

PPStream、PPlive等播放器花屏之解决办法

PPStream、PPlive等播放器花屏之解决办法 解决方法1&#xff1a;打开“Windows Meida Player”播放器&#xff0c;找到“工具”->“选项”->“性能”->“视频加速”&#xff0c;把“完全”滑块放到中间&#xff08;如果仍不行可调整到无&#xff09;&#xff0c;然后按…

传奇花屏Win10登陆游戏时花屏的解决方法

随着win10的流行&#xff0c;原来很多传奇版本不能适应&#xff0c;必竟传奇是一款比较老的游戏&#xff0c;很多电脑现在初装都已经是Win10了&#xff0c;win10系统&#xff0c;玩单机时点开始游戏就出现花屏&#xff0c;换分辩率800X600没有用。 Win10系统花屏是因为登陆器不…

用户观看视频业务出现花屏故障

组网情况 如图所示&#xff0c;Switch的一端和组播服务器相连&#xff0c;并且将GE1/0/0加入Eth-Trunk 0&#xff0c;另一端下挂用户终端&#xff0c;并且将GE1/0/2加入Eth-Trunk 1。在Switch上部署了组播业务&#xff0c;下挂用户终端可以进行视频点播。 现象描述 用户终端…

ffmpeg解码花屏

问题&#xff1a; 解码为YUV420转为Bitmap后显示在屏幕上时&#xff0c;有三分之二为花屏&#xff1a;如图&#xff1a; 首先用h264Visa分析帧&#xff1a; 已经读出了sps等信息&#xff0c;这些信在解码第一帧时被写入环境变量中&#xff0c;所以下边的帧不需要sps了 而且在…

《Zookeeper》源码分析(二十三)之 客户端的命令处理过程

目录 客户端的命令处理过程1. ZooKeeper.create()2. ClientCnxn.submitRequest()3. SendThread.run()4. ClientCnxnSocket.doTransport()5. SendThread.readResponse() 客户端的命令处理过程 以创建节点命令为例&#xff0c;整个过程流程如下&#xff1a; CliCommand命令在抽…