# RADXA-ZERO3W-Development-Resources
**Repository Path**: sjtu_mav/radxa-zero3-w-development-resources
## Basic Information
- **Project Name**: RADXA-ZERO3W-Development-Resources
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-05-21
- **Last Updated**: 2025-09-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# RADXA ZERO3W 开发资料

## 官方文档 / Official Documentation
- 📄 **RADXA ZERO3W 快速上手指南(中文)**
👉 [https://wiki.radxa.com/Zero3W/getting_started](https://wiki.radxa.com/Zero3W/getting_started)
## 系统镜像说明
RADXA ZERO3W 官方当前仅提供 **Debian 系统镜像**。实测发现官方提供的 **Ubuntu 镜像不可用**,建议使用社区编译版本。以下为推荐的第三方镜像资源:
* [Joshua-Riek 的 Ubuntu Rockchip 镜像](https://github.com/Joshua-Riek/ubuntu-rockchip)
* [Qengineering 提供的 Ubuntu 22 NPU 版镜像](https://github.com/Qengineering/Radxa-Zero-3-NPU-Ubuntu22)
---
## 设备树(Device Tree)配置与更新
在使用 Joshua-Riek 提供的系统镜像时,串口(UART)和 NPU 无法直接启用,需要手动更新设备树。
### 步骤一:编辑设备树源码
打开目标设备树源文件:
```bash
vim overlay/rk3566-npu-usart-enable.dts
```
示例修改内容如下:
```dts
&uart5 {
pinctrl-names = "default";
pinctrl-0 = <&uart5m1_xfer>;
status = "okay";
};
```
设备树的引脚定义可参考官方内核源码中的相关文件:
* [Radxa Kernel 引脚定义](https://github.com/radxa/kernel/blob/linux-6.1-stan-rkr5.1/arch/arm64/boot/dts/rockchip/rk3568-pinctrl.dtsi)
GPIO 信息可参考官方文档:
* [GPIO 接口](https://docs.radxa.com/zero/zero3/hardware-design/hardware-interface#gpio-%E6%8E%A5%E5%8F%A3)
### 步骤二:编译设备树
使用 `dtc` 命令编译生成 overlay 文件:
```bash
dtc -@ -I dts -O dtb -o rk3566-npu-usart-enable.dtbo rk3566-npu-usart-enable.dts
```
### 步骤三:部署 Overlay 文件
将生成的 `.dtbo` 文件复制到目标目录:
```bash
sudo cp rk3566-npu-usart-enable.dtbo /usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay/
```
### 步骤四:更新 u-boot 配置
编辑 u-boot 配置文件:
```bash
sudo vim /etc/default/u-boot
```
添加以下内容:
```bash
U_BOOT_UPDATE="true"
U_BOOT_FDT_OVERLAYS="rk3566-npu-usart-enable.dtbo"
U_BOOT_FDT_OVERLAYS_DIR="/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay/"
```
执行更新:
```bash
sudo u-boot-update
```
重启开发板以应用更改。
---
## 功能验证
### 验证 NPU 是否启用
```bash
sudo dmesg | grep RKNPU
```
若正常启用,输出类似如下内容:

### 验证 UART 是否可用
1. 安装 `minicom`:
```bash
sudo apt install minicom
```
2. 使用 `minicom` 测试串口通信:
```bash
sudo minicom -D /dev/ttyS4 -b 115200
```
---
## 制作 SD 卡镜像(镜像备份)
### 步骤一:识别 SD 卡设备
插入 SD 卡后使用如下命令列出磁盘:
```bash
lsblk
```
示例输出:
```
/dev/sdb
├─/dev/sdb1
└─/dev/sdb2
```
### 步骤二:备份为镜像文件
将整个 SD 卡备份为 `.img` 文件:
```bash
sudo dd if=/dev/sdX of=sdcard_backup.img bs=4M status=progress conv=fsync
```
请将 `sdX` 替换为实际的设备名(如 `/dev/sdb`)。
### 步骤三:压缩镜像文件
使用 `pishrink.sh` 工具压缩 `.img` 文件:
```bash
sudo bash pishrink.sh sdcard_backup.img
```
## Ubuntu 开发板 SD 卡空间扩展指南(命令行方式)
在烧录 Ubuntu 镜像后,虽然 SD 卡容量为 64GB,但系统根分区往往只占用约 16GB,其余空间未被使用。通常我们可以通过连接显示器和键鼠,使用 `gparted` 图形界面进行扩容。
但在不方便连接显示器的场景中,本文将介绍如何**仅通过命令行**方式,在不重新烧录镜像的前提下,扩展 Ubuntu 系统分区以使用整张 SD 卡的空间。
---
### 步骤 1:检查分区状态
```bash
lsblk
```
确认根分区设备名,一般为 `/dev/mmcblk1p1`,并观察是否有未被使用的剩余空间。
---
### 步骤 2:使用 `fdisk` 删除并重建根分区
```bash
sudo fdisk -l /dev/mmcblk1
sudo fdisk /dev/mmcblk1
```
在 `fdisk` 中依次执行以下操作:
- 输入 `p` 查看当前分区表,**记下根分区的起始扇区号**(例如 `32768`)
> 示例输出如下:
> 
- 输入 `d` 删除第 1 个分区(不要担心,数据不会丢失,只要起始扇区不变)
- 输入 `n` 新建分区:
- 选择分区号为 `1`
- 起始扇区设置为刚才记下的值(如 `32768`)
- 终止扇区保持默认,使用全部剩余空间
- 输入 `w` 保存并退出
---
### 步骤 3:刷新分区表并扩展文件系统
```bash
sudo partprobe
sudo resize2fs /dev/mmcblk1p1
```
---
### 步骤 4:验证扩容效果
```bash
df -h /
```
你应当可以看到根分区 `/` 的总容量已接近 SD 卡实际容量(如 58GB),而不再是之前的 16GB。
---
## ✅ 注意事项
- 执行 `fdisk` 时一定不要更改起始扇区,否则可能导致系统无法启动
更多技术讨论可参考[Radxa社区](https://forum.radxa.com)