sTPC-EXXX-3568B系列

产品系列:sTPC-EXXX-3568B(E101 / E121 / E150 / E156 / E170 / E215) · 瑞芯微 RK3568 · 10.1″ ~ 21.5″ 无风扇 ARM 触控一体机(PANEL PC)

目录 [隐藏]

1 资源特性

1.1 产品简介

sTPC-EXXX-3568B 系列(量产型号 sTPC-E101-3568B / E121-3568B / E150-3568B / E156-3568B / E170-3568B / E215-3568B)是基于瑞芯微 RK3568 平台的无风扇 ARM 触控一体机(PANEL PC),屏幕尺寸覆盖 10.1″ / 12.1″ / 15″ / 15.6″ / 17″ / 21.5″ 六种规格。

整机采用铝镁合金前框 + 全封闭后箱,正面为多点电容式触摸屏,背部下方集中布置电源、串口、USB、HDMI、网口等对外接口,天线与 SIM 卡位于背部上方。支持 VESA 支架与嵌入式(开孔)两种安装方式,适用于产线看板、设备 HMI、自助查询终端等工业现场。

产品特点

型号命名规则

字段 含义
sTPC 触控一体机系列(SmartLinc Touch Panel Computer)
E101 / E121 / E150 / E156 / E170 / E215 屏幕尺寸:10.1″ / 12.1″ / 15″ / 15.6″ / 17″ / 21.5″
3568B 主控平台:Rockchip RK3568,B 版整机

1.2 整机规格

项目 规格
处理器 Rockchip RK3568,4 核 4 × Cortex-A55,最高主频 2.0GHz
GPU Mali-G52
NPU 1 TOPS(INT8)
内存 2GB / 4GB(板载)
存储 板载 32GB eMMC
存储扩展 1 × Micro SD(TF)卡槽
显示输出 1 × HDMI,最高支持 3840 × 2160
以太网 1 × 10/100/1000Mbps 速率自侦测
无线 板载 2.4G/5G 双频 Wi-Fi,802.11 a/b/g/n/ac + Bluetooth 5.0
4G LTE 4G 模组 EG800AK-C(系统自动拨号),见 4.4
USB 2 × USB3.0(其中 1 路与 OTG 复用)+ 2 × USB2.0
串口 4 × 串口:2 × RS485 + 2 × RS232(3.5mm 间距 3P 可插拔端子),ttyS1 ~ ttyS4
音频 1 × SPK(8Ω 6W,PH2.0-4P),1 × Ø3.5 Mic in
SIM 2 × Micro SIM 插槽(二选一使用)
指示灯 1 × 电源指示灯(绿色),1 × 系统指示灯(蓝色)
按键 1 × Recover 刷机键(针孔),1 × Return 返回键(短按返回 / 上电时长按 3s 进入烧录)
GPIO 16 针(PH2.0-16P)端子,奇数脚 GPO / 偶数脚 GPI,选配引出,见 2.3
触摸屏 多点电容式,透光率 ≥ 87%,USB 控制器
操作系统 Android 11 / Ubuntu 20.04(标准);Debian 11 按项目提供
视频编解码 H.264 / H.265 硬件编解码(VPU),见 5.13
电源输入 DC 12V(±0.3V),5.5×2.1mm 圆头,带过流、过压保护;E150(15″)支持 DC 12~24V 宽压
整机功耗 ≤ 20W
结构 铝镁合金外壳,无风扇,支持 VESA / 嵌入式安装
工作温度 -20 ~ 70℃(10.1″ / 12.1″ / 15″);0 ~ 50℃(15.6″ / 17″ / 21.5″)
存储温度 -20 ~ 70℃(10.1″ / 12.1″ / 15″);-20 ~ 60℃(15.6″ / 17″ / 21.5″)
相对湿度 5 ~ 95% @40℃(无凝露)
振动 1.5Grms,IEC 60068-2-64,随机 5~500Hz,1hr/轴
冲击 10G,IEC 60068-2-27,半正弦波,持续 11ms
EMC CE / FCC Class A

提示:产品规格如有更改,恕不另行通知。本节数据对应规格书 v1.3(更新日期 2026-06-24)。

1.3 型号与配置

型号 尺寸 分辨率 亮度 背光 MTBF 工作温度 内存 2GB 料号 内存 4GB 料号
sTPC-E101-3568B 10.1″ 1280 × 800 350cd/m² 30000hrs -20 ~ 70℃ B11.AE101.38.0024 B11.AE101.38.0025
sTPC-E121-3568B 12.1″ 1024 × 768 500cd/m² 50000hrs -20 ~ 70℃ B11.AE121.38.0004 B11.AE121.38.0005
sTPC-E150-3568B 15″ 1024 × 768 350cd/m² 50000hrs -20 ~ 70℃ B11.AE150.38.0018 B11.AE150.38.0019
sTPC-E156-3568B 15.6″ 1920 × 1080 250cd/m² 15000hrs 0 ~ 50℃ B11.AE156.38.0012 B11.AE156.38.0013
sTPC-E170-3568B 17″ 1280 × 1024 250cd/m² 30000hrs 0 ~ 50℃ B11.AE170.38.0010 B11.AE170.38.0011
sTPC-E215-3568B 21.5″ 1920 × 1080 250cd/m² 30000hrs 0 ~ 50℃ B11.AE215.38.0006 B11.AE215.38.0007

提示:各型号均为电容触摸屏 + 32GB 板载 eMMC,内存分 2GB / 4GB 两种配置,实配料号见上表;15″ 机型(E150)的电源宽压与接口组数差异见 1.2、2.3。

1.4 可选配件

选项 描述
电源适配器 12V 3A 电源适配器,带国标电源线
4G 套件 EG800AK-C 模组 + 4G 外置天线(SMA)
Wi-Fi 天线 胶棒天线、吸盘 3M 天线

2 接口布局和尺寸

2.1 整机外观

整机为正屏 + 背出线结构:正面只有触摸屏与铝合金前框;背部上方为天线、SIM 卡座与喇叭接口区,下方为对外接口区(电源、串口、USB、HDMI、网口),四角为 VESA 安装孔。

整机正面 立体视角
stpc_e156_front_view.jpg
正面:多点电容触摸屏 + 铝镁合金前框
stpc_e156_3568b_perspective.jpg
立体:整机结构与背部扩展舱
整机背面 接口区(正视)
stpc_e156_3568b_back.jpg
背面:VESA 孔位 + 接口区
stpc_e156_3568b_io_lower.jpg
接口区:DC 12V / 串口 / HDMI / 网口 / USB 一字排开

2.2 接口概览

整机对外接口在背部下方从左到右依次为:DC 12V → PWR / SYS 指示灯 → Recover → Return → MIC → RS485 → RS232 → HDMI → LAN → USB3.0 → USB2.0;背部上方自左向右为 SIM 卡座 → 4G 天线 → Wi-Fi / BT 天线 → SPK 喇叭座 → GPIO 引出座。图中标注与下表序号一一对应,点击图片可查看高清大图。

接口布局(正视) 接口布局(斜视)

正视:对外接口在背部下方一字排开

