跳到主要内容

Duo S

Document Pictures

Milk-V DuoS 是 Duo 的升级型号,升级了 SG2000 主控,拥有更大的内存(512MB)和更多的 IO 接口。 它集成了 WI-FI 6/BT 5 无线功能,并配备 USB 2.0 HOST 接口和 100Mbps 以太网端口,方便用户使用。 它支持双摄像头(2x MIPI CSI 2 通道)和 MIPI 视频输出(MIPI DSI 4 通道),可实现多种应用。 DuoS 还支持通过开关在 RISC-V 和 ARM 启动之间切换。 通过性能和接口的增强,DuoS 更适合各种场景和更复杂的项目开发需求。

SG2000 简介

SG2000 是一款高性能、低功耗芯片,专为智能监控 IP 摄像机、本地面部识别考勤机、智能家居设备等各种产品领域而设计。 它集成了 H.264/H.265 视频压缩解码和 ISP 能力。 支持 HDR 宽动态、3D 降噪、去雾、镜头畸变校正等多种图像增强和校正算法,为客户提供专业级的视频图像质量。

该芯片还集成了内部 TPU,在 INT8 运算下可提供约 0.5TOPS 的计算能力。专门设计的 TPU 调度引擎高效地为张量处理单元核心提供高带宽数据流。它还为用户提供了强大的深度学习模型编译器和软件 SDK 开发套件。 Caffe、Pytorch、ONNX、MXNet、TensorFlow(Lite)等主流深度学习框架都可以轻松移植到该平台。

SG2000 数据手册

我们已将 SG2000 的数据手册和 TRM 开源到GitHub。请 查看

购买 SG2000 芯片

Milk-V 是 SG2000 芯片的全球授权经销商。您可以直接从我们的经销商 Arace 购买 SG2000 芯片的样品。如需批量订购,请联系 Milk-V 销售团队 获取报价。

上手指南

安装系统

USB 网络的使用

请参考:设置 章节。

DuoS GPIO 引脚分配

Document Pictures

GPIO 引脚映射

GROUPADDRPORTCHIPNUMNAMESTART
gpio0gpio@03020000portagpiochip0480-511XGPIOA480 - XGPIOA[0]
gpio1gpio@03021000portbgpiochip1448-479XGPIOB448 - XGPIOB[0]
gpio2gpio@03022000portcgpiochip2416-447XGPIOC416 - XGPIOC[0]
gpio3gpio@03023000portdgpiochip3384-415
gpio4gpio@05021000portegpiochip4352-383PWR_GPIO352 - PWR_GPIO[0]

排针 J3

排针 J3 上的 GPIO 使用 3.3V 逻辑电平。

SPIPWMI2CUARTNUMSG2000NAMEPINPINNAMESG2000NUMUARTPWMSPIJTAG
3V3
1
2
VSYS(5V)
PWM3I2C4_SCL468XGPIOB[20]B20
3
4
VSYS(5V)
I2C4_SDA469XGPIOB[21]B21
5
6
GND
I2C1_SCL466XGPIOB[18]B18
7
8
A16XGPIOA[16]496UART0_TX/UART1_TXPWM4
GND*
9
10
A17XGPIOA[17]497UART0_RX/UART1_RXPWM5
PWM1I2C1_SDAUART2_TX459XGPIOB[11]B11
11
12
B19XGPIOB[19]467UART2_TXPWM2
PWM2I2C1_SCLUART2_RX460XGPIOB[12]B12
13
14
GND
UART2_RX470XGPIOB[22]B22
15
16
A20XGPIOA[20]500JTAG_TRST
3V3
17
18
A19XGPIOA[19]499UART1_TX/UART1_RTSPWM7JTAG_TMS
SPI3_SDOPWM3I2C2_SCL461XGPIOB[13]B13
19
20
GND
SPI3_SDII2C2_SDA462XGPIOB[14]B14
21
22
A18XGPIOA[18]498UART1_RX/UART1_CTSPWM6JTAG_TCK
SPI3_SCKUART2_TX463XGPIOB[15]B15
23
24
B16XGPIOB[16]464UART2_RXSPI3_CS
GND
25
26
A28XGPIOA[28]508UART2_TX/UART1_TX

