基于Contiki的无线传感网数据采集系统

更新时间:2024-02-01 05:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科毕业设计(论文)

基于Contiki的无线传感网数据采集系统

学 院 自动化学院 专 业 物联网工程 年级班别 2012级(2)班 学 号 3112001454 学生姓名 龚国宁

2016年 6 月

指导教师 王涛

基于

Con

tik

i 的

线

网 数

集 系

国 宁

摘 要

近年来,随着微机电系统(MEMS)、无线通信网络和嵌入式系统等技术的飞速发展,各种新技术的融合,出现了许多信息获取和处理的新模式,无线传感器网络就是其中一例。无线传感器网络可用来监控环境、机器甚至人类自己,从而真正实现“普适计算”的理念。无线传感器网络具有十分广阔的应用前景,己经引起了世界许多国家军事界、学术界和工业界的高度重视,同时,在基础理论和工程技术上对课题的研究都是巨大的挑战。随着社会的发展,由大量体积小、资源受限而且具有一定通信能力和计算能力的传感器节点组成的无线传感器网络WSN得到快速发展。它在物联网中得到了广泛的应用,已经成为一个研究热点。

无线传感器网络的操作系统是整个网络的核心,它的各种性能直接影响系统的功能。本文采用开放源代码的Contiki无线传感器网络操作系统。首先对Contiki操作系统的内核进行研究,然后对系统的移植技术进行深入的分析,采用模块化和层次化的方法将系统移植到MSP430F1611硬件平台上,使系统能在节点上正常运行。

关键词:无线传感器网络,Contiki操作系统,移植, CC2420与MSP430

Abstract

In the recent years, as the rapid development of MEMS, wireless communication network, embedded system, and the interaction of all kinds of new technologies, many new modes of information obtaining and process come into being. Wireless sensor network is one of them. WSN can be used to monitor the environment, the machines and even the people; hence “ubiquitous computing” will come true. WSN has wide application fields, so it has been paid high attention by the military, the academes, and the industrial from all the world. Meanwhile this provides many challenges in the academe foundations and technologies. With the development of society. WSN got very fast development which is composed of a large number of small, resource-restrained sensor nodes with computing and wireless communication abilities. It has been widely used in the Internet of things and becomes a research hotspot of information technology.

Wireless sensor network operating system is the core of the whole network., Its performance directly affects system performance. We use the Contiki, the operate system of open source wireless sensor network. First, the OS kernel is studied and then the transplantation technology is analyzed deep. In order to make the node work, the OS is transplantation to the MSP430 hardware platform successfully through modular method and hierarchical.

Keywords: wireless sensor network, Contiki operate system, porting

CC2420 and MSP430

目 录

1 绪论 .................................................................. 1

1.1研究背景 .......................................................... 1 1.2研究内容 .......................................................... 1 1.3研究意义 .......................................................... 1 2 无线传感器网络平台及其操作系统简介 .................................... 2

2.1 节点的组成 ........................................................ 3 2.2 网络传感器网络的体系结构及整体构建 ................................ 4 2.3无线传感器操作系统简介 ............................................ 4 2.4 Contiki操作系统 ................................................... 5

2.4.1 Contiki操作系统简介 ......................................... 5 2.4.2 Contiki操作系统特点 ......................................... 6 2.4.3 Contiki系统架构分析 ......................................... 7 2.4.4 Contiki系统的内核主要特点 ................................... 8 2.4.5 Contiki系统中的进程 ......................................... 9 2.4.6 Contiki源代码结构分析 ...................................... 10

3 绍硬件介绍 ........................................................... 12

3.1 CC2420芯片介绍 ................................................... 12

3.1.1 CC2420性能特点 ............................................. 12 3.1.2 CC2420芯片内部结构 ......................................... 12 3.1.3 CC2420典型应用电路 ......................................... 13 3.2 MSP430简介 ....................................................... 14

3.2.1 MSP430特点 ................................................. 14

4 Contiki操作系统移植与实验 ............................................ 17

4.1移植注意的问题 ................................................... 17 4.2 将Contiki操作系统移植到IAR环境的配置 ........................... 17 4.3 将Contiki内核文件导入工程中 ..................................... 21

4.3.1 platform目录的操作 ......................................... 21 4.3.2 cpu目录的操作 .............................................. 22