斜视:RS485 / SIM / 扬声器 / 天线座位置
序号 丝印 接口 数量 说明
1 DC 12V 电源输入 1 5.5×2.1mm 圆头,内正外负
2 PWR 电源指示灯 1 绿色,通电常亮
3 SYS 系统指示灯 1 蓝色,系统运行时常亮
4 Recover 刷机键 1 针孔式,断电按住上电进入 Loader / Maskrom
5 Return 返回键 1 轻触按键,Android 下等效 BACK
6 MIC 麦克风输入 1 Ø3.5 phone jack
7 RS485 RS485 串口 2 3.5mm 3P 端子,A1 / B1 / G1,ttyS1
8 RS232 RS232 串口 2 3.5mm 3P 端子,R2 / T2 / G2,ttyS2
9 HDMI HDMI 输出 1 标准 A 型,最高 3840×2160
10 LAN 以太网 1 RJ45,10/100/1000M 自适应
11 USB3.0 USB3.0 2 蓝色双层,下口为 OTG 复用(烧录 / ADB)
12 USB2.0 USB2.0 2 黑色双层
13 SIM Micro SIM 2 二选一使用
14 4G 4G 天线 1 SMA 接口
15 Wi-Fi/BT Wi-Fi 天线 1 SMA 接口
16 SPK 扬声器 1 PH2.0-4P,8Ω 6W
17 GPIO GPIO 扩展 1 选配引出
18 GND 接地柱 1 M4 接地螺钉

提示:表中数量为系列最大配置;实配组数随机型与配置而变(图中 10.1″ 样机为 RS485、RS232 各 1 组)。接线与设备节点以机器丝印为准,节点对应关系见 4.5。

2.3 接口引脚定义

整机对外均为成品连接器,无裸板插针。串口与喇叭使用 3.5mm / 2.0mm 间距可插拔端子,接线时按丝印对位,建议线径 0.2 ~ 1.5mm²,剥线长度 6 ~ 7mm。

DC 12V(5.5×2.1mm 圆头)

项目 定义
内芯 +12V
外环 GND
输入范围 DC 12V ±0.3V(15″ 机型 12 ~ 24V)
保护 过压保护、过流保护

RS485(3.5mm 3P 端子,2 组:ttyS1 / ttyS3)

脚位 RS485-1(ttyS1) RS485-2(ttyS3) 说明
1 A1 A3 差分正(485_A)
2 B1 B3 差分负(485_B)
3 G1 G3 信号地

半双工,收发方向由硬件自动切换,无需软件控制 RTS。

RS232(3.5mm 3P 端子,2 组:ttyS2 / ttyS4)

脚位 RS232-1(ttyS2) RS232-2(ttyS4) 说明
1 R2 R4 接收 RXD,接对端 TXD
2 T2 T4 发送 TXD,接对端 RXD
3 G2 G4 信号地

全双工,与外部设备连接时 R/T 交叉、GND 共地。

提示:丝印后缀与设备节点编号一致(A1 → ttyS1、R2 → ttyS2、A3 → ttyS3、R4 → ttyS4),因此 RS485 占 ttyS1 / ttyS3、RS232 占 ttyS2 / ttyS4,序号不连续属正常。

SPK(PH2.0-4P)

脚位 丝印 信号 说明
1 L+ 左声道 + 8Ω 6W
2 L- 左声道 - —
3 R- 右声道 - —
4 R+ 右声道 + 8Ω 6W

MIC(Ø3.5 phone jack)

部位 信号 说明
TIP MIC+ 麦克风信号
SLEEVE GND 地

USB

接口 模式 说明
USB3.0(上排) Host 5Gbps,接 U 盘 / 键鼠 / 工业相机
USB3.0/OTG(下排) Host / Device Device 模式下用于系统烧录与 ADB 调试
USB2.0(双层) Host 480Mbps,接 U 盘 / 键鼠 / 打印机

HDMI / LAN / SIM

接口 规格
HDMI 标准 A 型 19pin,最高 3840×2160
LAN RJ45 8P8C,10/100/1000M 自适应,支持 Auto-MDIX,带 Link/Act 指示灯
SIM 2 × Micro SIM,二选一使用,插入方向以卡座丝印为准

GPIO(PH2.0-16P 端子,选配引出)

整机 GPIO 为选配引出(背部 GPIO 座 / 内部插针),接线按机器丝印对位。

脚位 方向 说明
奇数脚 1 / 3 / 5 / 7 / 9 / 11 / 13 / 15 GPO 通用输出,硬件固定,只作输出
偶数脚 2 / 4 / 6 / 8 / 10 / 12 / 14 / 16 GPI 通用输入,硬件固定,只作输入

GPO / GPI 由硬件固定,不能通过软件互换;下表为系统侧 GPIO 编号,与端子脚位序号是两个概念。

系统 GPIO 编号

用途 系统 GPIO 编号
GPO(数字输出) 95、94、21、22、140、141
GPO / GPI(可输出 / 输入) 13、14、96、93、108、107

GPIO 编号为内核 gpiochip 全局编号,不同固件版本可能整体偏移;未导出的引脚需先导出再操作。

2.4 机械尺寸

型号 整机尺寸 W×H×D(mm) 开孔尺寸(mm) 净重
sTPC-E101-3568B 269 × 188 × 39 261 × 180 1kg
sTPC-E121-3568B 315 × 250 × 44 307 × 242 2kg
sTPC-E150-3568B 368 × 292 × 46 358 × 282 2.5kg
sTPC-E156-3568B 400 × 257 × 39 392 × 249 3kg
sTPC-E170-3568B 408 × 341 × 46 398 × 331 4kg
sTPC-E215-3568B 549 × 341 × 46 539 × 330 5kg

10.1″ 机型尺寸图(单位 mm):整机 269 × 188 × 39,开孔 261±2 × 180±2,安装孔 4 × Ø10,VESA 孔 4 × M4 深 6mm。其余尺寸机型的尺寸图见规格书第 2~3 页。

结构说明

3 快速入门

3.1 系统下载

Android系统

Linux系统

3.2 烧录工具下载

两个工具均为瑞芯微官方发布版本,已作为本站附件上传,下载链接见各条目末尾:

提示:驱动未安装成功时,设备管理器会出现未知设备,需重新安装驱动后再烧录。

3.3 系统烧录

Linux 与 Android 共用同一套瑞芯微工具烧录,整机无需拆机:USB3.0/OTG 口 接线、Recover 针孔 进入烧录模式。

① 连接 OTG 口

取一根 USB3.0 公对公双头线,一端接整机接口区下排的蓝色 USB3.0/OTG 口,另一端接电脑 USB 口:

② 安装瑞芯微 USB 驱动

进入驱动包目录,双击 DriverInstall.exe:

弹出「瑞芯微驱动助手」后点「驱动安装」,等待进度条走完:

提示:驱动异常或换电脑后无法识别设备时,先在驱动助手中点「驱动卸载」,再重新点「驱动安装」。

③ 打开烧录工具

解压工具包,双击 RKDevTool.exe:

④ 让整机进入 Loader 模式

整机先断电,用针状物按住背部 Recover 孔不松手,再接入 DC 12V 上电,约 2 秒后松开:

⑤ 确认设备已识别

RKDevTool 底部出现 发现一个 LOADER 设备 即识别成功:

若一直显示「没有发现设备」,回到第 ④ 步重新进入,或更换 USB 口与数据线。

⑥ 选择固件并升级

切到「升级固件」页,先点「固件」选择 update.img,再点「升级」:

烧录进度到 100% 后设备自动重启,首次开机约 30 ~ 60 秒。

提示:

  1. 由 Android 切换至 Linux(或反向)时若无法识别设备,可在「高级功能」中执行「进入 Maskrom」后重新烧录
  2. 烧录过程中禁止断电、拔线,否则可能无法开机,需重新进入 Loader 重烧
  3. 高级用户可在 Linux 下用 upgrade_tool 命令行烧录:sudo upgrade_tool uf update.img

3.4 U盘升级