GND*:引脚 9 在 V1.1 版本硬件中是一个低电平的 GPIO,在 V1.2 及更高版本硬件中为 GND。

注意:CSI 摄像头连接器 J2 上的 I2C 为 I2C2,所以在使用 J2 上的 CSI 摄像头时,J3 排针中的 I2C2 不可用。

排针 J4

排针 J4 上的 GPIO 使用 1.8V 逻辑电平。

PWMI2CUARTMIPI DSINUMSG2000NAMEPINPINNAMESG2000NUMMIPI DSI
VSYS(5V)
52
51
AUDIO_OUT_R
PWM12I2C4_SCLUART3_TX449XGPIOB[1]B1
50
49
AUDIO_OUT_L
PWM13I2C4_SDAUART3_RX450XGPIOB[2]B2
48
47
AUDIO_IN_R
451XGPIOB[3]B3
46
45
AUDIO_IN_L
PWM10I2C2_SDALCD_RST354PWR_GPIO[2]E2
44
43
3V3
PWM9I2C2_SCLUART2_RXLCD_PWR_CT353PWR_GPIO[1]E1
42
41
C18XGPIOC[18]434MIPI_TX_3N
PWM8UART2_TXLCD_PWM352PWR_GPIO[0]E0
40
39
C19XGPIOC[19]435MIPI_TX_3P
GND
38
37
GND
MIPI_TX_2N436XGPIOC[20]C20
36
35
C16XGPIOC[16]432MIPI_TX_CN
MIPI_TX_2P437XGPIOC[21]C21
34
33
C17XGPIOC[17]433MIPI_TX_CP
GND
32
31
GND
MIPI_TX_1N430XGPIOC[14]C14
30
29
C12XGPIOC[12]428MIPI_TX_0N
MIPI_TX_1P431XGPIOC[15]C15
28
27
C13XGPIOC[13]429MIPI_TX_0P

蓝色 LED 引脚

NAMESG2000NUM
LED
XGPIOA[29]509

摄像头接口

DuoS 有两个 CSI 摄像头接连器:

  • J1 是 16 PIN 间距为 0.5mm 与 Duo 和 Duo256M 摄像头兼容的连接器,可以直接使用 CAM-GC2083 摄像头。
  • J2 是 15 PIN 间距为 1.0mm 与树莓派摄像头接口兼容的连接器,目前可以支持在树莓派上使用的 OV5647 摄像头。
Document Pictures

注意,J1 接口使用的 I2C 为 I2C3,J2 接口使用的 I2C 为 I2C2,使用时注意检查引脚复用配置。

J1 接口 FPC 线序

J1Description
1GND
2MIPI0_DN0
3MIPI0_DP0
4GND
5MIPI0_DN1
6MIPI0_DP1
7GND
8MIPI0_CKN
9MIPI0_CKP
10GND
11SENSOR_RSTN0 (1.8V)
12SENSOR_CLK0 (1.8V)
13I2C3_SCL (1.8V)
14I2C3_SDA (1.8V)
15
163V3

J2 接口 FPC 线序

J2Description
13V3
2I2C2_SDA (3.3V)
3I2C2_SCL (3.3V)
4SENSOR_CLK1 (3.3V)
5SENSOR_RSTN1 (3.3V)
6GND
7MIPI0_DP5 (CAM1_CP)
8MIPI0_DN5 (CAM1_CN)
9GND
10MIPI0_DP4 (CAM1_DP1)
11MIPI0_DN4 (CAM1_DN1)
12GND
13MIPI0_DP3 (CAM1_DP0)
14MIPI0_DN3 (CAM1_DN0)
15GND

POE 接口

Document Pictures
POE PinDescription
1VB-
2VB+
3VA-
4VA+

DuoS 使用指引

RISC-V 与 ARM 切换

DuoS 的大核可以选择使用 RISC-V 或者 ARM,可以通过主板上的切换开关来设置,如果您在使用中发现 DuoS 不能正常启动,请先检查该切换开关和使用的固件是否一致。

Document Pictures

如果连接了调试串口,可以在第一行开机日志中看到,以 C 开头时代表从 RISC-V 核启动,以 B 开头时代表从 ARM 核启动。

  • RISC-V:
    C.SCS/0/0.C.SCS/0/0.WD.URPL.USBI.USBW
  • ARM:
    B.SCS/0/0.WD.URPL.B.SCS/0/0.WD.URPL.USBI.USBW

