~~NOCACHE~~ ~~NOTOC~~

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、自助查询终端等工业现场。 **产品特点** * 支持 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 × 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 安装孔。 ^ 整机正面 ^ 立体视角 ^ | {{wiki:stpc_e156_front_view.jpg?400}} \\ 正面:多点电容触摸屏 + 铝镁合金前框 | {{wiki:stpc_e156_3568b_perspective.jpg?400}} \\ 立体:整机结构与背部扩展舱 | ^ 整机背面 ^ 接口区(正视) ^ | {{wiki:stpc_e156_3568b_back.jpg?400}} \\ 背面:VESA 孔位 + 接口区 | {{wiki:stpc_e156_3568b_io_lower.jpg?400}} \\ 接口区: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 引出座。图中标注与下表序号一一对应,点击图片可查看高清大图。 ^ 接口布局(正视) ^ 接口布局(斜视) ^ | {{wiki:stpc_e156_io_a.png?400}} \\ 正视:对外接口在背部下方一字排开 | {{wiki:stpc_e156_io_b.png?400}} \\ 斜视: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 | {{wiki:pc_dim_101_big.png?760}} 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 完成安装 —— {{wiki:driverassitant_v5.11.zip|DriverAssitant_v5.11 驱动安装包(9.4 MB)}} * **烧录工具**:解压后双击 RKDevTool.exe 启动 —— {{wiki:rkdevtool_release_v3.32.zip|RKDevTool_Release_v3.32 烧录工具(5.5 MB)}} **提示:**驱动未安装成功时,设备管理器会出现未知设备,需重新安装驱动后再烧录。 ==== 3.3 系统烧录 ==== Linux 与 Android 共用同一套瑞芯微工具烧录,整机无需拆机:**USB3.0/OTG 口** 接线、**Recover 针孔** 进入烧录模式。 **① 连接 OTG 口** 取一根 USB3.0 公对公双头线,一端接整机接口区下排的蓝色 **USB3.0/OTG** 口,另一端接电脑 USB 口: {{wiki:burn_otg_v2.png?560}} **② 安装瑞芯微 USB 驱动** 进入驱动包目录,双击 DriverInstall.exe: {{wiki:flash2.png?560}} 弹出「瑞芯微驱动助手」后点「驱动安装」,等待进度条走完: {{wiki:flash3.png?560}} **提示:**驱动异常或换电脑后无法识别设备时,先在驱动助手中点「驱动卸载」,再重新点「驱动安装」。 **③ 打开烧录工具** 解压工具包,双击 RKDevTool.exe: {{wiki:flash4.png?560}} **④ 让整机进入 Loader 模式** 整机先断电,用针状物按住背部 **Recover** 孔不松手,再接入 DC 12V 上电,约 2 秒后松开: {{wiki:burn_recover_v2.png?560}} **⑤ 确认设备已识别** RKDevTool 底部出现 **发现一个 LOADER 设备** 即识别成功: {{wiki:flash6.png?560}} 若一直显示「没有发现设备」,回到第 ④ 步重新进入,或更换 USB 口与数据线。 **⑥ 选择固件并升级** 切到「升级固件」页,先点「固件」选择 update.img,再点「升级」: {{wiki:flash7.png?560}} 烧录进度到 100% 后设备自动重启,首次开机约 30 ~ 60 秒。 **提示:** - 由 Android 切换至 Linux(或反向)时若无法识别设备,可在「高级功能」中执行「进入 Maskrom」后重新烧录 - 烧录过程中禁止断电、拔线,否则可能无法开机,需重新进入 Loader 重烧 - 高级用户可在 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 === 固件来源二选一: - 向我司获取现成的 update.img(获取方式见 3.1) - 自行用 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盘本地升级 === - 把 update.img 拷到 U 盘根目录 - 把 U 盘插入整机的 USB 口(USB3.0 / USB2.0 任意一口均可) - 系统识别到升级包后按弹窗提示确认,升级过程中保持供电,完成后整机自动重启 **提示:**插入 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使用方法 ==== - 使用 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 # 部分固件需改用 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 模组** - 接上 4G 天线,SIM 卡缺口朝外插入卡座(芯片面朝板) - 上电后在「设置 → 网络和互联网 → 移动网络」中确认已识别 SIM 卡 - 打开移动数据,状态栏出现 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): - 安装并打开 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 节点的 R 与 T - RS232 — RS232 对发:交叉接线(R↔T,GND 共地) - RS232 — RS485 对发:经 232 转 485 模块 - RS232 — RS232 转 USB — PC 端串口助手 - RS485 — RS485 转 USB — PC 端串口助手 - RS485 回环:短接 A 与 B **注意事项** - 整机为 3.5mm 3P 可插拔端子(无 DB9),配压接端子或转接线使用;不同厂商的转接线线序可能不同,A / B 或 R / T 反接会直接导致通信失败 - 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_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" **划线与多点检测** - 「设置 → 开发者选项 → 指针位置」,手指滑动可看到 X / Y 坐标与轨迹 - 用五指同时按住屏幕,观察是否同时上报多个触点(多点触控) - 四角与中心各点按一次,确认无偏移、无死区(触摸校准数据出厂已写入,一般无需重新校准) **提示:**若触摸无响应,先确认触摸 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 章的命令行方式。 **接口源码包下载** {{wiki:androidapi1.5.zip|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 | | 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** 完成,整机需先连通外网。 - 打开应用列表,找到「update」 - 点击「UPDATE NOW」,按提示下载并安装 - 升级过程中保持供电与网络,完成后整机自动重启 应用列表中的 update 图标: {{wiki:ota_app_drawer.jpg?560}} 思迈联科在线升级界面: {{wiki:ota_updater.png?560}} **提示:**本节为 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(以背部丝印为准)。 **测试工具** - 图形界面: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 # 接收 **测试方式** 回环、对发与转接的接法见 **4.5.2**,与操作系统无关,本节不重复。 **注意事项** - 整机为 3.5mm 3P 可插拔端子(无 DB9),配压接端子或转接线使用;线序反接(A / B、R / T)会直接导致通信失败 - RS485 为半双工,方向由硬件自动切换,收发切换时注意帧间隔 - 提示无权限时把当前用户加入 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 登录前执行 === 适用于不依赖桌面、开机就要跑的后台服务。 - 编辑 /etc/rc.local 文件 - 在 exit 0 之前加入程序调用 - 保存退出(按 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 登录后执行 === 只对当前用户生效,在用户登录完成时执行。 - 编辑用户配置文件 ~/.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 工具并赋予可执行权限** {{wiki:bmpconvert.zip|下载 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 {{wiki:cm_lcd_sml.png?620}} 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)、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 工具链下载 === 常用交叉编译工具链与获取方式: * **aarch64-linux-gnu-gcc 交叉工具链**:SDK prebuilts 目录内提供 * **arm-linux-gnueabihf 交叉工具链**:用于 32 位用户态程序编译 * **x86 主机交叉编译 arm64 工具链**:ARM 官方发布,用于在 x86_64 主机上编译 aarch64(arm64)程序 **下载:**[[https://pan.baidu.com/s/1OjJVuzDB3hFMgO6yS3EAZw|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 {{wiki:qt_set_qmake.png?620}} 在 Qt Versions 中添加板内 qmake 路径。 **3. 配置交叉编译器** 同一窗口切到 Compilers → Add → GCC,分别添加 g++ 与 gcc: g++:/usr/bin/aarch64-linux-gnu-g++ gcc:/usr/bin/aarch64-linux-gnu-gcc g++ 编译器位置: {{wiki:qt_set_compiler_gpp.png?620}} gcc 编译器位置: {{wiki:qt_set_compiler_gcc.png?620}} 添加交叉编译器;主机装的是 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。 {{wiki:qt_set_debugger.png?620}} **5. 配置 Devices** 填入板卡 IP 与用户名 root;建议给板卡设置静态 IP,避免调试中断线。 {{wiki:qt_set_device.png?620}} **6. 配置 Kits** 把前面的 Qt 版本、编译器、调试器、设备组合成一个 Kit。目标系统为 Ubuntu 时,还需在 Kit 中填写 sysroot 路径。 {{wiki:qt_set_kits_std.png?620}} 在 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 {{wiki:cm_clinfo.png?620}} 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 技术支持 ==== * 固件、烧录工具、SDK 与规格书获取:联系销售或技术支持 * 反馈问题时请提供:整机 SN(查看方法见 6.2)、系统版本、复现步骤与截图 * 自行修改系统后出现异常,建议先重新烧录出厂固件(见 3.3)再判断是否为硬件问题