跳到主要内容

Duo Module 01

Document Pictures

Duo Module 01 是一款集成了 SG2000、WI-FI6/BTDM5.4 和 eMMC 的紧凑型模块。它支持 SMD 贴片。此外,它还能大大节省产品开发时间。它是制作产品的首选。

为了您在使用 Duo Module 01 设计产品时,能够快速进行产品初期的方案验证与调试,Duo Module 01 还提供一个评估板,该底板专为核心板设计,提供丰富的接口和功能。

Document Pictures

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。请 查看

购买

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

上手指南

安装系统

提示

Duo Module 01 的软件与 DuoS 是通用的,请直接使用 DuoS 的固件。

USB 网络的使用

请参考:设置 章节。

Duo Module 01 GPIO 引脚分配

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]

GPIO 引脚定义

PINNAMESG2000NUMMIPI DSI
1
MIPI_TX_2NXGPIOC[16]432MIPI_TX_CN
2
MIPI_TX_2PXGPIOC[17]433MIPI_TX_CP
3
MIPI_TX_1NXGPIOC[14]430MIPI_TX_1N
4
MIPI_TX_1PXGPIOC[15]431MIPI_TX_1P
5
MIPI_TX_0NXGPIOC[12]428MIPI_TX_0N
6
MIPI_TX_0PXGPIOC[13]429MIPI_TX_0P
7
3V3
8
3V3
9
GND
10
SENSOR_HS0XGPIOA[1]
11
SENSOR_CLK1XGPIOA[3]
12
SENSOR_CLK0XGPIOA[0]
13
I2C3_SENSOR0_SDAXGPIOA[6]
14
I2C3_SENSOR0_SCLXGPIOA[5]
15
SENSOR_RSTN1XGPIOA[4]
16
SENSOR_RSTN0XGPIOA[2]
17
AUDIO_OUT_L
18
AUDIO_OUT_R
19
AUDIO_IN_L
20
AUDIO_IN_R
21
SD_SD0_D1XGPIOA[10]
22
SD_SD0_CMDXGPIOA[8]
PINNAMESG2000NUMUARTPWMJTAGMIPI DSII2C
23
SD_SD0_CDXGPIOA[13]
24
SD_SD0_D0XGPIOA[9]
25
SD_SD0_CLKXGPIOA[7]
26
SD_SD0_D2XGPIOA[11]
27
SD_SD0_D3XGPIOA[12]
28
XGPIOB_22XGPIOB[22]470UART2_RX
29
SD_PWR_EN
30
UART0_RXPWR_GPIO[0]352UART2_TXPWM8LCD_PWM
31
UART0_TXXGPIOA[16]496UART0_TX/UART1_TXPWM4
32
XGPIOA_18XGPIOA[18]498UART1_RX/UART1_CTSPWM6JTAG_TCK
33
XGPIOA_19XGPIOA[19]499UART1_TX/UART1_RTSPWM7JTAG_TMS
34
XGPIOA_30XGPIOA[30]
35
PWR_VBAT_DET
36
LCD_RSTPWR_GPIO[2]354PWM10LCD_RSTI2C2_SDA
37
LCD_PWR_CT
38
LCD_PWM
39
I2C_SENSOR1_SDAPWR_GPIO[13]
40
I2C_SENSOR1_SCLPWR_GPIO[12]
41
XGPIOA_20XGPIOA[20]500JTAG_TRST
42
XGPIOA_29XGPIOA[29]
43
XGPIOA_28XGPIOA[28]508UART2_TX/UART1_TX
44
VDD_BAT
PINNAMESG2000NUMUARTPWMSPII2C
45
PWM0_BUCKXGPIOB[0]
46
VBUS_ENXGPIOB[5]
47
UPDATEXGPIOB[4]
48
VBUS_DETXGPIOB[6]
49
EPHY_LNK_LEDPWR_GPIO[6]
50
EPHY_SPD_LEDPWR_GPIO[8]
51
XGPIOB_12XGPIOB[12]460UART2_RXPWM2I2C1_SCL
52
XGPIOB_11XGPIOB[11]459UART2_TXPWM1I2C1_SDA
53
XGPIOB_13/SPI3_SDOXGPIOB[13]461PWM3SPI3_SDOI2C2_SCL
54
XGPIOB_15/SPI3_SCKXGPIOB[15]463UART2_TXSPI3_SCK
55
XGPIOB_14/SPI3_SDIXGPIOB[14]462SPI3_SDII2C2_SDA
56
XGPIOB_16/SPI3_CSXGPIOB[16]464UART2_RXSPI3_CS
57
ADC1XGPIOB[3]451
58
ADC2XGPIOB[2]450UART3_RXPWM13I2C4_SDA
59
ADC3XGPIOB[1]449UART3_TXPWM12I2C4_SCL
60
ARM_RISV_SWITCHXGPIOB[23]
61
EPHY_RXPXGPIOB[24]
62
EPHY_RXNXGPIOB[25]
63
EPHY_TXPXGPIOB[26]
64
EPHY_TXNXGPIOB[27]
65
USB_DM
66
USB_DP
PINNAMESG2000NUMUARTPWMMIPI DSII2C
67
XGPIOB_17/I2C1_SDAXGPIOB[17]
68
XGPIOB_18/I2C1_SCLXGPIOB[18]466I2C1_SCL
69
XGPIOB_19XGPIOB[19]467UART2_TXPWM2
70
XGPIOB_20/I2C4_SCLXGPIOB[20]468UART2_TXPWM3I2C4_SCL
71
XGPIOB_21/I2C4_SDAXGPIOB[21]469I2C4_SDA
72
MIPI0_DN5XGPIOC[0]I2C4_SDA
73
MIPI0_DP5XGPIOC[1]
74
MIPI0_DN4XGPIOC[2]
75
MIPI0_DP4XGPIOC[3]
76
MIPI0_DN3XGPIOC[4]
77
MIPI0_DP3XGPIOC[5]
78
MIPI0_DN0XGPIOC[10]
79
MIPI0_DP0XGPIOC[11]
80
MIPI0_DN1XGPIOC[8]
81
MIPI0_DP1XGPIOC[9]
82
MIPI0_DN2XGPIOC[6]
83
MIPI0_DP2XGPIOC[7]
84
GND
85
MIPI_TX_4NXGPIOC[18]434MIPI_TX_3N
86
MIPI_TX_4PXGPIOC[19]435MIPI_TX_3P
87
MIPI_TX_3NXGPIOC[20]436MIPI_TX_2N
88
MIPI_TX_3PXGPIOC[21]437MIPI_TX_2P

