1. i.MX RT1180 双核架构与 TSN 硬件能力分析
i.MX RT1180 采用 Cortex‑M7(高性能业务核)+Cortex‑M33(安全 / 系统核)异构双核架构。
- CM7:承担 TSN 业务处理、enetc0 以太网控制器驱动,TSN 网桥、调度流量处理;对应编译配置
release_enetc0,启用以太网控制器 0; - CM33:系统 shell 交互、角色配置下发,配置文件存储;对应编译配置
release_no_enetc0,关闭 enetc0 硬件,避免资源冲突; - 硬件具备 ENETC 以太网控制器,硬件支持时间戳,是 gPTP 高精度时间同步的硬件基础;XBAR 交叉开关负责片上内核之间消息交互,内核之间通过虚拟文件系统
/m7/*完成 CM33 向 CM7 下发配置参数。
本 Demo 中 CM33 不操作以太网硬件,仅作为配置 Shell,所有 TSN 硬件操作由 CM7 完成,跨核通信是整套 Demo 运行的核心。
资料获取:在 i.MX RT1180 上运行 GenAVBTSN Stack FreeRTOS 评估用例的分步指南
2. GenAVB/TSN‑rtos‑apps 8.0 关键组件解析
- GenAVB/TSN 协议栈:实现 AVB/TSN 标准,包含 gPTP 时间同步、Qbv 时间感知门控、VLAN、FDB 转发数据库、时间特定发送;
- MCUX 驱动层:XBAR、ENETC 以太网驱动、GPIO 按键驱动;
- Demo 应用 tsn_app:Demo 业务逻辑,区分 Controller(role0)与 IO Device(role1)两种角色;
- Shell 交互子系统:串口 shell,通过写虚拟文件节点完成参数配置,不需要 API 编码,直接 shell 命令配置;
- FreeRTOS 内核:任务调度,TSN 周期任务基于 RTOS 任务实现。
3. Kconfig 修改原理:XBAR 交叉开关驱动依赖问题
原版工程编译前,需要手动修改 CM7 的 Kconfig 文件,增加driver.xbar_1组件选择。
- XBAR1 是片上跨核消息交换硬件,CM33 的 shell 需要通过 XBAR 向 CM7 传递配置参数;
- 如果 Kconfig 没有打开 XBAR_1 驱动,跨核通信失效,shell 写入
/m7/tsn_app/*的配置参数无法传递给 CM7 内核,TSN 角色、周期等参数不生效; - 同时开启
APP_USER_BUTTON组件,板载按键支持;
这是官方文档没有重点强调的修改点,很多开发者直接编译,没有修改 Kconfig,出现配置写入无效现象。文件路径:genavb_tsn_rtos_apps\GenAVB‑TSN‑rtos‑apps\boards\evkmimrt1180\demo_apps\avb_tsn\tsn_app\cm7\Kconfig。
4. 编译配置项差异:release_no_enetc0 与 release_enetc0
| 编译配置 | 使用内核 | 核心行为 |
|---|---|---|
| release_no_enetc0 | CM33 | 关闭 enetc0 以太网硬件,CM33 不操作以太网,只做 shell 配置交互,避免双内核争抢以太网硬件资源 |
| release_enetc0 | CM7 | 启用 enetc0 以太网控制器,所有 TSN 网桥、TSN 终端业务全部运行在 CM7 内核上 |
注意:VS Code MCUXpresso 插件存在工作空间工程导入限制,同一工作空间不能同时导入 cm33 和 cm7 工程,必须移除其中一个,再导入另一个工程,该缺陷计划后续 SDK 版本修复。编译产物输出 bin/elf 文件,bin 用于烧录,elf 用于调试。
5. 多内核镜像烧录与启动机制
i.MX RT1180 双内核独立镜像,烧录需要分别烧录 CM33、CM7 bin 文件。
- 下载模式:SW5 [1‑4]=0001 串行下载模式;J1 跳帽 7‑8 位置,Debug USB 供电;USB_OTG1 用于固件下载;
- 烧录参考手册 Multi‑core images flashing 章节;
- 烧录完成后切换 QSPI 启动模式 SW5 [1‑4]=0100,从片外 QSPI Flash 启动;
- JP7 跳帽移除:板卡 Debug USB 枚举 2 个串口,分别对应 CM33、CM7 日志输出;JP7 闭合只会出现一个串口,丢失一个内核日志;
- 运行状态标志:红色 LED D7 闪烁,代表 TSN app 业务任务正常运行。
6. TSN 核心协议配置技术拆解
本用例所有配置全部通过 CM33 shell 执行,必须按下 Insert 暂停日志打印,才能输入命令。
- 角色配置 role:role=0 → Controller 控制器节点;role=1 → IO Device 从站节点;
period_ns=250000业务周期 250us; - MAC 硬件地址配置:两块板卡各个端口配置不同 MAC 地址,二层转发 FDB 数据库依靠 MAC 地址转发;官方文档原始版本缺失该步骤,会直接导致转发失败;
- gPTP 配置:
fgptp/priority1配置 gPTP 主从优先级,决定谁成为网络时钟主;TSN 所有调度流量都依赖 gPTP 全局统一时间基准; - VLAN & FDB 转发数据库:vlan_update 配置 VLAN 成员;fdb_update 配置 MAC 地址转发端口;TSN 网桥基于 FDB 决定报文转发端口;
- Qbv 时间感知门控:
qbv_set命令配置每个端口门控列表,base 时间、周期,对应 TSN 802.1Qbv 标准,划分时间窗口,保障实时流量优先发送; - Time‑Specific Departure 时间特定发送:
tx_time_enabled=1开启时间触发发送,tx_time_offset_ns设置相对于周期起点的发送偏移,报文在指定时间点精准发出,用于硬实时控制业务。
全部配置写入虚拟文件系统/m7/tsn_app/xxx,由 XBAR 硬件传递给 CM7 内核生效,复位板卡加载配置。
7. 典型技术问题根因分析
- 现象:串口输入命令无反应
根因:没有按下 Insert 键停止日志刷屏,终端输入被日志冲刷;
- 现象:D7 LED 不闪烁
根因:启动模式错误、镜像烧录失败、Kconfig 缺失 XBAR 驱动,应用没有正常启动;
- 现象:gPTP 无法同步,QBV 流量不通
根因:未配置端口 MAC 地址,FDB 转发表为空,VLAN 没有配置;原版官方文档没有写该部分,是高频踩坑点;
- 现象:VS Code 无法导入第二个内核工程
根因:工作空间已经存在同名工程,需要 Remove Project from Workspace,不要删除磁盘文件;
- 现象:只能看到一个内核串口日志
根因:JP7 跳帽没有移除,无法枚举双串口。
208