惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
V
Visual Studio Blog
C
Check Point Blog
S
SegmentFault 最新的问题
GbyAI
GbyAI
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
S
Schneier on Security
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园_首页
Know Your Adversary
Know Your Adversary
The Hacker News
The Hacker News
Engineering at Meta
Engineering at Meta
Project Zero
Project Zero
U
Unit 42
小众软件
小众软件
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
P
Palo Alto Networks Blog
云风的 BLOG
云风的 BLOG
B
Blog
人人都是产品经理
人人都是产品经理
P
Proofpoint News Feed
A
About on SuperTechFans
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
宝玉的分享
宝玉的分享
E
Exploit-DB.com RSS Feed
L
Lohrmann on Cybersecurity
S
Security @ Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
IT之家
IT之家
S
Securelist
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - 叶小钗
MyScale Blog
MyScale Blog
博客园 - 聂微东
罗磊的独立博客
H
Heimdal Security Blog
T
Tor Project blog
Security Latest
Security Latest
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
G
GRAHAM CLULEY
O
OpenAI News
博客园 - Franky
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA

峰峰的小窝

从零开始的自动驾驶(三)ROS2与雷达|峰峰的小窝 从零开始的自动驾驶(一)无刷电调硬件|峰峰的小窝 搭建代理服务器跳板|峰峰的小窝 迎接新的时代|峰峰的小窝 一段故事的结束|峰峰的小窝 AI全自动写小说|峰峰的小窝 桌面直播通话APP设计实现|峰峰的小窝 2025 年总结|峰峰的小窝 SPI串并转换模块|峰峰的小窝 一种另类的数据标注方法|峰峰的小窝 GPS定位模块设计|峰峰的小窝 STM32硬件和软件设计指南|峰峰的小窝 基于Docker的多实例管理系统|峰峰的小窝 Hello PCB|峰峰的小窝 Hello ESP8266|峰峰的小窝 实时语音智能体快速搭建|峰峰的小窝 Git自动化测试部署|峰峰的小窝 Docker镜像构建和部署|峰峰的小窝 Web应用私有化|峰峰的小窝 虚幻FFMPEG解码视频|峰峰的小窝 Fish-Speech的编译优化|峰峰的小窝 阶段总结|峰峰的小窝
从零开始的自动驾驶(二)编译开发板Linux|峰峰的小窝
FFeng 我能想到的,最大的成功就是无愧于自己的心。 · 2026-06-14 · via 峰峰的小窝

我们选择使用 RK3576 作为主控芯片,因为后边会需要计算双目深度,所以对CPU性能有所要求,但也不用到 RK3588 这种程度。

它的核心板长这样:

11111未标题-2.jpg

我们采用核心板+载板的形式,目前载板采用开发板,生产时会再画一张载板:

eee未标题-1.jpg

如果买板子是个人或者学生研究和学习的话,大概会给资料,然后自生自灭。

但是如果是公司研发买板子的话,会给拉一个技术交流群。

品牌是定昌的,官方给的资料还是非常全的。核心板的文档里面提供了Linux源码、编译后的固件。

由于我们需要做的工作还是比较底层的,所以我们从源码开始。

开始之前

牵扯到Linux的编译,使用Windows可能也未必不行,但是最好有一个Ubuntu能减少麻烦,如果有双系统或者物理机最好了,WSL也不是不行。

接下来我将使用 WSL Ubuntu 24.04

在一个能用WSL后端的Docker Desktop的机器上,WSL2是已经装好了的,直接使用wsl命令安装一个Ubuntu即可。

如果使用WSL,建议把WSL的存储挪一下位置,不要放在系统盘。

无论是正在使用原生的VS Code,还是使用Antigravity之类的衍生VS Code,都可以连接到远程Linux做开发,由于我用不习惯Linux写代码,所以我会使用VS Code连接WSL远程开发。

