蓝牙nrf52832的架构和开发(转载)
相比TI的CC254X、DIALOG的DA1458X,nordic推出的nrf51822和nrf52832在架构和开发商都有自己独特的地方。这几颗产品都是蓝牙低功耗芯片。DA1458X使用OTP硬件架构,功耗低,成本也低,但软件开发难度是个门槛,大团队才能做到量产,当然掌握了也是竞争力(想学习开发就参考博主之前的分享吧)。如果对三种架构都很熟悉,然后从开发的角度做个比较,相信对nrf52832的架构和开发会更新青睐。
1. nrf52832有64K的ram和512K的flash,开发人员应该很喜欢吧。
2. nrf52832是cortex M4,官方SDK使用KEIL 5 on ARM,也很熟悉。当然功耗也低,SDK也有低功耗的软件架构,容易掌握。
3. nordic SDK分成softdevice、bootloader和application三个部分。Softdevice以bin提供,主要是操作系统和BLE协议和RF操作相关的程序,这部分不对外公开,熟悉接口即可。TI的SDK对外公开操作系统OSAL,开发人员更能全局掌控,DA1458X隐藏固化了操作系统和BLE协议,但是却公开了一些RF硬件寄存器的操作细节,而这个寄存器的SPEC都找不到,对于开发人员来说,看到自己搞不透也不需要关心的细节并不好。
不过nordic 的softdevice有几个版本,目前最新3.0,每个版本支持不同的SDK,目前最新13.0。版本多了,然后分别发布会让新手迷惑。
4. 由于memory足够大,所以nordicSDK在DATA RAM和CODE上对softdevice、bootloader和application三者的memory layout安排也很清晰。
5. DFU设备固件升级、OTA固件空中升级是BLE架构必备的模块。TI和DIALOG都是在应用层集成DFU(百科:DFU的全称是Device Firmware Upgrade,即iPhone固件的强制升降级模式。实际意思就是iPhone固件的强制升降级模式。)进行固件空中升级,在bootloader负责版本校验和加载,因此应用和bootloader是共同负责DFU,需要协调配合。但nordic只让bootloader负责DFU空中升级,并做好校验和加载,工具链也简单。应用只需要负责一件事,就是接收到DFU命令就reset到bootloader即可,其不需要关心DFU的过程。这也是本人喜欢nordic架构的原因,当然,这是要损失一部分代码空间的,从成本角度不划算,但是nordic提供的flash也足够大了。
6. 增加一个应用和profile的架构比较简单,跟ti CC254X差不多,dialog要难一些。
7. 友好支持集成模块,如GPIO、I2C,uart,flash等,接口容易掌握,但是实现细节要弄懂也没那么容易,哈哈。
8. SDK的应用分层做得比较好,硬件模块有对应的硬件驱动driver,SDK还会进行在驱动基础上进行再次封装,以库library的形式供应用使用,降低开发难度。如nrf_drv_gpiote是驱动,上层还会分别封装提供app_button按键接口、电平中断接口app_gpiote等。
9. SDK提供的GPIOTE模块是一个按键消息接口,比较有特色。其利用button集成消息模块,支持将消息安装到对应的某个按键上,也就是在广播状态时按这个键发出的消息和连接时发出的消息是不一样的,这样易于应用处理,架构也比较清晰。但是要花时间才能理解这个模块。
10. SDK的例程非常丰富。
11.SDK的开发文档支持也非常详尽,入门到深入都相对容易。http://infocenter.nordicsemi.com/。入门可以去看中文开发文档,深入就要多看看英文说明。
12. ….
接下来,会陆续深入分享nordic SDK架构和开发的细节。敬请期待。有关TI CC254X和DIALOG的DA1458X可以看之前分享的博文。
、
更多嵌入式Linux和物联网原创技术分享敬请关注微信公众号:嵌入式企鹅圈
---------------------
作者:吴跃前
来源:CSDN
原文:https://blog.csdn.net/yueqian_scut/article/details/59486451
版权声明:本文为博主原创文章,转载请附上博文链接!
蓝牙nrf52832的架构和开发(转载)的更多相关文章
- SQLServer内核架构剖析 (转载)
SQL Server内核架构剖析 (转载) 这篇文章在我电脑里好长时间了,今天不小心给翻出来了,觉得写得很不错,因此贴出来共享. 不得不承认的是,一个优秀的软件是一步一步脚踏实地积累起来的,众多优秀的 ...
- was集群下基于接口分布式架构和开发经验谈
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/luozhonghua2014/article/details/34084935 某b项目是我首 ...
- 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发
框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...
- 蓝牙4.0——Android BLE开发官方文档翻译
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
- Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud
- PHP-学习大规模高并发Web系统架构及开发推荐书籍
以下书籍内容涵盖大型网站开发中几个关键点:高可用.高性能.分布式.易扩展.如果想对大规模高并发Web系统架构及开发有很系统的学习,可以阅读以下书籍,欢迎补充! 一.<Linux企业集群—用商用硬 ...
- 浅谈MVP架构及开发模式
Model-View-Presenter(MVP)概述 MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(3)
蓝牙协议栈 nrf51822开发中,蓝牙协议栈和应用开发是分开的. (1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支 ...
- Android之路-------浅淡Android历史、系统架构与开发特色
前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结 ...
随机推荐
- Ubuntu新服务器安装lnmp
版本: nginx(无要求,最新) mysql(5.6.xx) php(5.6.xx) ubuntu(16.04,其他版本也并无过多差异) 准备: #apt-get update #apt-get i ...
- stm32f107的使用:
一 不能支持软件仿真: 二 外部晶体推荐25MHZ,但如果不用音频接口,也可以使用8M晶体,需修改这里成8000000: 此时设置如下: 并修改这里 改为: 因为
- SSH 的端口转发
第一部分 概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我 ...
- Spring Boot Security配置教程
1.简介 在本文中,我们将了解Spring Boot对spring Security的支持. 简而言之,我们将专注于默认Security配置以及如何在需要时禁用或自定义它. 2.默认Security设 ...
- asp.net MVC 4.0 View回顾——布局页与分部页
asp.net MVC 4.0中总结 视图里加载部分视图几种方法 @RenderPage() 但它不能使用 原来视图的 Model 和 ViewData ,只能通过参数来传递. @RenderPage ...
- Sql server 查询指定时间区间工作日数、休息日数等日期操作
1.查询指定时间区间的工作日 这个主要难点是法定节假日,国家的法定节假日每年都不一样,还涉及到调休,所以我们设计一个假日表.主要字段有年份,类型(是否调休),假期日期.如下: CREATE TABLE ...
- Collections集合工具类,集合嵌套,集合综合案例斗地主
1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...
- java类及编写public类的基础点
1.一个java文件中只能有一个public类.且公共类名称必须与java文件名一致,否则会出现错误提示.与其他面向对象编程语言的一样,在利用java分析问题时,基本思路即为将问题的属性(静)与行为( ...
- Rest_framework之版本控制、响应器和分页器
一.访问频率补充 频率: 自定义: 1 定义一个类MyThrottles allow_request(频率限制的逻辑) ==>这两个函数都是派生出来的,继承的类里面封装的. wait(返回一个数 ...
- 问题:java.sql.SQLException: No value specified for parameter 1
解决方案:没有指定参数 String user = req.getParameter("user"); String pwd = req.getParameter("pw ...