操作系统 μC/OS-II TinyOS Contiki 通用性 通用 事件驱动型 事件驱动型 核心代码量 大 小 小 运行空间 大 小 小 能量消耗 不考虑 低 低 并发操作 无 支持 支持 移植性 好 差 好 实时性 好 差 好 图2-3 μC/OS-II,TinyOS和Contiki 三种典型操作系统比较

通过比较,我们最终选择Contiki操作系统作为移植到节点上的操作系统。

2.4 Contiki操作系统介绍 2.4.1 Contiki操作系统简介

Contiki 是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传感器网络,由瑞典计算机科学学院(Swedish Institude of Computer Science)的Adam Dunkels 和他的团队开发。Contiki完全采用C语言开发,可移植性非常好,对硬件的要求极低,能够运行在各种类型的微处理器及电脑上,目前已经移植到8051单片机、MSP430、AVR、ARM、PC机等硬件平台上。

Contiki 适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器[4]。Contiki是开源的操作系统,适用于BSD协议,既可以任意修改和发布,无需任何版权费用,因此已经应用在许多项目中。Contiki操作系统是基于事件驱动(Event-driven)内核的操作系统,在此内核上,应用程序可以在运行时动态加载,非常灵活。在事件驱动内核基础上,Contiki实现了一种轻量级的名为protothread的线程模型,来实现线性的、类似于线程的编程风格。该模型类似于Linux和windows中线程的概念,多个线程共享同一个任务栈,从而减少RAM占用。Contiki还提供一种可选的任务抢占机制。基于事件和消息传递的通信机制。Contiki中还包括一个可选的GUI子系统,还提供对本地串口终端、基于VNC的网络化虚拟显示或者TeInet的图形化支持。

Contiki系统内部集成了两种类型的无线传感器网络协议栈:UIP和Rime。UIP是一个小型的符合RFC规范的TCP/IP协议栈,是的Contiki可以直接和Internet通信。UIP包含了IPV4和IPV6两种协议栈版本,支持TCP、UDP、ICMP等协议,但是编译时只能二选一,不可以同时使用。Rime是一个轻量级为低功耗无线传感网络设计的协议栈,该协议栈提供了大量的通信原语,能够实现从简单的一跳广播通信,到复杂的可靠多跳

5

数据传输等通信功能。

2.4.2 Contiki操作系统特点

(1)事件驱动(Event-driven)的多任务内核:Contiki基于事件驱动模型,即多个任务共享同一个栈(stack),而不是每个任务分别占用独立的栈(如UCOS、FreeRTOS、Linux等)。Contiki每个任务只占用几个字节的RAM,可以大大节省RAM空间,更适合资源十分受限的无线传感器网络应用。

(2)低功耗无线传感器网络协议栈:Contiki提供完整的IP网络和低功耗无线网络协议栈。对于IP协议栈,支持IPV4和IPV6两个版本,IPV6还包括6Lowpan帧头压缩适配器,ROLL RPL无线网络组网路由协议、CoRe/CoAP应用协议,还包括一些简化的Web工具,包括TeInet、http和web服务等。Contiki还实现了无线传感器网络领域知名的MAC和路由协议,其中MAC层包括X-MAC、CX-MAC、ContikiMAC、CSMA-CA、LPP等,路由层包括AODV、RPL

(3)集成无线传感器网络仿真工具:Contiki提供了Cooja无线传感器网络仿真工具,能够多对协议在电脑上进行仿真,仿真通过后才下载到节点上进行实际测试,有利于发现问题,减少调试工作量。除此之外,Contiki还提供MSPsim仿真工具,能够对MSP430微处理器进行指令级模拟和仿真。仿真工具对于科研、算法和协议验证、工程实施规划、网络优化等很有帮助。

(4)集成Shell命令行调试工具:无线传感器网络中节点数量多,节点的运行维护是一个难题,Contiki可以通过多种交互方式,如Web浏览器,基于文本的命令行接口,或者存储器和显示传感器数据的专用程序等。基于文本的命令行接口是类似于Unix命令行的Shell工具,用户通过串口输入命令可以查看和配置传感器节点的信息、控制其运行状态,是部署、维护中实用而有效的工具。

(5)基于Flash的小型文件系统Coffee File System:Contiki实现了一个简单、小巧、易于使用的文本系统,统称为Coffee File System(CFS),它是基于Flash的文件系统,用于在资源受限的节点上存储数据和程序。CFS是充分传感器网络数据采集、数据传输需求以及硬件资源受限的特点而设计的,因此在耗损平衡、坏块管理、掉电保护方面、垃圾回收、映射机制方等方面进行优化,具有使用的存储空间少、支持大规模的特点。CFS的编程方法与常用的C语言编程类似,提供open、read、write、close等函数,易于使

