1. 快速开始

1.1. 准备工作

在使用旭日X3派开发板前,需要做下述准备工作:

供电
旭日X3派开发板通过USB Type C接口供电,并兼容QC、PD快充协议。推荐使用支持QC、PD快充协议的电源适配器,或者至少搭配5V 直流 2A的电源适配器为开发板供电。

注意,请不要使用PC机USB接口为开发板供电,否则会因供电不足造成开发板工作异常。

存储
旭日X3派开发板采用TF存储卡作为系统启动介质,推荐使用至少8GB容量、速率C10以上的TF存储卡,以便满足Ubuntu系统及更多应用功能包对存储空间的需求。

显示
旭日X3派开发板支持HDMI显示接口,通过HDMI线缆连接开发板和显示器设备,可实时查看系统状态。

网络连接
旭日X3派开发板支持以太网、Wi-Fi功能,开发板通过连接以太网、Wi-Fi热点,可实现网络连接功能。

常见问题

  • 上电反复重启:请确保开发板使用适配器供电,且供电能力满足至少5V 直流 2A要求

  • 上电不开机:请确保开发板正常插入烧录过镜像的TF存储卡

  • USB Host接口无反应:请确保开发板Micro USB没有接入数据线

  • TF卡使用中热插拔:系统运行中热插拔TF卡会导致系统异常,请重新上电开发板

更多问题的处理,请访问 地平线开发者官方论坛 获得帮助。

1.2. 安装系统

旭日X3派开发板目前支持Ubuntu 20.04 Server、Desktop两个系统版本,镜像文件可从 地平线开发者社区发布页面X3派资料包子栏目中获取。

注意,由于旭日X3芯片不支持GPU硬件加速,因此使用Ubuntu Desktop版本时,可能会因CPU渲染图形桌面而造成系统负载过大,如对系统性能有较高要求,推荐使用不带图形桌面的Ubuntu Server版本。

1.2.1. 准备工作

  • SD卡、读卡器。

  • 从地平线开发者社区的 资源中心 X3 派资料包板块下载旭日X3派系统镜像,下载的文件是压缩包,请解压提取里面的 system_sdcard.img文件。
    image-20220609102955046

  • 下载SD卡烧录工具

    • 用户可使用balenaEtcher、rufus等第三方PC工具一键式制作TF启动盘,本文推荐优先使用balenaEtcher多平台烧录工具。如balenaEtcher遇到兼容性问题,可选择rufus等其他第三方工具进行TF卡制作。

    • 推荐使用balenaEtcher工具,请在其 官方链接 下载该工具

    • 如果balenaEtcher烧写不成功,使用windows的用户可以使用Rufus工具,请在其 官方链接 下载该工具

1.2.2. 系统烧写

1.2.2.1. 使用balenaEtcher烧写

balenaEtcher是一款支持Windows/Mac/Linux等多平台的启动盘制作工具,制作流程如下:

  1. 在PC端插入TF卡,并打开balenaEtcher,点击Flash frome file按钮,选择解压出来的system_sdcard.img文件作为烧录镜像
    image-X3-Update-balena1

  2. 点击Select target按钮,选择TF卡对应的磁盘作为目标存储设备
    image-X3-Update-balena3

  3. 点击Flash按钮开始烧录,待工具提示Flash Comple时,表示TF卡镜像制作完成,您可以关闭 balenaEtcher,从PC上取下TF卡
    image-X3-Update-balena4 image-X3-Update-balena5image-X3-Update-balena5

1.2.2.2. 使用Rufus烧写

Rufus是一款Windows平台的启动盘制作工具。其制作流程如下:

  1. 在PC端插入TF卡,并打开rufus,确认工具的设备栏可以正确识别到插入的TF卡

  2. 点击选择按钮,在弹出的文件选择对话框中选择解压出来的system_sdcard.img镜像文件

  3. 点击开始按钮,工具弹出提示窗,点击确定开始TF卡镜像制作 image-X3-PI-Update0 image-X3-PI-Update1

  4. 当工具进度条完成并提示准备就绪后,表示TF卡镜像制作完成,您可以关闭 Rufus工具,从PC上取下TF卡 image-X3-PI-Update2

