硬件平台选型:从SoC对比到底板设计
做嵌入式Linux网关,第一步就是选芯片。这事儿马虎不得——芯片选错了,后面驱动移植、外设调试全得跟着遭殃。我个人习惯是先看项目需求,再反过来挑SoC。今天咱们就拿三款主流芯片来掰扯掰扯:i.MX6ULL、STM32MP1、全志V3s。
三款主流SoC,谁更适合做网关?
先看一张对比表,心里有个底:
| 参数 | i.MX6ULL | STM32MP1 | 全志V3s |
|---|---|---|---|
| CPU核心 | 单核Cortex-A7 @ 800MHz | 单核Cortex-A7 + M4双核 | 单核Cortex-A7 @ 1.2GHz |
| 内存接口 | DDR3/LPDDR2,16位 | DDR3/LPDDR2,16位 | 内置64MB DDR2 |
| 以太网MAC | 2路,支持TSN | 2路,支持TSN | 1路,无TSN |
| CAN接口 | 2路FlexCAN | 2路FD-CAN | 无原生CAN |
| USB | 1路OTG + 1路HOST | 1路OTG + 1路HOST | 1路OTG |
| 工业级温度 | -40~105°C | -40~105°C | -20~85°C |
| 官方BSP维护 | Yocto/Linux 5.10+ | OpenSTLinux/Linux 5.15+ | 全志SDK/Linux 4.9 |
说说我的看法。i.MX6ULL是恩智浦的老将,生态成熟,资料多,社区活跃。我在一个工业数据采集项目里用过它,跑了两年没出过问题。STM32MP1有意思——它集成了Cortex-M4协处理器,适合做实时控制。全志V3s便宜,内置DDR,板子能做得极小,但BSP版本老,CAN得外扩。
我的选型建议:
- 工业网关、多协议转换 → i.MX6ULL,稳
- 需要实时控制 + Linux → STM32MP1,双核分工
- 成本敏感、功能简单 → 全志V3s,性价比高
核心板与底板设计要点
做网关产品,我强烈建议用核心板+底板方案。为什么?核心板把CPU、DDR、PMIC这些高密度、难焊接的器件封装好,底板只管接口和电源。万一CPU坏了,换核心板就行,底板不用动。
核心板设计要注意几个点:
- DDR走线等长——数据线组内误差不超过±20mil,时钟线单独等长。我见过一个项目,DDR走线差了50mil,系统跑着跑着就死机。
- PMIC选型——至少留一路备用LDO,调试时你就知道有多重要了。
- Boot配置电阻——上拉到核心板,别放底板。否则换启动介质时还得改底板。
底板设计,说白了就是接口的物理层实现。以太网要加PHY和变压器,USB要加ESD保护,CAN要加收发器。嗯,这里有个坑——电源隔离。如果网关要接工业现场,底板上的DC-DC最好用隔离模块,否则浪涌一来,核心板跟着遭殃。
避坑指南:我曾经在一个项目里把核心板的串口直接拉到DB9上,没加电平转换。结果接上PLC的RS232,核心板直接冒烟。从那以后,所有外露接口我都加保护器件。
外设接口选型:以太网、USB、CAN、UART
网关嘛,接口就是它的命。咱们一个一个说。
以太网
网关至少需要两路以太网——一路接内网,一路接外网。i.MX6ULL和STM32MP1都自带两路MAC,省事。PHY芯片我常用的是Microchip KSZ8081或TI DP83822,便宜又稳定。如果要做工业级,记得选支持-40°C的型号。
变压器选型也有讲究。隔离电压至少要1500Vrms,共模扼流圈不能省。我遇到过用便宜变压器导致丢包的情况,换了TDK的片子就好了。
USB
USB主要用来接4G模块、Wi-Fi网卡或者U盘。注意:USB HOST口要加500mA自恢复保险丝,否则短路就烧板子。OTG口做调试用,平时别接大功率设备。
全志V3s只有一个USB OTG,想做双口得外接USB Hub。嗯,这又增加了成本和PCB面积。
CAN
工业现场离不开CAN。i.MX6ULL的FlexCAN支持CAN 2.0,STM32MP1支持CAN-FD。如果项目需要传输大数据,CAN-FD是趋势。收发器我推荐TJA1050或SN65HVD230,3.3V供电,兼容5V逻辑。
全志V3s没有原生CAN,得用SPI转CAN芯片,比如MCP2515。延迟大,吞吐量低,只适合低速应用。
UART
UART看似简单,坑却不少。RS232电平需要MAX3232转换,RS485需要SP3485。波特率建议不超过115200,否则长线传输容易出错。
我习惯在每个UART口上加TVS管,防止热插拔打坏芯片。嗯,这个习惯救过我两次。
一张图看懂硬件选型逻辑
下面这张图总结了从需求到选型的完整流程:
重要提醒:选型时别只看芯片参数,还要看BSP维护周期。全志V3s的Linux 4.9内核已经停止维护,很多新驱动都打不上去。i.MX6ULL和STM32MP1的内核还在持续更新,长期项目更靠谱。