6

用。

(6)集成功耗分析工具:为了延长传感器网络的生命周期,控制和减少传感器节点的功耗至关重要,无线传感器网络领域提出的许多网络协议都围绕降低功耗而展开。为了评估网络协议以及算法能耗性能,需要测量出每个节点的能量消耗,由于节点数量多,使用仪器测试几乎不可行。Contiki提供了一种基于软件的能量分析工具,自动记录每个传感器节点的工作转态、时间,并计算出能量消耗,在不需要额外的硬件或仪器的情况下就能完成网络级别的能量分析。Contiki的能量分析机制即可用于评价传感器网络协议,也可用于估算传感器网络的生命周期。

(7)开源免费:Contiki采用BSD授权协议,用户可以下载代码,用户科研和商业,且可以任意修改代码,无需任何专利以及版权费用,是彻底的开源软件。尽管是开源软件,但是Contiki开发十分活跃,在持续不断更新和改进之中。Contiki完全C语言开发、易于移植、支持大量的硬件平台和开发工具、事件驱动机制占用内存小、集成了多种无线传感器网络协议、无专利和版权费、集成仿真工具等特点和优势,已经成为无线传感器网络学术研究和产品开发的理想平台,在欧洲已经得到广泛应用,并逐渐得到其它地区开发人员的支持。随着物联网、无线传感器网络的发展,IP地址将耗尽,骨干网络必将升级到IPv6,因此6Lowpan标准被越来越多的标准化组织所采纳,研发6lowpan的人员将越来越多,这将使得contiki很可能成为嵌入系统中的Linux,在物联网领域得到广泛应用,发挥重要作用。

2.4.3 Contiki系统架构分析

Contiki操作系统遵循模块化架构,在内核中遵循事件驱动型模型,对每个单独的进程都提供可选的线程设施。每个应用程序都可以调用服务程序。Contiki操作系统的系统架构如图2-4-3所示[5]。

7

2-4-3 Contiki系统架构图

2.4.4 Contiki操作系统的内核主要特点

上图介绍了Contiki操作系统的基本架构,Contiki系统的内核主要有以下几个特点: (1)MAC层,UIP6使用一个简单的MAC层协议“sicslomac”。在MAC层还实现了一些其他的mac层协议,例如nullmac协议,在mac层不做任何事,只有在转发上层数据到radio driver,反之亦然;Xmac,这个协议只是一个报头采样协议,它周期性的在监听着无线信道,每次监听一段时间。如果节点A要发送数据到节点B,必须先发一个帧头到节点B,节点B在线的时候接收到这个帧头,就会返回一个ACK,节点A接收到ACK确认之后,开始发送数据。对于IPV4来讲,直接使用了Rime协议栈来传送信息;

(2)事件驱动的操作系统。当events(包括各种定时器、内部中断、外部中断)发生之后,就需要调用与之对应的process进行处理操作。Events->process(process负责处理对

8

应的events)。Process相当于一个task,使用protothread Library实现。一个process一般使用C语言写成,包括死循环、宏定义等等;

(3)UIP(TCP/IP),包括IPV4/IPV6协议;

(4)Rime stack,提供mesh routing和route discovery等多种网络协议。

2.4.5 Contiki系统中的进程

从狭义的角度来说,进程就是一段程序的执行过程;从广义上来说,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动[6]。它是操作系统动态执行的基本单元,在传统的操作系统中,进程是基本的分配单元,也是基本的执行单元。

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程中调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个无生命的实体,只有处理器富裕程序生命时,它才能成为一个活动的实体,我们称其为进程。进程是操作系统中最基本、最重要的概念,是多道程序系统出现之后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,多有多道程序设计的操作系统都建立在进程的基础之上。[7]

那么在Contiki系统中,每一个程序都是一个进程,每一个进程都是一段被Contiki系统定期执行的代码。当系统被启动时Contiki中的进程也会随之启动,或者说在 Contiki 系统中加载了某个包含进程的模块并运行时,进程也会被启动。当一定的条件被触发时进程就开始执行,比如发生了某个外部事件或者是定时器到期了[8]。