Android 整机可用 U 盘离线升级,全程不需要连接电脑。本节只适用于 Android 固件;Linux 下的对应流程见 5.10,在线升级见 4.13。

3.4.1 准备 update.img

固件来源二选一:

  1. 向我司获取现成的 update.img(获取方式见 3.1)
  2. 自行用 SDK 打包:在 SDK 根目录执行整包编译,生成 rockdev/Image-xxx/ 目录,再执行 ./mkupdate.sh(或 make otapackage)
# 打包整包镜像
./build.sh updateimg
ls -lh rockdev/update.img

U 盘要求:FAT32 格式,可用容量 ≥ 4GB(建议 ≤ 32GB),update.img 放在根目录且文件名不变。

3.4.2 U盘本地升级

  1. 把 update.img 拷到 U 盘根目录
  2. 把 U 盘插入整机的 USB 口(USB3.0 / USB2.0 任意一口均可)
  3. 系统识别到升级包后按弹窗提示确认,升级过程中保持供电,完成后整机自动重启

提示:插入 U 盘后无升级提示时,先确认文件名与 U 盘格式,再重启整机重试;Android 联网升级见 4.13。

4 Android系统的使用

本章只针对 Android 系统(Android 11)。Linux(Ubuntu / Debian)下的同名功能集中在第 5 章,两章界面、工具、命令均不混用;Android 应用层的接口调用统一见 4.12。

4.1 开启ADB调试

4.1.1 USB ADB使用方法

  1. 使用 USB 数据线连接整机 USB3.0/OTG 口(下排蓝色口)与电脑
  2. 「设置 → 关于平板电脑」,连续点击「版本号」7 次开启开发者选项
  3. 进入「开发者选项」,打开「USB 调试」
  4. 电脑端执行 adb devices,首次连接需在整机弹窗点击「允许」
adb devices
# List of devices attached
# 0123456789ABCDEF	device

4.1.2 网络ADB使用方法

整机与电脑同网段时,可无线调试,无需数据线。

adb connect 192.168.8.55:5555
adb devices

4.2 WiFi使用方法

  1. 「设置 → 网络和互联网 → WLAN」,打开开关
  2. 选择目标热点并输入密码(板载 2.4G/5G 双频,802.11 a/b/g/n/ac)
  3. 连接成功后可在「网络详情」中查看 IP 地址
  4. 信号弱时可调整背部 Wi-Fi/BT SMA 天线角度,或改用吸盘天线
adb shell dumpsys wifi | grep -i "curState"
adb shell ifconfig wlan0

4.3 以太网使用方法

整机为单网口(LAN,千兆自适应),Android 下设备名为 eth0。以下命令均在 adb shell 中执行,修改配置需 su 权限。

查看设备

ip link show

使用(动态 IP)

su
ifconfig eth0 up
ifconfig eth0 dhcp      # 部分固件需改用 dhcpcd eth0

使用(静态 IP)

su
ifconfig eth0 down
ifconfig eth0 192.168.8.55 netmask 255.255.255.0
ifconfig eth0 up

测试

ping -c 4 192.168.8.1

提示:静态 IP 需开机自动生效时,在系统内配置 eth0 静态地址,或应用层通过 ConnectivityManager 设置以太网静态 IP。

4.4 4G模块使用方法

整机 4G 采用 Quectel EG800AK-C 模组(插装于 6A12-J 载板),系统上电后自动拨号,无需手工配置。

4.4.1 支持列表

整机仅支持下表所列 4G 模组,USB ID 用于在板端 lsusb 输出中确认模组是否已被识别:

模组型号 制式 USB ID
Quectel EG800AK-C LTE 4G 2c7c:6002

4.4.2 步骤

4G 模组

  1. 接上 4G 天线,SIM 卡缺口朝外插入卡座(芯片面朝板)
  2. 上电后在「设置 → 网络和互联网 → 移动网络」中确认已识别 SIM 卡
  3. 打开移动数据,状态栏出现 4G 图标即可上网
adb shell lsusb
# Bus 002 Device 002: ID 2c7c:6002 Quectel Wireless Solutions Co., Ltd. EG800AK-C

查看信号与网络注册(AT 命令)

模组 AT 口一般为 /dev/ttyUSB2,需 root 权限:

echo -e "AT+CPIN?\r\n"   > /dev/ttyUSB2   # SIM 卡是否插好
echo -e "AT+CSQ\r\n"     > /dev/ttyUSB2   # 信号强度,0~99 为正常
echo -e "AT+COPS?\r\n"   > /dev/ttyUSB2   # 是否注册到运营商网络
echo -e "AT+CGREG?\r\n"  > /dev/ttyUSB2   # 数据网络是否就绪

提示:SIM 卡需在断电状态下插拔,热插拔可能导致模组不识别,需重新上电。

4.5 串口使用方法

整机提供 2 路 RS485 与 2 路 RS232,Android 下节点与端子定义如下(最终以背部丝印为准):

接口 设备节点 引脚定义
RS485-1 /dev/ttyS1 A1 / B1 / G1
RS485-2 /dev/ttyS3 A3 / B3 / G3
RS232-1 /dev/ttyS2 R2 / T2 / G2
RS232-2 /dev/ttyS4 R4 / T4 / G4

4.5.1 测试工具 ComAssistant

Android 下串口测试统一使用 ComAssistant(串口助手 App):

  1. 安装并打开 ComAssistant,首次运行授予存储与串口设备权限
  2. 在设备列表中选择目标节点:RS485 选 /dev/ttyS1 或 /dev/ttyS3,RS232 选 /dev/ttyS2 或 /dev/ttyS4
  3. 设置参数 115200、8 位数据、1 位停止、无校验(8N1)
  4. 点击「打开串口」,在发送区输入内容后点「发送」;回环或对发时可同时观察接收区

提示:ComAssistant 需要 Root 权限访问 /dev/ttyS*;打开失败时先在 adb shell 中执行 su 与 ls -l /dev/ttyS* 确认节点权限。

4.5.2 测试方式

  1. RS232 回环:跳帽短接同一 232 节点的 R 与 T
  2. RS232 — RS232 对发:交叉接线(R↔T,GND 共地)
  3. RS232 — RS485 对发:经 232 转 485 模块
  4. RS232 — RS232 转 USB — PC 端串口助手
  5. RS485 — RS485 转 USB — PC 端串口助手
  6. RS485 回环:短接 A 与 B

注意事项

  1. 整机为 3.5mm 3P 可插拔端子(无 DB9),配压接端子或转接线使用;不同厂商的转接线线序可能不同,A / B 或 R / T 反接会直接导致通信失败
  2. RS485 为半双工,方向由硬件自动切换,收发切换时注意帧间隔

4.5.3 应用层调用

应用内不要直接用 shell 打开节点,使用 NodkaAPI 的 uart_ 接口(见 4.12.5):

NodkaAPI api = NodkaAPI.nodkaAPICreate(context);
api.uart_open("/dev/ttyS2", 115200);
api.uart_send("/dev/ttyS2", "hello".getBytes());
api.uart_receive("/dev/ttyS2", new UartReceiveDataCallback() {
    @Override
    public void onReceiveData(byte[] data) {
        // 处理收到的数据
    }
});
api.uart_close("/dev/ttyS2");

4.6 USB与SD卡

整机提供 2 × USB3.0(下排为 OTG 复用)与 2 × USB2.0,另支持 SD 卡。

U 盘

  1. 插入 U 盘,文件管理器左侧出现「USB 存储设备」
  2. 进入后能浏览 U 盘内容即识别正常
  3. 拔出前先在「设置 → 存储」中卸载,避免数据损坏
