透视 SOC 内部:APU Cluster 如何驱动 DB15 的 CAN/ETH 信号输出

背景描述

  • XPU-SoC就是apu,也叫做cpu,apu更强调了application应用层的业务
  • 通过sudo minicom -D /dev/ttyUSB2 -b 921600,可以进入apu的串口,进而能观察到串口的日志输出
  • 实际上minicom进入的是APU核心群(也就是五个apu cluster),APU核心群共同构成了芯片的计算大脑
  • 具体而言,minicom进入的是运行在SoC上的linux操作系统的shell层
  • linux操作系统的内核同时管理着所有可用的CPU核心(也就是cluster 0/1/2/3)
  • minicom进入apu后,看到的日志(如xminer/xconf)是运行在操作系统上的进程,操作系统调度器会自动决定将这些进程放在哪个Cluster的哪个核心上运行;
    例如:xconf的某个线程可能在Cluster0上跑1ms,下一秒可能调度到Cluster1上运行;
  • 串口的物理连接:串口通常连接到芯片的UART控制器上(SBSX)

我不理解的问题

这些apu日志打印的进程内容,是如何通过板子上的DB15接口变成CAN/Eth信号发出去的呢?


逻辑梳理

第一步:软件层(应用进程 -> 内核驱动)

地点:APU Cluster (CPU核心)

日志中打印的 [xminer]是运行在 APU Cluster(比如 Cluster 0 或 1)上的 Linux 应用程序。

  1. 数据生成:应用程序(如感知算法)计算出结果(例如:"前方有障碍物,速度 50km/h")。
  2. 系统调用:应用程序通过 Linux 的网络协议栈(Socket API)或 CAN 协议栈(SocketCAN),将这些数据打包成标准的数据包(TCP/UDP 包或 CAN 帧)。
  3. 写入内存:CPU 通过指令,将这些数据包写入到系统的 DDR 内存中。
  4. 注意:此时数据还在内存里,只是一堆二进制数字。

第二步:片上互联层(CPU -> 外设控制器)

地点:CMN600AE (NoC 互联网络)

这是数据离开 CPU 核心去往外部世界的"高速公路"。

  1. 通知控制器:CPU 通过 CMN600AE 互联网络,向以太网控制器(MAC)或 CAN 控制器发送一个信号:"嘿,我在内存地址 0xXXXX 放了一个包,你把它发出去。"
  2. DMA 传输:以太网/CAN 控制器内部的 DMA(直接内存访问)引擎,通过 CMN600AE 直接去读取 DDR 内存中的数据包。
  3. 在这个过程中,数据流经了图中的 CMN600AE 模块,从左侧的 CHI 接口(连接 CPU)流向右侧的 AXI 接口(连接外设)。

第三步:硬件封装层(数字信号处理)

地点:SOC 内部的 MAC/Controller 硬核

帧封装

  • 以太网:MAC 控制器会给数据加上以太网头部(MAC 地址)和尾部(校验码),将其组装成符合 IEEE 802.3 标准的帧。
  • CAN:CAN 控制器会加上仲裁段、控制段等,组装成 CAN 帧。
  • 串行化:控制器将这些并行数据转换为串行比特流。

第四步:物理层转换(数字 -> 模拟/差分信号)

地点:板载的 PHY 芯片与 DB15 连接器

这是最关键的一步,SOC 输出的是低压数字信号(如 RGMII 或 TTL 电平),不能直接传输,必须经过板上的物理层芯片(PHY)和接口电路。

以太网信号路径

  1. SOC 输出:SOC 输出 RGMII/GMII 数字信号(TXD, TXC, TX_EN)。
  2. PHY 芯片:板子上会有以太网 PHY 芯片,它接收数字信号,将其调制为模拟差分信号。
  3. 变压器:信号经过网络变压器(用于隔离和抗干扰)。
  4. DB15 输出:最终,差分信号(TX+, TX-, RX+, RX-)被引到 DB15 连接器的特定引脚上。

CAN 信号路径

  1. SOC 输出:SOC 输出 TX/RX 数字逻辑电平。
  2. CAN 收发器:XCCP 板子上会有 CAN 收发器芯片(如 TJA1042)。它负责将逻辑电平转换为 CAN 总线标准的差分电压(CAN_H, CAN_L)。
  3. DB15 输出:CAN_H 和 CAN_L 线路被连接到 DB15 连接器的对应引脚。

总结

信号流转全景图

阶段 核心组件 物理形式 关键动作
软件层 APU Cluster 二进制数据 xminer 进程完成算法计算,通过 Socket 下发指令。
互联层 CMN600AE 片上总线信号 数据通过 CHI 接口离开 CPU,由 DMA 搬运至外设。
封装层 MAC/CAN Controller 数字逻辑电平 完成帧头的添加(如 MAC 地址、CAN 仲裁位等)。
物理层 PHY/Transceiver 差分电压 将逻辑 0/1 转换为抗干扰的差分模拟信号
物理出口 DB15 接口 电缆连接 最终引脚输出,对接外部车辆总线或记录仪。

所以

通过串口看到日志时,那是 CPU 在"自言自语";

而当数据通过 DB15 输出时,是 CPU 指挥了整个芯片内部总线以及板载的物理芯片,共同完成了一次"发货"任务。

相关推荐
深圳市贝乐实业股份有限公司10 小时前
APS1604M-SQR-SN:这颗芯片如何成为移动打印机的“隐形功臣”?
芯片·psram·存储芯片·aps1604m-sqr-sn
天下·第二12 小时前
如何在【x86】服务器上打包构建【arm】镜像
服务器·arm开发·eureka
洞察物理世界14 小时前
【硬件_τ定律】华为韬定律(τ 定律)理论重塑半导体行业
芯片·半导体·韬定律·摩尔定律
止观止14 小时前
在 WSL2 上从零搭建 ARM 混合编程环境
汇编·arm开发·嵌入式开发·混合编程
陌上花开缓缓归以1 天前
nand flash bbt和bmt管理
arm开发
小熊officer1 天前
AMD架构与ARM架构
arm开发·架构
_kerneler2 天前
arm虚拟机实时性优化总结
arm开发
口袋里のInit2 天前
基础知识——ARM M核入栈出栈流程
开发语言·arm开发
蚁小二官方2 天前
华为韬定律突破芯片迭代瓶颈,赋能AI芯片多场景创新落地
芯片·ai芯片·华为韬定律
fuquxiaoguang3 天前
华为“韬(τ)定律”深度解读:后摩尔时代芯片设计的新范式
人工智能·华为·芯片·韬(τ)定律