在Contiki系统中的进程大致可以分为两类,一种是preemptive类型,另一种是 cooperative类型,这两种类型的进程工作机制如图2-4-5 Contiki系统中的进程类型所示:

9

图2-4-5 Contiki系统中进程模型

由图示我们可以看到,contiki中包含两种类型的进程,preemptive(可抢占的)和cooperative(合作的,由于只有两种进程,可以理解为非抢占的)。

preemptive类型:优先级较高。可以在任何时候直接打断cooperative类的进程执行条件。

prremptive类型的进程可以由中断(interrupt,完合由硬件产生)或者是实时定时器(real-time timer,指的是contiki系统维护的rtimer)来触发。

cooperative类型的进程:优先级相对较低.可以在contiki系统启动时运行,或者是其它事件触发,这里的事件主要是指timer或者是外部的触发条件。

cooperative进程执行时,上一个cooerative进程必须执行完。类似于上图的Process B必须等Process A执行完了之后,才能执行。

cooperativer进程执行的过程中,如果有preemptive类型的进程执行,例如Process B进程。必须要等到preemptive类型的进程执行完之后,Process B进程才能完成它剩下的工作。

2.4.6 Contiki源代码结构分析

Contiki是一个高度可移植的操作系统,它的设计就是为了获得良好的可移植性,因此源代码的组织很有特点。下面简单介绍Contiki源代码组织结构。

打开Contiki源文件目录,可以看到主要有apps、core、cpu、doc、examples、platform、tools等目录,如图2-4-6所示。下面将分别对各个目录进行介绍。

10

图2-4-6 Contiki源文件目录

(1)core:Contiki的核心源代码,包括net(网络)、文件系统(cfs)、外部设备(dev)、链接库(lib)等,并且包含了时钟、I/O、elf装载器、网络驱动等的抽象;

(2)cpu:Contiki支持的微处理器,例如arm、avr、msp430等。如果需要支持新的微处理器,可以在这里添加相应的源代码;

(3)platform:Contiki的硬件平台,例如mx231cc、micaz、sky、zl等。Contiki的移植平台主要在这个目录下完成,该部分代码与相应的硬件平台相关;

(4)apps:Contiki所添加的一些应用程序,如ftp、shell、webserver等。在项目程序开发中可以直接使用,只需将Makefile中定义APPS=[应用程序名称]即可;

(5)examples:Contiki针对不同平台的示例程序;

(6)doc:Contiki的帮助文档目录,对Contiki应用程序开发极具参考价值,使用前先使用Doxygen进行编译;

(7)tools:Contiki开发过程中常使用到的一些工具,例如,cfs相关的makefsdata、网络相关的tunslip、模拟器cooja和mspsim等;为了得到优良的可移植性能,除了platform和cpu中的源代码和硬件平台有关系以外,剩下的源代码都可能和硬件不相关。在编译的时候,我们要根据所使用的硬件平台来链接与之对应的代码。

11

3 硬件介绍

3.1 CC2420芯片介绍

CC2420是Chipcon As公司推出的首款符合2.4GHz IEEE802.15.4标准的射频收发器。该器件包括众多额外功能,是一款适用于ZigBee产品的RF器件。它基于Chipcon公司的SmartRF 03技术,以0.18um CMOS工艺制成只需极少外部元器件,性能稳定且功耗极低。CC2420的选择性和敏感性指数超过了IEEE802.15.4标准的要求,可确保短距离通信的有效性和可靠性。利用此芯片开发的无线通信设备支持数据传输率高达250kbps可以实现多点对多点的快速组网。

3.1.1 CC2420性能特点

(1) 工作频带范围:2.400~2.4835GHz;

(2) 采用IEEE802.15.4规范要求的直接序列扩频方式; (3) 数据速率达250kbps码片速率达2MChip/s; (4) 采用o-QPSK调制方式;

(5) 超低电流消耗(RX:19.7mA,TX:17.4mA)高接收灵敏度(-99dBm); (6) 抗邻频道干扰能力强(39dB);

(7) 内部集成有VCO、LNA、PA以及电源整流器 采用低电压供电(2.1~3.6V); (8) 输出功率编程可控;

(9) IEEE802.15.4 MAC层硬件可支持自动帧格式生成、同步插入与检测、16bit CRC校验、电源检测、完全自动MAC层安全保护(CTR,CBC-MAC,CCM);

(10) 与控制微处理器的接口配置容易(4总线SPI接口); (11) 开发工具齐全 提供有开发套件和演示套件; (12) 采用QLP-48封装,外形尺寸只有7×7mm。

3.1.2 CC2420芯片内部结构

CC2420芯片的内部结构如图3-1-2所示。天线接收的射频信号经过低噪声放大器和I/Q下变频处理后,中频信号只有2MHz,此混合I/O信号经过滤波、放大、AD变换、自动增益控制、数字解调和解扩,最终恢复出传输的正确数据。发射机部分基于直接上

12

变频。要发送的数据先被送入128字节的发送缓存器中,头帧和起始帧是通过硬件自动产生的。根据IEEE802.15.4标准,所要发送的数据流的每4个比特被32码片的扩频序列扩频后送到DA变换器。然后,经过低通滤波和上变频的混频后的射频信号最终被调制到2.4GHz,并经放大后送到天线发射出去。

图 3-1-2 CC2420 芯片内部结构[22]

3.1.3 CC2420典型应用电路

CC2420只需要极少的外围元器件,其典型应用电路如图3-1-3所示。它的外围电路包括晶振时钟电路、射频输入/输出匹配电路和微控制器接口电路三个部分。

芯片本振信号既可由外部有源晶体提供,也可由内部电路提供。由内部电路提供时需外加晶体振荡器和两个负载电容,电容的大小取决于晶体的频率及输入容抗等参数。例如当采用16MHz晶振时,它的电容值约为22pF。

射频输入/输出匹配电路主要用来匹配芯片的输入输出阻抗,使其输入输出阻抗为50Ω,同时为芯片内部的PA及LNA提供直流偏置。

13

CC2420可以通过4线SPI总线(SI、SO、SCLK、CSn)设置芯片的工作模式 并实现读/写缓存数据读/写状态寄存器等。通过控制FIFO和FIFOP管脚接口的状态可设置发射/接收缓存器。注意:在SPI总线接口上进行的地址和数据传输大多是MSB优先的。CC2420片内有33个16比特状态设置寄存器,在每个寄存器的读/写周期中,SI总线上共有24比特数据,分别为:1比特RAM/寄存器选择位(0:寄存器,1:RAM),1比特读/写控制位(0:写,1:读),6比特地址选择位、16比特数据位。在数据传输过程中CSn必须始终保持低电平。

图 3-1-3 CC2420 典型应用电路

3.2 MSP430简介

MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超

低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。

MSP430单片机称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片机”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中[9]。

3.2.1 MSP430特点

(1) 处理能力强:MSP430系列单片机是一个16位的单片机,采用了精简指令集

14

