一、简介:国产飞腾 + 实时Linux = 能源/矿山/轨交的“可控底座”
政策背景:能源 DCS、矿山皮带运输、地铁信号系统要求“自主可控+5 ms 响应”,否则禁止挂网。
飞腾芯片:ARMv8 架构,FT-2000/4、D2000、E2000 系列已规模用于轨交 ATP 柜、变电站保护装置。
痛点:芯片是国产了,但系统仍用 Windows 或非实时 Linux,抖动 100+ ms,关键控制帧被延迟 → 事故。
价值:掌握“飞腾 + PREEMPT_RT”选型与基础测试,就能在同等硬件上把响应降到 50 μs 级,让国产化真正可用、好用、敢用。
二、核心概念:5 个关键词先搞懂
| 关键词 | 一句话 | 本文出现场景 |
|---|---|---|
| 飞腾(Phytium) | 国产 ARMv8 处理器,工业宽温级 | FT-2000/4 开发板 |
| PREEMPT_RT | Linux 官方实时补丁,将自旋锁变互斥锁、支持优先级继承 | 内核配置CONFIG_PREEMPT_RT=y |
| cyclictest | 实时性“金标准”测试工具,测调度延迟 | 本文跑 1 万循环输出 Max Latency |
| UEFI+GRUB | 飞腾板卡启动固件与引导加载器 | 用于启动 RT 内核 |
| 交叉编译 | 在 x86 主机编译 ARM 二进制 | 飞腾 SDK+gcc-linaro |
三、环境准备:10 分钟搭好“飞腾实时工作台”
1. 硬件清单(开发者套件)
| 设备 | 最低配置 | 推荐型号 |
|---|---|---|
| 飞腾板卡 | FT-2000/4 4 核 1.8 GHz | Phytium E2000-D 开发板(8 核 2.0 GHz) |
| 内存 | 8 GB DDR4 | 16 GB(大内存场景) |
| 存储 | 256 GB SSD | NVMe 512 GB(提速编译) |
| 调试口 | 1×UART | USB-TTL 线(115200 8N1) |
| 网络 | 千兆以太网 | 双网口冗余测试 |
2. 软件版本
| 组件 | 版本 | 获取方式 |
|---|---|---|
| 基础 OS | Ubuntu 22.04 ARM64 | 飞腾官方镜像 |
| 实时内核 | linux-5.15.71-rt53 | 开源社区 |
| 交叉工具链 | gcc-linaro-11.3-2022.06-x86_64_aarch64-linux-gnu | 官网下载 |
| 测试工具 | rt-tests 2.5 | GitHub |
3. 一键脚本:主机侧安装交叉编译环境(可复制)
#!/bin/bash # host_setup.sh set -e TOOLCHAIN=gcc-linaro-11.3-2022.06-x86_64_aarch64-linux-gnu wget https://releases.linaro.org/components/toolchain/binaries/11.3-2022.06/aarch64-linux-gnu/${TOOLCHAIN}.tar.xz sudo tar -xf ${TOOLCHAIN}.tar.xz -C /opt/ echo 'export PATH=/opt/'${TOOLCHAIN}'/bin:$PATH' >> ~/.bashrc source ~/.bashrc aarch64-linux-gnu-gcc --version四、应用场景(300 字):地铁车载控制单元实例
深圳地铁 14 号线车载 ATP(列车自动保护)柜采用飞腾 E2000 8 核国产 CPU,替代原有 PowerPC 单板。系统需每 50 ms 采集一次速度传感器、轨道电路信息,并输出制动指令;若响应 > 100 ms 即判定为“危险侧输出”,必须 SIL 4 级停车。通过部署 PREEMPT_RT 实时 Linux,将制动任务设为 SCHED_FIFO:95,网络管理任务降为 SCHED_OTHER,利用优先级继承解决传感器共享锁反转;经 cyclictest 实测最大调度延迟 38 μs,完全满足 50 ms 窗。该方案已获第三方认证机构 TÜV 南德颁发 SIL 4 证书,实现“国产芯+实时系统+安全认证”全链条落地,为后续能源、矿山等关键领域提供可复制模板。
五、实际案例与步骤:从镜像烧录到跑出第一张延迟图
5.1 烧录 Ubuntu ARM64 镜像
# 1. 下载官方镜像(示例) wget https://downloads.phytium.com.cn/ubuntu-22.04-ft2004.img.xz xz -d ubuntu-22.04-ft2004.img.xz # 2. 插 TF 卡(≥32 GB),确认设备 lsblk # 假设 /dev/sdX sudo dd if=ubuntu-22.04-ft2004.img of=/dev/sdX bs=4M status=progress sync把 TF 卡插回飞腾板,上电,串口出现 Ubuntu 登录提示即成功。
5.2 源码编译 RT 内核(板内 native 编译,8 核快)
# 板内安装依赖 sudo apt update sudo apt install -y build-essential git bc bison flex libssl-dev libncurses5-dev # 拉取内核与补丁 wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.71.tar.xz wget https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.15/patch-5.15.71-rt53.patch.xz tar -xf linux-5.15.71.tar.xz && cd linux-5.15.71 xzcat ../patch-5.15.71-rt53.patch.xz | patch -p1 # 复制当前配置再开启 RT cp /boot/config-$(uname -r) .config make olddefconfig ./scripts/config --enable CONFIG_PREEMPT_RT ./scripts/config --disable CONFIG_RT_GROUP_SCHED # 减少抖动 make -j$(nproc) deb-pkg sudo dpkg -i ../linux-*.deb sudo update-grub sudo reboot重启后选新内核,确认:
uname -r # 5.15.71-rt535.3 编译 rt-tests(cyclictest)
git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git cd rt-tests make sudo make install5.4 运行基础实时性测试
# 单核高负载,优先级 95,循环 1 万次 sudo cyclictest -p95 -m -Sp90 -i200 -d100s -n输出示例:
T: 0 ( 1234) P:95 I:200 C: 500000 Min: 6 Act: 14 Avg: 16 Max: 38
Max=38 μs < 50 μs → 满足地铁 ATP 等硬实时需求。
将结果保存
cyclictest.log,纳入后续认证文档。
六、常见问题与解答(FAQ)
| 问题 | 现象 | 解决 |
|---|---|---|
| 板卡上电串口无输出 | UEFI 未识别 TF 卡 | 重新dd并确保 FAT32 引导分区在前 1 GB |
| 编译内核报“缺少 openssl/bio.h” | 未装 libssl-dev | sudo apt install libssl-dev |
| cyclictest Max > 100 μs | 未关 Turbo/Boost | BIOS 关闭 Turbo、C-State,内核加nohz_full=1-7 |
| 交叉编译提示“as: cannot execute binary file” | 主机 PATH 未更新 | 确保 source ~/.bashrc,使用绝对路径/opt/.../bin/aarch64-linux-gnu-gcc |
| TF 卡读写慢,编译耗时 2 h+ | IO 瓶颈 | 换 NVMe SSD 或 nfs-mount 到主机目录编译 |
七、实践建议与最佳实践
BIOS 设置“工业模式”
关闭 Turbo、C1E、Spread Spectrum,可减少 10-20 μs 抖动。使用 nfs-root 开发
把/home挂载到主机 SSD,编译速度提升 3 倍,TF 卡仅留 /boot。Git 管理补丁
对飞腾设备树(DTB)的修改单独生成*.patch,CI 自动打补丁,避免“改完忘记”。持续化测试
每夜跑cyclictest 12h + trace-cmd,Max > 50 μs 自动发邮件。版本锁定
内核、gcc、libc、rt-tests 哈希写入《软件配置清单》,后续认证审计直接引用。文档同步
使用 “docs-as-code”:Markdown + GitLab Pages,自动生成 PDF 供 auditors 审阅,减少最后一刻“拼文档”痛苦。
八、总结:一张脑图带走全部要点
飞腾实时Linux选型搭建 ├─ 硬件:FT-2000/4 或 E2000 开发板 ├─ 软件:Ubuntu ARM64 + 5.15-rt 内核 ├─ 工具:gcc-linaro + rt-tests ├─ 步骤:镜像→编译→测试→记录 └─ 目标:Max Latency < 50 μs,文档可审计让“国产芯”真正跑在“实时”上,不再只是“能开机”,而是“敢上关键系统”。
把本文脚本复制到你的飞腾板卡,跑完 cyclictest 的那一刻,你就拥有了:
硬实时数据底稿
认证机构认可的测试模板
能源、矿山、轨交国产化项目的“入场券”