实验4:基于IAR的Contiki系统在CC2530下的移植

核能气质少年 分享 2020-04-15 下载文档

www.iotdev.net -专业的物联网|Contiki 6Lowpan|Zigbee|RFID|M2M|无线传感器网络开发论坛

基于 IAR 的 Contiki 系统在 CC2530 下的移植

摘要

本文简要介绍了 Contiki 系统和 6Lowpan IPv6 协议标准以及相对于 zigbee 的 技术优势,并介绍了 Contiki 系统的源代码目录结构以及各个目录代码的功能。

之后逐步讲述了在 IAR EW8051 v7.51 开发工具下移植 Contiki 到 CC2530 芯片的

准备工作、详细步骤、IAR 工程建立和设置工程选项等,并编写一个应用程序进

行测试,实现两个 LED 灯的交替闪烁。

前言

作系统的线程管理、线程同步语等,而且具有电源管理、文件系统、动态加载、

基于 uIPv6 的网络协议栈等更为全面的功能,是非常适用于物联网应用的操作系

统。本文介绍将该系统移植到 TI 的 CC2530 芯片上,为了便于调试,开发环境

选用 IAR for 8051 V7.51A 版本。本文将详细介绍从移植内核到移植网络协议栈,

最终完成一整套应用的过程。

目前,大多数的无线自组织网络以 Zigbee 的应用为主,但是 Zigbee 协议栈

基本都是由半导体企业垄断,不开放源代码,并且协议复杂,应用程序开发难。

此外,zigbee 标准已经在新版本的 SEP2.0 智能电网标准中采纳 6Lowpan,这正

式标志着 zigbee 开始走下坡路,zigbee 已成为昨日黄花。庆幸的是,Contiki 出

现了,Contiki 是由瑞典计算机科学学院(Swedish Institute of Computer Science)

的 Adam Dunkels 和他的团队开发的。它开源、免费,易于移植,并且已经在许

多商业产品中获得了成功的应用。

IOTDev.net 物联网开发论坛编制

操作系统 Contiki 是比较适合于无线传感网络的操作系统。它不但有基本操

1

www.iotdev.net -专业的物联网|Contiki 6Lowpan|Zigbee|RFID|M2M|无线传感器网络开发论坛

本文将宣告 Zigbee 及 Zigbee Pro 的终结,操作系统 Contiki 的 uIPv6 网络协

议基于 IEEE 802.15.4,实现了 6Lowpan、RPL、Coap 协议。由于采用了 IPv6 作

为组网协议,具有海量的地址空间,易于与互联网相连接,实现端到端的物物互

联网络,具有无法比拟的优越性,这将是物联网未来的发展方向和必然趋势。

1 Contiki 基本认识

1.1 下载源代码

操作系统 Contiki 完全开源、免费,目前,最新版本是 2.5,可以从网上下载

到源代码,下载地址:

http://sourceforge.net/projects/contiki/files/Contiki/Contiki 2.5/ 1.2 认识代码结构

?

整体源代码目录结构

?

下载到源代码后,解压缩,可以看到代码架构如图 1.1 所示。

图 1.1 contiki 代码架构图

下面详细介绍下代码结构:

apps:测试应用程序,这是与硬件无关的部分,不需要移植,主要例程是基于

uIPv6 的网络测试,如 email、ftp、dhcp、ping6 等。

IOTDev.net 物联网开发论坛编制

2

www.iotdev.net -专业的物联网|Contiki 6Lowpan|Zigbee|RFID|M2M|无线传感器网络开发论坛

core: 内核代码,这其中有与内核相关的部分,也有与内核无关的部分,后面

再做详细介绍。

cpu: 处理器代码,这是与处理器相关的部分。将 Contiki 移植到某一特定的处

理器,仅仅需要修改该文件夹的内容即可,这部分与具体的硬件评估板无关。该

文件夹内,每一个文件夹对应了一个处理器。

examples:测试例程,有一部分是与上位机相关的,这部分代码有是的基于

contiki 的,有的是基于 java 的。

platform:平台相关代码,针对不同的评估板。同样的处理器可能有不同的硬

件评估板,这部分是针对特定评估板的应用程序入口。

doc:文档目录,该目录下存放了 Contiki 的介绍,以及帮助文档,读者在遇到

困难的时候,可以来这里寻找解决方案。

tool:工具,包含了一些测试工具。大部分测试工具是基于 java 开发的,因此,