如TF卡制作过程发生中断,用户可按照上述步骤重新制作TF卡。

1.2.3. 启动系统

保持旭日X3派开发板断电,将制作好的TF存储卡插入旭日X3派开发板的TF卡槽,并将显示器接入开发板HDMI接口,然后给开发板上电,如果开发板红色指示灯亮起,说明板子上电开机正常。

系统首次启动时会安装镜像中预置的工具包,整个过程大概需要1~2分钟,安装过程中HDMI无显示输出,待安装完成后系统会自动重启打开HDMI显示输出,并显示开机画面(Server系统显示地平线logo、Desktop版本显示系统桌面)。

开机画面正常显示后,说明系统启动完成,此时可通过串口登录SSH登录方式登录开发板,登录用户名:sunrise 密码:sunrise

ubuntu login: sunrise
Password: 
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 4.14.87 aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Last login: Tue Apr 12 16:29:39 UTC 2022 on ttyS0
sunrise@ubuntu:~$ 

如果开发板上电后,HDMI长时间(2分钟以上)没有显示输出,说明开发板启动异常。此时用户可通过串口登录开发板,查看启动过程中串口的打印,确认开发板启动状态,TF存储卡镜像异常时log如下:

Warning: ethernet@A5014000 (eth0) using random MAC address - b6:d4:80:47:64:9b
eth0: ethernet@A5014000
Disable cnn cores ..
dtb_name:hobot-x3-pi.dtb
base board type: X3 SDB
bootmode: NAND
board_id = 31520124
hb_boot_args_cmd_set custom_bootargs 0 ubuntu_boot 1
Hit any key to stop autoboot:  0 
enable watchdog success !
disable watchdog success !
Hobot>

此时,用户可重新制作TF存储卡进行系统恢复。

1.3. 远程登录

本章节面向使用Ubuntu Server版本操作系统(无图形桌面)或者有远程访问设备的需求用户,介绍如何通过串口、VNC、SSH等方式远程登录开发板。

使用VNC、SSH远程登录时要用到设备IP,因此用户需要提前获取开发板IP地址,此时推荐用户使用串口登录开发板并进行网络参数确认,登录用户名:sunrise 密码:sunrise

1.3.1. 串口登录

在使用串口登录前,需要确认开发板串口线跟PC机正确连接,连接方法可参考调试串口章节。串口登录需要借助PC终端工具,目前常用的工具有PuttySecureCRTMobaXterm等,用户可根据自身使用习惯来选择。不同工具的端口配置流程基本类似,下面以MobaXterm为例,介绍新建串口连接过程:

  • 打开MobaXterm工具,点击Session,然后选择Serial

  • 配置端口号,例如COM3,然后设置波特率为921600

  • 点击OK,输入用户名、密码即可完成登录。 image-Uart-Login

当串口USB转接板插入PC机,设备管理器提示未知USB设备时,说明PC机未安装串口驱动。用户需要根据串口转接板类型安装相应驱动,驱动程序可从地平线开发者社区发布页面https://developer.horizon.ai/resource工具子栏目中获取。

驱动安装完成后,设备管理器可正常识别串口板端口,如下图:
image-20220416105939067

如需确认开发板的网络配置,可通过串口登录设备后,使用ifconfig命令查询,例如:

sunrise@ubuntu:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::211:22ff:feaa:7637  prefixlen 64  scopeid 0x20<link>
        ether 00:11:22:aa:76:37  txqueuelen 1000  (Ethernet)
        RX packets 767  bytes 54006 (54.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5766  bytes 246466 (246.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 43  base 0xa000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3847  bytes 339115 (339.1 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3847  bytes 339115 (339.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 08:e9:f6:ae:f8:8a  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其中eth0、wlan0分别代表以太网、Wi-Fi网络。

1.3.2. 网络配置

当开发板通过以太网、Wi-Fi等方式接入网络后,用户可以通过网络进行远程登录。在使用远程登录前,需要确保PC机、开发板能够能够相互ping通。如无法ping通,则无法使用网络进行远程登录,用户可按如下步骤检查网络配置:

  1. 开发板、PC机IP地址前三段相同,例如开发板:192.168.1.10 PC机:192.168.1.100

  2. 开发板、PC机的子网掩码、网关保持一致

  3. PC机网络防火墙处于关闭状态

开发板以太网默认采用静态IP地址(192.168.1.10),以方便固定网络环境下的使用,例如开发板与PC机直连场景。此时用户只需要修改PC机的静态IP地址,并保证配置跟开发板位于同一网段即可。PC机静态IP修改方法如下:

  1. 在网络连接中找到对应的以太网设备并双击打开

  2. 找到Internet协议版本4选项并双击打开

  3. 在下图红框位置填入对应的网络参数,然后点击确定

image-20220416110242445

如需将开发板以太网配置为DHCP模式,可参考有线网络

1.3.3. VNC登录

本章节面向使用Ubuntu Desktop系统版本的用户,介绍如何通过VNC Viewer实现远程桌面登录功能。

VNC Viewer是一个图形桌面共享软件,可在PC机、移动设备上实现设备远程登录和控制桌面。VNC Viewer可以传输PC机、移动设备的鼠标、键盘操作到远程桌面,并通过PC机显示器实时显示运行结果。

用户在PC机、移动设备上通过VNC Viewer操作开发板桌面,可以获得跟本地操作相同的效果。

连接开发板
目前VNC支持直接、云端两种连接方式,用户可以根据自身情况选择。本文中推荐使用简单、快速的直接连接方式。

  1. 直接连接
    直接连接是一种简单、快速的方式,适用于开发板、PC机处于同一本地网络的情况,例如家庭、学校、办公室的有线、无线网络。连接步骤如下:

  • 确认开发板IP地址:可通过串口登录SSH登录登录设备后,使用ifconfig命令查询,有图形化界面的系统,可以通过给设备接上鼠标后,打开网络设置软件获取IP地址。

  • 在PC机、移动设备中下载VNC Viewer客户端,请点击 VNC Viewer 下载对应平台的软件。

  • 打开VNC Viewer,输入开发板IP地址和VNC登录密码,默认密码为sunrise

输入设备ip地址,例如:192.168.1.10

image-20220610160658103

输入完地址后回车,弹出链接未加密的提示,不用管,点击 Continue

image-20220610160715916

输入密码 sunrise,勾选 Remember password, 点击 OK连接。

image-20220610160928136

  1. 云端连接
    云端连接是一种通过RealVNC云服务实现的远程加密连接,适用于开发板、PC需要通过互联网连接的情况。此时不需要防火墙、路由器的重新配置,也不需要知道开发板的IP地址。连接步骤如下:

  • 登录RealVNC官方账户

  • 在开发板上,使用新的RealVNC账户证书登录VNC Server

  • 在PC机、移动设备中下载VNC Viewer客户端,请点击 VNC Viewer 下载对应平台的软件。

  • 使用相同的RealVNC账户证书登录VNC Viewer,然后点击连接开发板

关于RealVNC更多使用信息,可参考官方网站https://www.realvnc.com/en/

1.3.4. SSH登录

用户在PC机上,可以通过SSH连接实现开发板命令行的远程登录。SSH连接的创建方式,主要有终端软件、PC机命令行两种方式。下面介绍两种连接方法的创建步骤。

终端软件
目前常用终端工具有PuttySecureCRTMobaXterm等,用户可根据自身使用习惯来选择。不同工具的端口配置流程基本类似,下面以MobaXterm为例,介绍新建SSH连接过程:

  • 打开MobaXterm工具,点击Session,然后选择SSH

  • 输入开发板IP地址,例如192.168.1.10

  • 选中specify username,输入sunrise

  • 点击OK后,输入用户名、密码即可完成登录

image-Network-Login

PC机命令行
如果PC机未安装终端软件,用户也可通过命令行方式进行SSH登录,步骤如下:

  • 打开终端窗口,输入SSH登录命令,例如ssh sunrise@192.168.1.10

  • 弹出连接确认提示,输入YES

  • 输入密码即可完成登录

image-Cmdline-Linux

1.4. 快速体验

开发板系统默认预置了GPIO操作、LED点灯、图像采集AI推理等多个基础功能示例,用于帮助用户快速确认开发板环境安装的完整性。

1.4.1. LED指示灯控制

在旭日X3派上有一个LED指示绿灯(接口总览 10号绿色灯),默认情况上电后闪烁。本节将通过运行程序控制这个LED的闪烁状态,作为使用旭日X3派的hello world程序。

  • 环境准备:旭日X3派上电,LED指示绿灯闪烁,用户可以通过 远程登录中介绍的其中一种方式连接上设备

  • 运行方式:执行 led_blinks 程序

sunrise@ubuntu:~$ sudo led_blinks

预期效果:旭日X3派的指示绿灯开始闪烁,每一秒钟切换状态。

led_blinks是一个shell脚本程序,通过控制LED指示绿灯的GPIO管脚来使绿灯亮和灭。除了不带参数的运行外,它还支持以下三个参数选项:

  • normal:与不加参数是的效果一样,指示灯亮灭间隔1秒钟

  • fast:指示灯亮灭间隔300毫秒,闪烁较快

  • slowly:指示灯亮灭间隔2秒钟,闪烁较慢

1.4.2. GPIO读写操作

在开发板的 /app/40pin_samples/ 目录下预置了40pin管脚的功能测试代码,包括gpio的输入、输出测试,pwm、i2c、spi、uart等总线的测试,所有测试代码都使用python3编写,详细信息可以查阅 [40PIN 功能使用][../40pin_user_guide.md]。

其中 /app/40pin_samples/button_led.py 实现38号管脚配置为输入,可以外接一个按键来控制其输出高、低电平,36号管脚配置为输出,可以外接一个LED灯,通过控制36号管脚的电平使LED亮灭。

  • 环境准备: 38号管脚外接一个按键,36号管脚外接一个LED灯,如果没有按键,可以使用导线连接38号管脚到3.3v拉高,连接到GND拉低。

  • 运行方式:

sunrise@ubuntu:~$ cd /app/40pin_samples/
sunrise@ubuntu:/app/40pin_samples$ sudo python3 ./button_led.py
  • 预期效果:通过控制按键的开、关使LED灯亮、灭,运行程序过程中,可以看到当前输出给 36号管脚的电平值。

sunrise@ubuntu:/app/40pin_samples$ sudo python3 ./button_led.py
Starting demo now! Press CTRL+C to exit
Outputting 0 to Pin 36
Outputting 1 to Pin 36
Outputting 0 to Pin 36

1.4.3. AI图像分类算法演示

开发板上安装了test_mobilenetv1.py 程序用于测试基本的AI算法推理功能,该程序读取 zebra_cls.jpg 静态图片作为模型的输入,并在命令行终端打印出分类的结果为cls id: 340 Confidence: 0.991851

  • 环境准备:旭日X3派上电,LED指示绿灯闪烁,用户可以通过 远程登录中介绍的其中一种方式连接上设备

  • 运行方式:执行 test_mobilenetv1.py 程序

sunrise@ubuntu:~$ cd /app/ai_inference/01_basic_sample/
sunrise@ubuntu:/app/ai_inference/01_basic_sample$ sudo ./test_mobilenetv1.py

预期效果:zebra_cls.jpg是一张斑马的图片,所以按照ImageNet数据集的分类,返回结果id应该为340。

========== Classification result ==========
cls id: 340 Confidence: 0.991851

zebra_cls

1.4.4. USB摄像头AI推理

开发板上安装了 usb_camera_fcos.py 程序用于测试USB摄像头的数据通路,该测试程序会实时读取USB摄像头的图像数据,然后运行视觉检测算法,最后把视频和算法结果通过HDMI输出。

  • 环境准备:1) USB摄像头正确连接到开发板上,确认生成/dev/video8设备节点。2) 通过HDMI线缆连接开发板和显示器

  • 运行方式:按照以下命令执行程序,具体代码的实现说明请查阅 AI推理示例-图像目标检测算法

    sunrise@ubuntu:~$ cd /app/ai_inference/02_usb_camera_sample/
    sunrise@ubuntu:/app/ai_inference/02_usb_camera_sample$ sudo python3 ./usb_camera_fcos.py
    
  • 预期效果:程序执行后,命令行会输出DNN模块的版本信息、Open usb camera successfully和视觉检测算法的结果输出(目标类型、置信度),如下所示:

sunrise@ubuntu:/app/ai_inference/02_usb_camera_sample$ sudo python3 ./usb_camera_fcos.py
[C][15441][05-03][13:55:12:959][configuration.cpp:51][EasyDNN]EasyDNN version: 0.3.5
[BPU_PLAT]BPU Platform Version(1.3.1)!
[HBRT] set log level as 0. version = 3.13.27
[DNN] Runtime version = 1.8.4_(3.13.27 HBRT)
[HorizonRT] The model builder version = 1.5.2
... ...
Open usb camera successfully
bottle is in the picture with confidence:0.5859
bottle is in the picture with confidence:0.7126
cup is in the picture with confidence:0.7186
... ...

算法渲染结果的HDMI输出如下图,示例图像中检测到了bottlecup

image-20220511181747071

提示:执行以上程序后,hdmi会显示视频画面,图像化功能会隐藏,请执行以下两条命令恢复图像化界面

sudo echo start > /sys/devices/virtual/graphics/iar_cdev/iar_test_attr
sudo echo enable2 > /sys/devices/virtual/graphics/iar_cdev/iar_test_attr

1.4.5. MIPI摄像头AI推理

开发板上安装了mipi_camera.py程序用于测试MIPI摄像头的数据通路,该测试程序实时从MIPI摄像头读取图像数据,然后运行视觉检测算法,最后把视频和算法结果通过HDMI输出。相对于USB摄像头的示例程序,本示例会使用X3芯片的图像、多媒体硬件加速模块,因此拥有更高的运行性能。

  • 环境准备:1)将JXF37摄像头模组通过FPC排线接到开发板MIPI CSI接口上。2) 通过HDMI线缆连接开发板和显示器