后续编译有一个环节要求PATH中不能有空白字符,WSL默认会把Windows的PATH注入进来,可以选择后续临时修改,也可以事先禁止WSL的PATH注入:

/etc/wsl.conf 添加:

[interop]
appendWindowsPath = false

然后重启WSL

解压

从官方文档拿到 repo_rk3576_sdk_open_250903.tar.gz ,据测试 BandiZip 是无法解压这个 .tar.gz 文件的,而且不可以在Windows文件系统中解压(也就是不可以使用WSL的 /mnt 分区,也不可以使用w64devkit之类工具提供的tar命令),在Windows文件系统中解压会报错~

WSL使用解压命令进行解压 tar -xzvf repo_rk3576_sdk_open_250903.tar.gz -C /目标路径

Hello World

先不管其他的,先按照官方文档,编译一次固件吧~

安装工具链

apt-get install -y gcc g++ make build-essential libssl-dev libncurses5-dev libncursesw5-dev bc rsync cpio u-boot-tools pkg-config libelf-dev lz4 flex libgmp-dev libmpc-dev bison gettext unzip

首次全量编译

按照官方的文档,执行 ./build.sh 会进行一次全量编译,第一次执行需要选择配置文件,按照官方选择 ztl_rk3576_cm_defconfig

编译可能会失败,网络错误则重试,提示缺什么就装什么。

编译好的固件会放在 output/firmware ,Windows直接访问的话需要注意这里面都是软链接。

从来没有人告诉我,固件是一堆文件,我一直以为是一个文件,因为以前见的都是只有一个文件,事实上如果希望把固件都变成一个文件,需要再进行一步,把固件打包。

烧录

官方提供了 tools/windows/RKDevTool_Release_v3.37.zip 用于烧录。

使用之前应当先安装 tools/windows/DriverAssitant_v5.13.zip 驱动。

我手上的这块开发板上有两个按钮,PWR和UP/RST

板子出厂时应该是已经刷入 Android 了,直接上电芯片会比较热,如果是空白的板子,可以直接开机进入烧录,在已经有固件的情况下,据测试,需要在上电的时候按下UP/RST。

烧录模式下 RKDevTool 会自动检测到板子。

每个固件文件的偏移量在编译固件的时候就已经确定好了,使用 RKDevTool 工具需要先右键点击固件列表,选择 导入配置( parameter.txt 然后再依次选择并勾选每个固件的位置,其中 backup 不勾选也选择。

烧录完成后板子会自动重启。

不出意外的话,操作系统上会带 adb 可以直接 adb shell 打开终端。

定制

既然每一步都是在我们的机器上编译打包的,那也就意味着我们有任何权限,可以随意定制这个操作系统。

从上电到引导进入 Linux 内核这一块我们先不操心,设备树也是官方配好了的,我们就先看看怎么删减和增加 Linux 内的软件吧。

目前是带了桌面的,接下来我希望不要有桌面,并安装Docker。

至于为什么装Docker,因为编译 ROS2 非常麻烦,不如干脆直接在docker中跑。

buildroot/configs 中有很多配置文件,我这里使用的是 rockchip_rk3576_defconfig ,具体使用的哪一个,在 build 的时候日志里面会有。

我注释掉了这些:

// #include "tools/benchmark.config"
// #include "tools/test.config"
// #include "network/chromium.config"
// #include "gui/weston.config"

然后创建了一个新的文件并导入#include "ffeng/docker.config"

# docker
BR2_PACKAGE_AUDIT=y
BR2_PACKAGE_DOCKER_CLI=y
BR2_PACKAGE_DOCKER_CLI_STATIC=y
BR2_PACKAGE_DOCKER_COMPOSE=y
BR2_PACKAGE_DOCKER_ENGINE=y
BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS=y
BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER=y
BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS=y
BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL=y

编译后,系统就去掉了多余的图形界面,docker命令也能用了。


虽然不是自己动手移植的,但编译Linux,这也将是我的里程碑