第一章 海思平台概述
大家好,我是老李。做海思芯片驱动开发有些年头了。今天咱们聊聊海思平台,算是整个课程的开胃菜。
说实话,我第一次接触海思芯片,是被它的SDK包搞懵的。文件多,结构复杂,文档还全是英文。但摸透了之后,你会发现——嗯,这套体系其实挺讲究的。
1.1 海思芯片家族介绍(Hi35xx/Hi35xx系列)
海思的芯片,说白了主要分两大块:一块是监控安防用的,另一块是机顶盒、电视用的。咱们做驱动开发,打交道最多的就是Hi35xx系列。
Hi35xx系列,我习惯叫它“安防三兄弟”:
- Hi3516系列:入门级,适合做IPC(网络摄像头)。功耗低,价格便宜。我在一个智能门铃项目里用过Hi3516CV500,跑Linux挺稳。
- Hi3519系列:中高端,带AI算力。适合做智能分析,比如人脸识别、车牌识别。我记得有个客户要做边缘计算盒子,点名要Hi3519AV100。
- Hi3559系列:旗舰级,4K/8K视频处理。这玩意儿发热量大,散热设计得跟上。我曾经在一个8K直播项目里踩过坑——散热没做好,芯片降频,画面卡成PPT。
你可能会问:“这么多型号,怎么选?” 别急,下面就说。
1.2 芯片选型要点
选芯片,我总结了四个字:看、算、跑、省。
| 维度 | 要点 | 我的经验 |
|---|---|---|
| 看(视频能力) | 分辨率、帧率、编码格式 | 别只看参数,实际跑一下H.265编码,有些芯片会掉帧 |
| 算(AI算力) | NPU算力、支持的网络模型 | 我建议留30%余量,AI模型迭代很快 |
| 跑(接口数量) | MIPI、USB、以太网、SDIO | 外设接口够不够?我吃过亏,选了Hi3516结果发现少一路SPI |
| 省(功耗/成本) | 典型功耗、BOM成本 | 电池供电的产品,一定要看休眠唤醒功耗 |
避坑指南:我曾经在一个项目中,只看了芯片的峰值性能,没注意它的持续工作温度范围。结果夏天户外测试,芯片频繁重启。后来换了工业级型号才解决。
1.3 开发板介绍
海思官方开发板,我接触过几款:
- Hi3516DV300开发板:入门首选。接口齐全,有HDMI输出、网口、USB。我建议新手先拿这个练手。
- Hi3559AV100开发板:性能怪兽。带M.2接口,可以插SSD。我记得第一次跑8K视频流,那画面细腻得让人惊叹。
- 第三方开发板:比如某宝上卖的“海思核心板”。便宜,但资料不全。我个人不太推荐新手用,出了问题很难查。
开发板到手后,第一件事是什么?不是上电,是看原理图!我习惯把原理图打印出来,用笔标出关键信号:电源、时钟、复位。这三样对了,板子才能跑起来。
1.4 SDK包结构解析
海思的SDK包,解压后大概长这样:
Hi3516CV500_SDK_V1.0.0.0/
├── package/ # 编译好的库和工具
├── mpp/ # 媒体处理平台(核心!)
├── osdrv/ # 操作系统驱动
├── sample/ # 示例代码
├── doc/ # 文档(一定要看!)
└── tools/ # 烧录、调试工具
这里我重点说几个目录:
- mpp/:这是海思的灵魂。视频采集、编码、解码、显示,全在这里。我刚开始做驱动时,天天跟mpp打交道。它的API设计得挺巧妙,但文档写得有点绕。
- osdrv/:内核驱动和根文件系统。你如果想改内核配置,就在这里动手。我建议先别乱改,用默认配置跑通再说。
- sample/:官方示例。我个人的习惯是:先跑sample,再改sample,最后写自己的代码。这样上手最快。
小技巧:SDK里的doc目录,有个“HiMPP V4.0 媒体处理开发参考.pdf”。这文档我看了不下十遍。每次遇到视频卡顿、花屏问题,翻翻它总能找到线索。
1.5 开发环境搭建要点
搭建环境,说简单也简单,说复杂也复杂。我建议用Ubuntu 18.04或20.04,64位系统。为什么?因为海思的交叉编译工具链,对这两个版本支持最好。
安装步骤大致是:
- 安装依赖库:libncurses5-dev、zlib1g-dev、gawk等
- 解压SDK包,运行sdk.unpack
- 配置交叉编译链:source env.sh
- 编译内核:make kernel
- 编译文件系统:make rootfs
注意:我曾经在Ubuntu 22.04上编译海思SDK,结果报了一堆错。原因是新版gcc不兼容。折腾了两天才搞定。所以,老老实实用官方推荐的系统版本吧。
好了,第一章就聊这么多。海思平台的内容其实挺深的,咱们后面慢慢展开。下一章,我会带大家真正动手——点亮第一个LED,让芯片“开口说话”。
有什么问题,欢迎交流。我的公众号:蓝海资料掘金营,微信deep3321。