USB Type A 接口的使用

DuoS USB Type A 接口与 Type C 接口的 USB 功能是二选一的,不可以同时使用。默认固件配置的是 Type C 口的 USB 网口(USB-NCM)功能,如果需要切换为 Type A 口的 USB 2.0 HOST 口接 U 盘等设备使用,需要执行以下命令:

ln -sf /mnt/system/usb-host.sh /mnt/system/usb.sh
sync

然后执行 reboot 命令或重新上电使其生效。

比如 USB A 口接入 U 盘后,可以用 ls /dev/sd* 查看是否有检测到设备。

挂载到系统中查看 U 盘中的内容(以/dev/sda1为例):

mkdir /mnt/udisk
mount /dev/sda1 /mnt/udisk

查看 /mnt/udisk 目录中的内容是否符合预期:

ls /mnt/udisk

卸载U盘的命令:

umount /mnt/udisk

想恢复 Type C 口 的 USB 网卡(USB-NCM)功能时,执行:

rm /mnt/system/usb.sh
ln -sf /mnt/system/usb-ncm.sh /mnt/system/usb.sh
sync

然后执行 reboot 命令或重新上电使其生效。

提示

DuoS 有板载以太网接口,所以 Type C 口的 USB 网口(USB-NCM)可以不用,一直保持切换为 A 口的 USB 2.0 Host 功能。

固定网口 MAC 地址

DuoS 以太网口 MAC 地址是随机分配的,这可能会导致每次重启之后,路由器为网口分配的 IP 地址会变,为了解决这个问题,可以使用如下命令配置一个固定的 MAC 地址:

提示

替换命令中的 MAC 地址为你想使用的地址,另外注意在同一网段中,不能出现重复的 MAC 地址

echo "pre-up ifconfig eth0 hw ether 78:01:B3:FC:E8:55" >> /etc/network/interfaces && sync

然后执行 reboot 命令或重新上电使其生效。

UART 串口控制台

DuoS 主板上有预留 UART 调试串口,可以查看系统的启动日志,也可以在系统启动后登陆到控制台,执行一些终端命令。

USB-TTL 串口线

Duo 系列调试串口电平为 3.3V。

常见的 USB 转 TTL 串口线的引脚定义如下:

Document Pictures

连接串口

如下图所示,连接 USB 到 TTL 串口线,不要连接红线。

Milk-V DouS<--->USB 转 TTL 串口
GND (pin 6)<--->黑色线
TX (pin 8)<--->白色线
RX (pin 10)<--->绿色线
Document Pictures

DuoS 默认的串口参数如下:

baudrate: 115200
data bit: 8
stop bit: 1
parity : none
flow control: none

WIFI 配置

方法一

编辑如下文件,替换 ssidpsk 为要连接的 WIFI 账号和密码:

/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1

network={
ssid="wifi_test"
psk="12345678"
key_mgmt=WPA-PSK
}

再执行如下命令:

wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf

即可连接 WIFI,连接之后可以通过 ifconfig 或者 ip a 命令查看分配的 IP 地址。

如果需要开机自动连接 WIFI,可以把以下命令放到 /mnt/system/auto.sh 文件中。

interface="wlan0"
max_attempts=100
attempt=0
log_file="/var/log/auto.sh.log"

# Continuously attempt to detect if the interface exists, up to $max_attempts times
echo "start auto.sh" > "$log_file"
while [ $attempt -lt $max_attempts ]; do
# Check if the wlan0 interface exists
ip link show "$interface" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') $interface interface exists, starting wpa_supplicant..." >> "$log_file"
wpa_supplicant -B -i "$interface" -c /etc/wpa_supplicant.conf >> "$log_file"
break # Exit the loop if the interface is found
else
echo "$(date +'%Y-%m-%d %H:%M:%S') $interface interface not found, waiting..." >> "$log_file"
sleep 1 # Wait for 1 second before checking again
attempt=$((attempt + 1)) # Increment the attempt counter
fi
done