adb shell ls /storage          # 可见 udisk0 或 91A3-2B1C 形式的挂载点
adb shell lsusb

SD 卡

adb shell ls /storage          # 可见 xxxx-xxxx 形式的 SD 卡挂载点
adb shell dumpsys mount | grep -i mmc

提示:OTG 口在 Device 模式(烧录 / ADB)下不能同时作为 Host 使用;插 U 盘前请确认系统已退出烧录模式。Linux 下的手工挂载方法见 5.5。

4.7 音频测试

整机音频由 SPK(PH2.0-4P,8Ω 6W) 输出、MIC(Ø3.5) 输入,无内置喇叭时需外接。

喇叭输出测试

  1. 8Ω 喇叭接 SPK 端子(L+ / L- / R+ / R-)
  2. 打开系统自带「音乐」播放器播放测试音频,按音量键确认音量可调、左右声道正常
  3. 测试文件位于 /nodka_test/LR_audio.wav,可用「文件」App 直接播放

麦克风录音测试

  1. 插入 Ø3.5 麦克风或使用板载 MIC
  2. 打开系统自带「录音机」App,录制约 5 秒后回放,确认清晰无杂音

查看音频通路

adb shell dumpsys media.audio_flinger | grep -i "Output thread"
adb shell getprop | grep -i audio

提示:无声音时先确认 SPK 端子 L+ / L- / R+ / R- 与喇叭线序一致,再用 adb shell tinymix 检查功放通路是否打开。Linux 下用 aplay / arecord,见 5.1。

4.8 HDMI与双屏显示

整机支持内部屏 + HDMI 同时输出,HDMI 最高 3840 × 2160。

设置 HDMI 输出

  1. 接入 HDMI 显示器,进入「设置 → 显示 → HDMI」
  2. 选择分辨率与刷新率(推荐 1920 × 1080 @ 60Hz),确认画面稳定无闪烁
  3. 选择显示模式:同显(镜像)或异显(扩展)
模式 说明
同显(镜像) 内部屏与 HDMI 显示相同画面,分辨率取二者较小值
异显(扩展) 两屏独立画面,应用侧需指定 DisplayId

命令行查看

adb shell wm size
adb shell wm density
adb shell dumpsys display | grep -i "mDisplayId"

提示:应用内可用 display_setScreenRotation / display_setScreenBrightness 等接口控制显示(见 4.12.3)。Linux 下用 xrandr 或 weston.ini,见 5.6。

4.9 按键与指示灯测试

项目 位置 现象 / 操作 判定
PWR 指示灯 接口区左侧 接入 DC 12V 后绿色常亮 灯亮即电源正常
SYS 指示灯 PWR 右侧 系统启动完成后蓝色常亮 灯亮即系统运行
Recover 指示灯右侧针孔 断电按住 + 上电 2 秒后松开 RKDevTool 识别到 LOADER 设备
Return Recover 右侧 按下返回上一级;长按上电 3s 进入烧录模式 界面返回 / 进入 Loader

Return 按键测试(getevent)

adb shell getevent -l
# /dev/input/event2: EV_KEY       KEY_BACK         DOWN
# /dev/input/event2: EV_SYN       SYN_REPORT       00000000
# /dev/input/event2: EV_KEY       KEY_BACK         UP

按下 Return 出现 DOWN,松开出现 UP,即按键与驱动正常。

Return 按键:进入烧录模式

长按 Return 按键不放,上电 3 秒后松开即可进入烧录模式,无需使用 Recover 针孔。

Recover 快速自检

断电按住 Recover 针孔再上电,RKDevTool 中出现 LOADER 设备即正常(烧录步骤见 3.3)。

提示:Recover 为针孔结构,请使用直径 ≤ 1.5mm 的针状物,避免损伤内部轻触开关。

4.10 触摸屏测试

整机为多点电容触摸屏,控制器经 USB 接入系统。

查看触摸设备

adb shell getevent -pl /dev/input/event*
adb shell dumpsys input | grep -i -A2 "touch"

划线与多点检测

  1. 「设置 → 开发者选项 → 指针位置」,手指滑动可看到 X / Y 坐标与轨迹
  2. 用五指同时按住屏幕,观察是否同时上报多个触点(多点触控)
  3. 四角与中心各点按一次,确认无偏移、无死区(触摸校准数据出厂已写入,一般无需重新校准)

提示:若触摸无响应,先确认触摸 USB 线与主板连接,再用 adb shell lsusb 检查是否存在触摸控制器设备。

4.11 GPIO使用方法

整机 GPIO 为选配引出(背部 GPIO 座 / 内部插针)。16 针端子的奇偶脚方向规则、系统 GPIO 编号与端子对应关系见 2.3,本节不再重复。

Android 应用通过 NodkaAPI 的 gpio_ 接口操作,无需 shell(见 4.12.4):

NodkaAPI api = NodkaAPI.nodkaAPICreate(context);
api.gpio_export(95);                  // 导出引脚
api.gpio_direction(95, "out");        // 设为输出
api.gpio_write(95, 1);                // 输出高电平
int v = api.gpio_read(95);            // 回读电平
api.gpio_unExport(95);                // 取消导出

提示:GPIO 编号为内核 gpiochip 全局编号,不同固件版本可能整体偏移;未导出的引脚需先 gpio_export 再操作。Linux 命令行(/sys/class/gpio)操作见 5.4。

4.12 API参考与使用

面向 Android 应用开发,把硬件与系统能力封装为 Java 接口,应用不必直接读写 /dev 与 /sys 节点。Linux 侧不提供本套接口,请使用第 5 章的命令行方式。

接口源码包下载

AndroidAPI 1.5 接口源码包(18.7 MB)

包内包含 AndroidAPI.jar、libandroid-jni.so、AndroidAPI-sources.jar、Javadoc 文档、AndroidAPIDemo 示例工程与 APK、platform.jks 签名文件及 readme.txt。串口、GPIO、系统控制类接口需要系统签名或 Root 权限。

4.12.1 使用说明

接口分类

前缀 类别 说明
devinfo_ 硬件及系统信息查询类 系统版本、CPU、内存、存储、SN 等
display_ 显示控制类 亮度、旋转、分辨率、导航栏与状态栏
gpio_ GPIO 控制类 导出、方向、读写电平
uart_ 串口控制类 打开、收发、关闭串口
sysctrl_ 系统控制类 定时开关机、立即重启、静默安装

1. 在 Application 的 onCreate 中创建实例

public class APIApplication extends Application {
 
    private NodkaAPI mNodkaAPI;
 
    @Override
    public void onCreate() {
        super.onCreate();
        mNodkaAPI = NodkaAPI.nodkaAPICreate(this);
    }
 
    public NodkaAPI getNodkaAPI() {
        return mNodkaAPI;
    }
}

2. 在 Activity 或 Fragment 中取用

private NodkaAPI mNodkaAPI = APIApplication.getApplication().getNodkaAPI();

提示:需在 AndroidManifest.xml 中把 android:name 指向 APIApplication;串口、GPIO、系统控制类接口需要系统签名或 Root 权限。

4.12.2 硬件及系统信息查询

