在docker容器中编译 rk3588 ubuntu固件

server/2024/9/22 22:32:13/

文件准备

  • 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/server/12173.html

相关文章

HTML:PC和手机的自适应图形布局样例

作者:私语茶馆 1.前言 有时我们需要开发一个自适应PC和手机的HTML页面,由于屏幕大小不同,会涉及到自动部署。W3School提供了一个非常好的案例:Responsive Image Gallery。本文利用独立CSS文件详细介绍一下这个案例。 2.案例详细介绍 2.1.Project项目文件结构 企业级项目…

软考140-上午题-【软件工程】-软件工具

一、软件工具 用来辅助软件开发、运行、维护、管理和支持等过程中的活动的软件称为软件工具。 1-1、软件开发工具 对应于软件开发过程的各种活动&#xff0c;软件开发工具通常有&#xff1a;需求分析工具、设计工具、编码与 排错工具、测试工具等。 1-2、软件维护工具 辅助软…

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

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

Keil和VSCode协同开发STM32程序

系列文章 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 配置环境 2. 测试打开工程 3. 测试编译工程 随着项目的复杂度上升&#xff0c;开发者不仅需要强大的硬件支持&#xff0c;还需要一个高效和灵活的开发环境。 vscode是一款集成大量可以便携开发插件的代码…

理解CSS中的sticky与fixed定位

在CSS中&#xff0c;position: sticky; 和 position: fixed; 是两种常见的定位方式&#xff0c;它们可以让元素脱离文档流&#xff0c;并具有固定位置的效果。然而&#xff0c;它们在实际应用中有着不同的特点和使用场景。 sticky定位 特点&#xff1a;position: sticky; 允许…

Maven基础篇1

1.Maven依赖管理 2.依赖传递 项目2需要用到项目3 需要将项目三作为资源配置到项目二 也就是dependecy中加入项目三的gav 两点注意事项&#xff1a; 使用项目三&#xff0c;直接将其gav添加到依赖中&#xff0c; 使用项目三&#xff0c;项目三不能感知到&#xff0c;自己有…

在vscode上面进行分支merge的记录

前言&#xff1a;在我们的项目中&#xff0c;有两个分支&#xff1a;master和liutielong。现在要将liutielong分支的改动merge到master分支中。 如果master分支已经更改了&#xff0c;所以要先pull&#xff08;这是在git bash里面的命令&#xff09;。 git pull origin master…

Opencv_11_通道的分离与合并

void ColorInvert::channels_demo(Mat& image) { std::vector<Mat> mv; split(image, mv); imshow("蓝色", mv[0]); imshow("绿色", mv[1]); imshow("红色", mv[2]); Mat dst; mv[0] 0; merge(mv, dst);…