前记

  虽然蓝牙芯片现在非常多,可是一旦想做一些差异化的产品时候,能用的非常少。在和客户的反复斟酌中,最终选择了BES2500来开发这款新的产品。这里面是基于自身的实力,产品定位和芯片诉求多重考量的结果。
核心技能:团队的积累是软件算法,这就要求产品中一定要有不少算法在,这样才能凸显团队的价值和算法的价值。
产品定位:这个客户对产品的性能要求比较高,所以,选择好的芯片平台和做差异化的开发是必须要的。
芯片实力:bes2500有几点吸引了我们,支持蓝牙5.2双模,功耗低于5ma,sram空间大的惊人,并且已经有几个大厂已经使用了。

综合起来,BES2500就成该产品的首选。

代码熟悉

  由于该芯片的文档特别少,代码量比较大,结构又比较复杂,代码熟悉这块,团队花了不少时间来梳理这些代码逻辑。

用户接口部分流程:这部分主要牵扯到几点,用户信息配置,这个一般的在config目录下的工程配置里面寻找,比如,特征宏,音量,电源管理,GPIO映射等。这部分代码比较简洁,很多初级工程师很快都能熟悉的。
音乐部分流程熟悉:音乐流程相对2300的代码,改动不大,就是针对aac做了一个优化,这个部分一般不会出问题,毕竟,已经迭代次数那么多了,这个已经相当成熟了。
电话部分流程梳理:SCO部分涉及到的算法比较多,芯片自带算法,第三方算法,降噪算法,回声消除算法,这些加起来,显得系统有点臃肿,再加上需要增加自身的算法,所以这部分需要花费不少时间来研究。
硬件接口流程梳理:bes2500的硬件接口配置比较丰富,双串口,双I2C接口,I2S接口,这些接口的熟悉和使用,需要花一些时间研究的,毕竟,这些没文档,并且参数没有说明。不过,这些难度还算是可以克服的范围之内。

算法移植

  使用BES2500,最重要的就是添加自己的算法。做出差异化的产品,这里移植算法需要花费不少工作量的。想要优化算法,必须要对芯片的整体接口和特性做一个比较深入的理解,这部分花了不少时间来研究的。
内存分配:bes2500使用的是静态内存,内存管理这块做的不是很好,使用外界算法的,这部分花了不少时间去解决bug。
算法加速:这里面涉及到怎么把主频修改,怎么使用辅核,怎么把让代码运行变得更快,这部分需要比较深厚的功力了,也是团队中吃亏最多的地方。

后记

  项目虽然做成了,但是踩坑也是非常的多啊。同时也暴露了团队不少问题。整体的技术实力还需要不断地历练,内部配合要不断地去磨合。有了这次的历练,后面的项目开发会顺利很多。

基于BES2500芯片的方案开发总结和反思的更多相关文章

  1. 基于全志H3芯片的ARM开发环境搭建

    基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...

  2. 基于STM32L4的开源NBIOT开发资料

    基于STM32L4的开源NBIOT开发资料 1. 参考路径:http://www.stmcu.org/module/forum/forum.php?mod=viewthread&tid=615 ...

  3. HiLink & LiteOS & IoT芯片 让IoT开发简单高效

    HiLink & LiteOS & IoT芯片让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手机 ...

  4. 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML(转)

    1.什么是工程化开发 软件工程的工程化开发概念由来已久,但对于前端开发来说,我们没有像VS或者eclipse这样量身打造的IDE,因为在大多数人眼中,前端代码无需编译,因此只要一个浏览器来运行调试就行 ...

  5. openfire:基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件

    基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件 上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfir ...

  6. 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件

    原文:http://www.cnblogs.com/hoojo/archive/2013/03/29/openfire_plugin_chatlogs_plugin_.html 随笔-150  评论- ...

  7. 基于mycat高可用方案——数据库负载

    引言 传统企业级应用一般采取单台数据库,吞吐所有应用的读写,随着互联网的高速发展,以及微服务架构越来越普及,往往采用分库分表来支撑高速增长的大量业务数据吞吐.分库分表主要有两种方式:水平分表和垂直分库 ...

  8. 深入理解基于selenium的二次开发

    对于做web端自动化测试的人来说,可能接触selenium比QTP还要多,但是我们在做基于selenium的二次开发的时候,经常会说到二次开发是为了易于维护,很多人可能不懂得维护的价值是什么,和到底要 ...

  9. 基于flask的轻量级webapi开发入门-从搭建到部署

    基于flask的轻量级webapi开发入门-从搭建到部署 注:本文的代码开发工作均是在python3.7环境下完成的. 关键词:python flask tornado webapi 在python虚 ...

  10. 基于ngx_lua模块的waf开发实践

    0x00 常见WAF简单分析 WAF主要分为硬件WAF和软件防火墙,硬件WAF如绿盟的NSFOCUS Web Application Firewall,软件防火墙比较有名的是ModSecurity,再 ...