方法名 方法说明
devinfo_getAndroidVersion() 获取 Android 系统版本信息
devinfo_getAvailMem() 获取可用内存容量
devinfo_getBuildNumber() 获取系统版本号信息
devinfo_getCpuCores() 获取 CPU 核心数
devinfo_getCPUCurFreqKHz() 获取 CPU 当前运行主频
devinfo_getCPUMaxFreqKHz() 获取 CPU 最大主频
devinfo_getCPUMinFreqKHz() 获取 CPU 最小主频
devinfo_getCPUTemp() 获取 CPU 温度
devinfo_getDeviceModel() 获取设备型号信息
devinfo_getKernelVersion() 获取内核版本信息
devinfo_getSerialNum() 获取设备 SN 号
devinfo_getStorageAvailableSize() 获取本机可用存储容量
devinfo_getStorageTotalSize() 获取本机存储容量(不包括系统分区)
devinfo_getTotalMem() 获取内存总容量

4.12.3 显示控制(display_)

方法名 方法说明
display_getNavBar() 获取是否显示导航栏与状态栏
display_getScreenBrightness() 获取屏幕亮度
display_getScreenRotation() 获取屏幕旋转方向
display_getWindowHeight() 获取屏幕分辨率高度
display_getWindowWidth() 获取屏幕分辨率宽度
display_setNavBar(Boolean enable) 设置是否显示导航栏与状态栏
display_setNavBarSlideShow(Boolean enable) 设置滑动时是否显示导航栏与状态栏
display_setScreenBrightness(int screenBrightness) 设置屏幕亮度
display_setScreenRotation(int rotation) 设置屏幕旋转方向

4.12.4 GPIO控制(gpio_)

方法名 方法说明
gpio_direction(int gpioNumber, String direction) 设置指定 GPIO 的方向(输入 / 输出)
gpio_export(int gpioNumber) 导出指定 GPIO 引脚
gpio_read(int gpioNumber) 读取指定 GPIO 的电平值
gpio_unExport(int gpioNumber) 取消导出指定 GPIO 引脚
gpio_write(int gpioNumber, int value) 设置指定 GPIO 的输出电平

引脚编号见 4.11。

4.12.5 串口控制(uart_)

方法名 方法说明
uart_close(String uartNode) 关闭 uart 设备,如 /dev/ttyS2
uart_getAvailableDevices() 获取 uart 可用设备节点,返回 List<String>
uart_IsOpen(String uartNode) 判断 uart 设备是否已经打开
uart_open(String uartNode, int baudrate) 打开 uart 设备并设置波特率
uart_receive(String uartNode, UartReceiveDataCallback callback) 接收串口数据,数据回调返回
uart_send(String uartNode, byte[] buffer) 发送串口数据
uart_stopReceive(String uartNode) 停止接收数据,调用后不再有回调

节点与测试方法见 4.5。

4.12.6 系统控制(sysctrl_)

方法名 方法说明
sysctrl_cancelReboot() 取消重启设备
sysctrl_cancelShutdown() 取消自动关机
sysctrl_powerOn(String time, boolean repeat) 设置设备开机时间
sysctrl_reboot(String time, boolean repeat) 设置设备重启时间
sysctrl_rebootNow() 立即重启设备
sysctrl_shutdown(String time, boolean repeat) 设置设备关机时间
sysctrl_shutdownNow() 立即关机
sysctrl_installApk(String apkPath) 静默安装应用

4.13 OTA在线升级(Android)

Android 下的在线升级由预置应用 update 完成,整机需先连通外网。

  1. 打开应用列表,找到「update」
  2. 点击「UPDATE NOW」,按提示下载并安装
  3. 升级过程中保持供电与网络,完成后整机自动重启

应用列表中的 update 图标:

ota_app_drawer.jpg

思迈联科在线升级界面:

提示:本节为 Android 联网在线升级;Android 的 U 盘离线升级见 3.4,Linux 在线升级见 5.10。

5 Linux系统的使用

本章只针对 Linux 系统(Ubuntu 20.04 / Debian 11,部分项目为 Buildroot)。Android 下的对应功能见第 4 章。

除 5.11 交叉编译与 5.12.1 Docker 编译在开发主机上执行外,本章命令均在板端终端或 SSH 中执行。按键、指示灯与触摸屏的判定标准与第 4 章一致(见 4.9、4.10),本章不再重复。5.8 起为出厂项目常用的系统定制项。

5.1 声卡使用方法

aplay -l                                    # 查看声卡与设备列表
aplay /nodka_test/LR_audio.wav -D hw:0,0    # 指定声卡设备播放
arecord -d 5 -f cd -r 44100 -c 2 -t wav test.wav
aplay test.wav

音量调节:

alsamixer
amixer -c 0 set 'Playback' 80%

提示:整机播放在 SPK 端子(PH2.0-4P)输出,需外接 8Ω 喇叭;MIC 走 Ø3.5 接口。

5.2 网络使用方法

5.2.1 以太网

查看网口

ifconfig -a
ip link show

命令行设置静态 IP

1. 用 vim 打开网络配置文件:vim /etc/network/interfaces

2. 按现场网络修改 IP、掩码、网关(整机为单网口,只配 eth0)

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet static
	address 192.168.2.110
	netmask 255.255.255.0
	gateway 192.168.2.1

3. 保存退出(vim 下按 Esc,输入 :wq),重启系统使配置生效。

提示:Ubuntu 20.04 默认由 NetworkManager 接管网络,/etc/network/interfaces 里的配置可能不生效;此时改用 5.2.2 的 nmcli 写法,或先停用 NetworkManager 再用本节方式。

设置 DNS

vi /etc/resolv.conf
nameserver 114.114.114.114

网络优先级

# 临时修改,数值越小优先级越高
sudo ifmetric eth0 100
 
# 永久修改
sudo nmcli connection modify "有线连接名称" connection.autoconnect-priority 1
sudo nmcli connection modify "有线连接名称" ipv4.route-metric 100
sudo nmcli connection modify "有线连接名称" connection.autoconnect yes
sudo systemctl restart NetworkManager

验证

ping -c 4 192.168.2.1
ping -c 4 www.baidu.com

提示:图形界面(Debian 桌面)可在「About NetworkManager Applet → Edit Connections…」中直接设置 IP、掩码、网关;没有现成连接时点右下角 + 新建。

5.2.2 WiFi

查询并启用无线网卡

ifconfig -a          # 无线网卡通常为 wlan0
ifconfig wlan0 up    # 启用无线网卡
iw dev wlan0 scan    # 扫描热点,获取 SSID、信号强度、加密方式

连接无线网络

nmcli d wifi connect "SSID" password "PASSWORD"

静态 IP

sudo nmcli connection modify NODKA ipv4.addresses 172.10.21.111/24                  # IP / 子网掩码
sudo nmcli connection modify NODKA ipv4.gateway 172.10.21.1                         # 网关
sudo nmcli connection modify NODKA ipv4.dns "114.114.114.114,61.177.7.1,8.8.8.8"    # DNS
sudo nmcli connection modify NODKA ipv4.method manual                               # 静态
sudo nmcli device disconnect wlan0
sudo nmcli device connect wlan0

动态 IP(DHCP)

sudo nmcli connection modify NODKA ipv4.method auto
sudo nmcli connection modify NODKA ipv4.addresses ""    # 清除静态 IP
sudo nmcli connection modify NODKA ipv4.gateway ""      # 清除网关
sudo nmcli connection modify NODKA ipv4.dns ""          # 清除 DNS(可选)
sudo nmcli connection down NODKA
sudo nmcli connection up NODKA

配置为 AP 热点

IFNAME="wlan0"    # 无线网卡节点
CON_NAME="One"    # 热点名称
 
nmcli con add type wifi ifname $IFNAME con-name $CON_NAME autoconnect yes ssid $CON_NAME
nmcli con modify $CON_NAME 802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
nmcli con up $CON_NAME

