RK3566 Linux实例应用(1)——环境编译与烧录

环境安装以及烧录

  • 一、简介
  • [二、 环境搭建](#二、 环境搭建)
  • [三、 SDK编译](#三、 SDK编译)
    • [3.1 Docker安装](#3.1 Docker安装)
    • [3.2 创建镜像](#3.2 创建镜像)
    • [3.3 基于镜像创建容器](#3.3 基于镜像创建容器)
    • [3.4 列出所有的容器(再次进入Docker)](#3.4 列出所有的容器(再次进入Docker))
    • [3.5 启动容器并进入(名字)](#3.5 启动容器并进入(名字))
    • [3.6 启动容器并进入(ID)](#3.6 启动容器并进入(ID))
    • [3.7 在容器里面在安装一下环境](#3.7 在容器里面在安装一下环境)
    • [3.8 可以开始编译了](#3.8 可以开始编译了)
  • [四、 烧录](#四、 烧录)

一、简介

本人是Linux环境下开发,所以搭建环境都是Linux所需要的。买的是泰山派的开发板。目标是直接做项目的。

跟着视频一步一步去做,这里只记录视频和文档有出入的地方。离线的资料他们视频下面就有。

视频:https://www.bilibili.com/video/BV1QT4m1S7Ae/?spm_id_from=333.788.videopod.sections&vd_source=1ac9d6436bdaecdfe1708669fb8483d4

文档资料:https://wiki.lckfb.com/zh-hans/tspi-rk3566/project-case/fat-little-cell-phone/programming-environment-setup.html

二、 环境搭建

这个没什么要讲的,我在3588的时候搭建过了(Samba没搞因为已经安装了相同的东西了,我已经可以文件互传了)。

路径为:https://wiki.lckfb.com/zh-hans/tspi-rk3566/project-case/fat-little-cell-phone/programming-environment-setup.html

(正常不会遇到下面问题,可以跳过)
问题1: 在这里遇到了一个问题,就是我在虚拟机点了挂起,结果就出问题了,VMware弹出错误提示,后面我再打开就连不上网络了。
问题1解决方法:

  1. 将虚拟机网络适配器改为主机模式;
  2. 在Ubuntu指令窗口中依次输入以下指令:
    sudo service network-manager stop
    sudo rm /var/lib/NetworkManager/NetworkManager.state
    sudo service network-manager start
  3. 将网络适配器换回NAT/桥接/其他模式

目前修改后就是如下:


问题1参考:

https://juejin.cn/post/7057497897910140936
https://blog.csdn.net/CHYabc123456hh/article/details/112890125

三、 SDK编译

SDK网页文档和视频都比较详细,但是跟着视频去搭建环境的时候需要搭建Docker,跟着文档没有说(搭建Docker有单独的文档),虽然没有搭建我也成功了,但是我还是觉得有必要搭建。

在线路径为:https://wiki.lckfb.com/zh-hans/tspi-rk3566/project-case/fat-little-cell-phone/sdk-compile.html

在线路径为:https://wiki.lckfb.com/zh-hans/tspi-rk3566/sdk-compilation/docker-compiling-environment.html

离线路径为:立创·泰山派开发板资料→第03章.【立创·泰山派】文档手册→【Docker】编译环境搭建.pdf

3.1 Docker安装

问题2: 我自己安装的时候没有看到在线文档,有些指令加了换行,结果导致后面在更新的时候报了E: 文件 list 第 1 行的记录格式有误 /etc/apt/sources.list.d/docker.list (Suite)

问题2解决方法:

  1. 打开这个文件看一下里面写的什么
    sudo vi /etc/apt/sources.list.d/docker.list
  2. 发现里面写了5行数据,而我刚好echo了5行,第一行明显和其他格式不对,因为我只有第一次输入这个命令有换行,所以我直接修改第一行,并删除其余4行

问题3: 创建镜像的时候出现ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied

问题3解决方法:

  1. 将当前用户加入到docker用户组
    sudo groupadd docker #添加用户组
    sudo gpasswd -a ${USER} docker #将当前用户添加至用户组
    newgrp docker #更新用户组

3.2 创建镜像

问题4: 文档讲的错,我这里出现了ERROR [internal] load metadata for docker.io/library/ubuntu:18.04

问题4解决方法:

  1. 照着在线文档写
    sudo vi /etc/docker/daemon.json
    这个对我来说是个新文件,写入如下,写完保存退出
cpp 复制代码
 {
"registry-mirrors": ["https://ccr.ccs.tencentyun.com/"]
}
  1. 重启
    sudo systemctl restart docker
  2. 重新运行
    docker build -t lckfb_android11_sdk_cmp .
  3. 可以在前面加上sudo,如果不报错就不加

3.3 基于镜像创建容器

cpp 复制代码
docker run --privileged --mount type=bind,source=/home/bjp/rk3566/sdk,target=/home/lckfb --name="lckfb_android11_sdk" -h lckfb -it lckfb_android11_sdk_cmp

这里就不一一介绍了,重点是要把指令里面的目录和镜像换成自己的,这里我的目录不一样,镜像啥的在Dockerfile里面和人家的一样,构建名字都一样,所以我这里只要改一下sdk的目录。

cpp 复制代码
--mount type=bind,source=/home/bjp/rk3566/sdk,target=/home/lckfb:
创建绑定类型的挂载点,将宿主机上的 /home/bjp/rk3566/sdk 目录挂载到容器内的 /home/lckfb 目录。这使得容器内的应用程序可以访问并操作宿主机上的该目录。


这2个就是共享目录

3.4 列出所有的容器(再次进入Docker)

cpp 复制代码
docker ps -a

这里记住他的ID号或者名字,就可以启动了

3.5 启动容器并进入(名字)

3.5 和 3.6两者选其一

cpp 复制代码
docker start lckfb_android11_sdk //启动容器
docker attach lckfb_android11_sdk //附加到正在运行的名为lckfb_android11_sdk的容器的终端上,以便与容器进行交互

3.6 启动容器并进入(ID)

3.5 和 3.6两者选其一

cpp 复制代码
docker start 454536b61a6c
docker attach 454536b61a6c

3.7 在容器里面在安装一下环境

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

3.8 可以开始编译了

这里开始之前,建议先把自己的环境clean一下,并且第一次有可能不会选择电源,这个要执行一下命令,因为我以前编译过,不清除会有很多问题,就比如5和6

cpp 复制代码
./build.sh cleanall

电源选择,选择不对会编译报错,这里大家记住除了VCCIO4和6选1.8V其他都选3V3,如果没有弹电源选择框则需要安装sudo apt install whiptail后在重新编译。

cpp 复制代码
sudo apt install whiptail

这里可以跟着详细文档接着走了。

在线路径为:https://wiki.lckfb.com/zh-hans/tspi-rk3566/project-case/fat-little-cell-phone/sdk-compile.html

在线路径为(详细):https://wiki.lckfb.com/zh-hans/tspi-rk3566/sdk-compilation/linux-compilation.html

我选择全编译

这里注意一下,我是编译过一次的,我现在在容器重编,不是第一次编译,所以不用选择电源。下面关于电源的选择做个笔记。

问题5: 我这里出现了undefined symbol: g_task_set_name

问题5解决方法:

思路:先看一下报的什么错,然后搜索一下,虽然搜索不到和我一样的错误,但是有类似的,我直接去执行make clean是不行的,因为我不在报错的目录下,而且当前目录也没有makefile,那么找一下这个报错的makefile的目录就好了,刚好上面有打印出来,cd进去就行了

  1. 打开makefile的所在目录
  2. 执行make clean
  3. 重新选择开发板编译

问题5参考:

https://blog.csdn.net/me_never/article/details/107377884

问题6: 我这里出现了ERROR: Running build_recovery failed! ERROR: exit code 142 from line 858:

问题6解决方法:

  1. 到当前目录下面
    ./build.sh cleanall
  2. 重新编译

问题6参考:

这里根本就百度不到,直接deepseek了,根据他说的,自己判断一下只能是编译狗的东西对重新编译产生了影响,重新clean一下,就可以了,非常好用

四、 烧录

4.1 打开工具

工具都一样 我就打开3588的

2中方式升级

4.2下载分散镜像(4.2与4.3选一)

把文件下载到本地,勾选配置,并且替换路径升级

4.3 下载update.img(4.2与4.3选一)

选择固件点升级

参考

https://wiki.lckfb.com/zh-hans/tspi-rk3566/sdk-compilation/linux-compilation.html


• 由 青梅煮久 写于 2025 年 12 月 9 日

相关推荐
Joren的学习记录2 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
用户2190326527352 小时前
Java后端必须的Docker 部署 Redis 集群完整指南
linux·后端
胡先生不姓胡2 小时前
如何获取跨系统调用的函数调用栈
linux
VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue音乐管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
一招定胜负2 小时前
navicat连接数据库&mysql常见语句及操作
数据库·mysql
热心市民蟹不肉2 小时前
黑盒漏洞扫描(三)
数据库·redis·安全·缓存
chian_ocean3 小时前
openEuler集群 Chrony 时间同步实战:从零构建高精度分布式时钟体系
数据库
JSON_L3 小时前
Fastadmin API接口实现多语言提示语
后端·php·fastadmin
Databend3 小时前
构建海量记忆:基于 Databend 的 2C Agent 平台 | 沉浸式翻译 @ Databend meetup 上海站回顾及思考
数据库
禁默3 小时前
“零消耗”调用优质模型:AI Ping结合Cline助我快速开发SVG工具,性能与官网无异
开发语言·php