前记
虽然蓝牙芯片现在非常多,可是一旦想做一些差异化的产品时候,能用的非常少。在和客户的反复斟酌中,最终选择了BES2500来开发这款新的产品。这里面是基于自身的实力,产品定位和芯片诉求多重考量的结果。
核心技能:团队的积累是软件算法,这就要求产品中一定要有不少算法在,这样才能凸显团队的价值和算法的价值。
产品定位:这个客户对产品的性能要求比较高,所以,选择好的芯片平台和做差异化的开发是必须要的。
芯片实力:bes2500有几点吸引了我们,支持蓝牙5.2双模,功耗低于5ma,sram空间大的惊人,并且已经有几个大厂已经使用了。
综合起来,BES2500就成该产品的首选。
代码熟悉
由于该芯片的文档特别少,代码量比较大,结构又比较复杂,代码熟悉这块,团队花了不少时间来梳理这些代码逻辑。
用户接口部分流程:这部分主要牵扯到几点,用户信息配置,这个一般的在config目录下的工程配置里面寻找,比如,特征宏,音量,电源管理,GPIO映射等。这部分代码比较简洁,很多初级工程师很快都能熟悉的。
音乐部分流程熟悉:音乐流程相对2300的代码,改动不大,就是针对aac做了一个优化,这个部分一般不会出问题,毕竟,已经迭代次数那么多了,这个已经相当成熟了。
电话部分流程梳理:SCO部分涉及到的算法比较多,芯片自带算法,第三方算法,降噪算法,回声消除算法,这些加起来,显得系统有点臃肿,再加上需要增加自身的算法,所以这部分需要花费不少时间来研究。
硬件接口流程梳理:bes2500的硬件接口配置比较丰富,双串口,双I2C接口,I2S接口,这些接口的熟悉和使用,需要花一些时间研究的,毕竟,这些没文档,并且参数没有说明。不过,这些难度还算是可以克服的范围之内。
算法移植
使用BES2500,最重要的就是添加自己的算法。做出差异化的产品,这里移植算法需要花费不少工作量的。想要优化算法,必须要对芯片的整体接口和特性做一个比较深入的理解,这部分花了不少时间来研究的。
内存分配:bes2500使用的是静态内存,内存管理这块做的不是很好,使用外界算法的,这部分花了不少时间去解决bug。
算法加速:这里面涉及到怎么把主频修改,怎么使用辅核,怎么把让代码运行变得更快,这部分需要比较深厚的功力了,也是团队中吃亏最多的地方。
后记
项目虽然做成了,但是踩坑也是非常的多啊。同时也暴露了团队不少问题。整体的技术实力还需要不断地历练,内部配合要不断地去磨合。有了这次的历练,后面的项目开发会顺利很多。