透视 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 指挥了整个芯片内部总线以及板载的物理芯片,共同完成了一次"发货"任务。

相关推荐
振南的单片机世界6 小时前
IDLE中断:串口收完一帧数据,硬件自动“吹哨”
arm开发·stm32·单片机·嵌入式硬件
zbyyd1 天前
Linux 基础与 Shell 命令
linux·运维·arm开发
深念Y1 天前
订阅管理及节点过滤实践(技术笔记)
linux·网络·arm·优化·日志·工具·soc
深圳市贝乐实业股份有限公司1 天前
APS1604M-DQRABA:赋能智能可视门铃
芯片·psram·存储芯片·智能可视门铃
至为芯2 天前
IP2366至为芯支持C口双向快充的140W锂电池升降压充放电芯片
集成电路·芯片·电子元器件
振南的单片机世界2 天前
EXTI“一线多挂”陷阱:PA0和PB0同时触发,中断函数懵了
arm开发·stm32·单片机·嵌入式硬件
LCMICRO-133108477462 天前
国产长芯微LP4807完全P2P替代ADA4807,1mA、300MHz 增益带宽、电压反馈运算放大器
arm开发·嵌入式硬件·fpga开发·硬件工程·运算放大器·ada4807
LCMICRO-133108477462 天前
国产长芯微LP8628完全P2P替代AD8628,零漂移、单电源、输入输出轨到轨高精度运放
arm开发·嵌入式硬件·fpga开发·硬件工程·精密运放·ad8628
zlinear数据采集卡4 天前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
CIAS4 天前
uniontechos-server-20 1050 u2a pxe Server -x86 arm loongarch
arm开发