相比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的架构和开发(转载)的更多相关文章

  1. SQLServer内核架构剖析 (转载)

    SQL Server内核架构剖析 (转载) 这篇文章在我电脑里好长时间了,今天不小心给翻出来了,觉得写得很不错,因此贴出来共享. 不得不承认的是,一个优秀的软件是一步一步脚踏实地积累起来的,众多优秀的 ...

  2. was集群下基于接口分布式架构和开发经验谈

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/luozhonghua2014/article/details/34084935    某b项目是我首 ...

  3. 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...

  4. 蓝牙4.0——Android BLE开发官方文档翻译

    ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...

  5. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

  6. PHP-学习大规模高并发Web系统架构及开发推荐书籍

    以下书籍内容涵盖大型网站开发中几个关键点:高可用.高性能.分布式.易扩展.如果想对大规模高并发Web系统架构及开发有很系统的学习,可以阅读以下书籍,欢迎补充! 一.<Linux企业集群—用商用硬 ...

  7. 浅谈MVP架构及开发模式

    Model-View-Presenter(MVP)概述    MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成 ...

  8. 低功耗蓝牙4.0BLE编程-nrf51822开发(3)

    蓝牙协议栈 nrf51822开发中,蓝牙协议栈和应用开发是分开的. (1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支 ...

  9. Android之路-------浅淡Android历史、系统架构与开发特色

    前言 离上一篇发表的博客差不多有两个星期了吧,相信有些博友差点就对LP失望了,因为上一篇博文中说了,这次不管怎样,LP都会坚持写博客的. 由于工作关系LP才隔了这么久才再次发表博文,这篇博文主要是总结 ...

随机推荐

  1. Mac OS X

    Mac OS X 除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的 ...

  2. 关于74HC4051的逻辑真值表及延时的重要性/在AD测量中的校准

    一 关于74HC4051: 在/E=0使能输出的条件下,S2S1S0的三个值,能选通Y0~Y7其中的一个通道从Z输出. 二:问题提出:在按照IC给出的真值表进行芯片操作时,输出逻辑完全对不上 三:分析 ...

  3. C. An impassioned circulation of affection DP

    http://codeforces.com/contest/814/problem/C 12ooyomioomioo21 o2 o 这题我是用dp解的,不过好像很慢,比赛的时候算了下不会mle,就没滚 ...

  4. Ubuntu18.10设置静态IP、DNS、卸载无用软件

    设置静态IP root@xueji:~# vim /etc/network/interfaces # interfaces() ) and ifdown() auto lo iface lo inet ...

  5. VS 解决方案文件结构分析

    VS2013 解决方案文件结构分析 Visual Studio 的解决方案文件是一个文本文件,其中的内容不是太复杂,有些时候 Visual Studio 会把这个文件搞乱,理解一下这个文件的结构,对我 ...

  6. 用TextWriterTraceListener实现建议log文件记录

    log4net之类3方组件确实很方便,但是想写个小小的demo之类的程序,有点用不起啊. 微软自带的TraceListener要实现一个简易的日志帮助类还是很简单的,直接上代码,自己备用,也希望对同样 ...

  7. go语言简单的soap调用方法

    package main import ( "bytes" "encoding/xml" "fmt" "io" &quo ...

  8. C# List的使用

    1.所需引入的命名空间: using System.Collections.Generic; 2.初始化 [1]空: List<int> list = new List<int> ...

  9. cocos2d-android-1学习之旅01

    学习cocos2d-android-1也大概有半个月了,来整理一下自己的学习心得和提出自己的疑问.之所以不学习非常火的cocos2d-x,转而来学习这个网上学习资料少得可怜的cocos2d-andro ...

  10. jquery获取当前被选择的复选框的value的集合

    1.HTML代码 <input type="checkbox" name="productID" value="0"> < ...