(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。这些特点保证了可编制出高效率的源程序。

(2) 运算速度快:MSP430系列单片机能在25MHz晶体的驱动下,实现40ns的指令周期。16位的数据宽度、40ns的指令周期以及多功能的硬件乘法器(能实现乘加运算)相配合,能实现数字信号处理的某些算法(如FFT等)。

(3) 超低功耗:MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。首先,MSP430 系列单片机的电源电压采用的是1.8-3.6V电压。因而可使其在1MHz的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM保持模式下的最低功耗只有0.1μA。其次,独特的时钟系统设计。在 MSP430 系列中有两个不同的时钟系统:基本时钟系统、锁频环(FLL和FLL+)时钟系统和DCO数字振荡器时钟系统。可以只使用一个晶体振荡器(32.768kHz)DT-26 OR DT-38,也可以使用两个晶体振荡器。由系统时钟系统产生CPU和各功能所需的时钟。并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。由于系统运行时开启的功能模块不同,即采用不同的工作模式,芯片的功耗有着显著的不同。在系统中共有一种活动模式(AM)和五种低功耗模式(LPM0~LPM4)。在实时时钟模式下,可达2.5μA,在RAM 保持模式下,最低可达0.1μA 。

(4) 片内资源丰富:MSP430系列单片机的各系列都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-ΔADC、DMA、I/O端口、基本定时器(Basic Timer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D 转换器;16 位定时器(Timer_A 和 Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的I/O端口,P0、P1、P2端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件A/D转换器有较高的转换速率,最高可达200kbps ,能够满足大多数数据采集应用;能直接驱动液晶多达160段;实现两路的12位D/A转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA

15

模块。MSP430 系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。另外,MSP430系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的低功耗状态时,中断唤醒只需5μs。

(5) 方便高效的开发环境:MSP430系列有OTP型、FLASH型和ROM型三种类型的器件,这些器件的开发手段不同。对于OTP型和ROM型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于 FLASH 型则有十分方便的开发调试环境,因为器件片内有JTAG调试接口,还有可电擦写的FLASH存储器,因此采用先下载程序到FLASH内,再在器件内通过软件控制程序的运行,由JTAG接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台PC机和一个JTAG调试器,而不需要仿真器和编程器。开发语言有汇编语言和C语言。

本论文使用的节点是实验室的节点,它的的通信模块使用的是CC2420射频芯片,主控芯片为MSP430F1611。如图3-2-1所示。

图3-2-1 实验节点

16

4 Contiki操作系统移植

Contiki 嵌入式系统是一个比较适合于与WSN网络结合的操作系统。它不但有操作系统应该有的基本的线程管理、线程同步语等,而且还有电源管理、文件系统、动态加载等较为全面的功能,总之,它是一个比较适合于物联网应用的操作系统。本章将介绍将Contiki嵌入式操作系统移植到MSP430F1611硬件平台上,本文选择了适用于 windows系统的IAR的开发环境,介绍了基于windows的开发环境的搭建、内核的移植内容。

4.1 移植注意的问题

我采用的是Contiki系统的2.7版本,官方的Contiki源码是在Linux开发环境进行的,移植到IAR,首要解决的就是GCC与IAR之间的差异,包括以下几点[10]:

(1)GCC是用Makefile来管理工程编译,而IAR是IDE,通过工程文件目录来反映文件间的关系,所以必要时需要将路径加到preprocesses;

(2)嵌入式汇编,GCC内嵌汇编与IAR内嵌汇编格式差异甚大,需要全面修改Contiki出现内嵌汇编的地方;

(3)文件差异,一些文件在Linux环境下可能已被声明,在使用时就可以直接对其调用,而在IAR的编译环境下,则不能直接对其调用,原因可能是这些文件在IAR的环境下找不到相关的头文件,或者说在IAR环境下有相同功能的文件只是文件名字不同,出现这样的情况只能在后期工程的调试中进行相关的修改。Linux平台下的Contiki会调用Linux的头文件或者文件名不同(比如io.h与io430.h)。

4.2 将Contiki操作系统移植到IAR环境的配置

第一步:新建一个IAR工程,在该工程中逐步建立工程目录,将已有的Contiki 系统的内核源代码拷贝到新建的工程目录下,在工程中建立一个名为examples的目录,该目录主要是用来存放代码人员对应用层的程序源代码的。

第二步:在上一步建立好的IAR工程中打开名为Contiki-msp430的workspace, 并

17

在该工作空间中添加相应的目录结构,添加完后的工程文件的目录结构如图4-2-1添加工程文件后的目录结构所示。

图4-2-1添加工程文件后的目录结构

第三步:Contiki 操作系统移植到IAR的开发环境时需要增加一个虚拟的目录结构,为了存储与内核相关的部分代码,对于其他暂时用不到的一些文档目录,这里为了减少工作量,就不做其他非核心内容的移植了,对于完全移植之后的工程目录如图4-2-2完全移植所示。

4-2-2完全移植

18

第四步:对已建立的工程的设置,点击Contiki-msp430 右键—>options打开对话框进行设置,选择处理器及处理器模式,如图4-2-3工程处理器设置所示:

图4-2-3工程处理器模式

第五步:2.0输出文件设置--输出用于BSL下载文件,点击Linker的Output选项,选择两个选项,点击OK则用于BSL下载的文件设置完成。如图4-2-4所示

19

图4-2-4用于BSL下载的文件设置完成

第六步:点击Contiki-msp430 右键—>Rebuid All。如图4-2-5编译结果所示。

图4-2-5编译结果

20

4.3 将Contiki内核文件导入工程中

移植的指导思想是先把内核跑起来,而后根据需求再把文件系统、动态加载、网络模块加上去。所以这里只需把Contiki内核相关的源文件加到工程目录,不过加多了也没关系,还有后续的调试。

4.3.1 platform目录的操作

登陆无线传感器网络操作系统Contiki官网下载最新版的内核源代码,然后解压文件,接着针对本节点设计对解压后的内核主要进行以下修改:

(1)首先进入/platform目录针对本文设计的节点新建一个文件夹,命名为wsn430,接着将/platform/sky目录里的文件全部复制到wsn430目录里,然后打开/platform/wsn430目录下的contiki-conf.h文件,此头文件包含了编译配置,管脚定义,时钟配置等选项;

(2)修改Contiki源代码总目录下的Makefile中的TARGET目标平台由native更改为wsn430;

(3)进入/platform目录新建一个文件夹,命名为driver,接下来是相关 设备驱动程序的设计和移植,其中设计部分是MSP430F1611片外外设的相关硬件驱动程序,移植部分是MSP430F1611的片内外设模块驱动程序 和依赖程序。相关设备驱动模块的设计及移植,可以分为两个层次[11-15]。

(4)在platform目录下建立文件 Contiki-conf.h、Main.h、Main.c和includes.h。下面逐一介绍这几个文件。

Contiki-conf.h:Contiki 操作系统中的配置文件,在这个文件中进行对Contiki操作系统的所有配置。

Main.h:在应用程序中对头文件的声明,这个文件是所有应用程序的入口。 Main.c:应用程序的入口文件,用户编写的应用程序都是从这里开始的。 Includes.h:这个文件时对所有头文件的总体声明,也就是说应用程序中会用到的文件都会在这里进行声明,这样,在其他程序代码中要用到某个文件时只要包含这个文件就可以了。

21

4.3.2 cpu目录的操作

对移植代码的添加首先是 cpu_init.c、cpu_init.h这两个文件的添加内容。系统内对各时钟的初始化主要是在 cpu_init.c文件中完成。

在cpu\\msp430\\clock.c文件中添加能够实现系统时钟初始化、系统tick处理等功能的处理代码,实现Contiki操作系统的移植。clock.c的头文件声明在core\\sys\\clock.h下。

CPU依赖程序和片内外设模块驱动程序的移植。CPU依赖程序主要提供不同体系结构CPU相关的数据结构和数据类型的定义,存储在MSPGCC的signal.h和msp430x16x.h中。CPU片内外设驱动主要包括内部的时钟驱动,SPI驱动,ADC驱动,UART驱动,WATCHDOG驱动。内部时钟驱动主要向外界提供一个时间参考对象,使一些需要控制的时间或进程等得到可靠地控制,诸如进程控制的实时的精度、看门狗等都需要相应的定时器模块的支持。UART驱动实现了无线传感器网络与计算机网络和GPRS模块EM310之间的数据传输,主要用在网关节点上。SPI驱动主要用于控制与之相连的射频芯片CC2420和存储芯片M25P80,ADC驱动是实现将传感器数据的模拟量转换为数字量,WATCHDOG驱动主要用于防止系统跑飞的情况。CPU依赖程序和片内外设模块驱动程序的移植的具体实现,在本文中可以参考/cpu/msp430目录下的msp430.c、spi.c、clock.c、uart.c、watchdog.c等文件,因为本节点硬件设计时,使用的是串行端口0配置为串口,串行端口1配置为SPI,故具体注意修改和添加的地方主要有以下2个部分:

(1) 将spi.c更改为spi1.c实现对spi1的驱动,将其中的寄存器配置全部更改为对串行端口1的配置;

(2) 将uart.c更改为uart0.c实现对uart0的驱动,将其中的寄存器配置全部更改为对串行端口0的配置。

22

5 实验结果

通过上网搜索和阅读书籍,我使用了以下任务来测试。任务非常的简单,打开LED,通过串口发送提示信息,然后关闭LED,通过串口发送提示信息。

1. PROCESS(blink_process,\); 2. AUTOSTART_PROCESSES(&blink_process); 3. PROCESS_THREAD(blink_process,ev,data) 4. {

5. PROCESS_BEGIN(); 6. while(1) 7. {

8. Static structetimer et; 9. etimer_set(&et,CLOCK_SECOND);

10. PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); 11. //打开LED

12. GPIO_ResetBits(GPIOC,GPIO_Pin_6); 13. printf(\);

14. etimer_set(&et,CLOCK_SECOND);

15. PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et)); 16. //关闭LED

17. GPIO_SetBits(GPIOC,GPIO_Pin_6); 18. printf(\); 19. }

20. PROCESS_END(); 21. }

