项目简介
本项目是基于Contiki操作系统开发的LWM2M(轻量级M2M)客户端应用程序。它借助CoAP协议与LWM2M服务器进行通信,能够实现数据的发送与接收。项目包含LWM2M客户端的源代码以及用于测试其功能的测试程序。
项目的主要特性和功能
- LWM2M客户端功能:依据LWM2M协议与服务器通信,支持创建、定义和删除LWM2M对象、实例及资源。
- CoAP通信机制:利用CoAP协议与LWM2M服务器交互,实现数据的收发。
- Contiki系统集成:基于Contiki操作系统,借助其网络功能完成网络通信。
- 测试程序支持:配备测试程序,可通过命令行与客户端交互,便于测试LWM2M客户端功能。
安装使用步骤
1. 初始化子模块
确保所有git子模块都已检出:
bash
$ git submodule init
$ git submodule update
2. 构建LWM2M客户端
Contiki模拟设备(x86)
若硬件不可用,可在Linux下以模拟环境运行Contiki,用于测试和开发:
bash
$ cd lwm2m-client-contiki
$ make TARGET=minimal-net
此操作将构建可执行文件 lwm2m-client-contiki/lwm2m-client-contiki.minimal-net
。
交叉编译Contiki
为Seedeye或MikroE Clicker板构建Contiki镜像目前需要Linux环境。
安装Microchip工具链
在编译目标之前,需安装交叉编译器工具链。对于64位Ubuntu,需先安装32位运行时库:
bash
$ sudo apt-get install libc6:i386
64位Ubuntu可能还需要安装 lib32ncurses5
包。安装Microchip XC32编译器(约100 MB):
bash
$ wget http://ww1.microchip.com/downloads/en/DeviceDoc/xc32-v1.34-full-install-linux-installer.run
$ chmod a+x xc32-v1.34-full-install-linux-installer.run
$ sudo ./xc32-v1.34-full-install-linux-installer.run --mode unattended --Add\ to\ PATH 1 --debuglevel 4 --installerfunction installcompiler --netservername localhost
$ . ~/.bashrc
$ xc32-gcc --version
若 xc32-gcc
命令找不到,可修改 .bashrc
文件:
bash
$ echo "export PATH=\$PATH:/opt/microchip/xc32/v1.34/bin" >> ~/.bashrc
$ . ~/.bashrc
编译Contiki LWM2M客户端
为MikroE Clicker和Seedeye进行交叉编译:
bash
$ cd lwm2m-client-contiki
$ make TARGET=[target]
其中 [target]
为 mikro-e
(MikroE Clicker)或 seedeye
(Seedeye)。此操作将生成用于使用 avrdude
编程到板上的HEX文件 lwm2m-client-contiki.hex
:
bash
$ make TARGET=[target] lwm2m-client-contiki.u
若要生成可用于MPLAB IPE编程的HEX文件:
bash
$ cd lwm2m-cleint-contiki
$ make TARGET=[target] BOOT=0
3. 编程Contiki HEX文件到MikroE Clicker板
使用ICD3编程
编程MikroE Clicker板目前需要MPLABX、ICD3编程器和Windows主机: 1. 从 Microchip官网 安装Windows版Microchip MPLABX IDE 3.05,确保安装MPLAB IPE(集成编程环境)。 2. 确保0欧姆电阻J3、J4和J5安装在PICkit侧。 3. 连接USB转串口适配器到Click接口右侧。 4. 连接USB转串口适配器后,Windows将创建一个COM端口,使用PuTTY创建新连接,波特率115200,无流控制。 5. 连接ICD3并确保驱动正确安装。 6. 启动MPLAB IPE应用程序,选择相应的Family和Device并点击Apply。 7. 点击Settings,进入Advanced Mode,使用默认密码 "microchip"。 8. 点击Power,勾选ICSP Options > Power Target Circuit from Tool,确保VDD设置为3.3伏。 9. 返回Operate面板,点击Connect。 10. 在 "Source:" 行点击Browse,定位之前创建的HEX文件,点击Program。
使用AVRDude编程
前提条件: - Mikro-e PIC32MX clicker板 - 微型USB电缆 - PIC32MX兼容的硬件编程工具 - 安装Git命令行工具的Microsoft Windows工作站
构建和编程引导加载程序
在Windows工作站上,安装Microchip的MPLAB X IDE工具链。将硬件编程工具连接到clicker板的MikroProg(PICkit)头,将clicker板连接到工作站的USB端口并打开电源。在Windows中复制 PIC32-avrdude-bootloader 项目:
bash
启动MPLAB X IDE,打开项目,设置为活动项目,选择 MIKROE_6LOWPAN_CLICKER 构建配置,选择正确的硬件编程工具,点击 "Make and Program Device" 按钮。
使用AVRdude引导加载程序加载固件映像
前提条件: - 预编程PIUCD32-AVRDude引导加载程序的Clicker板 - 微型USB电缆 - Ubuntu(或类似)Linux开发虚拟机
安装Virtual box的USB扩展,重启虚拟机。删除 006-remove-bootloader.patch
文件以启用引导加载程序。安装 avrdude
:
bash
$ sudo apt-get install avrdude
将用户添加到 'dialout' 组:
bash
$ sudo adduser $(whoami) dialout
注销并重新登录。打开clicker板设备,按住按钮T1进入avrdude引导加载程序模式。将USB设备转发到虚拟机。复制 .avrdudrc
文件到主目录:
bash
$ cp contiki/.avrduderc ~/
运行 avrdude
命令加载固件映像:
bash
$ avrdude -p pic32 -c stk500v2 -P /dev/ttyACM0 -U flash:w:lwm2m-client-contiki-button.hex
4. 使用LWM2M Contiki客户端
连接LWM2M Contiki客户端到CI40
此部分正在开发中。
连接“模拟”LWM2M Contiki客户端到网关服务器
假设已按上述步骤构建网关服务器/引导程序和受限设备客户端:
bash
$ cd lwm2m-client-contiki
$ sudo ./lwm2m-client-contiki.minimal-net
在新的终端会话中:
bash
$ sudo ifconfig tap0 add 2001:1418:100::1
启动网关服务器:
bash
$ build/core/src/server/awa_serverd --verbose --interface tap0 --addressFamily 6
在另一个终端会话中,启动引导服务器:
bash
$ build/core/src/bootstrap/awa_bootstrapd --verbose --interface tap0 --addressFamily 6 --config core/bootstrap-contiki.config --port 15683
若成功,客户端将停止打印 "No response to client initiated bootstrap",awa-server-list-clients
工具将显示一个名为 'imagination1' 的连接客户端。
连接“模拟”LWM2M Contiki客户端到网关服务器和FlowCloud
若未安装 tayga
,请安装:
bash
$ sudo apt-get install tayga
启动模拟的受限设备客户端:
bash
$ cd lwm2m-client-contiki-flow
$ sudo ./lwm2m-client-contiki-flow.minimal-net
在新的终端会话中运行 tayga
设置脚本:
bash
$ cd scripts
$ sudo ./tayga.sh -a 2001:1418:100::1 -a aaaa::1 -e enp0s9
在另一个终端会话中启动服务器:
bash
$ build/core/src/server/awa_serverd --verbose --interface tap0 --addressFamily 6
在另一个终端中启动引导服务器:
bash
$ build/core/src/bootstrap/awa_bootstrapd --verbose --interface tap0 --addressFamily 6 --config core/bootstrap-contiki.config --config core/bootstrap-contiki-flow-NAT64.config --port 15683
手动配置:
bash
$ ./build/tools/awa-server-define -o 20000 -j FlowObject -y single \
-r 0 -n DeviceID -t opaque -u single -q mandatory -k rw \
-r 1 -n ParentID -t opaque -u single -q optional -k rw \
-r 2 -n DeviceType -t string -u single -q mandatory -k rw \
-r 3 -n Name -t string -u single -q optional -k rw \
-r 4 -n Description -t string -u single -q optional -k rw \
-r 5 -n FCAP -t string -u single -q mandatory -k rw \
-r 6 -n LicenseeID -t integer -u single -q mandatory -k rw \
-r 7 -n LicenseeChallenge -t opaque -u single -q optional -k rw \
-r 8 -n HashIterations -t integer -u single -q optional -k rw \
-r 9 -n LicenseeHash -t opaque -u single -q optional -k rw \
-r 10 -n Status -t integer -u single -q optional -k rw
$ ./build/tools/awa-server-write -c imagination1 -o /20000/0 /20000/0/2=FlowConstrainedDevice /20000/0/6=17 /20000/0/5=<FCAP>
使用配置工具配置模拟的Contiki客户端:
bash
$ awa-server-provision --fcap <FCAP> --clientID imagination1
注意:在使用前,请确保已经安装了Contiki操作系统和相关的开发工具链,且具备C语言的编程环境。由于此项目是开源项目,更多详细信息和文档可在项目的官方仓库中查找。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】