跳到主要内容

1. 快速开始

1.1 介绍

RUBIK Pi 3 基于高通QCS6490芯片,采用 Qualcomm® Kryo™ 670 CPU 和融合 AI 加速器架构的 Qualcomm® Hexagon™ 处理器,具备12.5 TOPS的卓越AI性能,适用于各种机器学习和人工智能应用场景。

RUBIK Pi 3 具有丰富的接口和功能设计,支持USB、Camera、DP、HDMI、ETH、3.5mm耳机、Wi-Fi、BT、M.2连接器、FAN、RTC、40 pin排针连接器等,满足多样化的开发需求,方便开发者快速开发和调试。RUBIK Pi 3同样也支持多种系统,如Qualcomm Linux、Canonical Ubuntu for Qualcomm Platforms*、Android 13等,灵活满足开发者特定应用要求。

Canonical Ubuntu for Qualcomm Platforms:计划中

1.2 参数

RUBIK Pi 3
芯片QCS6490
处理器

1 x Cortex-A78 2.7GHz

3 x Cortex-A78 2.4GHz

4 x Cortex-A55 1.9GHz

GPUAdreno 643 GPU @ 812 MHz
VPUAdreno 633 VPU
NPU12.5 TOPS
ISPSpectra ISP,可以做端侧的机器学习和机器处理
内存8GB LPDDR4x
存储128GB UFS 2.2
Wi-Fi & 蓝牙Wi-Fi 5和蓝牙5.2
摄像头接口2 x MIPI-CSI D-PHY 4-lane
USB

1 x USB Type-C (USB3.1 Gen1)

2 x USB3.0

1 x USB2.0

GPIO28个GPIO引脚
网口1000M
M.2接口M.2 Key M 2280(PCIe3.0 2-lane)
音频接口3.5mm耳机接口

1.3 准备

  • 装有 Windows10以上 或 Ubuntu18以上系统的电脑
  • RUBIK Pi 3
  • USB Type-A to Type-C 数据线
  • USB Type-A to Micro USB 数据线
  • 电源(12V3A Type-C)

1.3.1 安装驱动

1.3.1.1 Windows 环境下驱动安装

1.3.1.1.1 安装QUD

1.点击 https://github.com/rubikpi-ai/tools/blob/main/qud/qud.win.1.1_installer_10061.1.zip ,下载安装包:

2.将 qud.win.1.1_installer_10061.1.zip 解压,运行 setup.exe,如下图,点击 Next。

3.再次点击 Next。

4.选择 I accept the terms in the license agreement (我接受协议内容)后,点击 Next。

5.点击 Install。

6.点击 Finish,完成驱动安装。

1.3.1.1.2 安装Tflash

1.点击 https://github.com/rubikpi-ai/tools/blob/main/tflash/windows/TflashSetup_v1.2.0.4.exe ,下载安装包

2.打TflashSetup_v1.2.0.4.exe 进行安装,选择需要的语言,点击 OK。

3.选择要安装的位置,点击 Next。

4.点击 Next。

5.勾选 Create a desktop shortcut (创建桌面快捷方式),点击 Next。

6.点击 Install 进行安装。

7.勾选 Launch Tflash,点击 Finish 完成安装。

8.如果出现下面报错,点击 是(Y),进行跳转,按照提示下载需要的安装包。

9.双击下载的安装包, 点击 安装。

10.点击 关闭(C), 完成安装。

11.安装完成后,可在桌面和“开始”菜单中看到 Tflash 图标,如下图所示:

1.3.1.2 Ubuntu 环境下驱动安装

1.3.1.2.1 安装Tflash

1.点击 https://github.com/rubikpi-ai/tools/blob/main/tflash/ubuntu/Thundercomm-tflash-v1.0.0.deb ,下载安装包:

2.执行命令安装 Tflash。

sudo dpkg -i Thundercomm-tflash-v1.0.0.deb

3.安装完成后,请在终端中执行 tflash 命令。如出现以下界面,表明 Tflash 已安装成功:

1.3.2 镜像下载

RUBIK Pi 3 出厂预装Linux镜像供您快速进行开箱操作体验,如需体验最新版本的Linux镜像,或其他操作系统镜像,请访问官方网站 https://www.thundercomm.com/zh/product/rubik-pi/ 进行下载。