提示:信号弱时可调整背部 Wi-Fi/BT 天线角度,或改用吸盘天线;连接后可用 ip addr show wlan0 查看获取到的地址。

5.3 串口使用方法(Linux)

Linux 下串口节点与 Android 一致:RS485 为 /dev/ttyS1、/dev/ttyS3,RS232 为 /dev/ttyS2、/dev/ttyS4(以背部丝印为准)。

测试工具

  1. 图形界面:CuteCom(sudo apt install cutecom),选择 /dev/ttyS2、115200、8N1 后打开
  2. 命令行:系统自带 com_send / com_recv
# 发送
com_send /dev/ttyS2 115200
# 接收(另开一个终端)
com_recv /dev/ttyS2 115200

直接读写节点

stty -F /dev/ttyS2 115200 cs8 -cstopb -parenb
echo "hello" > /dev/ttyS2     # 发送
cat /dev/ttyS2                # 接收

测试方式

回环、对发与转接的接法见 4.5.2,与操作系统无关,本节不重复。

注意事项

  1. 整机为 3.5mm 3P 可插拔端子(无 DB9),配压接端子或转接线使用;线序反接(A / B、R / T)会直接导致通信失败
  2. RS485 为半双工,方向由硬件自动切换,收发切换时注意帧间隔
  3. 提示无权限时把当前用户加入 dialout 组:sudo usermod -aG dialout $USER(重新登录生效)

5.4 GPIO使用方法(sysfs)

Linux 下统一通过 /sys/class/gpio 访问。端子脚位规则与系统 GPIO 编号见 2.3,本节只给操作命令。

1. 查看相关 IO 是否导出

cd /sys/class/gpio
ls

2. 设置 GPO(系统配置)

for i in {95,94,21,22,140,141}; do echo out >gpio$i/direction; done
for i in {13,14,96,93,108,107}; do echo out >gpio$i/direction; done

3. 设置 GPO 高 / 低

输出高电平:

for i in {95,94,21,22,140,141}; do echo 1 >gpio$i/value; done
for i in {13,14,96,93,108,107}; do echo 1 >gpio$i/value; done

回读当前电平:

for i in {95,94,21,22,140,141}; do cat /sys/class/gpio/gpio$i/value; done

输出低电平:

for i in {95,94,21,22,140,141}; do echo 0 >gpio$i/value; done
for i in {13,14,96,93,108,107}; do echo 0 >gpio$i/value; done

4. 设置 GPI(系统配置)

for i in {13,14,96,93,108,107}; do echo in >gpio$i/direction; done

5. 获取 GPI value

for i in {13,14,96,93,108,107}; do cat /sys/class/gpio/gpio$i/value; done
for i in {95,94,21,22,140,141,13,14,96,93,108,107}; do cat /sys/class/gpio/gpio$i/direction; done

提示:GPIO 编号为内核 gpiochip 全局编号,不同固件版本可能整体偏移;若 /sys/class/gpio 下没有对应节点,先执行 echo 编号 > /sys/class/gpio/export 导出后再操作。

5.5 USB与SD卡挂载

U 盘识别

dmesg | tail -20     # 插入后内核提示,可见设备名为 sda / sda1
lsblk                # 查看块设备及挂载点

挂载与卸载

mkdir -p /mnt/USB1
mount /dev/sda1 /mnt/USB1
df -h
umount /mnt/USB1

SD 卡

fdisk -l                        # SD 卡设备名通常为 /dev/mmcblk1p1
mount /dev/mmcblk1p1 /mnt/sdcard
umount /mnt/sdcard

提示:ext4 / vfat 可直接挂载;NTFS 需安装 ntfs-3g,exFAT 需 exfat-fuse。Android 下的查看方式见 4.6。

5.6 分辨率与HDMI

内部屏分辨率由机型固定(见 1.3 型号与配置),HDMI 外接输出可通过 xrandr 调整。

X11 桌面

xrandr                                             # 查看输出与可用模式
xrandr --output HDMI-1 --mode 1920x1080 --rate 60
xrandr -o left        # 左旋 90°
xrandr -o right       # 右旋 90°
xrandr -o inverted    # 翻转 180°
xrandr -o normal      # 恢复

临时添加自定义分辨率

cvt 800 750
# 800x750 59.86 Hz (CVT) ... Modeline "800x750_60.00" 48.50 800 840 920 1040 750 753 763 779 -hsync +vsync
xrandr --newmode "800x750_60.00" 48.50 800 840 920 1040 750 753 763 779 -hsync +vsync
xrandr --addmode HDMI-1 800x750_60.00
xrandr --output HDMI-1 --mode 800x750_60.00

Wayland / Weston(使用 Wayland 会话时)

Ubuntu 20.04 默认使用 Xorg,xrandr 方式适用;若改用 Wayland 会话,Wayland 下不支持 xrandr,编辑 /etc/xdg/weston/weston.ini:

[output]
name=HDMI-A-1
mode=1920x1080

修改后重启系统或 weston 服务生效。

双屏模式

同显(镜像)与异显(扩展)两种模式的定义见 4.8。Linux 下由桌面显示设置或 xrandr 控制两路输出的开关与位置。

5.7 远程访问及文件传输

sudo apt update && sudo apt install -y openssh-server
sudo systemctl enable --now ssh
ip addr show

电脑端传输:

scp ./update.img root@192.168.8.55:/home/root/

图形化工具可用 WinSCP / FileZilla,协议 SFTP,端口 22。

5.8 开机自动执行程序

按启动时机分三种,按需选择,可叠加使用:登录前 → 登录时 → 进入图形界面后。同一程序只放一处即可。

5.8.1 登录前执行

适用于不依赖桌面、开机就要跑的后台服务。

  1. 编辑 /etc/rc.local 文件
  2. 在 exit 0 之前加入程序调用
  3. 保存退出(按 Esc,输入 :wq 回车)
sudo vim /etc/rc.local
 
# 在 exit 0 之前添加
/path/to/myprogram &
exit 0

说明:/path/to/myprogram 为程序完整路径;行尾的 & 让程序在后台运行,否则会阻塞后续登录流程。文件最后一行必须是 exit 0,脚本才会被执行。

提示:Ubuntu 20.04 默认未启用 /etc/rc.local,需确认 rc-local.service 已启用;只支持 systemd 的场景建议改用自建 service 或 5.8.3 的启动脚本。

5.8.2 登录后执行

只对当前用户生效,在用户登录完成时执行。

  1. 编辑用户配置文件 ~/.profile
  2. 在文件末尾追加启动命令
  3. 保存退出
  4. 执行 source ~/.profile 使改动立即生效
vim ~/.profile
 
# 文件末尾追加
/path/to/myprogram &
 
source ~/.profile

提示:~/.profile 仅对当前用户生效;需要所有用户生效时改 /etc/profile。

5.8.3 进入图形界面后执行

桌面起来之后才需要显示界面的应用(如全屏主程序)放这里。

Debian(LXDE)

  1. 编辑自启动文件
  2. 在末尾追加启动命令
  3. 保存退出,重启或重新登录生效
vim /root/.config/lxsession/LXDE/autostart
 
# 末尾追加
/path/to/myprogram > /dev/null 2>&1 &

Ubuntu

Ubuntu 下统一由启动脚本托管,把命令写进 /nodka_test/autorun.sh(该脚本在桌面启动后自动执行)。

sudo vim /nodka_test/autorun.sh
 
# 末尾追加
/path/to/myprogram > /dev/null 2>&1 &

提示:> /dev/null 2>&1 用于丢弃程序输出,避免日志写满分区;& 保证后台运行。

