1. 目前SDK可以分为两类:Linux和RTOS。
主流IPC SDK是Linux; 差异化,面向Iot市场IPC趋向于RTOS。
个人预言消费类Camera后续会全部转为Rtos的Camera;专业算法类(智能)IPC会基于Linux比较多。
个人感觉1+2+1的生态相当牛X,但需要钱玩...或者说都是套路,层次不同,idea不同(就当我多写句废话填充这毫无逻辑的文章吧)
2. SDK怎么样实现会给用户很好的体验:
A:文档(一个说烂了的废话,但没有公司重视它)
B:精简 - SDK接口尽可能简单(减轻APP开发难度,该Driver & DMA传递数据或者指针绝对不能让中间件或者应用干这个事情,否则就是脱裤子放屁)
C:SDK提供的库尽可能小(节约Flash就是给客户省钱,也是给自己添加加分,本质上是给团队、兄弟,朋友、老婆、家人多赚点奶粉钱)
D:提供错误定位咨询(比如Log信息、错误ID等)
E:提供实时Proc硬件操作咨询和操作工具
F:架构稳定(最好是如同珠海航展展出的模块化的底层架构,数据在模块之间来回传递不需要SDK去弄,直接在底层Driver搞一个Buff管理,SDK调度他就好。这一点海思无疑是业界的标杆)
3. 如何把握SDK开发。拿海思芯片举例:
最关键的地方应该在于如何协调各个模块之间的数据传递关系。(智原、AK、GK套路都一样。都是套路,都是废话)
AI、VI:解析视频接口、采集Raw、YUV数据、PCM。一般是分时复用,Hi_mpi_xxx_[grp]chn 基本上是虚通道
VPSS:视频叠加、一进多出、区域管理等。一般是分时复用,Hi_mpi_xxx_[grp]chn 基本上是虚通道
Venc、Vdec : 编码、解码。分时复用,或者独立IP。一般是分时复用,Hi_mpi_xxx_[grp]chn 基本上是虚通道
AO、VO:输出。一般是分时复用,Hi_mpi_xxx_[grp]chn 基本上是虚通道
FB:Framebuffer。一般是分时复用,Hi_mpi_xxx_[grp]chn 基本上是虚通道
VDA、IVE:算法库。一般是分时复用,Hi_mpi_xxx_[grp]chn 基本上是虚通道
各个模块之间都会吃数据,吐数据,吃和吐相互依存,这一层逻辑在Driver和SDK实现会给用户相当棒的体验。(海思的VB固然不错,GM的Frammp也很好,AK的IOCTL很裸很粗暴)