如您需要Linux源码,请访问GitHub进行下载, https://github.com/rubikpi-ai。

  • Qualcomm Linux :基于weston的桌面系统,系统较为精简,适合具备Linux开发经验,追求深度开发体验的开发者。

  • Canonical Ubuntu For Qualcomm Platforms (开发中):基于Ubuntu 24,系统完善,有更多的桌面应用,更好的使用体验,较多的开发资料,适合追求开发便捷的开发者。
  • 安卓13:基于谷歌AOSP,系统完善,有更好的使用体验,适合想做安卓应用的开发者。

1.3.3 镜像烧录

  • 首先进入烧录模式(9008模式):

1.将供电线接入到上图 10。

2.按住上图12的 EDL 按钮。

3.Type-C 数据线插入上图 5 等待3秒,进入9008模式。

1.3.3.1 Windows 烧录方法

1.打开 Tflash 软件, 如下图,确定设备进入 9008 模式:

2.根据需要烧写设备的存储类型,选择正确的 Storage Type ,RUBIK Pi 3 为 UFS

3.按需选择 Reset After Download Erase All Before Download,请谨慎选择 Erase All Before Download

  • Reset After Download:勾选后,烧写完成后设备将自动重启。
  • Erase All Before Download:勾选后,烧写前会对RUBIK Pi UFS各分区中的数据进行擦除。
注意
  • Reset After Download 和 Erase All Before Download 并不是必选项,可以都不勾选。
  • 如果烧写前后的UFS分区一致,勾选 Erase all Before Download 才会擦除数据。

4.烧写 FlatBuild Image:

  • 第1步. 点击 Browse。

  • 第2步. 进入 FlatBuild 目录,选择 Programmer File,并选择 prog_firehose_ddr.elf。

  • 第3步. 选择所有名称以“rawprogram”开头的 xml 文件。

  • 第4步. 选择所有名称以“patch”开头的 xml 文件。

设置完成后,可从 Tflash 界面获取相关设置。

  • 第5步. 点击 Download 开始刷机。

提示

烧写时间因个人电脑而异。在烧写过程中,可通过绿色进度条查看烧写进度。

烧写成功后,界面会显示如下 log:

  • 如已勾选 Reset After Download,则开发板将在烧写完成后自动重启;
  • 如未勾选Reset AfterDownload,断开电源线和 USB 线,使 RUBIK Pi 3 断电,再重连电源并按下 PWR ON 按钮启动开发板。

1.3.3.2 Ubuntu 烧录方法

1.进入 FlatBuild 包目录。

2.执行 tflash -r

提示

更多参数,可使用 tflash -h命令查看,这里 -r表示烧录完成后重启 RUBIK Pi 3。

3.屏幕上出现提示“Stop the ModemManager on your host PC and press Enter on your keyboard to continue...”时,按 Enter 键进行刷机;

tflash 运行结束后,如显示以下界面,则说明烧写成功。

提示

在 PC 上执行 tflash 时,需根据提示输入个人电脑的登录密码。

4.使用 -r参数烧写成功后,RUBIK Pi 3 自动重启。

1.4 开机

  • 接入电源后按下电源 PWR ON 按键触发开机。

1.5 关机

  • 输入命令poweroff 关机。

1.6 重启

  • 输入命令reboot 重启。

  • 长按12秒电源 PWR ON 按键重启。

1.7 串口登录

1.7.1 Windows

1.连接下图2中的串口线到电脑。

2.打开电脑设置,查看设备管理器对应的 COM 口并记录下来。

3.访问 https://mobaxterm.mobatek.net/ 下载 MobaXterm ,解压后即可使用。

4.打开 MobaXterm ,选择 Session->Serial,设置串口的波特率为115200。

5.点击 OK,按下回车,输入登录名和默认登录密码登录:

Qualcomm Linux

登录帐号: root

登录密码: rubikpi

提示

可通过 passwd 命令修改默认的密码,如:

passwd root

Alt text

1.7.2 Ubuntu

1.连接下图2中的串口线到电脑。

2.执行命令安装 minicom。

sudo apt update
sudo apt install minicom

3.输入以下命令检查USB端口。

ls /dev/ttyACM

Alt text

4.输入下面命令打开minicom, 按下回车,输入默认登录名和登录密码登录。