与操作系统无关,在 windows、linux 或者是 mac os 上只要装上了 java 虚拟机,

都可以运行。如测试基于 IPv6 的传感器测试工具 cooja 就在目录下,该工具可以

在 java 环境下,模拟仿真出传感器网络的环境,对于开发调试有重要意义。具

体,读者可以参考原厂的相关技术手册。

其它文件:是关于 Contiki 介绍以及相关说明的文档,读者可以根据需要阅读。

?

内核源代码目录结构

?

本节主要介绍下内核结构。contiki 内核代码在 core 目录下,具体代码结构

体如图 1.2 所示。下面详细介绍下每一个目录的功能结构:

IOTDev.net 物联网开发论坛编制

3

www.iotdev.net -专业的物联网|Contiki 6Lowpan|Zigbee|RFID|M2M|无线传感器网络开发论坛

图 1.2 Contiki 内核代码结构图

cfs:coffee 文件系统相关代码,这部分是与硬件无关的。需要移植的部分在 cpu

或者 platform 目录下。

ctk:GUI 以及 VNC 功能实现。Contiki 可以运行在 x86 平台下,可以当做一个

桌面的操作系统使用。因此,GUI 是必不可少的部分,该目录实现的就是这部分

功能。这部分也是与硬件无关的,具体移植的部分不再这里。

dev:该目录是一些外部设备驱动,是与硬件相关的部分,但是通常仅仅需要配

置,但不需要做过多的源代码修改。如 DM9000A、CC2520 的驱动就这这部分。

这些外设可以挂接在不同的处理器上,仅仅配置下地址,驱动实现的源代码都是

相同的。

lib:一些基本操作的函数库实现,这也是与硬件无关的,不需要移植。如 CRC

校验、ringbuf 管理、内存分配管理等都是在这里实现的。

loader: 动态加载相关文件,相当于 windows 操作系统对动态连接口 dll 的处

理。个人认为,这部分代码比较混乱。里面有与处理器相关的部分,也有与处理

器无关的部分。由于不同处理器堆栈管理不同,以至于对动态加载有所不同,于

是就需要针对不同处理器做一些接口移植工作。很遗憾的是这部分代码比较混乱。

net:网络相关代码,这部分也是与硬件无关的。具体的驱动是在 dev 或者 cpu

目录下实现的。这部分由为 mac 层、rime 层、rpl 层以及 uIPv6 组成,每一部分

都是无线传感网络的有机组成部分,不可缺少。

sys:系统内核相关目录,这部分是与操作系统内核相关的部分,与具体的硬件

IOTDev.net 物联网开发论坛编制

4

www.iotdev.net -专业的物联网|Contiki 6Lowpan|Zigbee|RFID|M2M|无线传感器网络开发论坛

平台无关。

1.3 其它部分源代码

Contiki 是免费开源的操作系统,但是学习资料短缺,对于初学者是一个极

大的挑战。庆幸的是,Internet 时代网络发达,很多的热心人在学习的过程中将 他们的心得写成文档发表,对于后学者可以说是一大帮助。目前,关于系统更详

细的介绍,应用程序设计更深一步的了解,读者可以到网站:

www.iotdev.net 以及

http://blog.chinaunix.net/uid/9112803/frmd/24079.html 学习了解。在此,非常

感谢各位 Contiki 爱好者,你们提供的学习教程,对 Contiki 6Lowpan 的初学者提

供了极大的帮助。

2 系统内核移植

本章通过将 Contiki 移植到 CC2530 的过程,逐步介绍 Contiki 操作系统内核

的移植过程。Contiki 是一个非可剥夺性内核,移植非常简单。本章仅仅实现的

是一个能够调度的内核,关于动态加载、文件系统、网络协议栈的移植都不在讨

论范围内。

2.1 移植准备

官方的 Contiki 源码是在 Linux 开发环境进行的,移植到 IAR,首要解决的

就是 GCC 与 IAR 之间的差异,这主要包括:

?

??

GCC 是用 makefile 来管理工程编译,而 IAR 是 IDE,在 IAR 的 IDE 中需要

?

添加那些文件,不需要添加那些文件,也是需要考虑的重点;

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

IOTDev.net 物联网开发论坛编制

?

5


实验4:基于IAR的Contiki系统在CC2530下的移植 .doc 将本文的Word文档下载到电脑

下一篇:土木工程概论复习题及参考答案

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7 元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx