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

相关推荐
Godspeed Zhao2 天前
现代智能汽车系统——智驾SoC之框架版图
人工智能·机器学习·自动驾驶·汽车·soc
世微 如初2 天前
AP5125大功率LED恒流驱动实战:地摊灯项目从原理图到调试笔记
驱动开发·芯片·led电源驱动·降压恒流ic
AndyHeee2 天前
【SVC、PendSV(系统异常) 与 外设 IRQ 、NVIC笔记】
arm开发
暮云星影2 天前
瑞芯微rk3588利用Rockchip NPU运行大语言模型(LLM)
arm开发·人工智能·语言模型·自然语言处理
techdashen2 天前
绕过系统 ICMP:用 rawsock、Npcap 和 WMI 找到默认网卡
开发语言·arm开发·rust
振南的单片机世界2 天前
ARM中断比51快在哪?硬件压栈+NVIC集中管理
arm开发·stm32·单片机·嵌入式硬件
墨绿色的摆渡人2 天前
论文笔记(一百三十七)Learning Dual-Arm Push and Grasp Synergy in Dense Clutter
arm开发·论文阅读
暮云星影3 天前
全志linux开发屏幕适配(一)屏幕参数设置说明
linux·arm开发
m0_547486663 天前
《ARM Cortex-M4嵌入式应用技术——基于STM32F407、STM32CubeMX与Proteus》全套PPT课件
arm开发·stm32·proteus
謓泽3 天前
【6.14】dB/dBm 标准两步换算流程(通用 / 用途说明)
芯片·公式·半导体·射频