基于海思soc的智能产品开发(产品开发和mpp平台)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
用自己熟悉的硬件平台开发产品,这本身是无可厚非的。但是从成本控制、以及供应链管理的角度来说,一个平台再好,也不能把鸡蛋全部放到一个篮子里面。这里面必须要考虑到风险和价格。所以,对于产品开发来说,有必要提前设计好接口,保证底层平台随时可以切换。这样的设计可能一时用不上,但是必须要有。
1、提取平台接口
大部分soc都会提供video input、video encode、video decode类似于这样的接口,那我们就可以把这些接口提取出来。这些平台是如何实现这些接口的,可以暂时先不管。但是做了这一步之后,后续所有的开发,就是依赖于这些接口进行开发,而不是直接调用特定平台的api进行开发。
2、部分平台特有的功能,可以用软件实现
在提炼的过程中,有可能会出现这样的一种情况。也就是A平台提供了一种功能,B平台没有提供。这种情况下抽象出接口之后,可以直截了当说,B平台不支持 ;也可以我们用软件替B平台实现一个,这都是常规操作。
3、业务和平台脱离
提炼出接口之后,业务开发就可以和平台之间实现脱离。因为我们开发的产品可能用于各个行业,比如说消费品、工业品、医疗品,在开发的过程中只要专注于业务部分,而不是平台底层,这无疑会大大提高开发的效率和质量。因此,在开发的过程当中,必须严格禁止直接调用底层平台的api函数。因为一旦这么做,就会大大降低平台代码的移植性,不利于后续代码的开发。
4、有利于人员招聘
因为接口部分都是自己开发的,所以对应的功能和参数,也可以做到了然于胸。这种情况下,我们就可以招聘一部分同学,专门focus在业务开发上面,不必对底层硬件和sdk有过多的了解。他所要做的,就是了解客户的需求,掌握一般的软件开发知识,在平台接口上面通过编码,去实现客户的功能即可。
5、优化供应链的管理
不同的底层平台,芯片价格差异很大。有的时候,为了降成本,或者是现在比较流行的降本增效,有必要在不同的平台之间进行切换。如果我们编写的软件和某一个平台捆绑过深,那么这种平台的切换就会异常困难。但假设我们提前做好了接口适配,那么这种移植和切换,就会变得非常轻松,甚至都不需要花费太长的时间,就可以达到这一目的。
6、实现业务开发和底层开发的解耦
同样是软件开发,业务开发和底层开发是两个方向。业务开发是对外,底层开发是对内。对外的开发,讲究的是快速执行,和客户快速对接。底层开发,则主要是和硬件平台打交道,要求的是专注,对细节要求很高。比如,对芯片的了解、对linux的了解、对芯片sdk的了解,以及对性能的优化等等,这方面两者差距很大。因此有必要,对两种开发人员做一个解耦,这样才能最大程度提高开发的效率。