TinyOS是一款自由和开源的基于元件(component-based)的操作系统和平台,它主要针对无线传感器网络(WSN, wireless sensor network)。TinyOS是用nesC程序编写的嵌入式操作系统,其作为一系列合作项目的结果。 它的首先出现是做为UC Berkeley和Intel Research合作实验室的杰作,用来嵌入智能微塵当中,之后慢慢演变成一个国际合作项目,即TinyOS联盟。
TinyOS应用程序是用nesC编写,它是C programming language的一个分支对于感知网络的内存限制问题作了优化。它的补充工具主要来自于Java形式和shell script的front-ends。其他的相关的库和工具,例如NesC编译器和Atmel AVRbinutils toolchains,大部分用C编写。
TinyOS程序由基于组件的软件工程software component建构,它们中一些表现了硬件的抽象概念, 组件用接口互相连接。TinyOS为普通的抽象描述(abstractions)提供了接口和组件,例如数据包通信(packet communication),路由,感知(sensing),行为(actuation)和储存。
TinyOS完全的non-blocking:它配备了一个单独的堆栈。因此所有的持续超过几百微秒I/O操作都以异步进行并且带有回叫功能(callback)。为了使本地的编译器更加出色地优化交叉呼叫边界(optimize across call boundaries),TinyOS用nesC的特性去连接这些回叫,叫作事件(events)。non-blocking系统可以让TinyOS在单一存储器下保持高度的协同性(concurrency)。它强迫程序用stitching together many small event handlers的方法编写复合逻辑。为了支持更高的计算量,TinyOS提供了任务(tasks),其比Deferred Procedure Call and interrupt handler bottom halves小。
一个TinyOS组建可以发布一个任务,操作系统可以把它排入列表以待之后执行。任务是没有优先权的并且按照FIFO运行。 这个简单的协同模型是典型的满足了以I/O为中心的应用,但这样的模型对于CPU负荷重的应用程序来说不是太好的,因为它会导致向OS多次提出线程间协同处理的请求(but its difficulty with CPU-heavy applications has led to several proposals for incorporating threads into the OS.)。
TinyOS代码与程序代码进行静态连接,然后用GNU toolchain。编译到一个小的二进制系统中。 它的联盟为TinyOS的应用,提供完整的开发平台。
一、基础知识 1.1 组件:AMSenderC 虚拟化的活动消息发送抽象。 AMSenderC的每个实例都有其自己的深度为1的队列。 因此,它不必与队列空间的其他AMSenderC实例竞争。 基础实现使用某种形式的公平共享队列来调度这些队列中的数据包。 1.1.1 AMSenderC组件接口:AMSend cancel命令 error_t cancel(message_t *msg) 功能:取消请
难点 1. Linux: 因为我菜,反正vm在我的系统中就没有正常存活过。前两天卸掉重装了11遍,最后都没能解决问题。 如果遇到黑屏,特别是10版本的,可以试着升到11以后黑屏问题会解决,但是安装会变长。 如果你就是和我一样单纯嫌麻烦,直接看下一步。 2. 镜像源可用性 这大多数各种用途的环境其实安装都得靠代理,所以死这一步直接去腾讯云上租个境外的服务器好了,认真一点流量计费也就一两块钱一小时。
上一篇blink的例程使用的外设驱动为GPIO;这一篇继续基本外设驱动串口,串口设置波特率默认115200 例程目录:tinyos-main-release_tinyos_2_1_2\apps\cc2538_Test\TestPrintf 包含文件: Makefile TestPrintfAppC.nc----configuration TestPrintfC.nc---------module
Micaz节点的Tinyos系统安装 说明:为了留底也锻炼大家的动手能力,我写了这个文档,里面有我做的时候的步骤和需要注意的问题,算是比较详细了,文档中有问题的话可找我一起讨论! 首先,介绍一下Tinyos,TinyOS是UC Berkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计;但是与一般系统不同的是,Tinyos不能安装在Winsows系统中,它是在LIN
前言:最近一段时间需要快速上手telosB节点,从零学习了下WSN的相关知识,梳理下目前总结的方法 0.(可选项)$ sudo apt-get install flex $ sudo apt-get install bison $ sudo apt-get install graphviz $ sudo apt-get install build-essential python python-d
前言 前面章节已经介绍了Shell编程范例之数值、布尔值、字符串、文件、文件系统、进程等的操作。这些内容基本覆盖了网络中某个独立机器正常工作的“方方面面”,现在需要把视角从单一的机器延伸到这些机器通过各种网络设备和协议连接起来的网络世界,分析网络拓扑结构、网络工作原理、了解各种常见网络协议、各种常见硬件工作原理、网络通信与安全相关软件以及工作原理分析等。 不过,因为网络相关的问题确实太复杂了,这里
不了解网络编程的程序员不是好前端,而NodeJS恰好提供了一扇了解网络编程的窗口。通过NodeJS,除了可以编写一些服务端程序来协助前端开 发和测试外,还能够学习一些HTTP协议与Socket协议的相关知识,这些知识在优化前端性能和排查前端故障时说不定能派上用场。本章将介绍与之相关的 NodeJS内置模块。 开门红 NodeJS本来的用途是编写高性能Web服务器。我们首先在这里重复一下官方文档里的
检测光线亮度。范围在1-100之间。 用法 Your browser does not support the video tag. 案例:智能药盒 说明:光线传感器可以检测光线强弱,以此来确认药盒是否打开;蜂鸣器可以发出声音,进行提醒。 所需模块:电源、蓝牙模块、光线传感器、蜂鸣器、连接线10cm。
光线传感器用于检测周围环境中的光线强弱,它接受到的光线越强,相应的输出信号就越强。 净重量:7.3g 体积:24×24×14mm 参数 测量范围:0~100(相对值) 测量精度:±5 工作电压:DC 5V 抗跌落能力:1.5m 工作温度:-10℃~55℃ 工作湿度:<95%"
光线传感器能够检测环境光线的强弱。 原理介绍 mBuild 的光线传感器使用了光敏电阻作为核心元器件,这是一种能够随光线强度改变电阻值大小的元器件,电阻值的改变能够被MCU所检测,MCU因此能够判断环境中的光线强弱。 生活实例 光线传感器能够帮助手机智能调节屏幕亮度 一些智能灯泡可以根据环境光线调整亮度 参数 尺寸:24×20mm 读值范围:0~100% 工作电流:15mA
光线传感器能够检测环境光线的强弱。 原理介绍 mBuild 的光线传感器使用了光敏电阻作为核心元器件,这是一种能够随光线强度改变电阻值大小的元器件,电阻值的改变能够被MCU所检测,MCU因此能够判断环境中的光线强弱。 生活实例 光线传感器能够帮助手机智能调节屏幕亮度 一些智能灯泡可以根据环境光线调整亮度 参数 尺寸:24×20mm 读值范围:0~100% 工作电流:15mA
概述 巡线模块专为巡线机器人设计。它包含两个传感器,每个传感器有一个红外发射LED和一个红外感应光电晶体管,机器人能够沿着白色背景上的黑色线条移动,或是黑色背景上的白色线条移动,具有检测速度快,电路简单等优点。本模块接口是蓝色色标,说明是双数字口控制,需要连接到主板上带有蓝色标识接口。 技术规格 工作电压:5V DC 工作温度:0到70℃ 检测范围:1到2厘米 检测角度:120°范围内 控制方式:
概述 光线传感器是基于半导体的光电效应原理所开发的,其可用来对周围环境光的强度进行检测,还可以被用来检测不同颜色表面的光线差别。用户能够用它来制作一些和光互动的项目,比如智能调光小灯,一个激光通信系统或者更酷的一些事情。本模块接口是黑色色标,说明是模拟信号接口,传感器模块连接主控板上带黑色色标的接口。 技术规格 工作电压:5V DC 工作温度范围:-30°C到70°C 模块尺寸:52 x 24 x