Duo Module 01 评估板引脚分配

Document Pictures

26 PIN 排针

26 PIN 排针 上的 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

蓝色 LED 引脚

NAMESG2000NUM
LED
XGPIOA[29]509

摄像头接口

Duo Module 01 评估板有两个 CSI 摄像头接连器:

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

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

J8 接口 FPC 线序

J8Description
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

J10 接口 FPC 线序

J10Description
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
1VA-
2VA+
3VB+
4VB-

ADC 接口

Document Pictures
ADC PinDescription
1GND
23V3
31V8
4ADC1
5ADC2
6ADC3

MIPI DSI 屏幕接口

Document Pictures
LCD PinDescriptionLevel
1VDD3V33.3V
2IOVCC1V8-3V31.8V
3SENSOR-INT
4RESET1.8V
5NC
6GND1
7MIPI-0N
8MIPI-0P
9GND2
10MIPI-1N
11MIPI-1P
12GND3
13MIPI-CKN
14MIPI-CKP
15GND4
16MIPI-2N
17MIPI-2P
18GND5
19MIPI-3N
20MIPI-3P
21GND6
22GND7
23TP-RESET3.3V
24TP-VCC3.3V
25TP-INT3.3V
26TP-SDA3.3V
27TP-SCL3.3V
28GND8
29GND9
30VCC3V313.3V
31VCC3v323.3V
32GND11
33GND12
34LED-1
35LED-
36NC
37NC
38LED+1
39LED+

RTC 供电接口

Document Pictures
ADC PinDescription
1GND
2Vbat

音频接口

Document Pictures
MIC PinDescription
1MIC IN
2GND

Duo Module 01 评估板使用指引

RISC-V 与 ARM 切换

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

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 接口的使用

评估板的 USB 2.0 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 命令或重新上电使其生效。

提示

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

固定网口 MAC 地址

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

提示

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

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

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

UART 串口控制台

Duo Module 01 评估板上有预留 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

默认的串口参数如下:

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 地址

Duo Module 01 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 版本固件烧录

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

提示

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

Windows 环境下烧录

  1. 安装驱动

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

  2. 下载烧录工具

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

  3. 下载固件

    Duo Module 01 的固件与 DuoS 的固件通用。下载 DuoS eMMC 最新版本的固件,当前是 milkv-duos-emmc-v1.1.2-2024-0801.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

    Type-C 数据线 连接评估板 和 PC (注意,目前如果评估板有插 SD 卡,请先将 SD 卡取下),评估板会自动上电进入烧录模式,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

    烧录完成后,评估板会自动重启,开机后看到评估板上的蓝色 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-module-01

  • carbonfix
  • zwyzwm