CC2538开发板ipv6准备工作,编译lib6lowpan,libcoap

原创 2015年11月17日 16:51:00

前面已经介绍过,笔者比较熟悉TinyOS,再此主要讨论的是TinyOS的准备部分,Contiki和RIOT以后有时间会补充;

首先看看LocalIeeeEui64C.nc文件

module LocalIeeeEui64C {
  provides interface LocalIeeeEui64;
} implementation {
  command ieee_eui64_t LocalIeeeEui64.getId() {
   ieee_eui64_t id;
    /* this is UCB's OUI */
    id.data[0] = 0x00;
    id.data[1] = 0x12;
    id.data[2] = 0x6d;
    /* UCB will let anyone use this OUI so long as these two octets
       are 'LO' -- "local".  All other octets are reserved.  */
    /* SDH -- 9/10/2010 */
    id.data[3] = 'L';
    id.data[4] = 'O';
    id.data[5] = 0;
    id.data[6] = TOS_NODE_ID >> 8;
    id.data[7] = TOS_NODE_ID & 0xff;
    return id;
  
    /****
    ieee_eui64_t id;
    id.data[0] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[3]; //F_EXADDR7
    id.data[1] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[2]; //F_EXADDR6
    id.data[2] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[1]; //F_EXADDR5
    id.data[3] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[0]; //F_EXADDR4
    id.data[4] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[7]; //F_EXADDR3
    id.data[5] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[6]; //F_EXADDR2
    id.data[6] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[5]; //F_EXADDR1
    id.data[7] = ((uint8_t *)IEEE_ADDR_LOCATION_PRIMARY)[4]; //F_EXADDR0
    return id;
    */
  }
}

id.data[0]~id.data[7]对应就是2538的IEEE地址,不过上面未注释部分是TinyOS默认的自定义的IEEE地址,TOS_NODE_ID 为短地址,也就是make cc2538cb id.xx中的xx

下面注释掉的部分是物理IEEE地址。

按照IETF的文档,应该对IEEE地址进行U/L bits操作,也就是 id.data[0] (byte)从右到左第7bit取反(也就是编程咱们常常默认的bit1)

知道了这个你反过去阅读PPprouter中德文章,就知道UDPECHO 中德id.2的route命令的地址为什么是那个值了。


1,编译lib6lowpan

言归正传:用到6llowpan,那么你肯定需要遵从他的规范,也就是使用Lib6lowpan

进入support/sdk/c/blip下

./bootstrap

./configure

make

当然这个目录是tinyos2.2.12release默认的路径,如果是github最新的做法是在tools/tinyos/c/blip中

2,编译libcoap

添加Coap的库,也就是编译libcoap,可能coap的版本会有区别,注意看文档是否对coap的版本有限制;

进入目录support/sdk/c/coap

autoconf

./configure --with-tinyos


即可;

版权声明:本文为博主原创文章,未经博主允许不得转载。

CoAP学习笔记——Libcoap安装和使用

libcoap是CoAP协议的C语言实现,libcoap提供server和client功能,它是调试CoAP的有力工具,本文将说明如何在Linux平台上安装libcoap,并通过几个简单的例子说明li...
  • xukai871105
  • xukai871105
  • 2015年04月10日 15:16
  • 18119

CoAP学习笔记——STM32平台上实现CoAP Server

CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,...
  • xukai871105
  • xukai871105
  • 2015年05月12日 15:29
  • 13809

让人崩溃的Californium (Cf) CoAP framework ,总算解决,可以调试

前面的帖子和视频已经讨论过了使用CoAP协议(CC2538/CC2530 6LOWPAN/ZIGBEE)的意义,也确实实际例程测试过了; 但是使用的时libcoap这种shell测试,firefox...
  • mc158185
  • mc158185
  • 2015年12月07日 01:19
  • 1169

LWip以太网调试详细步骤——PS端

  • 2016年07月25日 16:53
  • 3.27MB
  • 下载

libCoAP的源码以及实现

首先在github上下载源码,目前最新的版本是4.1.2 https://github.com/obgm/libcoap,可以直接在linux环境下 git clone https://githu...
  • xaunqingyi
  • xaunqingyi
  • 2017年08月23日 20:24
  • 243

libcoap问题

1. unknown type name 'in_port_t' fix:typedef uint16_t in_port_t; 2.error: undefined reference to '...
  • hhbgk
  • hhbgk
  • 2016年08月05日 09:42
  • 609

NB-IoT移远BC95调试笔记 02 CoAP协议

用华为方案的NB-IoT难免要进行数据通信,经常会看到各类AT文档中首推的CoAP协议方式。CoAP这几年随着物联网的浪潮也火了起来,和MQTT有并驾齐驱的势头,在一些物联网云平台中都有运用。这篇笔记...
  • iotisan
  • iotisan
  • 2017年10月18日 20:09
  • 3509

使用Coap实现android 局域网通信

Coap 简介Coap是一种基于UDP的应用层协议。Coap支持RESTful规范,也就是支持URL方式访问,就像HTTP请求一样,支持GET,POST,PUT,DELETE,还支持订阅。详细可以看这...
  • qq_25734750662
  • qq_25734750662
  • 2017年02月17日 15:36
  • 569

CoAP协议及开源实现

1. CoAP协议的简单介绍 CoAP是一种面向网络的协议,采用了与HTTP类似的特征,核心内容为资源抽象、REST式交互以及可扩展的头选项等。这些关键特征使得因特网由简单的文档检索机制(World...
  • tulun
  • tulun
  • 2013年04月30日 11:35
  • 39142

CoAP协议的常用开源代码实现

CoAP协议的开源实现
  • Eric_Chen_2013
  • Eric_Chen_2013
  • 2015年07月28日 23:38
  • 3493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CC2538开发板ipv6准备工作,编译lib6lowpan,libcoap
举报原因:
原因补充:

(最多只允许输入30个字)