# 开发板概况
TB-RK3588SD开发板是针对瑞芯微RK3588S芯片开发的集参考设计、芯片调试和测试、芯片验证一体的硬件开发板。用于展示瑞芯微RK3588S芯片强大的多媒体接口和丰富的外围接口,同时为开发者提供基于瑞芯微RK3588S芯片的硬件参考设计,使开发者不需修改或者只需要简单修改参考设计的模块电路,就可以完成产品的硬件开发。
![Debug_Port](./Images/RK3588S-framework.png)
TB-RK3588SD布局紧凑,接口丰富,支持千兆网口,HDMI,MIPI-DSI,板载WIFI,USB3.0等接口,配备4GB/8GB LPDDR4X内存。主板尺寸仅89mm×57mm,40Pin GPIO完美兼容树莓派。可广泛应用于人工智能、云计算、边缘计算、虚拟/增强现实、游戏互动、网络直播,会议投屏等智能化升级的相关行业应用。
![Debug_Port](./Images/TB-RK3588SD-top-interface.png)
![Debug_Port](./Images/TB-RK3588SD-bottom-interface.png)
## TB-RK3588SD默认套装
TB-RK3588SD默认套装包含了以下物品
- TB-RK3588SD开发板 x 1
另外,在使用过程中,你可能需要以下配件:
- 显示设备
- 带 HDMI 接口的显示器或电视,及 HDMI 连接线
- 网络
- 100M/1000M 以太网线缆,及有线路由器
- WiFi 路由器
- 输入设备
- USB 无线/有线的鼠标/键盘
- 串口调试
- 杜邦线,作为串口调试连接线
- USB转串口小板
# 串口调试
## 串口连接
使用杜邦线及USB转串口小板(需自备)连接TB-RK3588SD如下图位置,串口小板使用USB线接至电脑端。
![Debug_Port](./Images/TB-RK3588SD-debug-port-connection.jpg)
说明:如果开发板配合电源板使用,使用micro USB线连接电源小板的的debug口(通常开发板上的调试口边上有标有类似`DEBUG` 或 `UART TO USB`的丝印)
## Windows上串口调试
### 安装驱动
TB-RK3588SD上需接电源板,usb转串口芯片为CH340,如果操作系统提示安装驱动,请下载驱动程序或通过驱动精灵进行安装。
### 获取端口号
打开电脑设备管理器获取调试串口的端口号,如图1-1所示:
![Debug_Port](./Images/GetUartPort.png)
图1-1:获取调试端口号
### 配置调试串口信息
打开串口工具`SecureCRT`(请自行网上搜索下载), 点击"快速连接"按钮,打开调试串口配置界面如图1-2和图1-3所示:
1. Port: 选择设备管理器显示的端口号
2. 波特率: 1500000
3. 禁止流控:不勾选RTS/CTS
![Debug_SecureCRT](./Images/Debug_SecureCRT.png)
图1-2:SecureCRT
![](./Images/Debug_config2.png)
图1-3:配置调试串口信息
## Linux主机调试
### 安装minicom
```shell
sudo apt -y install minicom
```
### 配置调试窗口信息
按如下步骤,配置保存串口信息:
```eval_rst
.. hint:: 以下步骤执行一次即可!
```
1. 在插入串口调试线后先获取设备节点,如果不是`ttyUSB0`请对应修改`minicom`的配置值。
```shell
$ls /dev/ttyUSB*
/dev/ttyUSB0
```
1. 执行如下命令打开`minicom`
```shell
sudo minicom -s
```
2. 进入串口设置界面:输入CTRL-A Z
```shell
+-------------------------------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as |
| Exit |
+-------------------------------+
```
3. 端口设置:选择`Serial port setup`
4. 设置串口设备: 输入"A",填入`/dev/ttyUSB0`, 然后按回车确定
5. 禁止流控:输入“F”,按回车确定
6. 设置波特率:输入“E”,再输入“A”直到显示`Current 1500000 8N1`, 然后按回车确认
8. 配置完成后,界面显示
```shell
+--------------------------------------------------------+
| A - Serial Device : /dev/ttyUSB0 |
| B - Lockfile Location : /var/lock |
| C - Callin Program : |
| D - Callout Porgram : |
| E - Bps/Par/Bits : 1500000 8N1 |
| F - Hardware Flow Control : No |
| G - Software Flow Control : No |
+--------------------------------------------------------+
```
8. 退出端口设置:按回车
9. 保存配置: 选择`Save setup as dfl`
10. 退出设置:选择`Exit`
### 运行minicom
```shell
sudo minicom
```
# 分区配置
- TB-RK3588SD0正常启动Debian系统, **需要分别在SpiFlash及TF卡上烧写镜像**。
- SpiFlash分区信息,包括分区名,起始地址和分区大小(起始地址和分区大小的单位为block,每个block的大小为512字节)。TB-RK3588SD0加载part-fit分区表, 分区表信息如下:
| 配置项 | 描述 | 起始地址 | 分区大小 | 备注 |
| ------ | --------- | ---------- | ---------- | ------------------ |
| vnvm | vnvm分区 | 0x00000500 | 0x00000500 | 必选 |
| uboot | uboot分区 | 0x00000a00 | 0x00000800 | 必选 |
| boot | boot分区 | 0x00001200 | - | 所有剩余空间,必选 |
- TF卡仅需格式化成一个ext4分区, 用于存放Rootfs文件系统。
```eval_rst
.. hint:: 预装Rootfs文件系统的TF卡不支持热插拔,请下电后插TF卡上电进系统!
```
# 烧写固件
TB-RK3588SD 出厂默认只烧写SpiFlash镜像,如果需求运行Debian系统,请将已烧写rootfs的TF插入开发版上电启动。
如果在升级过程中出现意外,无法进入loader烧写模式,仍可以进入 `MaskRom` 模式来烧写固件。
## 固件获取
**TB-RK3588SD** (TB-RK3588SD-IMAGES.tar.gz)下载地址:
[点击下载](https://console.box.lenovo.com/l/ZH1MBm)
## 进入烧写模式
## 准备程序
- TB-RK3588SD 开发板
- 电脑主机
- Type-C 数据线
### 安装Windows RK USB驱动程序
下载 [Flashtool压缩包](https://console.box.lenovo.com/l/d5GXjR),解压目录FlashTool_CN.zip\FlashTool_CN\Windows\DriverAssitant。运行里面的 `DriverInstall.exe` 。先选择`驱动卸载`,然后再选择`驱动安装`。
![瑞芯微驱动助手](./Images/rk_devicetool.png)
### 进入loader烧写模式
1. Type-C数据线一端接在开发板上一端接到电脑PC端的USB接口上。
2. 按住主板的"REC_KEY"按键不放,Type-C数据线另一端连接标有“TYPE_C/DP”的丝印的Type-C口。
3. 当开发板进入loader模式后,松开按键。
### 进入maskrom烧写模式
1. Type-C数据线一端接在开发板上一端接到电脑PC端的USB接口上。
2. 用镊子短接“CLK” "G"两个触点, Type-C数据线另一端连接标有“TYPE_C/DP”的丝印的Type-C口。
3. 当开发板进入maskrom模式后, 松开镊子。
![瑞芯微驱动助手](./Images/TB-RK3588SD_maskrom.png)
## 查询烧写状态
### Linux主机查询
先下载得到edge工具(请先下载Linux工程源代码)至电脑上,执行如下命令查询烧写状态:
```shell
./edge flash -q
```
1. none:表示开发板未进入烧写模式。
2. loader:表示开发板进入loader烧写模式。
3. maskrom:表示开发板进入maskrom烧写模式。
### Windows主机查询
下载**[RKDevTool_Release_v2.95](https://console.box.lenovo.com/l/d5GXjR)**工具至电脑上。
双击打开RKDevTool_Release_v2.95目录下的RKDevTool.exe
- 没有发现设备(如果图1-4所示):表示开发板未进入烧写模式。
- 发现一个LOADER设备(如图1-5所示):表示开发板进入loader烧写模式。
- 发现一个MASKROM设备(如图1-6所示):表示开发板进入maskrom烧写模式。
![none](./Images/Flash_none_sd0.png)
图1-4:没有发现设备
![loader](./Images/Flash_loader_sd0.png)
图1-5:发现一个LOADER设备
![maskrom](./Images/Flash_maskrom_sd0.png)
图1-6:发现一个MASKROM设备
## Linux主机烧写镜像
### 烧写所有镜像
烧写所有镜像包括:`MiniLoaderAll.bin`, `uboot.img`, `boot.img`和`parameter.txt`
```shell
./edge flash -a
```
### 烧写uboot镜像
烧写镜像:MiniLoaderAll.bin,uboot.img和parameter.txt
```shell
./edge flash -u
```
### 烧写kernel镜像
烧写镜像:boot.img和resource.img
```shell
./edge flash -k
```
### 查看烧写帮助
```
查看支持的烧写参数:
./edge flash -h
```
### TF卡烧写Rootfs镜像
- 将TF卡格式化成一个分区
- 在Linux主机上将TF卡格式化ext4文件系统(确保只有TF卡读卡器这个USB存储设备插入, 假设TF卡读卡器识别为/dev/sdb1)
```
sudo mkfs.ext4 /dev/sdb1
```
- 将OUT_DIR目录下的Rootfs.img镜像烧写到TF卡里
```
sudo dd if=OUT_DIR/rootfs.img of=/dev/sdb1
```
## Windows主机烧写镜像
- 双击打开RKDevTool_Release_v2.95目录下的RKDevTool.exe。
- 确认开发板已经进入`loader`或者`maskrom`烧写模式。
- 打勾选择需要烧写的镜像。
```eval_rst
.. note:: Loader和Parmeter选项建议打勾选择,其他选项根据需要打勾选择。
```
- 点击“执行”按钮,开始烧写固件(如图1-7所示)。
![flash](./Images/Flash_fit_sd0.png)
图1-7:烧写固件
- Rootfs烧写请参照[TF卡烧写Rootfs镜像]( #rootfs_tfcard)章节
# 运行模式
## 全速模式
- 接上电源板,用12V电源上电会进入全速模式.
- 运行全速模式在uboot阶段串口Log如下:
![](./Images/UbootFullMode.png)
- kernel阶段串口log中command line显示performance_mode属性为full:
![](./Images/Full_freq2.png)
## 高速模式
- 当支持PD2.0/3.0协议的适配器用type-c线接入标有“POWER_IN”丝印的Type-C口上电会进入高速模式.
- 运行高速模式在uboot阶段串口Log如下:
![](./Images/UbootHighMode.png)
- kernel阶段串口log中command line显示performance_mode属性为low:
![](./Images/High_freq2.png)
## 低速模式
- 除以上两种上电方式,以外均进入低速模式.
- 运行低速模式在uboot阶段串口Log如下:
![](./Images/UbootLowMode.png)
- kernel阶段串口log中command line显示performance_mode属性为low:
![](./Images/Low_freq2.png)
# 启动系统
- 插入TF卡, 接入HDMI显示器,启动Debian11系统,进入系统会显示类似以下界面:
![](./Images/DebianMain.png)
- 不插TF卡, 启动boot分区引导系统,串口界面提示类似如下,请按提示插入预装rootfs.img的TF卡,选择Continue按钮按回车重启系统
建议: **尽量不要热插拔TF卡, 请下电后插入TF卡!**
![](./Images/SDCardInsert.png)