在docker容器中编译 rk3588 ubuntu固件

embedded/2024/9/25 2:32:18/

文件准备

  • Linux SDK ---- rk3588_linux_release_20230114_v1.0.6c_0*
  • Ubuntu根文件系统 ---- Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z

硬件环境

  • 一个可联网的linux机器,并且装有docker

docker编译环境">打包一个docker编译环境

dockerfile内容">Dockerfile内容

直接通过dockerfile构建方便快捷

# Base Image
from ubuntu:18.04# Author
LABEL maintainer="huangjiaobai <huangjiaobai@demo.com>"# expect
RUN apt-get update && apt-get install -y \build-essential \cmake \git \libcurl4-openssl-dev \libgtest-dev \libxml2-dev \pkg-config repo ssh make gcc libssl-dev liblz4-tool \g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot gcc-multilib g++-multilib \unzip device-tree-compiler ncurses-dev p7zip bc tree# workspace
WORKDIR /app

容器">构建并启动容器

docker build -t huangjiaobai/uos:1.0.0 .
docker run --privileged --runtime=nvidia --gpus all --name uos -tid -v /dev/mem:/dev/mem -v /home/demo/work/uos:/app/uos --rm huangjiaobai/uos:1.0.0

容器">进入容器

我们所有的操作都在挂载的文件夹里边进行防止数据丢失

docker exec -ti uos /bin/bash

下载文件

SDK 源码存放于 gitlab,国内用户可能下载完整的 SDK 仓库速度比较慢,所以FireFly提供了一个 SDK 基础包Linux SDK,国内用户只需要在此基础包上同步 gitlab 上的代码就可以了,本人使用的linux sdk基础包
下载完毕后得到6个压缩包文件

c3bcb3f92bd139f72551c89f75d39bfa  rk3588_linux_release_20230114_v1.0.6c_00
ebb658571a645d4af1e2b569709480b7  rk3588_linux_release_20230114_v1.0.6c_01
9761cc324e9f7133500b590c441b0307  rk3588_linux_release_20230114_v1.0.6c_02
7adc9fe2158d7681554dce1def238f49  rk3588_linux_release_20230114_v1.0.6c_03
3d9201e3849b8a523c05920bebe28b39  rk3588_linux_release_20230114_v1.0.6c_04
6faaee006fe60fc9be60a64a01506cb6  rk3588_linux_release_20230114_v1.0.6c_05

解压文件,并同步

# 解压
mkdir -p rk3588_sdk
cd rk3588_sdk
cat path/to/rk3588_linux_release_20230114_v1.0.6c_0* | tar -xv# 导出数据
.repo/repo/repo sync -l

同步代码

# 同步
.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all# 更新SDK
.repo/repo/repo sync -c --no-tags

因为网络环境等原因,.repo/repo/repo sync -c --no-tags 命令更新代码可能会失败,可多次反复执行。

下载根文件系统

Ubuntu根文件系统(64位)

下载完毕后,计算md5值
61451fa7e4fe36a6bda8df81265661d9  Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
解压文件重命名,复制到指定位置
7z x Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
cd rk3588_sdk
mkdir ubuntu_rootfs
mv ubuntu-aarch64-rootfs.img ubuntu_rootfs/rootfs.img

完整目录树