结果如图5所示。

图5实验结果

23

6 结论与展望

Contiki操作系统能够移植到MSP430硬件平台上,说明Contiki具有良好的移植性,这充分体现了Contiki操作系统的特点。通过与另外几款无线传感器操作系统的对比,Contiki拥有更大的使用和发展空间,特别是随着物联网的快速发展,无线传感网络的使用领域更广。

总的来说,本文的研究结果达到了预期的目的,基于 Contiki 的无线传感网数据采集系统实现Contiki操作系统的移植,但是由于涉及到的知识面较广,以及时间和个人水平限制还有开发经验的不足,论文中还存在很多值得进一步研究的地方:

1. 硬件平台多样化,不同的硬件平台移植是不同的。要多了解其他平台的操作。 2. 在 Contiki 操作系统中,本论文只是简单的移植内核模块,对于Contiki操作系统的其他性能还没有涉及。

24

参考文献

[1] 杨震.物联网发展研究[J].南京邮电大学学报:社会科学版,2010-6,2(12):1-10 [2] 赵建华. 无线传感器网络节点嵌入式操作系统的研究与应用[D]. 电子科技大学, 2007.

[3]李晶,王福豹,段渭军,等. 无线传感器网络操作系统研究[J].计算机应用研究,2006, 14(6) :838-848.