sudo minicom -D /dev/ttyACM0 -b 115200

Qualcomm Linux

登录帐号: root

登录密码: rubikpi

提示

可通过 passwd 命令修改默认的密码,如:

passwd root

Alt text

1.8 ADB 登录

1.8.1 Windows

1.8.1.1 准备

1.访问 https://developer.android.google.cn/tools/releases/platform-tools 下载 ADB和Fastboot 安装包并进行解压。

2.右键 我的电脑属性->高级系统设置->环境变量

或右键 我的电脑属性->在搜索栏中输入高级系统设置->环境变量

3.选择系统变量中的Path,点击编辑。

4.点击 新建,将 platform-tools 工具在步骤1解压的路径填写进去,点击 确定 保存环境变量。

1.8.1.2 ADB登录

按下 Win+R 输入CMD 打开 Windows 终端,在终端输入如下登录到 RUBIK Pi 3:

adb devices # 查看是否有设备连接
adb root # 以root用户登录
adb shell # 打开adb终端

1.8.2 Ubuntu

1.8.2.1 准备

1.输入如下命令安装 ADB 和 Fastboot 工具:

sudo apt install git android-tools-adb android-tools-fastboot wget

2.更新 udev rules 文件

a.使用如下命令打开并修改 51-qcom-usb.rules 文件。

sudo vi /etc/udev/rules.d/51-qcom-usb.rules

b.将如下内容,添加到文件中;若如下内容已经存在,可忽略这一步骤。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0666", GROUP="plugdev"

c.使用下面命令,重启 udev

sudo systemctl restart udev
注意

如果 RUBIK Pi 3 已经通过 USB 连接到个人电脑,请插拔 USB 线,重新连接,以使更新的规则生效。

1.8.2.2 ADB登录

在终端输入如下命令登录到 RUBIK Pi 3:

adb devices # 查看是否有设备连接
adb root # 设置为root用户
adb shell # 打开adb终端

1.9 SSH 登录

1.9.1 Windows

  • 确定网络连接状态

1.使用 SSH 登录需要 RUBIK Pi 3 连接网络,且主机和 RUBIK Pi 3 可 ping 通,如下所示,可在 RUBIK Pi 3 中使用如下命令,获取 RUBIK Pi 3 的IP地址。

ifconfig

2.按下 win+r 按键,在弹出的窗口中输入 cmd,点击 确定。

3.在终端中输入如下命令,查看执行结果。

ping 10.9.5.59

  • 进行SSH登录

1.打开MobaXterm软件。

2.点击 Session ,在弹出的界面中选择 SSH。**

3.输入要登录 RUBIK Pi 3 的 IP,点击 OK。

4.输入要登录的用户名回车后,再输入密码,再次回车登录 RUBIK Pi 3。

5.成功登录。

1.9.2 Ubuntu

  • 确定连接状态

1.使用 SSH 登录首先需要将 RUBIK Pi 3 连接网络,且主机和 RUBIK Pi 3 可 ping 通,如下所示,可在 RUBIK Pi 3 中使用如下命令,获取 RUBIK Pi 3 的IP地址。

ifconfig

2.在 Ubuntu 终端中输入如下命令,查看执行结果。

ping 10.9.5.59

  • 进行 SSH 登录

1.在 Ubuntu 终端中输入下面命令后回车,其中 root 表示要登录的用户,10.9.5.59 表示 RUBIK Pi 3 的IP。

ssh root@10.9.5.59

2.输入密码后回车,成功登录。

1.10 文件传输

1.10.1 ADB

  • 在PC终端中使用下面命令,上传文件 test.txt 到 /opt目录。

    adb push test.txt /opt
  • 在PC终端中使用下面命令,下载文件 test.txt 到PC当前目录。

    adb pull /opt/test.txt ./

1.10.2 SCP

SCP 传输需要 RUBIK Pi 3 正常联网,若 RUBIK Pi 3 的 IP 为 10.9.5.59, 在终端可输入下面命令:

提示

RUBIK Pi 3 的 IP 可通过在 RUBIK Pi 3 中输入 ifconfig命令获取。

  • 在PC终端中使用下面命令,上传文件 test.txt 到 /opt目录。
scp test.txt root@10.9.5.59:/opt
  • 在PC终端中使用下面命令,下载文件到PC当前目录。
