海思开发感悟

最近新开一个海思的项目,本周主要海思熟悉海思的一些开发文档,文档之多,内容之全,文档之好,确实值得很多厂商去好好学习,同时也得到很多的感悟和困惑。

​ 对于技术更新如此之快的IC产业,对于现在平台的百花齐放,技术更新日新月异,单独如现在的ARM的技术,就已经从armv7架构已经发展到armv8架构,还有现在基于低功耗的M系列,基于实时处理的R系列,每个系列里面有越来越多的平台在每日更新,每个厂商对于各个平台的处理方式又不相同。例如现在主流的对于移动终端采用的是Android的架构,以现在主流的厂商来说,高通、MTK、展讯、全志其开发模式都是基于kernel+Android,但是其每家对于像我们这样做底层的人来说,又有很多的不一样。

  • MTK:采用的是Cost down和Turnkey模式,提供完整的配套服务,turn-key模式. 这一点目前在业内无人能及,以前在山寨流行的时代,只需要拿到官方提供的Demo板、原理图和软件源码,硬件工程师根据这个制版,软件工程师编译源码(替换UI),就可以发布新产品了。所有的外设基本都是它们推荐的,Modem测的代码也是不允许有任何修改,发布的代码直接就是一个bin文件。总体来说,MTK的开发难度更小一点,产品化更好一点。那么对于我们底层工程师能做些什么呢?给我的感觉就是调参和开关宏,调参,就是对手机的各个外设配合厂商来调式一组最合适的参数。开关宏,MTK对于各个feature提供了各式各样的宏来控制,并且提供了完整的手册来指导你各个宏的意义。最终,我们底层工程师就就会调参和开关宏中慢慢的沉迷。
  • Qualcomm:偏向于性能模式和QRD模式,提供相对完整的配套服务,也就是QRD模式。Qualcomm的代码发布基本接近开源的Android和Kernel,对于软件包做也很好,但是开发性会比MTK平台更好,也是跟他产品的定位有关系,因为实力摆在哪里,其模式也是一些小公司玩不起的。高通的QRD模式也基本和MTK平台一样,调参和开关宏,也是很多feature,很多情况你只要开关feature可以实现大部分功能。但是Qualcomm的feature很多你都不知道,文档没有MTK详细,同时自带的feature很多都编译不过,需要你自己去修改。总之得出的结论是Qualcomm的开发性做的更好,稳定性不够好,问题更多,但是我们能看到很多功能是如何实现的。
  • 展讯:模式跟MTK差不多,但是由于技术沉淀等原因,问题更多,涉及的点大多都达到系统层面或者芯片设计层面的问题,如果要去解决这类问题,对于技术的要求很高,大多厂商都会全程支持解决,对于做底层的最多也是调优工作。

​在对于开发模式,都是由产品的市场定位来决定的,产品竞争力不行,那么服务就需要做的更好,减小客户的开发周期,减小客户对于高质量软件工程师的要求。去大的平台就能接触到更新的技术,分工更细,也就对技术的理解就更加深入,那么小的平台,就需要我们耐得住寂寞,对工作就需要考虑的更多,更深入,也就是我们提到的do more、do better,那么我们就需要花更多的时间和精力将这些do more、do better吸收。大公司,最终发展可能好则成为这个领域的技术专家,而小公司,更多的会向系统层面发展。

​在接触海思的资料后,我发现一种新的模式可能越来越向我们靠近,一方面由于现在每家厂商都在强调自己的核心竞争力,以后对于人工智能的算法等越来越成为一个公司的核心竞争力的时候,另外一方面系统越来越复杂,平台越来越多,厂商为了缩减版本,平台的兼容性等要求,就会出现对于平台的抽象层。对于我们来说,以下的开发模式会成为一种常态,如下图所示对于我们来说,以下的开发模式会成为一种常态,如下图所示

在这里插入图片描述

  • 硬件层:由芯片加上必要的外围器件构成,外围器件包括Flash、DDR、视频sernsor、音频等。
  • 操作系统层:基于现有的开源操作系统
  • 操作系统适配层:提供操作系统调用基础函数,屏蔽操作系统差异,支持平台运行在不同的操作系统上,主要是对于的平台抽象层。
  • 软件处理平台:基于操作系统适配层,控制芯片完成相应的处理功能。对应用层屏蔽了硬件细节,并为应用层提供API接口。
  • 应用层:根据软件处理平台提供的,由用户开发应用程序,并且厂商会提供相对应的应用示例作为参考。

对于这种开发模式,这里面做了些什么呢?我们又能做什么事情呢?

  • 硬件层:提供基本的手册说明,基本各个硬件寄存器说明,估计你也用不到,但是出问题后,这个是救命稻草
  • 操作系统层:对于开源,以Patch的方式提供,理解各个平台对于怎么提供抽象、怎么去实现抽象、驱动实现方式等
  • 操作系统适配层:主要是以第三方库的方式提供给我们,做了些什么?鬼知道,出问题怎么办,鬼知道怎么办?这一层,我们能做的实在太少了,从深层次的方向,我们可以去理解是怎么跟操作系统层结合的,机制是什么?
  • 软件处理平台:主要以SDK包的形式提供给我们,其中包括部分的源码和库,还有最重要的,最重要的,最重要的,一大堆include,也就是API的接口,并且提供了直接运行就能验证这个功能的示例代码。
  • 应用层:基于软件处理平台里面的API做业务的开发,怎么做呢?基于示例代码,自己写应用开发,测试验证,测试验证,测试验证。

那我出问题怎么办呢?看手册,看手册,看手册,重要的事情说三遍,手册上没有怎么办呢?那我们就要理解这些事情的原理,例如莫名的库里的东西运行了,表现的结果不一样,那么就需要归结到最底层,硬件的表象是什么,寄存器,我们可以通过寄存器来查看,在回归流程。

现在对于底层开发的工作,不论去哪家公司,基本都是基于芯片厂商提供的东东做二次开发,也许大部分的工作都是一些最基本调优、调参工作。那我们如何能做的更好,不至于成为一个业务工程师,我们都会面对团队太忙,没有培训,工作时间太忙,没有时间学习困惑,阿里技术人生给出了好多的建议,总之归结到态度,要做到do more、do better、do exercise,对于我们技术上,我们需要归于基础,只有打好基础,才能在这种更新中做到临危不乱。
————————————————
版权声明:本文为CSDN博主「奇小葩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012489236/article/details/103923807

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值