image-20220503235525885

  • 运行方式:按照以下命令执行程序,具体代码的实现说明请查阅 AI推理示例-基于MIPI Camera的目标检测

    sunrise@ubuntu:~$ cd /app/ai_inference/03_mipi_camera_sample/
    sunrise@ubuntu:/app/ai_inference/03_mipi_camera_sample$ sudo python3 ./mipi_camera.py 
    
  • 预期效果:程序执行后,命令行会输出DNN模块的版本信息、Sensor初始化信息和视觉检测算法的结果输出(目标类型、置信度),如下所示:

sunrise@ubuntu:/app/ai_inference/03_mipi_camera_sample$ sudo python3 ./mipi_camera.py 

[C][15441][05-03][13:55:12:959][configuration.cpp:51][EasyDNN]EasyDNN version: 0.3.5
[BPU_PLAT]BPU Platform Version(1.3.1)!
[HBRT] set log level as 0. version = 3.13.27
[DNN] Runtime version = 1.8.4_(3.13.27 HBRT)
[HorizonRT] The model builder version = 1.5.2
match sensor:f37
bus_num 2
bus_type 0
sensor_name f37
reg_width 8
sensor_mode 1
sensor_addr 0x40
serial_addr 0x0
resolution 1080
 start linear mode, sensor_name f37, setting_size = 3

