2. T507硬件平台解析
全志T507是一颗面向车载中控、工业HMI、智能终端等场景的高集成度SoC。做BSP开发,第一步不是急着改驱动,而是把“芯片里有什么、它们怎么连、地址怎么排、引脚怎么复用”这四件事弄清楚。本节从CPU/GPU/VPU/NPU四类计算单元出发,串联内存映射、外设接口、典型开发板资源与引脚复用,建立T507平台的硬件全景认知。
一、四类计算单元:各司其职的异构架构
T507内部并非单一CPU,而是由四类计算单元协同工作,各自承担不同任务:
- CPU(ARM Cortex-A53 ×4):运行Linux内核、文件系统与应用程序,是BSP开发的主战场。四核A53主频约1.5GHz,支持ARMv8-A 64位指令集,负责调度、中断处理、驱动逻辑与外设控制。
- GPU(Mali-G31 MP2):负责2D/3D图形渲染,支撑Qt、Wayland、OpenGL ES等图形栈。BSP中需关注GPU驱动(Mali内核驱动+用户态库)与显示子系统的配合。
- VPU(视频编解码单元):独立硬件编解码模块,支持H.264/H.265等格式的编解码,常用于摄像头预览、视频播放、多路视频输入。它通过DMA与内存交互,不占用CPU算力。
- NPU(神经网络加速单元):部分T507型号集成NPU,用于轻量级AI推理,如人脸检测、目标识别。BSP需加载NPU驱动并提供推理运行时接口。
二、内存映射:BSP开发的“地址地图”
T507采用统一内存映射架构,CPU、GPU、VPU、NPU共享同一片DDR物理内存,但各自通过不同的地址窗口访问。BSP开发中最常接触的是三类地址:
- DDR物理地址:如0x40000000起始的DRAM空间,内核、根文件系统、CMA预留区都从这里划分。
- 外设寄存器基址:如UART0基址、I2C控制器基址,驱动通过ioremap映射后读写。
- 预留内存区:如VPU编解码缓冲、NPU模型内存、显示framebuffer,需在设备树中通过reserved-memory声明,避免被内核通用分配器占用。
设备树中的memory节点与reserved-memory节点是内存映射的“配置入口”。例如:
memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0x0 0x80000000>; /* 2GB DDR */
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
vpu_buf: vpu_buffer@4a000000 {
reg = <0x0 0x4a000000 0x0 0x02000000>;
no-map;
};
};
三、外设接口与典型开发板资源
T507的外设接口丰富,典型开发板通常引出以下资源。BSP开发需要对照原理图确认每个接口的控制器编号、引脚组和电平标准:
| 接口类型 | 典型用途 | BSP关注点 |
|---|---|---|
| UART | 调试串口、外接模块 | 波特率、引脚复用、console配置 |
| I2C | 触摸屏、传感器、PMIC | 总线编号、从机地址、上拉电阻 |
| SPI | Flash、显示屏、无线模块 | 片选、时钟极性、DMA模式 |
| PWM | 背光调节、电机控制 | 周期、占空比、引脚复用 |
| GPIO | 按键、复位、使能信号 | 方向、上下拉、中断触发方式 |
| USB | Host/OTG、摄像头 | PHY配置、供电控制、模式切换 |
| Ethernet | 有线网络 | PHY地址、RMII/RGMII模式 |
| MIPI-CSI/DSI | 摄像头输入、显示输出 | Lane数、时钟频率、时序参数 |
| SDIO | eMMC、SD卡、WiFi | 总线宽度、时钟、电源域 |
四、引脚复用:一个引脚多种身份
T507的引脚大多支持多种功能复用(PinMux)。同一个物理引脚,可能既是GPIO,又是UART_TX,还是PWM输出。BSP开发中,引脚复用通过设备树的pinctrl子系统配置。典型写法如下:
&pio {
uart0_pins: uart0-pins {
pins = "PB0", "PB1";
function = "uart0";
bias-pull-up;
};
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;
status = "okay";
};
引脚复用的核心逻辑是:先确定外设控制器需要哪些引脚,再在pinctrl节点中声明功能、电平和驱动能力,最后在设备树中把pinctrl句柄挂到对应控制器上。若复用冲突,内核启动日志会出现“pin already requested”或外设probe失败。
dtc -I dtb -O dts -o board.dts board.dtb),对照原理图逐项核对pinctrl配置,这是排查“外设不工作”最快的方法。五、案例与复盘:从“串口无输出”看硬件平台理解
某项目调试时,T507开发板串口无任何启动日志。排查过程如下:
- 确认串口线连接的是UART0,而非其他UART。
- 检查设备树中UART0的status是否为“okay”。
- 检查pinctrl是否把PB0/PB1复用为uart0,而非被GPIO占用。
- 检查时钟与复位是否使能,确认波特率与终端一致。
- 最终发现是pinctrl中function写成了“gpio”,导致TX引脚未切换到UART功能。
这个案例说明:T507 BSP开发中,硬件平台解析不是“看一遍文档”,而是要把计算单元、内存映射、外设接口和引脚复用四者串成一条链。任何一个环节配置错误,都会表现为“驱动加载失败”或“外设无响应”。
掌握T507的硬件平台结构后,后续的启动流程、设备树编写、驱动移植和系统裁剪才有稳固的落脚点。CPU/GPU/VPU/NPU决定了能力边界,内存映射决定了资源分配,外设接口与引脚复用决定了板级适配的成败。