跳到主要内容

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 01 和 SG2000 芯片的样品。如需批量订购,请联系 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 配置​

方法一​

编辑如下文件,替换 ssid 和 psk 为要连接的 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
  • QQQ-zwy