5.9 界面与显示自定义

5.9.1 状态栏自定义

LXDE 面板(任务栏 / 菜单栏)的配置保存在:

$HOME/.config/lxpanel/LXDE/panels/panel

用文本编辑器打开即可增删插件、调整位置与尺寸;改完执行 lxpanelctl restart,或重新登录生效。

5.9.2 屏蔽桌面环境

桌面自启动文件 /root/.config/lxsession/LXDE/autostart 的默认内容:

@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
pulseaudio -D
/nodka_test/autorun.sh
行 作用
@lxpanel –profile LXDE 启动 LXDE 面板(任务栏与菜单)
@pcmanfm –desktop –profile LXDE 以 PCManFM 接管桌面,负责壁纸与图标
@xscreensaver -no-splash 屏幕保护程序
pulseaudio -D 启动音频服务
/nodka_test/autorun.sh 桌面起来后执行的自启动脚本

屏蔽桌面、只显示应用界面,把前三行注释掉即可:

#@lxpanel --profile LXDE
#@pcmanfm --desktop --profile LXDE
#@xscreensaver -no-splash
pulseaudio -D
/nodka_test/autorun.sh

提示:注释掉面板与 PCManFM 后,桌面无任务栏、无壁纸图标,仅显示自启动程序窗口,适合整机出厂即全屏应用的场景。

开机 LOGO 存放在 resource 分区。按 ① ~ ⑥ 顺序在整机 Linux 终端执行(需 root 权限):需要执行命令的步骤,说明文字与紧随其后的代码块对应;④ 的文件位置见下表。

① 准备 BMP 图片

准备 BMP 格式图片,并把图片尺寸设为屏幕分辨率大小(如 HDMI 1920×1080)。

② 拷贝 bmpconvert 工具并赋予可执行权限

下载 bmpconvert 转换工具(2.3 KB,解压即得脚本),解压后拷贝到 /usr/bin:

sudo cp bmpconvert /usr/bin/
sudo chmod +x /usr/bin/bmpconvert

③ 挂载 resource 分区

sudo mount /dev/block/by-name/resource /mnt

④ 放置开机 LOGO 文件

把 BMP 图片按屏幕类型放入 /mnt 对应文件名:

屏幕类型 文件位置
HDMI / eDP / LVDS /mnt/logo.bmp、/mnt/logo_kernel.bmp
MIPI /mnt/logo_mipi.bmp、/mnt/logo_kernel_mipi.bmp

⑤ 执行 bmpconvert 转换

HDMI / eDP / LVDS 屏执行:

sudo bmpconvert /mnt/logo.bmp
sudo bmpconvert /mnt/logo_kernel.bmp

MIPI 屏改用对应文件名:

sudo bmpconvert /mnt/logo_mipi.bmp
sudo bmpconvert /mnt/logo_kernel_mipi.bmp

报错处理:若步骤 ⑤ 出现如下输出,说明系统只有 python3、缺少 python 命令:

root@rk3568: bmpconvert /mnt/logo.bmp
/usr/bin/env: 'python': No such file or directory
root@rk3568: bmpconvert /mnt/logo_kernel.bmp
/usr/bin/env: 'python': No such file or directory

先建立 python 软链,再重跑步骤 ⑤ 的两条命令:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
sudo bmpconvert /mnt/logo.bmp
sudo bmpconvert /mnt/logo_kernel.bmp

⑥ 重启系统

sudo reboot

提示:logo.bmp 为 U-Boot 阶段显示,logo_kernel.bmp 为内核启动阶段显示,两个都要替换。修改前建议先备份 /mnt 下的原文件。

5.9.4 切换不同LCD显示屏

HDMI:系统默认支持,默认输出 1920×1080,无需设置。

eDP / LVDS:屏参与屏体必须匹配。终端执行 dis 调出屏参设置界面,选择对应屏参后点击 Save,重启生效。

dis

Display Settings 屏参设置界面:选择与屏体一致的参数,点击 Save 保存。

5.9.5 屏幕旋转

Debian:修改 xorg 配置

  1. 先用 xrandr 查看屏幕节点名(如 eDP-1、HDMI-1)
  2. 编辑 /etc/X11/xorg.conf.d/20-modesetting.conf
  3. 修改 Option “Rotate” 取值后重启
Section "Monitor"
    Identifier "eDP-1"              # 屏幕节点名,用 xrandr 查询
    Option "Rotate" "inverted"      # 旋转方向,见下表
EndSection
取值 旋转角度
normal 0°(默认)
right 顺时针 90°
inverted 顺时针 180°
left 顺时针 270°

Ubuntu:使用 xrandr

xrandr --output HDMI-1 --rotate left       # 向左旋转 90°
xrandr --output HDMI-1 --rotate right      # 向右旋转 90°
xrandr --output HDMI-1 --rotate inverted   # 旋转 180°
xrandr --output HDMI-1 --rotate normal     # 恢复默认

提示:把旋转命令放到 /nodka_test/autorun.sh 末尾,可开机自动生效。

触摸旋转

屏幕旋转后触摸坐标会错位,需同步修改 /usr/share/X11/xorg.conf.d/40-libinput.conf 中的 CalibrationMatrix:

Section "InputClass"
    Identifier "libinput touchscreen catchall"
    Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
    MatchIsTouchscreen "on"
    MatchDevicePath "/dev/input/event*"
    Driver "libinput"
EndSection
屏幕方向 CalibrationMatrix
0°(默认) 1 0 0 0 1 0 0 0 1
90°(顺时针) 0 1 0 -1 0 1 0 0 1
180°(上下颠倒) -1 0 1 0 -1 1 0 0 1
270°(逆时针 90°) 0 -1 1 1 0 0 0 0 1

5.10 OTA在线升级固件

5.10.1 通过网络OTA

升级由板内 /usr/bin/ota 脚本完成。按实际情况编辑该脚本、设置 FTP 地址与账号,并把相应固件放到 FTP 下载地址,然后执行 ota。需要改动的文件与对应代码如下。

① 编辑升级脚本 /usr/bin/ota

sudo vim /usr/bin/ota

② 在脚本中设置以下三项

URL=ftp://<固件服务器地址>
USERNAME=<用户名>
PASSWORD=<密码>

③ 保存后执行升级

ota

按提示完成升级。

提示:服务器地址、账号与固件目录由我司提供;升级过程请勿断电,完成后设备自动重启。

5.10.2 使用U盘在线升级

Linux 下由板内 /usr/bin/ota 脚本执行在线升级,U 盘作为固件暂存盘。按 ① ~ ⑤ 顺序操作:需要执行命令的步骤,说明文字与紧随其后的代码块一一对应;③④ 为条件确认,无需执行命令。

① 解除 U 盘挂载

sudo umount /dev/sdb

② 格式化 U 盘为 ext4

sudo mkfs.ext4 /dev/sdb

③ 确认系统支持在线升级

板内需已具备 /usr/bin/ota 脚本(脚本配置见 5.10.1)。

④ 确认 U 盘规格

U 盘需格式化为 linux ext4 格式,可用容量大于 8G,否则升级包无法写入。

⑤ 插网线、插 U 盘,执行升级

ota

按提示完成升级,过程中请勿断电,完成后设备自动重启。

提示:/dev/sdb 为 U 盘常见设备节点,实际以 lsblk 结果为准。本节是 Linux 在线升级(ext4、≥8G、ota 命令),与 3.4 的 Android U 盘升级(FAT32、update.img)、4.13 的 Android 在线升级是两套流程,不要混用。

