Duo S
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 是 SG2002 芯片的全球授权经销商。您可以直接从我们的经销商 Arace 购买 SG2002 芯片的样品。如需批量订购,请联系 Milk-V 销售团队 获取报价。
DuoS GPIO 引脚分配
GPIO 引脚映射
GROUP | ADDR | PORT | CHIP | NUM | NAME | START |
---|---|---|---|---|---|---|
gpio0 | gpio@03020000 | porta | gpiochip0 | 480-511 | XGPIOA | 480 - XGPIOA[0] |
gpio1 | gpio@03021000 | portb | gpiochip1 | 448-479 | XGPIOB | 448 - XGPIOB[0] |
gpio2 | gpio@03022000 | portc | gpiochip2 | 416-447 | XGPIOC | 416 - XGPIOC[0] |
gpio3 | gpio@03023000 | portd | gpiochip3 | 384-415 | ||
gpio4 | gpio@05021000 | porte | gpiochip4 | 352-383 | PWR_GPIO | 352 - PWR_GPIO[0] |
排针 J3
排针 J3
上的 GPIO 使用 3.3V 逻辑电平。
SPI | PWM | I2C | UART | NUM | SG2000 | NAME | PIN | PIN | NAME | SG2000 | NUM | UART | PWM | SPI | JTAG |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3V3 | 1 | 2 | VSYS(5V) | ||||||||||||
PWM3 | I2C4_SCL | 468 | XGPIOB[20] | B20 | 3 | 4 | VSYS(5V) | ||||||||
I2C4_SDA | 469 | XGPIOB[21] | B21 | 5 | 6 | GND | |||||||||
I2C1_SCL | 466 | XGPIOB[18] | B18 | 7 | 8 | A16 | XGPIOA[16] | 496 | UART0_TX/UART1_TX | PWM4 | |||||
GND* | 9 | 10 | A17 | XGPIOA[17] | 497 | UART0_RX/UART1_RX | PWM5 | ||||||||
PWM1 | I2C1_SDA | UART2_TX | 459 | XGPIOB[11] | B11 | 11 | 12 | B19 | XGPIOB[19] | 467 | UART2_TX | PWM2 | |||
PWM2 | I2C1_SCL | UART2_RX | 460 | XGPIOB[12] | B12 | 13 | 14 | GND | |||||||
UART2_RX | 470 | XGPIOB[22] | B22 | 15 | 16 | A20 | XGPIOA[20] | 500 | JTAG_TRST | ||||||
3V3 | 17 | 18 | A19 | XGPIOA[19] | 499 | UART1_TX/UART1_RTS | PWM7 | JTAG_TMS | |||||||
SPI3_SDO | PWM3 | I2C2_SCL | 461 | XGPIOB[13] | B13 | 19 | 20 | GND | |||||||
SPI3_SDI | I2C2_SDA | 462 | XGPIOB[14] | B14 | 21 | 22 | A18 | XGPIOA[18] | 498 | UART1_RX/UART1_CTS | PWM6 | JTAG_TCK | |||
SPI3_SCK | UART2_TX | 463 | XGPIOB[15] | B15 | 23 | 24 | B16 | XGPIOB[16] | 464 | UART2_RX | SPI3_CS | ||||
GND | 25 | 26 | A28 | XGPIOA[28] | 508 | UART2_TX/UART1_TX |
GND*:引脚 9 在 V1.1 版本硬件中是一个低电平的 GPIO,在 V1.2 及更高版本硬件中为 GND。
注意:CSI 摄像头连接器 J2 上的 I2C 为 I2C2,所以在使用 J2 上的 CSI 摄像头时,J3 排针中的 I2C2 不可用。
排针 J4
排针 J4
上的 GPIO 使用 1.8V 逻辑电平。
PWM | I2C | UART | MIPI DSI | NUM | SG2000 | NAME | PIN | PIN | NAME | SG2000 | NUM | MIPI DSI |
---|---|---|---|---|---|---|---|---|---|---|---|---|
VSYS(5V) | 52 | 51 | AUDIO_OUT_R | |||||||||
PWM12 | I2C4_SCL | UART3_TX | 499 | XGPIOB[1] | B1 | 50 | 49 | AUDIO_OUT_L | ||||
PWM13 | I2C4_SDA | UART3_RX | 450 | XGPIOB[2] | B2 | 48 | 47 | AUDIO_IN_R | ||||
451 | XGPIOB[3] | B3 | 46 | 45 | AUDIO_IN_L | |||||||
PWM10 | I2C2_SDA | LCD_RST | 354 | PWR_GPIO[2] | E2 | 44 | 43 | 3V3 | ||||
PWM9 | I2C2_SCL | UART2_RX | LCD_PWR_CT | 353 | PWR_GPIO[1] | E1 | 42 | 41 | C18 | XGPIOC[18] | 434 | MIPI_TX_3N |
PWM8 | UART2_TX | LCD_PWM | 352 | PWR_GPIO[0] | E0 | 40 | 39 | C19 | XGPIOC[19] | 435 | MIPI_TX_3P | |
GND | 38 | 37 | GND | |||||||||
MIPI_TX_2N | 436 | XGPIOC[20] | C20 | 36 | 35 | C16 | XGPIOC[16] | 432 | MIPI_TX_CN | |||
MIPI_TX_2P | 437 | XGPIOC[21] | C21 | 34 | 33 | C17 | XGPIOC[17] | 433 | MIPI_TX_CP | |||
GND | 32 | 31 | GND | |||||||||
MIPI_TX_1N | 430 | XGPIOC[14] | C14 | 30 | 29 | C12 | XGPIOC[12] | 428 | MIPI_TX_0N | |||
MIPI_TX_1P | 431 | XGPIOC[15] | C15 | 28 | 27 | C13 | XGPIOC[13] | 429 | MIPI_TX_0P |
LED 引脚
NAME | SG2000 | NUM |
---|---|---|
LED | XGPIOA[29] | 509 |
摄像头接口
DuoS 有两个 CSI 摄像头接连器:
- J1 是 16 PIN 间距为 0.5mm 与 Duo 和 Duo256M 摄像头兼容的连接器,可以直接使用 CAM-GC2083 摄像头。
- J2 是 15 PIN 间距为 1.0mm 与树莓派摄像头接口兼容的连接器,目前可以支持在树莓派上使用的 OV5647 摄像头。
注意,J1 接口使用的 I2C 为 I2C3,J2 接口使用的 I2C 为 I2C2,使用时注意检查引脚复用配置。
DuoS 使用指引
RISC-V 与 ARM 切换
DuoS 的大核可以选择使用 RISC-V 或者 ARM,可以通过主板上的切换开关来设置,如果您在使用中发现 DuoS 不能正常启动,请先检查该切换开关和使用的固件是否一致。
如果连接了调试串口,可以在第一行开机日志中看到,以 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 网口(RNDIS)功能,如果需要切换为 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 网卡(RNDIS)功能时,执行:
rm /mnt/system/usb.sh
ln -sf /mnt/system/usb-rndis.sh /mnt/system/usb.sh
sync
然后执行 reboot
命令或重新上电使其生效。
DuoS 有板载以太网接口,所以 Type C 口的 USB 网口(RNDIS)可以不用,一直保持切换为 A 口的 USB 2.0 Host 功能。
UART 串口控制台
如下图所示,连接USB到TTL串口模块,不要连接红线。
Milk-V DouS | <---> | USB 转 TTL 串口 |
---|---|---|
GND (pin 6) | <---> | 黑色线 |
TX (pin 8) | <---> | 白色线 |
RX (pin 10) | <---> | 绿色线 |
Duo u-boot 和内核控制台的默认串行设置是:
baudrate: 115200
data bit: 8
stop bit: 1
parity : none
flow control: none
WIFI 配置
方法一
编辑如下文件,替换 ssid
和 psk
为要连接的 WIFI 账号和密码:
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 地址。
如果需要开机自动连网,可以把该命令放到 /mnt/system/auto.sh
文件中。
eMMC 版本固件烧录
DuoS eMMC 版本出厂未烧录固件,需要使用 PC 通过 USB 接口烧录。
Windows 环境下烧录
-
安装驱动
下载 USB 驱动安装工具:CviUsbDownloadInstallDriver.zip。下载后解压安装即可。
-
下载烧录工具
下载 Windows 下的命令行烧录工具 CviBurn_v2.0_cli_windows.zip,下载后解压。
-
下载固件
下载 DuoS eMMC 最新版本的固件,当前是 milkv-duos-emmc-v1.1.0-2024-0410.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 连接的信息:
用 Type-C 数据线 连接 DuoS 和 PC (注意,目前如果 DuoS 有插 SD 卡,请先将 SD 卡取下),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 闪烁,说明系统已经正常启动,烧录成功。