基于BES2500芯片的方案开发总结和反思
前记
虽然蓝牙芯片现在非常多,可是一旦想做一些差异化的产品时候,能用的非常少。在和客户的反复斟酌中,最终选择了BES2500来开发这款新的产品。这里面是基于自身的实力,产品定位和芯片诉求多重考量的结果。
核心技能:团队的积累是软件算法,这就要求产品中一定要有不少算法在,这样才能凸显团队的价值和算法的价值。
产品定位:这个客户对产品的性能要求比较高,所以,选择好的芯片平台和做差异化的开发是必须要的。
芯片实力:bes2500有几点吸引了我们,支持蓝牙5.2双模,功耗低于5ma,sram空间大的惊人,并且已经有几个大厂已经使用了。
综合起来,BES2500就成该产品的首选。
代码熟悉
由于该芯片的文档特别少,代码量比较大,结构又比较复杂,代码熟悉这块,团队花了不少时间来梳理这些代码逻辑。
用户接口部分流程:这部分主要牵扯到几点,用户信息配置,这个一般的在config目录下的工程配置里面寻找,比如,特征宏,音量,电源管理,GPIO映射等。这部分代码比较简洁,很多初级工程师很快都能熟悉的。
音乐部分流程熟悉:音乐流程相对2300的代码,改动不大,就是针对aac做了一个优化,这个部分一般不会出问题,毕竟,已经迭代次数那么多了,这个已经相当成熟了。
电话部分流程梳理:SCO部分涉及到的算法比较多,芯片自带算法,第三方算法,降噪算法,回声消除算法,这些加起来,显得系统有点臃肿,再加上需要增加自身的算法,所以这部分需要花费不少时间来研究。
硬件接口流程梳理:bes2500的硬件接口配置比较丰富,双串口,双I2C接口,I2S接口,这些接口的熟悉和使用,需要花一些时间研究的,毕竟,这些没文档,并且参数没有说明。不过,这些难度还算是可以克服的范围之内。
算法移植
使用BES2500,最重要的就是添加自己的算法。做出差异化的产品,这里移植算法需要花费不少工作量的。想要优化算法,必须要对芯片的整体接口和特性做一个比较深入的理解,这部分花了不少时间来研究的。
内存分配:bes2500使用的是静态内存,内存管理这块做的不是很好,使用外界算法的,这部分花了不少时间去解决bug。
算法加速:这里面涉及到怎么把主频修改,怎么使用辅核,怎么把让代码运行变得更快,这部分需要比较深厚的功力了,也是团队中吃亏最多的地方。
后记
项目虽然做成了,但是踩坑也是非常的多啊。同时也暴露了团队不少问题。整体的技术实力还需要不断地历练,内部配合要不断地去磨合。有了这次的历练,后面的项目开发会顺利很多。
基于BES2500芯片的方案开发总结和反思的更多相关文章
- 基于全志H3芯片的ARM开发环境搭建
基于全志H3芯片的ARM开发环境搭建 最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以 ...
- 基于STM32L4的开源NBIOT开发资料
基于STM32L4的开源NBIOT开发资料 1. 参考路径:http://www.stmcu.org/module/forum/forum.php?mod=viewthread&tid=615 ...
- HiLink & LiteOS & IoT芯片 让IoT开发简单高效
HiLink & LiteOS & IoT芯片让IoT开发简单高效 华为HiLink & LiteOS & IoT芯片使能三件套,让IoT开发更简单高效.下一代智能手机 ...
- 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML(转)
1.什么是工程化开发 软件工程的工程化开发概念由来已久,但对于前端开发来说,我们没有像VS或者eclipse这样量身打造的IDE,因为在大多数人眼中,前端代码无需编译,因此只要一个浏览器来运行调试就行 ...
- openfire:基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件
基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件 上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfir ...
- 基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件
原文:http://www.cnblogs.com/hoojo/archive/2013/03/29/openfire_plugin_chatlogs_plugin_.html 随笔-150 评论- ...
- 基于mycat高可用方案——数据库负载
引言 传统企业级应用一般采取单台数据库,吞吐所有应用的读写,随着互联网的高速发展,以及微服务架构越来越普及,往往采用分库分表来支撑高速增长的大量业务数据吞吐.分库分表主要有两种方式:水平分表和垂直分库 ...
- 深入理解基于selenium的二次开发
对于做web端自动化测试的人来说,可能接触selenium比QTP还要多,但是我们在做基于selenium的二次开发的时候,经常会说到二次开发是为了易于维护,很多人可能不懂得维护的价值是什么,和到底要 ...
- 基于flask的轻量级webapi开发入门-从搭建到部署
基于flask的轻量级webapi开发入门-从搭建到部署 注:本文的代码开发工作均是在python3.7环境下完成的. 关键词:python flask tornado webapi 在python虚 ...
- 基于ngx_lua模块的waf开发实践
0x00 常见WAF简单分析 WAF主要分为硬件WAF和软件防火墙,硬件WAF如绿盟的NSFOCUS Web Application Firewall,软件防火墙比较有名的是ModSecurity,再 ...
随机推荐
- 极限挑战:使用 Go 打造百亿级文件系统的实践之旅
JuiceFS 企业版是一款为云环境设计的分布式文件系统,单命名空间内可稳定管理高达百亿级数量的文件. 构建这个大规模.高性能的文件系统面临众多复杂性挑战,其中最为关键的环节之一就是元数据引擎的设计. ...
- 探索C语言的数据类型:解密编程世界的核心秘密
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 常量与变量 1.1 常量 (1) 常量的概念 常量顾名思义就是无法改变的量,比如一周 ...
- 【译】我为 .NET 开发人员准备的 2023 年 Visual Studio 10 大新功能
原文 | James Montemagno 翻译 | 郑子铭 Visual Studio 2022 在 2023 年发布了许多令人难以置信的功能,为 .NET 开发人员提供了大量新工具来提高他们的工作 ...
- NC16742 [NOIP2002]字串变换
题目链接 题目 题目描述 已知有两个字串 A, B及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在A中的子串 A1可以变换为 B1.A2可以变换 ...
- 轻松玩转makefile | 变量与模式
前言 本文通过简单的几个示例,以及对同一个Makefile进行几个版本的迭代,帮助快速的理解变量和模式规则的使用. 1.回顾 在上一篇文章中,我们使用Makefile编译fun.c和main.c这两个 ...
- 从零开始手写 mybatis (三)jdbc pool 从零实现数据库连接池
前景回顾 第一节 从零开始手写 mybatis(一)MVP 版本 中我们实现了一个最基本的可以运行的 mybatis. 第二节 从零开始手写 mybatis(二)mybatis interceptor ...
- numpy数组初始化方法总结
1 使用list初始化 a=np.array([[1,2,3],[4,5,6]],dtype='float32') #a=[[1. 2. 3.],[4. 5. 6.]] 2 赋值与复制 (1)赋值 a ...
- 用ELK分析每天4亿多条腾讯云MySQL审计日志(2)--EQL
上一篇介绍了用ELK分析4亿多条审计日志过程,现在介绍如何用Python3分析ES的程序 需要分析的核心库审计数据: 1,950多张表,几十个账号, 2,5种操作类型(select,update,in ...
- 链表--insert
分别是使用了二级指针和一级指针的两种方法,最后会按插入的顺序依次打印1,2,3,4 主要区别在于,使用二级指针,可以在main函数里直接用一个空的Node指针,而一级指针是在main函数里面先添加了一 ...
- [Android 逆向]旅行青蛙破解
1. 旅行青蛙V1.0,4 apk 安装到手机,可以运行 2. jadx 打开apk 存在这两个dll ,说明是 unity开发的 3. 导出Assembly-CSharp.dll, 使用DnSpy ...