第2章:硬件平台选型:主流SoC方案对比与存储无线选型要点
做机顶盒开发,第一步就是选芯片。
说实话,这一步要是选错了,后面整个团队都得跟着遭罪。我见过不少项目,因为SoC选型时没想清楚,结果到量产阶段发现解码能力不够、或者DDR带宽卡脖子,最后只能硬着头皮换平台,那叫一个痛苦。
今天我就把主流方案掰开揉碎了讲。海思、晶晨、瑞芯微、全志,这四家我全都用过。每个方案的脾气秉性,我多少都摸过一些。
2.1 主流SoC方案对比
先看一张对比表,心里有个底。
| 厂商 | 代表型号 | CPU架构 | 视频解码 | 典型应用 | 我的评价 |
|---|---|---|---|---|---|
| 海思 | Hi3798MV200 | 四核Cortex-A53 | 4K@60fps H.265 | 运营商IPTV、高端OTT | 稳定,但生态封闭 |
| 晶晨 | S905X4 | 四核Cortex-A55 | 4K@60fps AV1 | 海外OTT、Android TV | 性价比高,开源友好 |
| 瑞芯微 | RK3566 | 四核Cortex-A55 | 4K@60fps H.265 | 智能盒子、边缘计算 | 接口丰富,适合定制 |
| 全志 | H616 | 四核Cortex-A53 | 4K@30fps H.265 | 低成本入门盒子 | 便宜,但解码弱 |
2.1.1 海思:运营商的宠儿
海思的片子,我最早接触是在做电信IPTV项目的时候。说实话,海思的稳定性确实没得挑。它的视频解码流水线是自研的,跑4K@60fps的H.265,画面几乎不掉帧。
但有个问题——SDK封闭。你想改个底层驱动?门都没有。我记得有一次客户要求加一个自定义的HDMI CEC功能,海思那边硬是拖了两个月才给补丁。所以我的建议是:如果你做运营商项目,海思是首选;但如果是做互联网OTT,自由度不够。
2.1.2 晶晨:开源社区的明星
晶晨的S905系列,在海外市场特别火。为什么?因为它的Linux BSP和Android TV支持做得最好。你甚至可以直接从GitHub上拉一份主线内核,稍微改改设备树就能跑起来。
我个人习惯用晶晨做原型验证。它的AV1硬解是亮点,现在很多流媒体平台都在推AV1,未来两三年不会过时。不过要注意,晶晨的PMU(电源管理单元)集成度不高,外部需要搭配一颗专门的PMIC,会增加一点BOM成本。
2.1.3 瑞芯微:接口最全的“瑞士军刀”
瑞芯微的RK3566,我是在做一款带AI功能的智能盒子时用到的。它的优势在于外设接口——双千兆网口、多路USB3.0、PCIe、甚至SATA。如果你需要接摄像头、硬盘或者做边缘计算,瑞芯微是首选。
但它的视频解码能力比海思和晶晨稍弱。虽然标称支持4K@60fps,但在实际测试中,码率超过80Mbps的H.265流会有轻微掉帧。嗯,这一点你要心里有数。
2.1.4 全志:极致成本的妥协
全志的H616,说白了就是为价格敏感市场准备的。一颗芯片不到5美元,还集成了DDR3控制器和以太网PHY。如果你做的是百元以内的入门盒子,全志是唯一选择。
但代价也很明显:视频解码只支持4K@30fps,而且没有AV1。另外,它的GPU是Mali-G31,跑Android 12的Launcher都偶尔卡顿。我的建议是:别对它抱太高期望,做好基本功就行。
2.2 DDR选型要点
DDR选型,核心就三个字:带宽、容量、时序。
- 带宽匹配:4K@60fps的H.265解码,大约需要3.2GB/s的内存带宽。DDR3-1600 32bit刚好够用,但建议留20%余量,选DDR4-2400或LPDDR4。
- 容量规划:Android系统本身占用约1.5GB,加上应用和缓存,2GB是底线。如果做4K UI或跑多任务,建议4GB起步。
- 时序参数:CL值越低越好。CL11的DDR3比CL13的快约8%。但别为了追求低时序而牺牲稳定性,我见过有人把CL压到9,结果高温测试直接挂掉。
2.3 Flash选型要点
Flash选型,主要看eMMC和NAND Flash两种。
| 类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| eMMC | 内置控制器,坏块管理透明 | 成本高,容量固定 | Android系统、高可靠性产品 |
| NAND Flash | 成本低,容量灵活 | 需要软件做ECC和磨损均衡 | Linux系统、低成本方案 |
我个人习惯:只要预算允许,优先选eMMC。为什么?因为省心。NAND Flash的坏块管理、擦写均衡、ECC纠错,全都要在驱动层实现。我曾经在一个项目里用NAND Flash,结果因为擦写次数没处理好,用了半年就出现文件系统损坏。从那以后,我再也不敢在量产产品里用裸NAND了。
容量方面,Android系统至少需要8GB eMMC,Linux系统4GB就够。但要注意,eMMC的寿命和SLC Cache大小有关。选型时问清楚厂商的TBW(总写入字节数),别只看容量。
2.4 WiFi/BT模组选型要点
WiFi和蓝牙模组,看似简单,其实坑不少。
- 接口选择:SDIO接口的WiFi吞吐量高,但驱动复杂。USB接口的兼容性好,但会占用一个USB口。我建议优先选SDIO,因为机顶盒对WiFi吞吐量要求高(4K流媒体需要至少50Mbps)。
- 天线设计:板载天线还是外接天线?板载天线成本低,但信号容易受外壳屏蔽影响。外接天线效果好,但增加装配成本。我的经验是:如果机顶盒是金属外壳,必须用外接天线。
- 蓝牙共存:WiFi和蓝牙共用2.4G频段,容易互相干扰。选模组时一定要确认它支持PTA(分组流量仲裁)机制。否则,你连蓝牙耳机听歌时,WiFi速度会掉到10Mbps以下。
好了,硬件平台选型就聊到这儿。下一章我们开始讲开发环境搭建,包括交叉编译工具链、TFTP/NFS网络启动、以及如何用JTAG调试第一行代码。到时候见。