作为两家BLE芯片大厂之一,nordic不像TI那么开放,nordic的开发资料是很难找的。

今天有幸得到nordic的BLE芯片nRF51822的SDK,看了一下。
 
首先,nordic号称协议栈(称为SoftDevice)和应用完全分开,是怎么实现的呢?
TI的协议栈以库的形式提供,用户应用在链接时和库链在一起形成最终的机器代码,TI提供库和头文件供用户使用
nordic用了不同的方式:SoftDevice,这样协议栈和用户应用可以单独编译和链接。实现BLE的SoftDevice似乎叫S110,由nordic提供。我猜nordic应该只提供S110的机器码,应该不会提供源代码。
看了nRF51 SDK,里面确实没有BLE的库,所有sd_打头的函数都是SoftDevice相关的。比如:sd_ble_gap_adv_data_set
这个函数是这么定义的:
SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const * const p_data, uint8_t dlen, uint8_t const * const p_sr_data, uint8_t srdlen));
这个SVCALL在使用MDK时是这么定义的:
#define SVCALL(number, return_type, signature) return_type __svc(number) signature
似乎是使用了Cortex-M0的SVC机制实现Softdevice。
(题外话,我在想Nordic会把自己的协议栈绑在一种CPU架构上吗?不是的,代码里有一个开关SVCALL_AS_NORMAL_FUNCTION可以让上面的SVCALL宏定义变成普通的函数声明。当然在没有源代码和库的情况下打开这个开关会出现找不到函数实现的链接错误)
 
总体来说我觉得softdevice就是nordic一种封闭协议栈核心代码的方式,和TI提供库文件的方式没有区别。
nordic号称自己的协议栈可以配合其它的RTOS,但是如果RTOS也用了相同的SVC呢?
我不关心nordic或者TI的协议栈核心代码实现,就算给我源代码我也懒得看,但是我觉得TI用库提供协议栈的方式更直接和通用;nordic这种方式太取巧了,某些时候会给用户带来一些限制。
当然51822还是有一些优势的,至少封装比较小。
 
至于怎么在nRF51822上开发应用我还没来得及看,没办法和TI的架构比较

nRF51822 SDK初体验的更多相关文章

  1. OPhone SDK初体验

    OPhone SDK初体验 write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 背景说明 中国伟大的垄断龙头,世界上也是顶尖的中移动最 ...

  2. 实时人流量监测——海康威视sdk初体验

    本文主要是博主使用海康SDK进行人流量统计的摸索过程,在这里简单记录一下. 查询文档,能实现人流量统计大概有两种方式,报警或者监听, 这边我选择了监听方式,NET_DVR_StartListen_V3 ...

  3. 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

    [阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人   初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...

  4. Apache Beam入门及Java SDK开发初体验

    1 什么是Apache Beam Apache Beam是一个开源的统一的大数据编程模型,它本身并不提供执行引擎,而是支持各种平台如GCP Dataflow.Spark.Flink等.通过Apache ...

  5. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  6. Microsoft IoT Starter Kit 开发初体验

    1. 引子 今年6月底,在上海举办的中国国际物联网大会上,微软中国面向中国物联网社区推出了Microsoft IoT Starter Kit ,并且免费开放1000套的申请.申请地址为:http:// ...

  7. 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

  8. iOS AR技术初体验,使用EasyAR示例程序的小白指南

    QQ前两天的传递火炬,是我第一次直接接触到AR.(虽然之前听同事说过,因为他喜欢玩游戏,PS.3DS等等都玩过,这个技术最开始就是从这里出现的).所以感觉很有趣,就想自己也试着搞一下玩玩...下面是我 ...

  9. Android开发学习之路--百度地图之初体验

    手机都有gps和网络,通过gps或者网络可以定位到自己,然后通过百度,腾讯啊之类的地图可以显示我们的地理位置.这里学习下百度地图的使用.首先就是要申请开发者了,这个详细就不多讲了.http://dev ...

随机推荐

  1. LeetCode_Best Time to Buy and Sell Stock III

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  2. Qt自定义sleep延时函数(巧妙的使用时间差,但这样似乎CPU满格,而不是沉睡)

    Qt不像VC++的win32/MFC编程那样,提供了现成的sleep函数可供调用.Qt把sleep函数封装在QThread类中.子线程可以调用sleep函数.但是如果用户想在主线程实现延时功能,该怎么 ...

  3. 实现ECMAScript的引擎

    list of ECMAScript engines From Wikipedia, the free encyclopedia     An ECMAScript engine is a progr ...

  4. 关于老驱动不能在windows 8下正常安装的问题

    问题: 老驱动(WDF),能在windows 7下安装并工作,但是不能在windows 8下安装. 先了解下windows 8驱动的新东西吧: New for windows 8 http://msd ...

  5. linux 文件内容的复制

    #include <string.h> #include <strings.h> #include <stdio.h> #include <stdlib.h& ...

  6. java解析网页的内容

    有时候,我们需要在java程序中获取一个连接,然后解析连接后,获取连接返回的内容结果来解析.准确的说是解析一个链接. 以下代码时解析百度首页的链接,获取的html代码的效果: public stati ...

  7. hdu2089:不要62(基础数位dp)

    题意:规定一个合法的号码不能含有4或者是连续的62 给定区间[n,m] 问此区间内合法的号码的个数 分析:数位dp dp[i][j]代表 最高位为 j 的 i 位数有多少个合法的 然后按题目规则进行转 ...

  8. c语言结构体5之匿名结构体

    注意: 1匿名结构体不会出现重合 重命名的情况 2有名结构体 名称不能相同 也就是不能重名 //匿名结构体不会出现重名的情况 struct //无名结构体 { ]; ]; int num; };//不 ...

  9. hadoop2对比hadoop1

    hadoop2对比hadoop1 1.体系结构 HDFS+MapReduce,共同点都是分布式的,主从关系结构. HDFS=一个NameNode+多个DataNode, NameNode含有我们用户存 ...

  10. SRM 588 D2 L3:GameInDarknessDiv2,DFS

    题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12710 采用DFS搜索,第一次写的时候忘了加访问标志,结果状态 ...