一、简介:国产飞腾 + 实时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-rt53

5.3 编译 rt-tests(cyclictest)

git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
cd rt-tests
make
sudo make install

5.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 到主机目录编译

七、实践建议与最佳实践

  1. BIOS 设置“工业模式”
    关闭 Turbo、C1E、Spread Spectrum,可减少 10-20 μs 抖动。

  2. 使用 nfs-root 开发
    /home 挂载到主机 SSD,编译速度提升 3 倍,TF 卡仅留 /boot。

  3. Git 管理补丁
    对飞腾设备树(DTB)的修改单独生成 *.patch,CI 自动打补丁,避免“改完忘记”。

  4. 持续化测试
    每夜跑 cyclictest 12h + trace-cmd ,Max > 50 μs 自动发邮件。

  5. 版本锁定
    内核、gcc、libc、rt-tests 哈希写入《软件配置清单》,后续认证审计直接引用。

  6. 文档同步
    使用 “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 的那一刻,你就拥有了:

  • 硬实时数据底稿

  • 认证机构认可的测试模板

  • 能源、矿山、轨交国产化项目的“入场券”

Logo

更多推荐