# If the maximum number of attempts is reached and the interface still not found, output an error message
if [ $attempt -eq $max_attempts ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') Interface $interface not found after $max_attempts attempts" >> "$log_file"
fi

固定 WIFI MAC 地址

DuoS WIFI MAC 地址是随机分配的,这可能会导致每次重启之后,路由器为 WIFI 分配的 IP 地址会变,可以使用如下命令为 WIFI 配置一个固定的 MAC 地址:

提示

替换命令中的 MAC 地址为你想使用的地址,另外注意在同一网段中,不能出现重复的 MAC 地址

echo "MAC_ADDR=11:22:33:44:55:66" > /mnt/system/firmware/aic8800/rwnx_settings.ini && sync

然后执行 reboot 命令或重新上电使其生效。

eMMC 版本固件烧录

DuoS eMMC 版本出厂未烧录固件,需要使用 PC 通过 USB 接口烧录。

提示

使用 Windows 下的 USB 烧录工具支持 eMMC 固件版本为 V1.1.3更新的版本

Windows 环境下烧录

  1. 安装驱动

    下载 USB 驱动安装工具:CviUsbDownloadInstallDriver.zip。下载后解压安装即可。

  2. 下载烧录工具

    下载 Windows 下的命令行烧录工具 CviBurn_v2.0_cli_windows.zip,下载后解压。

  3. 下载固件

    下载 DuoS eMMC 最新版本的固件,当前是 milkv-duos-emmc-v1.1.3-2024-0930.zip,可以在烧录工具 CviBurn_v2.0_cli_windows 目录下新建 rom 文件夹,并将下载好的 eMMC 固件压缩包解压到 rom 目录下,此时烧录工具的目录结构如下:

    └───CviBurn_v2.0_cli_windows
    │ cv_dl_magic.bin
    │ usb_dl.exe
    └───rom
    │ boot.emmc
    │ fip.bin
    │ partition_emmc.xml
    │ rootfs_ext4.emmc
    | ...

    在 Windows 的终端中,CviBurn_v2.0_cli_windows 目录下执行烧录命令:

    .\usb_dl.exe -s linux -c cv181x -i .\rom

    也可以把固件放到其他目录,通过命令中的 -i 参数指定到对应的目录即可。

    显示等待 USB 连接的信息:

    Document Pictures

    按住 DuoS 上的 recovery 按键,再用 Type-C 数据线 连接 DuoS 和 PC 。

    注意

    目前如果 DuoS 有插 SD 卡,请先将 SD 卡取下。

    Document Pictures

    松开 recovery 按键, DuoS 会上电并进入烧录模式,PC 端会实时显示烧录进度:

    [INFO] Waiting for USB device connection: ---
    [INFO] found usb device vid=0x3346 pid=0x1000
    [INFO] downloading file: .\rom\boot.emmc
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 3384664/213100824(1%)
    [INFO] downloading file: .\rom\rootfs_ext4.emmc
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 20161944/213100824(9%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 36939224/213100824(17%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 53716504/213100824(25%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 70493784/213100824(33%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 87271064/213100824(40%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 104048344/213100824(48%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 120825624/213100824(56%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 137602904/213100824(64%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 154380184/213100824(72%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 171157464/213100824(80%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 187934744/213100824(88%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 204712024/213100824(96%)
    [INFO] CVI_USB_PROGRAM
    [INFO] updated size: 213100696/213100824(99%)
    [INFO] USB download complete

    烧录完成后,DuoS 会自动重启,开机后看到 DuoS 上的蓝色 LED 闪烁,说明系统已经正常启动,烧录成功。

eMMC 擦除

如果需要将 eMMC 恢复到初始状态,请参考以下命令清除 eMMC 数据(请提前备份好eMMC中的重要文件):

  • 解除 readonly
    echo 0 > /sys/block/mmcblk0boot0/force_ro
    echo 0 > /sys/block/mmcblk0boot1/force_ro
  • 擦除
    dd if=/dev/zero of=/dev/mmcblk0boot0 bs=1M count=4
    dd if=/dev/zero of=/dev/mmcblk0boot1 bs=1M count=4

硬件资料

其他

https://github.com/milkv-duo/duo-files/tree/main/duo-s

  • carbonfix
  • hokamilkv
  • Rjgawuie