5.11 交叉编译环境

5.11.1 apt安装交叉编译环境

Debian / Ubuntu 主机上一条命令即可装好 aarch64 交叉工具链,再用 -v 确认版本:

sudo apt install -y crossbuild-essential-arm64
aarch64-linux-gnu-gcc -v

5.11.2 下载指定版本工具链

需要特定版本时,从 ARM 官方下载对应工具链(developer.arm.com/downloads/-/gnu-a),解压后把 bin 目录加入 PATH:

export PATH=$PATH:/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/
aarch64-none-linux-gnu-gcc --version

提示:写入 ~/.bashrc 或 /etc/profile 可永久生效;路径按实际解压目录替换。

5.11.3 工具链下载

常用交叉编译工具链与获取方式:

下载:gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz 百度网盘 提取码 hkku

提示:该工具链免安装,解压后把压缩包内 bin 目录加入 PATH 即可;编译时调用 aarch64-none-linux-gnu-gcc。

5.12 Qt应用开发

预置环境:Debian 11 → Qt 5.15.2,Ubuntu 20.04 → Qt 5.12.8。两种方式按条件选择。

5.12.1 导入Docker镜像编译

用现成编译镜像,主机无需安装 Qt,隔离性好,适合批量编译。

  1. 导入镜像
  2. 启动容器,把应用目录挂载到 /mnt(source 换成实际路径)
  3. 容器内进入 /mnt 执行 qmake 与 make
sudo docker load < nodka_docker_qt_build_20230223.tar
 
sudo docker run --rm --mount type=bind,source=/home/APP_PATH,target=/mnt/ -i -t 09a37c1b2fc3 /bin/bash
 
cd /mnt
qmake
make

提示:镜像体积较大,由我司单独提供;容器 ID(09a37c1b2fc3)以 docker images 实际输出为准。

5.12.2 板端搭建Qt编译环境

1. 安装 Qt Creator

sudo apt-get install qtcreator
sudo apt-get install qt5-default

若 qt5-default 已被官方仓库移除,改用下面这组依赖:

sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtcreator

2. 添加 qmake

Qt Creator → Tools → Options → Kits → Qt Versions → Add,选择板内 qmake:

/usr/local/qt5.12-arm/bin/qmake

在 Qt Versions 中添加板内 qmake 路径。

3. 配置交叉编译器

同一窗口切到 Compilers → Add → GCC,分别添加 g++ 与 gcc:

g++:/usr/bin/aarch64-linux-gnu-g++
gcc:/usr/bin/aarch64-linux-gnu-gcc

g++ 编译器位置:

gcc 编译器位置:

添加交叉编译器;主机装的是 crossbuild-essential-arm64 时编译器在 /usr/bin 下,用第三方工具链时填其安装路径。

4. 配置 Debugger(可选,在线调试用)

sudo apt install -y gdb-multiarch

板端需存在 /usr/bin/gdbserver,没有则安装 gdbserver(Buildroot 自带,无需安装)。在 Qt Creator 的 Debuggers 中添加 /usr/bin/gdb-multiarch。

5. 配置 Devices

填入板卡 IP 与用户名 root;建议给板卡设置静态 IP,避免调试中断线。

6. 配置 Kits

把前面的 Qt 版本、编译器、调试器、设备组合成一个 Kit。目标系统为 Ubuntu 时,还需在 Kit 中填写 sysroot 路径。

在 Kits 中组合 Qt 版本、编译器、调试器与设备。

5.13 视频硬件编解码支持

板载 VPU 支持 H.264 / H.265 硬件编解码,系统已带 GStreamer 插件与 OpenGL ES / OpenCL 运行库。

GStreamer 编解码

系统自带测试脚本,直接运行即可验证硬解与硬编:

/rockchip-test/video/test_dec-gst.sh    # 硬解测试
/rockchip-test/video/test_enc-gst.sh    # 硬编测试

OpenGL ES

用 glmark2 跑分验证 GPU:

glmark2-es2

WebGL

打开 Chromium,在地址栏输入以下地址,查看 WebGL 与硬件加速状态:

chrome://gpu

OpenCL

clinfo

clinfo 输出:确认平台、设备与 OpenCL 版本信息。

6 通用方法

本章为查询类命令,Android(adb shell)与 Linux 终端下基本一致,个别命令已在条目中注明差异。

6.1 查看CPU温度

cat /sys/class/thermal/thermal_zone0/temp
# 输出为毫摄氏度,45200 表示 45.2℃

6.2 查看CPU序列号

cat /proc/device-tree/serial-number
# Android 下
getprop ro.serialno

6.3 查看CPU频率

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

6.4 查看内存容量

free -h
cat /proc/meminfo | head -3

6.5 查看存储容量

df -h
lsblk

6.6 网络Ping测试

ping -c 4 192.168.8.1
ping -c 4 www.baidu.com
ping -c 1 -W 1 8.8.8.8

6.7 设置系统时间保存到RTC芯片

# 查看系统时间
date
# 设置系统时间并写入 RTC 芯片
sudo date -s "2025-04-08 17:01:01"
sudo hwclock -w
sudo hwclock -r

验证:关机断电 5 秒以上再开机,用 date 查看时间是否保持。

提示:系统默认启用网络对时,RTC 测试需在断开外网的情况下进行。

时区设置

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
reboot

图形界面可在「首选项 → 时间和日期」中选择时区,设置其他时区只需把命令中的 Asia/Shanghai 换成对应城市。

7 附录

7.1 常见问题排查

现象 可能原因 处理方式
烧录工具一直显示「没有发现设备」 未进入 Loader / USB 驱动异常 / 线材问题 按 3.3 步骤 ④ 重新进入;驱动卸载后重装;更换 USB 口与数据线
设备管理器出现未知设备 瑞芯微 USB 驱动未装好 见 3.2,重新安装 DriverInstall
ADB 无法连接 未开启 USB 调试 / 接错 USB 口 见 4.1;确认接的是蓝色 USB3.0/OTG 下口
串口打不开或无数据 节点选错 / 无权限 / A-B 或 R-T 反接 见 4.5、5.3;按丝印核对节点与线序
GPIO 读写无反应 未 export / 编号随固件偏移 见 2.3、5.4;先 export 再操作
触摸无响应或坐标错位 触摸 USB 线松动 / 旋转后未改 CalibrationMatrix 见 4.10、5.9.5
屏幕旋转后界面正常但触摸反向 未同步修改 libinput 校准矩阵 见 5.9.5 触摸旋转表
开机 LOGO 不生效 只替换了其中一张 / 未执行 bmpconvert 见 5.9.3,两张 logo 都要替换并转换
静态 IP 配置不生效 NetworkManager 与 ifupdown 并存 见 5.2.1 提示
U 盘升级无提示 文件名不是 update.img / 格式不是 FAT32 见 3.4.1,改名并重新格式化为 FAT32

7.2 文档信息与修订记录

项目 内容
适用产品 sTPC-E101 / E121 / E150 / E156 / E170 / E215-3568B
主控平台 Rockchip RK3568(4 × Cortex-A55 @2.0GHz,1TOPS NPU)
适用系统 Android 11、Ubuntu 20.04(Debian 11 按项目配置)
文档版本 v1.4
更新日期 2026-11-11
版本 日期 修订内容
v1.4 2026-11-11 全文口径对齐:统一串口组数与丝印、电源范围、系统范围、接口数量口径;GPIO 与 OTA 去重;补 SD 卡 / GPIO / 编解码规格;新增 4.13 与第 7 章附录

历史版本请向技术支持索取。

7.3 技术支持