scp root@10.9.5.59:/opt/test.txt ./

1.11 Ubuntu 开发环境搭建

1.11.1 软件安装

1.在 Ubuntu 终端中使用下面命令,安装软件。

sudo apt update
sudo apt install repo gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool locales tar python-is-python3 file libxml-opml-simplegen-perl vim whiptail bc
sudo apt-get install lib32stdc++6 libncurses5 checkinstall libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev curl git-lfs

2.在 Ubuntu 终端中使用下面命令,安装 Python 3.10.2,在 Linux kernel 的打包过程中用到了 python 3.10 命令,如果已经有 Python 3.10.2 或更高版本,请跳过这个步骤。

python --version
# Download it in a directory of your choice
wget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz
tar -xvf Python-3.10.2.tgz
cd Python-3.10.2
./configure --enable-optimizations
make
sudo make install

3.在 Ubuntu 终端中使用下面命令,安装 pefile。

sudo pip3.10 install pefile

1.11.2 安装交叉编译工具

1.在 Ubuntu 终端中使用下面命令,下载 RUBIK Pi 3 的交叉编译工具链:

git clone https://github.com/rubikpi-ai/toolchains.git
git lfs pull

2.在Ubuntu终端中使用下面命令,安装交叉编译工具链:

cd toolchains
./qcom-wayland-x86_64-meta-toolchain-armv8-2a-qcm6490-toolchain-1.0.sh

3.按照提示安装交叉编译环境,如下输入安装目录的绝对路径回车后,输入 Y 行安装。

4.安装完成后到安装目录执行如下命令,设置交叉编译环境。

source environment-setup-armv8-2a-qcom-linux

5.在 Ubuntu 终端中使用下面命令,查看 gcc 工具链版本,若输出如下内容说明交叉编译环境设置成功。

aarch64-qcom-linux-gcc -v

1.11.3 交叉编译工具使用方法

在1.11.2小节中,通过 source environment-setup-armv8-2a-qcom-linux 命令设置好交叉编译环境后,可以通过下面的方法,交叉编译 RUBIK Pi 3 的可执行程序。

1.11.3.1 使用 Makefile 构建

交叉编译需要设置头文件路径(sysroot),可使用 --sysroot=dir 参数指定。

aarch64-qcom-linux-gcc --sysroot=/home/zhy/rubikpi/sdk/sysroots/armv8-2a-qcom-linux
注意

在上面命令中,是将交叉编译工具链安装在了 PC 机 /home/zhy/rubikpi/sdk 目录下,请按实际安装目录进行修改。

1.11.3.2 使用CMake构建项目

如下为 aarch64.cmake 的简单示例:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm64) #设置目标处理器架构

#设置sysroot
set(TOOLCHAIN_DIR /home/zhy/rubikpi/sdk/sysroots/armv8-2a-qcom-linux)
set(CMAKE_SYSROOT ${TOOLCHAIN_DIR}/sysroots/armv8-2a-qcom-linux)

#设置交叉编译器
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-g++)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

在使用Cmake构建项目时,需要按项目情况创建 CMakeLists.txt,并执行如下命令,生成 Makefile 文件。

cmake -DCMAKE_TOOLCHAIN_FILE=aarch64.cmake 

1.12 Linux kernel

推荐在 Ubuntu 18 及以上系统下进行 Linux kernel 相关的开发。

1.12.1 代码下载

git clone https://github.com/rubikpi-ai/linux.git

1.12.2 代码编译

1.设置交叉编译环境,具体请参考 1.11.2 安装交叉编译工具小节。

source <your toolchains directory>/environment-setup-armv8-2a-qcom-linux
注意

交叉编译环境只对当前终端有效。

若出现如下错误,可按提示输入 unset LD_LIBRARY_PATH 命令后,再次执行上面命令。

2.进入内核目录,整编内核。

./rubikpi_build.sh -a
注意
  • 第一次编译的时间会比较长,时间因个人电脑配置而异,普遍在20分钟之内,当编译成功后,后面对代码修改只会编译修改的部分;

  • 使用make clean命令可以清理内核目录,清理后所有的编译生成物和部分配置内容都会被删除掉。

3.进入内核目录,打包内核、设备树镜像。