|-- app                                     # 上层应用
|-- build.sh -> device/rockchip/common/build.sh          # 编译脚本
|-- buildroot                                  # Buildroot 根文件系统编译目录
|-- device                                    # 编译相关配置文件
|-- docs                                     # 文档
|-- envsetup.sh -> buildroot/build/envsetup.sh
|-- external                                  # 第三方库
|-- firefly-update.sh -> device/rockchip/common/firefly-update.sh
|-- kernel
|-- mkfirmware.sh -> device/rockchip/common/mkfirmware.sh   # 链接脚本
|-- prebuilts                                  # 交叉编译工具链
|-- rkbin
|-- rkflash.sh -> device/rockchip/common/rkflash.sh       # 烧写脚本
|-- rockdev                                  # 打包好的固件目录
|-- tools                                    # 工具目录
|-- u-boot
|-- ubuntu_rootfs                              # ubuntu根文件系统
|-- uefi
`-- yocto

执行编译命令

## 选择配置
./build.sh device/rockchip/rk3588/itx-3588j-BE45-A1-ubuntu.mk## 编译
./build.sh

 


http://www.ppmy.cn/embedded/12128.html

相关文章

OpenHarmony开源鸿蒙NEXT星河版内核嵌入式编程

一、前景提要 2024年1月18日&#xff0c;华为放出HarmonyOS NEXT 鸿蒙星河版开发者预览版本&#xff08;不是HarmonyOS NEXT版&#xff0c;是HarmonyOS NEXT星河版&#xff09;&#xff0c;首次提到用鸿蒙内核&#xff08;暂命名&#xff09;取代了Linux内核。 该内核源码还未放…

项目实践---贪吃蛇小游戏(下)

对于贪吃蛇小游戏&#xff0c;最主要的还是主函数部分&#xff0c;这里就和大家一一列举出来&#xff0c;上一章已经写过头文件了&#xff0c;这里就不多介绍了。 首先就是打印桌面&#xff0c;也就是背景&#xff0c;则对应的代码为&#xff1a; void SetPos(short x, short …

构建NodeJS库--前端项目的打包发布

1. 前言 学习如何打包发布前端项目&#xff0c;需要学习以下相关知识&#xff1a; package.json 如何初始化配置&#xff0c;以及学习npm配置项&#xff1b; 模块类型type配置&#xff0c; 这是nodejs的package.json的配置main 入口文件的配置 webpack 是一个用于现代 JavaSc…

电子信息制造工厂5G智能制造数字孪生可视化平台,推进数字化转型

电子信息制造工厂5G智能制造数字孪生可视化平台&#xff0c;推进数字化转型。5G智能制造数字孪生可视化平台利用5G网络的高速、低延迟特性&#xff0c;结合数字孪生技术和可视化界面&#xff0c;为电子信息制造工厂提供了一种全新的生产管理模式。不仅提升生产效率&#xff0c;…

程序猿成长之路之数据挖掘篇——朴素贝叶斯

朴素贝叶斯是数据挖掘分类的基础&#xff0c;本篇文章将介绍一下朴素贝叶斯算法 情景再现 以挑选西瓜为例&#xff0c;西瓜的色泽、瓜蒂、敲响声音、触感、脐部等特征都会影响到西瓜的好坏。那么我们怎么样可以挑选出一个好的西瓜呢&#xff1f; 分析过程 既然挑选西瓜有多个…

酷开科技逐步为用户构建健全的智慧家庭生活场景

大规模与精细化人群技术则是通过大量的计算能力和精细化的运营能力&#xff0c;建立用户专属数据储存区域&#xff0c;使得用户在使用不同电视的观影偏好和兴趣能够能够得以延续。 不拘泥于自有品牌终端数量&#xff0c;酷开系统除了集成在创维电视上&#xff0c;还服务于飞利…

gitlab关联新仓库

如果你想要将现有的Git仓库提交&#xff08;或推送&#xff09;到一个新的远程地址&#xff0c;你可以通过以下步骤来完成&#xff1a; 查看现有的远程仓库&#xff1a; 首先&#xff0c;确认你当前的仓库有哪些远程地址。 git remote -v如果输出中显示了旧的远程地址&#x…

如何在Android应用中安全地使用SQLite数据库,并通过SQLCipher进行加密保护

Android内置SQLite轻量级关系型数据库,可以在Android应用中存储、检索和管理结构化数据。SQLite是一个无服务器的、零配置的、事务性的SQL数据库引擎,非常适合用于移动设备和桌面应用程序中。 SQLite特点: 「轻量级」:SQLite不需要单独的服务器进程或操作系统级别的配置。…