littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于C语言的LWM2M Contiki客户端应用程序

项目简介

本项目是基于Contiki操作系统开发的LWM2M(轻量级M2M)客户端应用程序。它借助CoAP协议与LWM2M服务器进行通信,能够实现数据的发送与接收。项目包含LWM2M客户端的源代码以及用于测试其功能的测试程序。

项目的主要特性和功能

  1. LWM2M客户端功能:依据LWM2M协议与服务器通信,支持创建、定义和删除LWM2M对象、实例及资源。
  2. CoAP通信机制:利用CoAP协议与LWM2M服务器交互,实现数据的收发。
  3. Contiki系统集成:基于Contiki操作系统,借助其网络功能完成网络通信。
  4. 测试程序支持:配备测试程序,可通过命令行与客户端交互,便于测试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 --versionxc32-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.hexbash $ 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 文件以启用引导加载程序。安装 avrdudebash $ 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】