./rubikpi_build.sh -dp -ip  # 打包镜像

注意

如果打包镜像时报错: Alt text

执行下面命令编辑 .mtoolsrc 文件,并在其中添加 mtools_skip_check=1,然后再重新打包镜像。

vim ~/.mtoolsrc
  • 进入内核目录,烧录内核、设备树镜像。
./rubikpi_flash.sh -d -i -r    # 烧录
注意

烧录前,RUBIK Pi 3 需要进入 fastboot 模式,有下面两种进入方法:

a.在 RUBIK Pi 3 终端输入:reboot bootloader,进入 fastboot 模式后,RUBIK Pi 3 上的蓝灯会亮起来。

b.按住电源按钮开机,直到 RUBIK Pi 3 上的蓝灯亮起。

关于 ./rubikpi_build.sh./rubikpi_flash.sh 脚本的使用方法,可使用 -h 参数进行查看。

  • 单独编译ko驱动模块

1.创建Makefile文件如下,修改 KDIR 为实际 kernel 源码在个人电脑上的目录。

obj-m += hello.o
KDIR:=/home/rubikpi/kernel-6.6
PWD?=$(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
echo $(PWD)
clean:
rm -f *.ko *.o *.mod *.mod.o *.mod.c *.symvers *.order

2.创建hello.c文件如下:

#include <linux/module.h>
#include <linux/init.h>

static int hello_init(void)
{
printk("hello RUBIK Pi!\n");
return 0;
}

static void hello_exit(void)
{
printk("bye RUBIK Pi!\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_VERSION("V1.0");
MODULE_AUTHOR("RUBIK Pi");

3.执行命令编译ko模块:

export ARCH=arm64
export CROSS_COMPILE=aarch64-qcom-linux-
make

4.将 hello.ko 传到 RUBIK Pi 3 中,可以使用 ADB、SCP 等方式。

5.在 RUBIK Pi 3 中执行命令进行验证:

insmod hello.ko 
rmmod hello.ko
dmesg | grep "RUBIK Pi"

Alt text

1.12.3 内核配置

使用 menuconfig 对 linux 内核进行配置,执行如下命令:

cd kernel-6.6/
make ARCH=arm64 menuconfig

配置完成并执行如下命令将配置保存。

make ARCH=arm64 savedefconfig
cp defconfig ./arch/arm64/configs/rubik_pi3_defconfig

1.12.4 目录分析

在 1.12.1 代码下载小节,执行完 git clone命令后,RUBIK Pi 3 linux 代码仓库的目录如下:

其中重要的文件夹或文件的含义如下:

名字描述名字描述
arch架构相关的目录security安全架构相关的目录
block块设备相关的目录sound音频系统相关的目录
certs认证和签名相关的目录tools内核交互工具的目录
crypto加密相关的目录usr与 initramfs 相关的目录,用于生成initramfs
documentation文档相关的目录virt提供虚拟机技术(KVM)的目录
drivers驱动相关的目录rustRust相关的目录
firmware固件相关的目录rubikpiRUBIK Pi 3 相关的目录,存放编译工具等
fs文件系统相关的目录techpack高通平台相关的驱动
include头文件相关目录.config内核编译最终使用的配置文件
init内核初始化相关的目录Makefile编译内核的主要文件
ipc进程间通信相关的目录Kbuild配置内核设定的脚本
kernel内核最核心部分代码的目录Kconfig图形化配置界面的配置文件
lib内核核心库代码的目录MAINTAINERS维护者名单
mm内存管理相关代码的目录CREDITSLinux贡献者
net网络协议相关的代码目录COPYING版权声明
samples内核编程范例相关的目录rubikpi_build.shRUBIK Pi 3 提供的编译、打包脚本
scripts内核编译、配置相关脚本的目录rubikpi_flash.shRUBIK Pi 3 提供的烧录脚本

1.12.4.1 设备树

RUBIK Pi 3 的顶层设备树是 rubikpi3-c6490.dts,可以在 arch/arm64/boot/dts/qcom 目录下找到,对于设备树的所有修改,推荐在此文件上进行。

除此之外,在开发过程中,同级目录的 sc7280.dtsi 也可能会高频查看, sc7280.dtsi 中拥有 GPIO、SPI、I2C、UART、CPU、GPU 等开发过程中较为常用的节点。