- 博客(59)
- 资源 (1)
- 收藏
- 关注
原创 CC3220学习笔记---UART的使用(翻译)
关于UART的使用方法,TI有详细文档说明。请参考驱动安装目录下的DOC文件夹,此文进行翻译。详细描述UART驱动接口使用UART驱动,确保设备链接至适当的驱动库并包含以下头文件:#include 此模块用于应用程序主接口。它的目的是将UART API导向一个使用指向UART_FxnTable指针指向的特定驱动
2017-06-24 17:59:40
3055
2
翻译 CC3220学习笔记---UART(翻译)
这一块相对较难吧,所以参考手册得细看,那就翻译吧。6.1 概览CC32xx包含两个通用异步接收/发送( Asynchronous Receivers/Transmitters (UART)),拥有如下特征:最高速度达3Mbps的可编程波特率发生器。独立的16×8发送(TX)和接收(RX)FIFO以减少CPU中断服务载荷。FIFO长度可编程,包含1字节深度的操作以提供传统
2017-05-30 09:12:16
3817
原创 CC3220学习笔记---中断
我们还是先把所有中断相关寄存器列出来吧。与中断有关的寄存器一共7个,结构都差不多,下面一一讲解:一、中断寄存器GPIOIS Register (offset = 404h) [reset = 0h]此寄存器指示中断检测方式,为0时表示边沿触发,为1时表示电平触发。GPIOIBE Register (offset = 408
2017-05-26 20:42:47
3694
原创 CC3220学习笔记---点亮LED PinMux版
上节课使用了driverlib API来实现了LED灯的点亮,在实际开发中,不可能这样写程序,效率太低。这时就需要把硬件的各种行为抽象出来,帮助开发人员更容易地,更符合人类思维的方式进行操作。首先理解CC3220 SDK源码的架构,下面是目录结构:一共这五个文件夹,展开后:【devices】目录下的是最底层驱动,它直接跟硬
2017-05-11 21:27:53
2940
原创 CC3220学习笔记---点亮LED ROM API版
上篇文章,花了很大的力气用直接访问内存的方式实现了跑马灯。那么在CC3220学习笔记---ROM Services这篇文章中,我们得知,TI公司为CC3220实现了一个外设驱动库driverlib API,专门用于此MUC的使用。此驱动库可在RAM中调用,也可在ROM中直接调用。那么今天我们就用驱动库的这两种调用方式直接实现跑马灯。使用上篇文章创建工程的方式无法访问驱动
2017-05-07 22:03:38
2768
1
原创 CC3220学习笔记---点亮LED寄存器版
CC3220SF开发板到货,拍照留念两兄弟,右边这块是CC3220SF,大一些。相比51单片机,ARM的MCU复杂得多,再加上N层的抽象,复杂度更是高得多。更可怕的是,所有文档还是英文的,这东西看中文都很吃力。所以,没办法,只能从最底层搞起,抽丝剥茧,慢慢搞清楚了。CC3220到货,先搞个类似51单片机的程序,直接控制寄存器来点亮LED。
2017-05-06 20:53:52
4888
9
翻译 SimpleLink MCU SDK用户指南(1)
开发板没到,继续翻译。SimpleLink? MCU SDK介绍SimpleLink? MCU Software Development Kit(SDK软件开发工具包)是一套软件开发工具,使工程师可以针对德州仪器公司(TI)的一系列微控制器开发应用程序。它是一个功能强大的软件工具包,通过对基本软件组件进行包装,易用的示例以及易用的软件开发包,提供了连贯一致的软件体验。
2017-05-04 22:22:25
6261
3
翻译 CC3220开发板
思前考后,还是得从底层学起,弄清楚芯片。先要在TI-RTOS下搞清楚,再转到Zephyr。问题是TI-RTOS不支持CC3200,仅FreeRTOS支持它。TI-RTOS已经弄过一段,还算有点熟,再花时间学FreeRTOS感觉不太值得。所以还是搞一块CC3220来学吧。TI-RTOS支持它,也是TI最新的低功耗无线WIFI MCU。想来CC3200应该还是有些问题的,要不不会这么快就出新的解决
2017-05-01 11:00:11
7002
5
原创 zephyr学习笔记---双向链表dlist
现阶段学zephyr很困难,没有足够资料,东一锤子,西一榔头,转来转去还是转回数据结构。没办法,这几个数据结构是其它各类机制的基础,不研究一下还真不行。静下心来先搞数据结构吧。上次讲了单向链表slist,这次再弄个双向链表dlist。先来看看结点的数据结构:struct _dnode{ union { struc
2017-04-20 21:39:01
2594
原创 zephyr学习笔记---CC3200---Button
zephyr上有button的示例,在【\samples\basic\button】目录下,我做了一些修改,两个Button都使用了,另外也加入了LED,方便调试。功能很简单,就是在按下按钮时向打印一段文字(可使用串口接收),同时切换LED灯的亮灭。代码如下:#include #include #include #include #include #include /
2017-04-15 09:21:14
1941
原创 zephyr学习笔记---CC3200---GPIO
搞完LED,搞Button,【\samples\basic\button】目录下有关于button的按钮,发现printk()函数在串口打印显示不正常。于是乎读有关UART的DataSheet想找到问题所在,读DataSheet太痛苦了,头晕眼花啊!体力活。最后发现显示不正常是波特率没设置对,cc3200在zephyr中默认设置为115200。虽然DataSheet白读了,但也了解不少东西,这就是
2017-04-05 12:51:40
1833
原创 zephyr学习笔记---CC3200---跑马灯
CC3200 LaunchXL到货,先上图ARM M4内核并集成一块WIFI芯片,不过板上没啥东西,比CC2650DK和CC2650 SensorTag差太远。也不需要太复杂,能用基本的东西就行了。这块板该从哪个地方开始学?一头雾水,先从zephyr自带的例子开始吧,又搞了好长时间,终于把例程\samples\basic\blinky编译完成,并烧到了开发板
2017-03-31 00:14:49
2101
1
原创 zephyr学习笔记---单向链表slist
看了下zephyr所支持的开发板,有一个TI公司的,CC3200。低功耗wifi芯片,淘宝了一下,200出头,可以接受。当即买了一块,先弄TCP/IP再学6LowPan会好些。现在等开发板到货。开发环境已经装好,ubuntu下开发,请参考大牛写的:http://iot-fans.xyz/zephyr/doc/v1.6.0/getting_started/installa
2017-03-27 13:10:40
1810
原创 zephyr学习笔记---前言
一直在找适合用于教学嵌入式操作系统。在我心目中,适合用于教学的操作系统应具备如下特点:实时操作系统。了解实时操作系统,再去学习非实时操作系统,会更容易,反之不行。完全开源。规范的代码、详尽的注释。完善的机制。中断、线程、任务、Idle、优先级的可配置数量的多少、可按时间片轮流执行线程或任务、信号量、邮箱、事件等等。越多越好,掌握这些机制,再去学其它操作系统就不会太困难了。支持尽可能多的
2017-03-26 08:31:22
7804
6
翻译 RPL(12):RFC6550翻译(12)---目标函数准则
14、目标函数(Objective Functions)准则一下Objective Function(目标函数OF),与路由度量和约束紧密结合,可用于DODAG加入选择,以及在DODAG中选择哪些同行作为双亲。OF用于对双亲进行计算并排序为列表。OF还负责对DODAG版本中设备的Rank进行计算。在Objective Code Point(OCP)中,Objec
2017-03-19 17:26:08
1244
翻译 RPL(11):RFC6550翻译(11)---多播操作
12、多播运行本章讲述IPv6 RPL网络中的多播路由运行,特别是单播DAOs如何用于中继组注册。相同的DODAG结构可用于转发单播和多播流量。本章仅限于介绍组注册如何交换,以及转发的基础设施是如何运行的。并不提供对LLN中的多播完整描述,尤其未提供在多播中的指定目标的DODAGs是如何生成的,也未描述有关多播中的RPL运行---它们是将来规范的任务。多播组注册使用与单播相同的
2017-03-03 16:35:57
1036
翻译 RPL(10):RFC6550翻译(10)---分组转发和环路避免/检测
11、分组转发和环路避免/检测11.1 分组转发的建议本文详述了一个路由协议。提供这些非规范建议是为了通过举例说明这样的实现如何与RPL一起工作,为转发实现设计提供帮助。当转发数据包到目的地是,按如下原则优先选择下一跳继任者:本规范仅涉及如何根据DODAG Version选择继任者,该继任者匹配正在转发的数据包中IPv6首部的RPLInst
2017-02-15 10:44:47
1001
翻译 RPL(9):RFC6550翻译(9)---安全机制
10、安全机制本章介绍安全RPL信息的生成和处理。RPL消息代码的高阶位标识着RPL消息是否安全。除了基础控制消息(DIS,DI——DAO,DAO-ACK)的安全版本外,RPL还有几种消息仅在启动了安全性的网络才会使用。实现的复杂度和规模是LLNs所关注的核心问题,也就是说在RPL实现中包含先进的安全措施在经济和物理上都是不可能的。此外,许多部署可以使用链路层或其它安全机制满足
2017-02-04 11:44:11
1153
翻译 RPL(8):RFC6550翻译(8)---下行路由
9、下行路由本节讲述RPL发现和下行路由的维护。RPL通过目的地公告对象(DAO)消息来构造和维护下行路由。下行路由支持P2MP流,从DODAG根流向叶子。下行路由也支持P2P流:P2P信息可以通过上行路由流向DODAG根(或公共祖先),然后离开DODAG根通过下行路由流向目的地。本规范描述RPL实例在维护下行路由时可选择的两种模式。第一种模式叫“存储式”,节点为它们的
2017-01-23 19:55:11
1672
翻译 RPL(7):RFC6550翻译(7)---Upward Routes
8、Upward Routes(上行路由)本章讲述RPL是如何发现并维护上行路由的,描述了DODAG信息对象(DIOs)的使用,DIO报文用于发现及维护路由;详述了RPL如何生成并响应DIO;还描述了DODAG信息请求报文(DIS),它用于引发DIO传送。正如3.2.8节所述,节点决定加入DODAG前必须为相关实例提供至少一个DODAG双亲作为默认路由。此默认路由使得数据包
2017-01-20 09:25:03
1461
翻译 RPL(6):RFC6550翻译(6)---Sequence Counter
7、Sequence Counters(序列计数器)本章介绍RPL中序列计数器的自举和运行总体方案,如DIO报文中的DODAGVersionNumber,DAO报文中的DAOSequence和传送信息选项中的Path Sequence。7.1 序列计数器概览本规范利用三种不同的序列号来验证协议信息的新鲜度和同步性:DODAGVersionNumber
2017-01-19 08:38:23
870
翻译 RPL(5):RFC6550翻译(5)---ICMPv6 RPL控制报文
一直以来,困扰我的是packet的翻译,可以是数据包,也可以是分组。但这两个中文意思相差较大,翻译成“数据包”或“包”更接地气、更容易理解些,但有些专来术语又必须使用“分组”。头痛啊!个人理解,分组是相对于链路层而言的,因为IP层向下发的数据包有可能尺寸过大,在链路层要分成数块来传送,所以又叫分组。我个人倾向于packet在单独使用时翻译为数据包,在联合其它单词形成专业术语时,根据需要,有时翻译成
2017-01-17 12:14:53
3739
翻译 RPL(4):RFC6550翻译(4)---RPL的通信流支持&RPL实例
4、RPL的通信流支持RPL支持三种基础通信流:多点到点(MP2P),点到多点(P2MP)和点对点(P2P)。4.1 多点到点通信多点到点(MP2P)是很多LLN应用的主导通信流([RFC5867],[RFC5826],[RFC5673]和[RFC5548])。MP2P流的目的地是有应用意义的选定节点,如提供到更大互联网或核心专用IP网络的连接。RPL允许通过
2017-01-16 07:57:33
1796
翻译 RPL(3):RFC6550翻译(3)---协议综述
3.协议综述本节目的是本着[RFC4101]的精神描述RPL。协议细节可以后面章节找到。3.1 拓扑结构本节介绍可形成的基本RPL拓扑结构,及构造这些拓扑结构的规则,例如,指导DODAG形成的规则。3.1.1 构造拓扑结构LLNs,如无线网络,通常不会象点对点导线那样强制形成拓扑结构,所以RPL不得不发现链路并有节制地选择对端。
2017-01-14 08:48:30
3573
翻译 RPL(2):RFC6550翻译(2)---术语
DAG:Directed Acyclic Graph,有向无环图。有向图具备如下性质:所有边具有方向性,且不存在回路。所有边均包含在通向或结束于一个或多个根节点的路径中。DAG root:DAG根DAG根是有向无环图中无出边的节点。因为图是无回路的,所以根据定义,所有的有向无环图必须必定拥有至少一个DAG根,且所有路径终结于一个DAG根。
2017-01-12 12:50:18
2114
翻译 RPL(1):RFC6550翻译(1)---引言
学Contiki的最主要目标之一就是RPL,今天总算是走到这了。当然,第一步还是得先翻译RPL标准的文档RFC6550,文档地址为:https://tools.ietf.org/html/rfc6550RPL: IPv6 Routing Protocol for Low-Power and Lossy NetworksRPL:IPv6低功耗有损网络路由协议
2017-01-11 10:33:48
2050
原创 基于TI-RTOS的CC2650DK开发(30)--- Swi官方示例
官方示例中有一个专门针对Swi的例子,它演示了Swi的几种提交方法,基本针对Swi的几种提交方法写的程序,在读此程序之前请先阅读这篇日志。先上代码:/* XDC module Headers */#include #include /* BIOS module Headers */#include #include #include #include #inclu
2017-01-10 09:16:35
1714
1
原创 基于TI-RTOS的CC2650DK开发(29)---UART
有关UART,官网有一个例程uartecho。本篇文章先讲解官方例程,然后自己再做一个更复杂的。官网例程:uartecho_CC2650DK_7ID_TI_CC2650F128/* XDCtools Header files */#include #include /* BIOS Header files */#include #include /* TI-RT
2017-01-08 23:24:50
2568
翻译 网络协议MPL(3):RFC2606--The Trickle Algorithm文档翻译
The Trickle Algorithm摘要:涓流算法使得有损共享介质(如低功耗有损网络)中的节点在进行信息交换时具有:高鲁棒性、高效能,简单且可扩展等特性。传输窗口的动态调整特性使得涓流算法在传输新信息时,当每小时仅发送很少的重复信息时链路层传输次数按比例调整。简单的抵制机制和传送点选择使得涓流算法的通信速率和节点密度间为对数关系。本文描述涓流算法和它的使用。3
2017-01-08 09:56:45
1548
原创 基于TI-RTOS的CC2650DK开发(27)--- 邮箱示例
本想用semaphore搞个简单的LCD示例,也就是按一个按钮,将按钮值显示在LCD上。但写的时候突然发现semaphore无法实现这个功能啊。因为要在一个task内显示按钮值,而按钮有5个,显示5个值,这时需要参数传递。但semaphore无法传递参数,其实用一个全局变量也可以实现参数的传递。赶紧找还有什么机制是可以传递参数的,邮箱不就是干这事的嘛!现在终于理解了,邮箱其实就
2017-01-06 23:42:13
2116
翻译 网络协议---MPL(2):RFC 7731文档翻译
7、信息库7.1 本地接口集本地接口集记录MPL传送者的本地接口。本地接口集由本地接口多元组组成,每个MPL接口对应一个AddressSet。AddressSet --- 一系列分配给MPL接口的单播地址。7.2 域集域集记录了订阅了每个MPL域地址的MPL接口。域集由MPL域多元组组成。每个MPL域对应一个MPLInterfaceSet。
2017-01-06 09:30:43
1892
翻译 网络协议---MPL(1):draft-ietf-roll-trickle-mcast-12文档翻译
ROLL J. HuiInternet-Draft Nest LabsIntended status: Standards Track
2017-01-05 16:27:51
1766
原创 基于TI-RTOS的CC2650DK开发(26)--- LCD官方示例
CC2650DK自带的液晶显示屏,官方给出两个示例。之前做的示例由于不了解task,我把代码最简化,现在可以深入一些去学习了。所以先学前面的示例,再来学这个,会简单些。两个示例,两种不同的使用方法,下面一一道来。示例可从菜单【View】→【Resource Exploer Classic】里得到。Demo1:lcdSmartRF06EB_CC2650DK_7ID_TI_CC2650
2017-01-03 23:52:47
2294
原创 华为LiteOS发布了
进入新年,华为嵌入式操作系统LiteOS 1.0版终于发布了http://developer.huawei.com/cn/ict/Products/IoT/Components/LiteOS/content/API这个发布整整迟到了一年。本以为华为不准备开源了,但最终还是来了。之前一直在等华为的LiteOS,毕竟是国产操作系统,以当今如此强大的中国,华为又是中国最强大的
2017-01-02 11:29:27
3996
翻译 基于TI-RTOS的CC2650DK开发(25)---IOM接口
本附录提供IOM(I/O迷你驱动)接口的详细描述。F.1 迷你驱动接口概览迷你驱动接口指定了如何实现一个迷你驱动。功能一个迷你驱动应当实现以下功能:mdBindDev:将设备绑定至迷你驱动。mdControlChan:执行信号控制命令。mdCreateChan:创建设备信道。mdDeleteChan:删除一个信道。mdSubmi
2017-01-01 10:17:00
1381
翻译 基于TI-RTOS的CC2650DK开发(24)--- 最小化应用程序的内存占用
本附录描述如何最小化SYS/BIOS应用程序的尺寸。D.1 概览本节对最小化SYS/BIOS基础应用的内存需求提供了一些窍门和建议。这是通过禁用操作系统中默认打开的功能、或通过减少特定缓冲的尺寸来实现的。大多数小窍门的描述仅限于内核配置的尺寸基准。本章最后一节展现了最小化内存需求的完整配置脚本。实际的尺寸基准是包含在SYS/BI
2016-12-31 12:42:57
1528
翻译 基于TI-RTOS的CC2650DK开发(23)--- 尺寸基准
附录C 尺寸基准本附录描述了SYS/BIOS尺寸基准统计。C.1 概览尺寸基准是一系列建立在彼此之上的应用。移动到表C-1,每个应用都包含之前应用的所有配置设置和API调用。所有的测试应用,默认情况下都包含常用的Hwi和Swi模块。反过来,这将为该模块提供所有相关代码,同时排除大多数其他非依赖模块代码应用程序分为三类:构造SY
2016-12-30 09:05:39
943
翻译 基于TI-RTOS的CC2650DK开发(22)--- 时间基准
附录 B 时间基准本附录描述SYS/BIOS函数的时间基准,解释了值的含义及它是如何获得的,使设计者更好地理解系统性能。应用程序通过在SYS/BIOS安装的BIOS_INSTALL_DIR\packages\ti\sysbios\benchmarks目录的源文件目录中生成并运行以下时间基准。B.1 时间基准本附录描述SYS/BIOS函数的时间基准,解释了值的含义
2016-12-29 09:43:43
2062
翻译 基于TI-RTOS的CC2650DK开发(21)---检测
第9章 检测本章描述用于检测目的的模块和其它工具。9.1 仪器概览很多可用于SYS/BIOS应用程序的检测工具都是由XDCtools模块和APIs提供的。参阅CDOC在线参考文档获取Assert、Diags和Error模块的详细信息。9.2 Load模块ti.sysbios.utils.Load模块报告系统线程的执行时间和负载信息
2016-12-28 10:01:39
2050
翻译 基于TI-RTOS的CC2650DK开发(20)---硬件抽象层
第8章 硬件抽象层8.1 硬件抽象层APIsSYS/BIOS为中断、缓存和定时器提供配置和管理服务。不同于诸如线程等其它SYS/BIOS服务,此模块直接面向设备硬件方面编程,并组成Hardware Abstraction Layer (HAL硬件抽象层)包。服务包括使用和禁用中断、中断向量插入、将多个中断复用到单个向量和缓存失效和回写,这些将在本章描述。
2016-12-27 09:47:46
2330
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人