怎么下载titi15.4协议栈栈

TI_zigbee协议栈结构分析应用_图文_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
TI_zigbee协议栈结构分析应用
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩30页未读,
定制HR最喜欢的简历
你可能喜欢当前位置: >
> TI蓝牙4.0协议栈main函数分析
TI蓝牙4.0协议栈main函数分析
时间:作者:华清远见
我们采用BLE-CC254x-1.3.2中的KeyFob工程展开分析.
我们都知道在C代码中,程序的入口都是main()函数,这个函数在KeyFob_Main.c中
打开文件,可以看到这个文件包含了一些必要的头文件和一个函数的申明,我们暂时不理会那个申明的函数,先看main都做了些什么工作:
通过代码我们可以看到,系统启动的过程,主要是做了一些初始化,如果开启了低功耗,则还需要开启低功耗管理。我们先不去理会初始化做了什么,但是我们知道main函数终启动了OSAL,所以我们只分析相关的两个函数osal_init_system()和osal_start_system().
我们进入osal_init_system()
我们从TI官方的注释就能大致知道每个函数的作用.我再简单介绍一下:
1044:初始化内存分配系统
1047:初始化消息队列
1050:初始化定时器
1053:初始化电源管理系统
1056:初始化系统任务,这个函数添加了所有的任务,我们在以后详细分析它.
1059: 设置有效的查找堆上的第一个空闲块
我们进入osal_start_system(),发现这里会循环调用osal_run_system()
osal_run_system()才是整个协议栈的核心,进入到osal_run_system()后发现他只有这些行代码.这些代码就是整个协议栈运转的大脑,我们务必要把这里搞清楚.
我们发现代码里边有好多预编译宏,而这些宏我们都没有定义,所以对应的函数代码也没有执行,我们再次精简一下代码,
好了,我们就详细得分析下这段代码吧.
首先是一个do{}while()的组合,我们上来就执行do{}中得语句
我们先来解析下tasksEvents[idx],idx在1102行被赋值为0,那tasksEvents又是什么呢?我们右键点击变量然后go to definition或者按快捷键F12查看变量定义的位置
追到以后发现是个指针,那它何时被赋值呢 ,被赋值成什么呢??我们要用到高级搜索这个功能了,把它找出来.
我们选中以后,按下组合键ctrl+shift+f,然后点击find即可
我们发现有以下地方用到了这个指针
用到的地方不少,别害怕,照着我的步骤你你就会看见前方一片光明.
首先我们来看osalInitTasks()函数,在126行用malloc()分配了一片堆空间,后将这片空间的首地址赋值给tasksEvents.这里呢我们就可以将
tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);这句话等价于你定义了一个数组uint16 tasksEvents[tasksCnt],tasksCnt是几呢?我一会告诉你.
127行将这片空间的数据全部清零,也就是将数组的全部元素清零.
这里我们先不去管这片内存空间中要存储什么数据,我们知道这里边全部是0;
if (tasksEvents[idx]) // Task is highest priority that is ready.
} while (++idx & tasksCnt);
刚开始idx得值是0, tasksEvents[idx]也就是0;那if (tasksEvents[idx])就不成立.随后会执行while()中得语句++idx & tasksCnt, 这里我们需要再去跟踪下tasksCnt这个变量,发现他原来是个常量:
问题又来了, tasksArr又是啥呢?我们继续跟踪
我们发现这是个数组,那数组中又存的是什么类型呢&?我们跟下pTaskEventHandlerFn,原来这是函数指针啊,那我们就清楚了tasksArr这个数组中全部存的是函数指针啊.至于这些函数指针是干什么得,又指向谁我们待会来分析.但我相信你已经知道了tasksCnt的值.
有点乱,我们现在先回忆下,刚才有几个重要的变量.
其中一个是存函数指针得数组tasksArr,这些函数指针具体干嘛我们一会分析.
还有一个是这个数组中函数指针的个数tasksCnt.
还有一个指针变量tasksEvents.我们知道这个函数指针指向了一片堆空间,并且空间中全是0;我们就把它当成一个数组,数组中有tasksCnt个成员,每个成员的大小是两个字节.再看do{}while()这个组合.
if (tasksEvents[idx]) // Task is highest priority that is ready.
} while (++idx & tasksCnt);
根据上边所说的,你应该能想到这个循环结束的时候idx的数值了吧.对的,他后是等于tasksCnt的,结束循环后就进入1136行得分支,这里就是系统在检测到没有事件发生的时候进入低功耗模式.
那什么时候才会进入1119行这个分支来处理发生的事件呢.我们再来认识一个新的函数osal_set_event();这个函数得功能就是标识有事件发生,我们来分析下代码.
904行判断传参task_id是否小于tasksCnt(你好还记得这个常量).907行关闭中断,进入临界区.908行有用到刚才那个函数指针tasksEvents了(其实也是数组首地址),那这个数组存这些变量有什么意义呢?
一句话告诉你,这个数组的每一个成员都代表一个任务,每个成员是两个字节就是16位,每一位都代表这个任务中得一个事件,那一个任务能有几个事件呢?怎么能表示事件发生还是没发生呢?聪明的你应该能想到是16个了.事件发生就将对应的位置一就好了.
我们只需要知道协议栈里会通过中断,函数调用等方式调osal_set_event()将系统事件置一.好了我们再回到下面的代码:
if (tasksEvents[idx]) // Task is highest priority that is ready.
} while (++idx & tasksCnt);
这时候tasksEvents[idx]随着idx得增加if (tasksEvents[idx])会成立了吧,这时候break出来idx的值刚好对应的是任务的编号.
终于能执行这段分支了,我们来分析下;
1122:进入临界区,关中断;
1123:将待处理的任务中所有的事件赋值给变量events
1124:将tasksEvents数组中该任务的事件全部清空
1125:退出临界区,开中断;
1127:将当前任务的标号复制给全局变量,它代表当前正在处理的任务的标号
1128:还记得tasksArr()存的是什么吗?是函数指针,他其实就是对应任务的处理函数,至于这个处理函数都做了什么?我们下次分析,现在大家只用知道你把 事件传进去,他会帮你处理,但每次只能处理一个事件,然后将处理完的事件对应的位清零随后将新的事件变量返回.再赋值给events
1129:将activeTaskID赋值为TASK_NO_TASK代表当前没有任务处理
1131: 进入临界区,关中断;
1132: 由于你刚才将事件变量清空了,你每次又只能处理一个事件,你总要把剩下没处理的变量告诉我吧.
1133: 退出临界区,开中断;
好了,到这里该停了,我们先来总结下:
一个任务中如何表示不同的事件呢?
用一个unsigned short类型的变量来记录不同的事件,unsigned short占两个字节,总共16位,每一位二进制表示一个事件.
任务对应的处理函数放在哪呢?
放在const pTaskEventHandlerFn tasksArr[];
如果知道某个任务发生了某个事件,怎么记录?
用这个函数 uint8 osal_set_event( uint8 task_id, uint16 event_flag )
下次我们会分析osalInitTasks()这个函数,还有任务和处理任务事件的函数是怎么联系起来的? 如何在协议栈添加一个自己的任务,处理任务里的事件?
学院新动态
高端IT就业培训专家
全国分校区
关注华清远见
关注创客学院
前台专线:010-
企业培训洽谈专线:010-
院校合作洽谈专线:010-
Copyright ©
北京华清远见科技发展有限公司 版权所有 ,京ICP备号,京公海网安备03号&>&TI的ZHA协议栈
TI的ZHA协议栈
上传大小:20.63MB
终于等到TI发布ZHA协议栈了,这次的协议栈包含了CC2530和CC2538的应用,使用的编译器分别是IAR for 和IAR for ARM6505 或者更高的版本,破解文件就不放在这了。
综合评分:4
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有3条
好好研究下
很好的资料,很齐全,谢谢
不错,好好研究下
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
TI的ZHA协议栈
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
wenwen111111
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
TI的ZHA协议栈各行业芯片自主问题备受关注。然而,谁知被冠以“中国特……
日的谷歌I/O大会已经召开完毕,颇具戏剧性的是……
&过去18年来,阿里巴巴的商业做得太成功,掩盖了……
多年前,日本电产新建总公司大楼,日本电产的永守重信董……
物联网、智能硬件、汽车电子、工业4.0等的发展,给传感器……
演讲人:卢柱强时间: 10:00:00
演讲人:曾伟权时间: 10:00:00
演讲人:黄科涛时间: 10:00:00
预算:¥150000预算:小于¥10000
上海市上海市
TI 推出ZigBee协议栈免费下载版本
[导读]日前,德州仪器 (TI) 宣布推出ZigBee™协议栈 (Z-Stack) 的免费下载版本,用户可通过TI官方网站进行下载。
本文引用地址: &&& 日前,&(TI)&宣布推出ZigBee™协议栈&(Z-Stack)&的免费下载版本,用户可通过TI官方网站进行下载。Z-Stack&达到&ZigBee&测试机构德国莱茵集团&(T&UV&Rheinland)&评定的&ZigBee&联盟参考平台&(golden&unit)&水平。Z-Stack&符合&ZigBee&2006&规范,支持多种平台,其中包括面向&IEEE&802.15.4/ZigBee&的&CC2430&片上系统解决方案、基于&CC2420&收发器的新平台以及&TI&MSP430&超低功耗&MCU。 &&& 除了全面符合&ZigBee&2006&规范以外,Z-Stack&还支持丰富的新特性,如无线下载,可通过&ZigBee&网状网络&(mesh&network)&无线下载节点更新。Z-Stack&还支持具备&定位感知&(location&awareness)&特性的&CC2431。上述特性使用户能够设计出可根据节点当前位置改变行为的新型&ZigBee&应用。 &&& 为配合&Z-Stack&的发布,TI&还重新推出了&ZigBee&开发套件。这款开发套件的价格有所降低,从而使更多设计人员能够评估&TI&的&ZigBee&解决方案。 &&& TI&的低功耗&RF&开发商网络能帮助客户找到合适的合作伙伴,以协助提供所需要的硬件设计、模块、嵌入式软件、网关、调试工具等。低功耗&RF&开发商网络包括推荐公司、RF&顾问以及独立设计机构等,可提供丰富的硬件模块产品与设计服务。
为了提高机器学习的效能,Goolge去(2016)年5月在Google I/O上宣布自行打造了机器学习处理器TPU(Tensor Processing Unit);而在美国时间9日的Google Cloud Next云端大会上,Google......关键字:
Thomas Sohmers 认为,即使是强如英特尔,每年出货数以亿计芯片这样的公司,也同样有弱点。在他看来,英特尔的芯片太耗能。在他的创业公司 Rex Computing 中,Sohmers 正在研究的另一种方式来设计芯片,仅需使用英特尔......关键字:
如何帮助老年人对抗孤独感?一款名为 ElliQ 的机器人试图提供答案。它由以色列初创公司 Intuition Robotics 制造,Fuseproject 的 Yves Behar 设计。......关键字:
艾滋病的可怕是众所周知的,而一直以来,对艾滋病的预防也是从未停止过,越来越多的人开始重视并参与艾滋病的预防研究工作中,开发 HIV 疫苗的努力从未停止过。......关键字:
某杂志读者 David Kanter 曾介绍过 Nvidia Maxwell GPU 所使用的“基于图块的渲染”,且 AMD Vega 也正朝着同样的方向去发展。不过 Imagination Technologies 旗下 PowerVR ......关键字:
根据芬兰硬件网站上的一篇文章可知,NVIDIA将于下周的GDC大会(当地时间2月27-3月3日)上公开传闻已久的GTX 1080Ti。......关键字:
我 要 评 论
热门关键词&&& &&& &&& &符合 SimpliciTI 的协议堆栈
从德州仪器 (TI) 或第三方购买
当前版本 &
版本日期 &
SIMPLICITI-CCS:
SimpliciTI Compliant Protocol Stack- CCS
18-DEC-2009&
SIMPLICITI-IAR:
SimpliciTI Compliant Protocol Stack- IAR
28-NOV-2011&
(ZIP&12459&KB)
2011年 11月 28日&&520&次点击(英文內容)
(ZIP&9918&KB)
2009年 12月 18日&&304&次点击(英文內容)
&SimpliciTI 是针对低射频网络的简单低功耗射频网络协议。这种网络通常包含要求电池寿命长、数据速率和小占空比低的电池供电设备,并具有少量可以直接相互通话或通过接入点或范围扩展器进行通话的节点。不需要接入点和范围扩展器,但提供诸如存储和转发消息的额外功能。有了 SimpliciTI,MCU 资源要求将降低,实现低系统成本。
SimpliciTI 经过专门设计,可以轻松地实施并即时部署在多个 TI 射频平台上,如 MSP430 系列低功率 MCU、CC1XXX/CC25XX/CC430 收发器和 SoC。样片应用在多个硬件平台上即开即用:
SmartRF04 + CC2430EM 开发板
SmartRF05 + MSP430F2618 + CC2520EM 开发板
具有 CC1100EM、CC1101EM 或 CC2500EM 的 MSP430FG 实验板
eZ430-RF2500 开发工具
CC430 无线开发工具
CC1110-CC1111DK 和 CC2510-CC2511DK
有关 SimpliciTI& 的详细信息,请访问 。
下载并注册(为了通过电子邮件接收更新通知)
SimpliciTI-IAR-1.2.0.exe,适用于使用 IAR EW430 或 EW8051 的 CC11xx、CC25xx 和 CC2x30
SimpliciTI-CCS-1.1.1.exe,适用于使用 CCS for MSP430 的 CC1101、CC2500、CC2520 和 CC430
通过注册,当推出更新及更新说明时,我们将通知您进行更新。
查阅下面适用于 SimpliciTI 的 TI 软件包监听器
软件包监听器在 CC2510DK/CC1110DK 上运行,能够无线实时地监测通信量。
低功耗 - TI 专利低功耗网络协议
直接器件对器件通信
带有用于存储并转发至终端器件的接入点的 Simple star
范围扩展器将范围增加至 4 个中继段
简单 - 利用 5 命令 API
低数据速率和低占空比
简便易用性
应用示例:
报警和安防:占位传感器、光传感器、一氧化碳传感器、玻璃破裂探测器
烟雾探测器
自动抄表:气量计、水表、电子式电表
有源 RF-ID 应用
SimpliciTI is supplied as full source code and the supplied projects can be
compiled using the CCS and IAR EW430 for MSP430 or EW8051 for 8051 SoCs.
Evaluation versions of the IAR compilers can be downloaded from . Small applications can be built using the free evaluation version. Please contact your local IAR office for further details.
应用手册&(1)
下载最新英文版本
2009年 12月 1日
更多文献资料&(3)
2011年 1月 6日
2010年 1月 7日
2008年 12月 1日
SimpliciTI-IAR-1.2.0.exe
(ZIP, 12459KB)
&&520&次点击,
2011年 11月 28日(英文內容)
SimpliciTI-CCS-1.1.1.exe
(ZIP, 9918KB)
&&304&次点击,
2009年 12月 18日(英文內容)
SimpliciTI-IAR-1.1.1.exe
(ZIP, 11019KB)
&&520&次点击,
2009年 12月 18日(英文內容)
设计套件与评估模块&(7)
CC2530 评估模块套件&
CC2530EMK&
433MHz CC1101 开发套件&
868-915MHz CC1101 开发套件&
CC2510/CC2511 Development Kit&
CC2510-CC2511DK&
CC2520 开发套件&
CC1110 和 CC1111 开发套件&
CC1110-CC1111DK&
评估模块和开发板&
MSP430FG Experimenter Board&
MSP-EXP430FG4618&
评估模块和开发板&
隐藏此内容
TI 器件&(14)
针对低功耗无线应用设计的高度集成多通道射频收发器&
SimpleLink 解决方案&
适用于中国和日本频带的低功耗(低于 1GHz)射频收发器&
SimpleLink 解决方案&
低功耗(低于 1GHz)射频收发器&
SimpleLink 解决方案&
CC1110-CC1111&
低于 1GHz、具有 MCU 和高达 32kB 闪存的片上系统&
SimpleLink 解决方案&
用于 2.4GHz IEEE 802.15.4/ZigBee™ 的片上系统解决方案&
针对 2.4GHz ISM 频带低功率无线应用设计的低成本、低功耗 2.4GHz 射频收发器&
2.4GHz 无线电收发器、8051 MCU 和 16KB 或 32KB 存储器&
2.4GHz 无线电收发器、8051 MCU 和 8KB 闪存&
2.4GHz 无线电收发器、8051 MCU、16KB 或 32KB 闪存和全速 USB 接口&
2.4GHz 无线电收发器、8051 MCU、8kB 闪存和全速 USB 接口&
二代 2.4GHz ZigBee/IEEE 802.15.4 射频收发器&
SimpleLink 解决方案&
用于 2.4 GHz IEEE 802.15.4 / RF4CE / ZigBee 的第二代片上系统解决方案&
SimpleLink 解决方案&
CC2530-RF4CE&
用于 2.4GHz IEEE 802.15.4/RF4CE/ZigBee 的第二代片上系统解决方案&
SimpleLink 解决方案&
2.4 GHz 范围扩展器&
SimpleLink 解决方案&
隐藏此内容
支持与培训
体验我们的支持论坛
由TI和其社区用户提供的内容仅符合当时状况,不视为TI的标准说明。}

我要回帖

更多关于 tcpip协议栈源码下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信