cup is in the picture with confidence:0.6189, bbox:[ 309   62 1240  915]
bottle is in the picture with confidence:0.5112, bbox:[1645  347 1921 1009]
...

算法渲染结果的HDMI输出如下图,示例图像中检测到了bottlecup

image-20220503221020331

提示:执行以上程序后,hdmi会显示视频画面,图像化功能会隐藏,请执行以下两条命令恢复图像化界面

sudo echo start > /sys/devices/virtual/graphics/iar_cdev/iar_test_attr
sudo echo enable2 > /sys/devices/virtual/graphics/iar_cdev/iar_test_attr

1.5. 接口说明

1.5.1. 接口总览

旭日X3派开发板外围提供了以太网、USB、摄像头、LCD、HDMI、40PIN等外围接口,方便用户进行图像多媒体、AI算法的开发和测试。开发板接口布局如下:

image-X3-PI-Interface

序号
功能
序号
功能
序号
功能
1 USB Type C电源接口 5 USB 2.0 Type A接口 9 HDMI接口
2 MIPI CSI接口 6 USB 3.0 Type A接口 10 电源LED指示灯
3 调试串口 7 以太网口 11 TF卡接口
4 Micro USB 2.0接口 8 40PIN接口

1.5.2. 电源接口

开发板支持USB Type C接口供电方式(接口1),兼容QC、PD快充协议。推荐使用支持QC、PD协议的电源适配器,或者至少搭配支持5V/2A的电源适配器使用。将电源适配器接入开发板USB Type C接口后,开发板红色电源指示灯亮起,说明开发板供电正常。

