这是本文档旧的修订版!
sTPC-EXXX-3568B系列
产品系列:sTPC-EXXX-3568B(E101 / E121 / E150 / E156 / E170 / E215) · 瑞芯微 RK3568 · 10.1″ ~ 21.5″ 无风扇 ARM 触控一体机(PANEL PC)
- 1 资源特性
- 1.1 产品简介
- 1.2 整机规格
- 1.3 型号与配置
- 1.4 可选配件
- 2 接口布局和尺寸
- 2.1 整机外观
- 2.2 接口概览
- 2.3 接口引脚定义
- 2.4 机械尺寸
- 3 快速入门
- 3.1 系统下载
- 3.2 烧录工具下载
- 3.3 系统烧录
- 3.4 U盘升级
- 3.4.1 升级前准备
- 3.4.2 开始OTA升级
- 4 Android系统的使用
- 4.1 开启ADB调试
- 4.1.1 USB ADB使用方法
- 4.1.2 网络ADB使用方法
- 4.2 WiFi使用方法
- 4.3 以太网使用方法
- 4.4 4G模块使用方法
- 4.4.1 支持列表
- 4.4.2 步骤
- 4.5 串口使用方法
- 4.5.1 测试工具 ComAssistant
- 4.5.2 测试方式
- 4.5.3 应用层调用
- 4.6 USB与SD卡
- 4.7 音频测试
- 4.8 HDMI与双屏显示
- 4.9 按键与指示灯测试
- 4.10 触摸屏测试
- 4.11 GPIO使用方法
- 4.12 API参考与使用
- 4.12.1 使用说明
- 4.12.2 硬件及系统信息查询
- 4.12.3 显示控制(display_)
- 4.12.4 GPIO控制(gpio_)
- 4.12.5 串口控制(uart_)
- 4.12.6 系统控制(sysctrl_)
- 5 Linux系统的使用
- 5.1 声卡使用方法
- 5.2 网络使用方法
- 5.2.1 以太网
- 5.2.2 WiFi
- 5.3 串口使用方法(Linux)
- 5.4 GPIO使用方法(sysfs)
- 5.5 USB与SD卡挂载
- 5.6 分辨率与HDMI
- 5.7 远程访问及文件传输
- 5.8 开机自动执行程序
- 5.8.1 登录前执行
- 5.8.2 登录后执行
- 5.8.3 进入图形界面后执行
- 5.9 界面与显示自定义
- 5.9.1 状态栏自定义
- 5.9.2 屏蔽桌面环境
- 5.9.3 更换开机LOGO
- 5.9.4 切换不同LCD显示屏
- 5.9.5 屏幕旋转
- 5.10 OTA在线升级固件
- 5.10.1 通过网络OTA
- 5.10.2 使用U盘在线升级
- 5.11 交叉编译环境
- 5.11.1 apt安装交叉编译环境
- 5.11.2 自定义下载指定版本工具链
- 5.11.3 工具链下载
- 5.12 Qt应用开发
- 5.12.1 导入Docker镜像编译
- 5.12.2 板端搭建Qt编译环境
- 5.13 视频硬件编解码支持
- 6 通用方法
- 6.1 查看CPU温度
- 6.2 查看CPU序列号
- 6.3 查看CPU频率
- 6.4 查看内存容量
- 6.5 查看存储容量
- 6.6 网络Ping测试
- 6.7 设置系统时间保存到RTC芯片
1 资源特性
1.1 产品简介
sTPC-EXXX-3568B 系列(量产型号 sTPC-E101 / E121 / E150 / E156 / E170 / E215-3568B)是基于瑞芯微 RK3568 平台的无风扇 ARM 触控一体机(PANEL PC),屏幕尺寸覆盖 10.1″ / 12.1″ / 15″ / 15.6″ / 17″ / 21.5″ 六种规格。
整机采用铝镁合金前框 + 全封闭后盖,正面为多点电容式触摸屏,背部下方凹槽集中布置电源、串口、USB、HDMI、网口等对外接口,天线与 SIM 卡位于背部上方。支持 VESA 支架与嵌入式(开孔)两种安装方式,适用于产线看板、设备 HMI、自助查询终端等工业现场。
产品特点
- 支持 Rockchip RK3568:4 × Cortex-A55 @2.0GHz,1TOPS NPU
- 全板载 I/O 设计,接口集中在背部凹槽,维护无需拆机
- 无风扇全封闭结构,支持 VESA / 嵌入式安装
- Android 11 与 Ubuntu 20.04 双系统可选
型号命名规则
| 字段 | 含义 |
|---|---|
| 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 × HDMI,最高支持 3840 × 2160 |
| 以太网 | 1 × 10/100/1000Mbps 速率自侦测 |
| 无线 | 板载 2.4G/5G 双频 Wi-Fi,802.11 a/b/g/n/ac + Bluetooth 5.0 |
| 4G | 1 × Mini-PCIE,支持 LTE 4G 模组(可选) |
| USB | 2 × USB2.0,1 × USB3.0(OTG 复用),1 × USB3.0 |
| 串口 | 2 × RS485(3.5mm 间距 3P 端子),2 × RS232(3.5mm 间距 3PIN),ttyS1 ~ ttyS4 |
| 音频 | 1 × SPK(8Ω 6W,PH2.0-4P),1 × Ø3.5 Mic in |
| SIM | 2 × Micro SIM 插槽(二选一使用) |
| 指示灯 | 1 × 电源指示灯(绿色),1 × 系统指示灯(蓝色) |
| 按键 | 1 × Recover 刷机键,1 × Return 返回键 |
| 触摸屏 | 多点电容式,透光率 ≥ 87%,USB 控制器 |
| 操作系统 | Android 11 / Linux Ubuntu 20.04 |
| 电源输入 | DC 12V(±0.3V),5.5×2.1mm 圆头,带过流、过压保护 |
| 整机功耗 | ≤ 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 |
提示:15″ 机型(E150)电源输入支持 DC 12~24V 宽压,其余机型为 DC 12V;各型号均为电容触摸屏 + 32GB eMMC,内存分 2GB / 4GB 两种配置。
1.4 可选配件
| 选项 | 描述 |
|---|---|
| 电源适配器 | 12V 3A 电源适配器,带国标电源线 |
| 4G 套件 | Mini PCIE 接口,EC20 CAT4 / EC200M CAT1 |
| Wi-Fi 天线 | 胶棒天线、吸盘 3M 天线 |
| USB3.0 | USB3.0 线材 / 转接件(按项目需求) |
| GPIO | GPIO 引出线(需选配) |
2 接口布局和尺寸
2.1 整机外观
整机为正屏 + 背出线结构:正面只有触摸屏与铝合金前框;背部上方为天线、SIM 卡座与喇叭接口区,下方凹槽为对外接口区(电源、串口、USB、HDMI、网口),四角为 VESA 安装孔。
2.2 接口概览
整机对外接口全部集中在背部下方凹槽内,从左到右依次为:DC 12V → PWR / SYS 指示灯 → Recover → Return → MIC → RS485 → RS232 → HDMI → LAN → USB3.0 → USB2.0;背部上方为 Wi-Fi / BT 天线、4G 天线、SPK 喇叭座、GPIO 与双 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 组),接线时以机器丝印为准。
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 端子,ttyS1)
| 脚位 | 丝印 | 信号 | 说明 |
|---|---|---|---|
| 1 | A1 | 485_A | 差分正(A) |
| 2 | B1 | 485_B | 差分负(B) |
| 3 | G1 | GND | 信号地 |
半双工,收发方向由硬件自动切换,无需软件控制 RTS。
RS232(3.5mm 3P 端子,ttyS2)
| 脚位 | 丝印 | 信号 | 说明 |
|---|---|---|---|
| 1 | R2 | RXD | 接收,接对端 TXD |
| 2 | T2 | TXD | 发送,接对端 RXD |
| 3 | G2 | GND | 信号地 |
全双工,与外部设备连接时 R/T 交叉、GND 共地。
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 调试 |
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 编号 |
|---|---|
| DO(数字输出) | 95、94、21、22、140、141 |
| DO / DI(可输出 / 输入) | 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 页。
结构说明
- 外壳材质:铝镁合金前框 + 金属后盖,无风扇全封闭
- 安装方式:VESA 支架(4 × M4,深度 6mm)或嵌入式开孔安装(卡扣固定)
- 散热:整机自然散热,背部需预留 ≥ 50mm 通风空间
3 快速入门
3.1 系统下载
Android系统
- Android 11 固件(含 root 权限):联系销售 / 技术支持获取下载地址
Linux系统
- Ubuntu 20.04 固件(含 Qt 5.12.8、GStreamer):联系销售 / 技术支持获取下载地址
- Debian 11 固件:按项目需求单独提供
3.2 烧录工具下载
两个工具均为瑞芯微官方发布版本,已作为本站附件上传,下载链接见各条目末尾:
- USB 驱动:解压后双击 DriverInstall.exe 完成安装 —— DriverAssitant_v5.11 驱动安装包(9.4 MB)
- 烧录工具:解压后双击 RKDevTool.exe 启动 —— RKDevTool_Release_v3.32 烧录工具(5.5 MB)
提示:驱动未安装成功时,设备管理器会出现未知设备,需重新安装驱动后再烧录。
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 秒。
提示:
- 由 Android 切换至 Linux(或反向)时若无法识别设备,可在「高级功能」中执行「进入 Maskrom」后重新烧录
- 烧录过程中禁止断电、拔线,否则可能无法开机,需重新进入 Loader 重烧
- 高级用户可在 Linux 下用 upgrade_tool 命令行烧录:sudo upgrade_tool uf update.img
3.4 U盘升级
3.4.1 升级前准备
- 在 SDK 根目录执行整包编译,生成 rockdev/Image-xxx/ 目录
- 执行 ./mkupdate.sh(或 make otapackage)打包生成 update.img
- 将 update.img 拷入 U 盘根目录,文件名保持 update.img
- U 盘格式建议 FAT32,容量 ≤ 32GB
# 打包整包镜像 ./build.sh updateimg ls -lh rockdev/update.img
3.4.2 开始OTA升级
方式一:U盘本地升级
- Windows 下把 update.img 压缩包拷贝进 U 盘
- 把 U 盘插入平板的 USB 口
方式二:升级APP
- 平板连通外网
- 找到升级 APP「update」
- 点击「UPDATE NOW」升级即可
应用列表中的 update 图标:
思迈联科在线升级界面:
4 Android系统的使用
本章只针对 Android 系统(Android 11)。Linux(Ubuntu / Debian)下的同名功能集中在第 5 章,两章界面、工具、命令均不混用;Android 应用层的接口调用统一见 4.12。
4.1 开启ADB调试
4.1.1 USB ADB使用方法
- 使用 USB 数据线连接整机 USB3.0/OTG 口(下排蓝色口)与电脑
- 「设置 → 关于平板电脑」,连续点击「版本号」7 次开启开发者选项
- 进入「开发者选项」,打开「USB 调试」
- 电脑端执行 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使用方法
- 「设置 → 网络和互联网 → WLAN」,打开开关
- 选择目标热点并输入密码(板载 2.4G/5G 双频,802.11 a/b/g/n/ac)
- 连接成功后可在「网络详情」中查看 IP 地址
- 信号弱时可调整背部 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
使用(静态 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模块使用方法
4.4.1 支持列表
| 功能 | 模块 | USB ID |
|---|---|---|
| 4G | Quectel EC20(Mini-PCIe) | 2c7c:0125 |
| 4G | Quectel EC200(Mini-PCIe) | 2c7c:6002 |
| 4G | EG800AK-C(6A12-J 使用载板,系统自动拨号) | 2c7c:6002 |
| 5G | Quectel RM500(M.2) | 2c7c:0900(RM500U-CNV) |
4.4.2 步骤
4G 模组
- 接上 4G 天线,SIM 卡缺口朝外插入卡座(芯片面朝板)
- 上电后在「设置 → 网络和互联网 → 移动网络」中确认已识别 SIM 卡
- 打开移动数据,状态栏出现 4G 图标即可上网
adb shell lsusb
# Bus 002 Device 002: ID 2c7c:0125 Quectel Wireless Solutions Co., Ltd. EC25 LTE modem
5G 模组
- 5G 模组需接 4 根天线,保证信号强度与网络通畅
- 插入支持 5G 网络的 SIM 卡,缺口朝外插入
adb shell lsusb
# Bus 006 Device 002: ID 2c7c:0900 Quectel Wireless Solutions Co., Ltd. RM500U-CNV
查看信号与网络注册(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 / GND |
| RS232-1 | /dev/ttyS2 | RX2 / TX2 / GND |
| RS485-2 | /dev/ttyS3 | A3 / B3 / GND |
| RS232-2 | /dev/ttyS4 | RX4 / TX4 / GND |
4.5.1 测试工具 ComAssistant
Android 下串口测试统一使用 ComAssistant(串口助手 App):
- 安装并打开 ComAssistant,首次运行授予存储与串口设备权限
- 在设备列表中选择目标节点:RS485 选 /dev/ttyS1 或 /dev/ttyS3,RS232 选 /dev/ttyS2 或 /dev/ttyS4
- 设置参数 115200、8 位数据、1 位停止、无校验(8N1)
- 点击「打开串口」,在发送区输入内容后点「发送」;回环或对发时可同时观察接收区
提示:ComAssistant 需要 Root 权限访问 /dev/ttyS*;打开失败时先在 adb shell 中执行 su 与 ls -l /dev/ttyS* 确认节点权限。
4.5.2 测试方式
- RS232 回环:跳帽短接同一 232 节点的 TX 与 RX
- RS232 — RS232 对发:交叉接线(RX↔TX,GND 共地)
- RS232 — RS485 对发:经 232 转 485 模块
- RS232 — RS232 转 USB — PC 端串口助手
- RS485 — RS485 转 USB — PC 端串口助手
注意事项
- RS232、RS485 推荐使用标准的 DP9 串口线,不同厂商的串口线线序可能不同,会导致串口无法通信
- 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 盘
- 插入 U 盘,文件管理器左侧出现「USB 存储设备」
- 进入后能浏览 U 盘内容即识别正常
- 拔出前先在「设置 → 存储」中卸载,避免数据损坏
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) 输入,无内置喇叭时需外接。
喇叭输出测试
- 8Ω 喇叭接 SPK 端子(L+ / L- / R+ / R-)
- 打开系统自带「音乐」播放器播放测试音频,按音量键确认音量可调、左右声道正常
- 测试文件位于 /nodka_test/LR_audio.wav,可用「文件」App 直接播放
麦克风录音测试
- 插入 Ø3.5 麦克风或使用板载 MIC
- 打开系统自带「录音机」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 输出
- 接入 HDMI 显示器,进入「设置 → 显示 → HDMI」
- 选择分辨率与刷新率(推荐 1920 × 1080 @ 60Hz),确认画面稳定无闪烁
- 选择显示模式:同显(镜像)或异显(扩展)
| 模式 | 说明 |
|---|---|
| 同显(镜像) | 内部屏与 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_VOLUMEUP DOWN # /dev/input/event2: EV_SYN SYN_REPORT 00000000 # /dev/input/event2: EV_KEY KEY_VOLUMEUP 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"
划线与多点检测
- 「设置 → 开发者选项 → 指针位置」,手指滑动可看到 X / Y 坐标与轨迹
- 用五指同时按住屏幕,观察是否同时上报多个触点(多点触控)
- 四角与中心各点按一次,确认无偏移、无死区(触摸校准数据出厂已写入,一般无需重新校准)
提示:若触摸无响应,先确认触摸 USB 线与主板连接,再用 adb shell lsusb 检查是否存在触摸控制器设备。
4.11 GPIO使用方法
整机 GPIO 为选配引出(背部 GPIO 座 / 内部插针)。
GPO / GPI 由硬件固定,不能通过软件互换;接线按机器丝印对位。下表为系统 GPIO 编号,与端子脚位序号是两个概念。
| 用途 | 系统 GPIO 编号 |
|---|---|
| DO(数字输出) | 95、94、21、22、140、141 |
| DO / DI(输出、输入) | 13、14、96、93、108、107 |
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.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/ttyXRUSB2 |
| 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) | 静默安装应用 |
5 Linux系统的使用
本章只针对 Linux 系统(Ubuntu / Debian / Buildroot)。Android 下的对应功能见第 4 章;本章所有命令均在板端终端或 SSH 中执行。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、eth1)
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 auto eth1 iface eth1 inet static address 192.168.2.120 netmask 255.255.255.0 gateway 192.168.2.1
3. 保存退出(vim 下按 Esc,输入 :wq),重启系统使配置生效。
设置 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(以背部丝印为准)。
测试工具
- 图形界面:CuteCom(sudo apt install cutecom),选择 /dev/ttyS2、115200、8N1 后打开
- 命令行:系统自带 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 # 接收
测试方式
- RS232 回环:跳帽短接同一 232 节点的 TX 与 RX
- RS232 — RS232 对发:交叉接线(RX↔TX,GND 共地)
- RS232 — RS485 对发:经 232 转 485 模块
- RS232 / RS485 接 PC:经 USB 转 232 / 485 转换器,PC 端用串口助手
- RS485 回环:短接 A / B
注意事项
- RS232、RS485 推荐使用标准的 DP9 串口线,不同厂商的串口线线序可能不同,会导致串口无法通信
- RS485 为半双工,方向由硬件自动切换,收发切换时注意帧间隔
- 提示无权限时把当前用户加入 dialout 组:sudo usermod -aG dialout $USER(重新登录生效)
5.4 GPIO使用方法(sysfs)
Linux 下统一通过 /sys/class/gpio 访问。编号与第 4.11 节相同:
GPO / GPI 由硬件固定,不能通过软件互换;接线按机器丝印对位。下表为系统 GPIO 编号,与端子脚位序号是两个概念。
| 用途 | 系统 GPIO 编号 |
|---|---|
| DO(数字输出) | 95、94、21、22、140、141 |
| DO / DI(输出、输入) | 13、14、96、93、108、107 |
1. 查看相关 IO 是否导出
cd /sys/class/gpio ls
2. 设置 DO(系统配置)
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. 设置 DO 高 / 低
输出高电平:
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. 设置 DI(系统配置)
for i in {13,14,96,93,108,107}; do echo in >gpio$i/direction; done
5. 获取 DI 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 服务生效。
双屏模式
| 模式 | 说明 |
|---|---|
| 同显(镜像) | 内部屏与 HDMI 显示相同画面,分辨率取二者较小值 |
| 异显(扩展) | 两屏独立画面,应用侧需指定 DisplayId |
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 登录前执行
适用于不依赖桌面、开机就要跑的后台服务。
- 编辑 /etc/rc.local 文件
- 在 exit 0 之前加入程序调用
- 保存退出(按 Esc,输入 :wq 回车)
sudo vim /etc/rc.local # 在 exit 0 之前添加 /path/to/myprogram & exit 0
说明:/path/to/myprogram 为程序完整路径;行尾的 & 让程序在后台运行,否则会阻塞后续登录流程。文件最后一行必须是 exit 0,脚本才会被执行。
5.8.2 登录后执行
只对当前用户生效,在用户登录完成时执行。
- 编辑用户配置文件 ~/.profile
- 在文件末尾追加启动命令
- 保存退出
- 执行 source ~/.profile 使改动立即生效
vim ~/.profile # 文件末尾追加 /path/to/myprogram & source ~/.profile
提示:~/.profile 仅对当前用户生效;需要所有用户生效时改 /etc/profile。
5.8.3 进入图形界面后执行
桌面起来之后才需要显示界面的应用(如全屏主程序)放这里。
Debian(LXDE)
- 编辑自启动文件
- 在末尾追加启动命令
- 保存退出,重启或重新登录生效
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 后,桌面无任务栏、无壁纸图标,仅显示自启动程序窗口,适合整机出厂即全屏应用的场景。
5.9.3 更换开机LOGO
开机 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 配置
- 先用 xrandr 查看屏幕节点名(如 eDP-1、HDMI-1)
- 编辑 /etc/X11/xorg.conf.d/20-modesetting.conf
- 修改 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、升级 APP)是两套流程,不要混用。
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 工具链下载
常用交叉编译工具链与获取方式:
- aarch64-linux-gnu-gcc 交叉工具链:SDK prebuilts 目录内提供
- arm-linux-gnueabihf 交叉工具链:用于 32 位用户态程序编译
- x86 主机交叉编译 arm64 工具链:ARM 官方发布,用于在 x86_64 主机上编译 aarch64(arm64)程序
下载: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,隔离性好,适合批量编译。
- 导入镜像
- 启动容器,把应用目录挂载到 /mnt(source 换成实际路径)
- 容器内进入 /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 换成对应城市。
