随机推荐

  1. SSM整合思维(随手记)

    整合方向(整合思路): 用Spring去整合SpringMVC和Mybatis. 一.先创建Spring项目测试运行成功后,再创建SpringMVC项目再单独测试SpringMVC项目如果运行成功后即 ...

  2. maven打包报错

    * 系统:macOS* 开发工具:Idea* 问题描述:在idea中执行mvn clean install时报No compiler is provided in this environment. ...

  3. Arduino-电位器调节led

    Arduino-电位器调节led 电位器相关: 电位器是具有三个引出端.阻值可按某种变化规律调节的电阻元件.电位器通常由电阻体和可移动的电刷组成.当电刷沿电阻体移动时,在输出端即获得与位移量成一定关系 ...

  4. 24.1 SetUnhandledExceptionFilter未处理异常--《Windows核心编程》

    对于未处理异常,例如异常过滤返回EXCEPTION_CONTINUE_SEARCH,向上搜索,但无法搜索到处理部分,产生未处理异常.Windows提供了 SetUnhandledExceptionFi ...

  5. Codeforces Round #824 (Div. 2) A-E

    比赛链接 A 题解 知识点:贪心,数学. 注意到三段工作时间一共 \(n-3\) 天,且天数实际上可以随意分配到任意一段,每段至少有一天,现在目的就是最大化段差最小值. 不妨设 \(l_1<l_ ...

  6. NC15447 wyh的问题

    题目链接 题目 题目描述 我国现在能源消耗非常严重,现在政府有这样一个工作,每天早上都需要把一些路灯关掉,但是他们想让在关闭的过程中所消耗的能源是最少的,负责路灯关闭的工作人员以1m/s的速度进行行走 ...

  7. Spring Boot整合Postgres实现轻量级全文搜索

    有这样一个带有搜索功能的用户界面需求: 搜索流程如下所示: 这个需求涉及两个实体: "评分(Rating).用户名(Username)"数据与User实体相关 "创建日期 ...

  8. OpenWrt 21.02.2 记录: PPPoE, Wireguard

    OpenWrt 21.02 OpenWrt 21.02.2 是 OpenWrt 当前最新的稳定版, 内核 5.4.179, 这个内核已经内置了 Wireguard 模块 root@OpenWrt:~# ...

  9. 【CVE-2024-21626】容器逃逸漏洞修复

    哈喽大家好,我是咸鱼. 好久不见,最近有一个很火的 CVE--runc 容器逃逸漏洞.年前的时候我们已经在测试环境进行了相关操作打算年后线上进行修复. 因为今天咸鱼才开工,所以文章也就拖到了现在 漏洞 ...

  10. 如何在C#中使用 Excel 动态函数生成依赖列表

    前言 在Excel 中,依赖列表或级联下拉列表表示两个或多个列表,其中一个列表的项根据另一个列表而变化.依赖列表通常用于Excel的业务报告,例如学术记分卡中的[班级-学生]列表.区域销售报告中的[区 ...