注意,请不要使用PC机USB接口为开发板供电,否则会因供电不足造成开发板工作异常。

1.5.3. 调试串口

开发板提供一路调试串口(接口3),波特率为921600。用户使用开发板套件中的串口USB转接板、杜邦线,将开发板串口与PC机进行连接后,可在PC端通过终端工具访问开发板。开发板串口连接方式如下图: image-X3-PI-Interface

1.5.4. 以太网

开发板提供一路千兆以太网接口(接口7),支持1000BASE-T、100BASE-T和10BASE-T标准,默认采用静态IP模式。如需确认设备当前IP配置,可通过串口登录设备,并用ifconfig命令进行查询,默认IP配置如下:

sunrise@ubuntu:/# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::211:22ff:fe6f:de17  prefixlen 64  scopeid 0x20<link>
        ether 00:11:22:6f:de:17  txqueuelen 1000  (Ethernet)
        RX packets 112  bytes 7327 (7.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 197  bytes 8678 (8.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 39  base 0xc000 

开发板插入网线后,以太网驱动会建立连接,如果系统有如下打印,说明网线连接正常:

[13293.952661] st_gmac a5014000.ethernet eth0: Link is Down
[13295.062996] st_gmac a5014000.ethernet: Link is Up - 1000/Full 
[13296.000750] st_gmac a5014000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx

1.5.5. 显示

开发板提供HDMI(接口9)、MIPI DSI(接口2背面)两种显示接口,两种显示方式互斥。开发板上电后,会根据Ubuntu系统版本显示不同的开机画面,Server版本显示地平线logo,Desktop版本显示Ubuntu登录界面。

切换HDMI显示的方法如下:

sed -i "/^f=/c f=\"video=hobot:x3sdb-hdmi\"" /etc/init.d/x3dispinit
reboot

切换MIPI DSI(LCD)显示的方法如下:

sed -i "/^f=/c f=\"video=hobot:x3sdb-mipi720p\"" /etc/init.d/x3dispinit
reboot

除显示开机画面外,开发板显示接口还支持实时显示摄像头、网络流画面功能,具体可以参考Sample示例章节。

1.5.6. USB

USB接口说明

开发板通过USB Hub、硬件开关电路扩展了多路USB接口,满足用户多路USB设备接入的需求。开发板USB接口描述如下:

接口类型 接口序号 接口数量 接口描述
Micro USB 2.0 接口4 1路 USB Device模式,用于连接主机实现ADB、Fastboot、UVC等功能
USB 2.0 Type A 接口5 2路 USB Host模式,用于接入USB 2.0外设
USB 3.0 Type A 接口6 1路 USB Host模式,用于接入USB 3.0外设

由于旭日X3芯片只提供一路USB接口,因此开发板通过硬件电路实现USB主从模式自动切换,用户无需关心USB主从模式,只需按照上表的逻辑连接设备即可。需要注意的是,开发板禁止同时使用USB Host、Device接口,否则会造成功能异常

接入U盘

开发板USB 2.0/3.0 Type A接口支持U盘功能,可自动检测U盘接入并挂载,默认挂载目录为/media/sda1。用户可通过touch命令确认U盘工作正常,如下:

sunrise@ubuntu:/media/sda1$ sudo touch test
[sudo] password for sunrise: 
sunrise@ubuntu:/media/sda1$ ls -l test 
-rwxr-xr-x 1 root root 0 Apr 30 21:19 test
sunrise@ubuntu:/media/sda1$

接入USB串口转接板

开发板USB 2.0/3.0 Type A接口支持USB串口转接板功能,可自动检测USB串口转接板接入并创建设备节点/dev/ttyUSB* 或者 /dev/ttyACM*(星号代表0开始的数字)。用户可参考 使用串口 章节对串口进行使用。

1.5.7. USB摄像头

开发板USB 2.0/3.0 Type A接口(接口5和6)支持USB摄像头功能,可自动检测USB摄像头接入并创建设备节点/dev/video8。用户可通过v4l2命令确认USB摄像头工作正常,如下:

sunrise@ubuntu:/media/sda1$ sudo v4l2-ctl -d /dev/video8 --all
Driver Info:
        Driver name      : uvcvideo
        Card type        : FHD Camera: FHD Camera
        Bus info         : usb-xhci-hcd.0.auto-1.2
        Driver version   : 4.14.87
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : uvcvideo
        Model            : FHD Camera: FHD Camera
        Serial           : 12345
        Bus info         : 1.2
        Media version    : 4.14.87
        Hardware revision: 0x00000020 (32)
        Driver version   : 4.14.87
Interface Info:
        ID               : 0x03000002
        Type             : V4L Video
Entity Info:
        ID               : 0x00000001 (1)
        Name             : FHD Camera: FHD Camera
        Function         : V4L2 I/O
        Pad 0x01000004   : Sink
          Link 0x0200000a: from remote pad 0x1000007 of entity 'Processing 2': Data, Enabled, Immutable
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
        Width/Height      : 1920/1080
        Pixel Format      : 'MJPG' (Motion-JPEG)
        Field             : None
        Bytes per Line    : 0
        Size Image        : 4147200
        Colorspace        : Default
        Transfer Function : Default (maps to Rec. 709)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)
        Flags             : 
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 1920, Height 1080
        Default     : Left 0, Top 0, Width 1920, Height 1080
        Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 1920, Height 1080, Flags: 
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags: 
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 30.000 (30/1)
        Read buffers     : 0

1.5.8. MIPI摄像头

开发板提供1路MIPI CSI接口(接口2),可实现MIPI摄像头的接入。目前开发板配件提供了2种规格的摄像头模组,以满足不同用户的功能需求。模组型号、规格如下:

序号 Sensor 分辨率 FOV I2C ID
1 GC4663 400W H:104 V:70 D:113 0x29
2 JXF37 200W H:62 V:37 D:68 0x40

摄像头模组通过24pin异面FPC排线跟开发板连接,注意排线两端蓝面向上插入连接器

以JXF37摄像头模组为例,安装完成后如下图:
image-X3-PI-Camera

安装完成后,用户可以通过i2cdetect命令确认模组I2C地址能否正常检测到。如检测不到,用户需要检查FPC排线连接是否正常。成功探测到I2C地址时,log打印如下所示:

sunrise@ubuntu:~# sudo i2cdetect -y -r 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- 
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

1.5.9. TF卡

旭日X3派开发板提供1路TF卡接口(接口11)。由于开发板系统需要从TF卡加载并运行,用户在使用开发板前,需要先完成TF卡镜像制作。推荐使用至少8GB容量的TF存储卡,以便满足Ubuntu操作系统及相关功能包的安装要求。

旭日X3派开发板使用中禁止热插拔TF存储卡,否则会造成系统运行异常,甚至造成存储卡文件系统损坏。

1.5.10. 40PIN

旭日X3派开发板提供40PIN标准接口,方便用户进行外围扩展,其中数字IO采用3.3V电平设计。40PIN接口定义如下:

image-20220501181722851

开发板40PIN接口位置提供了丝印网表,方便用户对照操作,PIN1、PIN40位置如下:

image-X3-PI-40Pin_Index

40PIN各功能的使用方法请查看 40PIN 功能使用 章节。

1.5.11. 蓝牙

1.5.11.1. 初始化

执行以下脚本程序完成初始化:

sudo startbt6212.sh

这个脚本完成以下工作:

  • 复位蓝牙

  • 创建 messagebus 用户和用户组,dbus-daemon 程序运行时需要使用该用户

  • 运行 brcm_patchram_plus 完成蓝牙的驱动加载和固件加载

  • 循环检查 /sys/class/bluetooth/hci0 目录是否存在,确认蓝牙驱动已经正常运行

  • 出现 Done setting line discpline 表示蓝牙启用成功

  • 执行 hciconfig hci0 up 完成蓝牙的Link Up

  • 执行 hciconfig hci0 piscan 进行蓝牙扫描,本步骤可以根据情况去掉

image-20220601172145987

执行成功后,确认以下进程是否正常运行:

/usr/bin/dbus-daemon

brcm_patchram_plus

/usr/lib/bluetooth/bluetoothd

1.5.11.2. 配网连接

执行sudo bluetoothctl进入交互模式下的蓝牙配置界面,出现了类似下图的设备信息表示蓝牙被识别到了,然后用show来查看蓝牙信息,留意蓝牙的powereddiscoverable状态。

image-20220601172604051

执行 power on 使能蓝牙,如下图所示:

image-20220601172501882

为了能够使蓝牙被附近的设备发现,需要执行discoverable on使能蓝牙并打开蓝牙可发现属性,如下图所示:

image-20220601172648853

此时使用手机或者电脑扫描蓝牙就可以发现 ubuntu 这个名称的蓝牙设备:

image-20220601175322650

接下来测试蓝牙的主动扫描功能,在bluetoothctl的交互界面输入scan on即可打开主动扫描,它会周期性地打印附近的设备,可以看到已经发现了我的手机设备,scan off关闭扫描功能并汇总打印扫描到的蓝牙设备:

image-20220601154131158

image-20220601154253947

然后就是和其他蓝牙的配对:

  • 配对命令:pair [targetMAC] ,输入该命令后,根据提示输入yes,对端蓝牙设备选择配对选项完成配对。

  • 配对成功后可以使用trust [targetMAC]来让下次自动连接

image-20220601154414717

经过以上操作后,蓝牙的扫描、配对的基本功能就完成了,如需使用更多功能,可查阅 BlueZ的官方帮助说明。