[4]李凤国,基于6LoWPAN的无线传感器网络研究与实现:[硕士学位论文],南京;邮电大学,2013

[5] Farooq M O,Kunz T. Operating Systems for Wireless Sensor Networks:A Survey[ J]. Sensors,2011,11(6) :5900-5930.

[6]庹宁,杨春秀,进程管理在计算机病毒诊断与防治中的应用[J].《华南金融电 脑》,2010(7):64—67

[7]百度百科进程 http://baike.http://www.wodefanwen.com//view/19746.htm?fr=aladdin

[8]张岩,基于Contiki系统的物联网应用平台设计与实现:[硕士学位论文],哈尔滨;工程大学,2013

[9] 沈建华、杨艳琴《MSP430系列16位超低功率单片机原理与实践》 北京航空航天大学出版社 2008

[10]豆丁网基于IAR的Contiki系统在CC2530的移植 http://www.docin.com/p-447794328.html [11] Chipion.CC2420 Date Sheet

[12] 孙延明、 刘志远、蔡春丽等. 低功耗无线传感器网络节点的设计[J]. 微计算机应用, 2009, 30(2): 22-26.

[13] 张转成. 基于CC2431的无线传感器网络节点的研究[D]. 合肥:中国科学技术大学. 2009.

[14] 黄永军. ZigBee 远程数据采集系统的设计与实现[D]. 武汉: 武汉理工大学,2009. [15] 李晶. 无线传感器网络微型嵌入式操作系统的研究与应用[D]. 西安: 西北工业大学, 2007

[16]王姝、胡富平. 无线传感器网络的理论及应用(第一版). 北京: 北京航空航天出版社, 2007. 1~17.

25

[18]石峰. 无线传感器网络应用平台的研究与设计[D]. 西安科技大学,2010. 2-3. [19]房晶,吴吴等. 嵌入式无线传感器网络节点与通信平台的构建[J]. 中国科技论文在线, 2010, 5(1): 25-29

[20]任丰原, 黄海宁, 林闯.无线传感器网络[J]. 软件学报, 2003, 14(7): 1282-1291.

[21]王漫.何宁.裴俊等 面向无线传感器网络应用的嵌入式操作系统综述[J]. 计算机应用与软件. 2007

[22]潘浩 . 董齐芬 . 张贵军.俞立 无线传感器网络操作系统tinyos 清华大学出版社 .2011

[23] K. Senthil Babu;Darshan Virupaksha;Shachi P. Mudgal;C. Nagaraja Energy Model for the Configured MSP430F1612 on a TELOSB Mote with the Help of Contiki December, 2012, Mandya

[24]Richard Beckwith, Dan Teibet, Pat Bowen. Unwired Wine: Sensor Networks in Vineyard[C], Sensors Proceeding of IEEE, 2004, 561-564.

[25]Wen Hu, Nirupama Bulusu, et al. A hybird sensors network for can-toad monitoring[C], In: Proceeding of the 3rd international conference on Embedded networked sensor systems, San Diego, California, USA, 2005, 305-305. .

26

致谢

在本次设计中,我们首先要对我们的指导老师致谢!在提出系统构思后,老师给了我很多建议与帮助,指出一些存在的问题,在老师细心帮助下进行论文的改进,最终完成了此论文。

感谢论文中所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,将很难完成本篇论文的写作。

感谢我的同学和朋友,在我写论文的过程中提出一些提议,让方案考虑的更加全面。

27

本文来源:https://www.bwwdw.com/article/y7hw.html

Top