LiteOS组件尝鲜-玩转Upnp
LiteOS组件尝鲜系列话题又更新啦!本期小编带大家认识Upnp的协议特点及工作流程,以供大家参考及学习交流。
UPnP介绍
UPnP(Universal Plug and Play)是通用即插即用的缩写,是用于设备之间智能互联互通的通讯协议。UPnP技术是一种架构在TCP/IP和HTTP之上的分布式、开放的网络结构,可以实现已联网设备之间命令及数据的传递。UPnP协议可以在大部分操作系统平台上运行,使用UPnP协议时不需要添加设备驱动程序,可以方便地在办公室、家庭或其他公共场所实现设备之间的互联互通。
UPnP协议栈
UPnP协议定义了设备之间、设备和控制点之间以及控制点之间的通讯协议。UPnP协议栈如下图所示:
( Protocol stack )
工作流程
寻址(Addressing) |
设备和控制点获取一个网络地址 |
发现(Discovery) |
控制点发现网络中感兴趣的设备 |
描述(Description) |
控制点获取网络中设备的功能描述 |
控制(Control) |
控制点发送设备操控命令,控制设备 |
事件(Eventing) |
控制点监听设备状态的改变 |
展示(Presentation) |
控制点展示设备用户界面 |
示例介绍
此案例完成了UPnP SDK初始化、注册一个client设备并完成一次搜索。该Demo在STM32F769IDISCOVERY开发板上编译运行的流程如下:
编译
-
在LiteOS源码根目录下拷贝开发板的默认配置文件tools/build/config/STM32F769IDISCOVERY.config到根目录,并重命名为.config,命令如下:
~/Huawei_LiteOS$ cp tools/build/config/STM32F769IDISCOVERY.config .config
-
继续在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能UPnP Demo。因为UPnP依赖lwIP,而且LiteOS目前只支持UPnP使用Ipv4,不支持Ipv6,所以还需要同时使能lwIP并设置为Ipv4模式。
Components --->
Network --->
[*] Enable DHCP
[*] Enable Lwip --->
Enable Ipv4 Or Ipv6 (Enable Ipv4) --->
[*] Enable Ipv4
Demos --->
Media Demo --->
[*] Enable UPnP Demo
使能UPnP Demo后,LiteOS会自动使能UPnP组件。保存退出menuconfig后,LiteOS会从github上自动下载UPnP的源代码,并从gitee的LiteOS组件仓库LiteOS_Components下载对应的patch包,并打入patch。关于自动下载的详细流程,请查阅components/download.sh脚本。
运行
-
准备一台PC, Linux或Windows,确保已安装并打开wireshark抓包工具。
-
将PC与开发板通过以太网连接。
-
将开发版串口和PC连接并打开串口监视软件。
-
使能UPnP Demo后,在LiteOS源码根目录下执行make clean ; make -j命令编译LiteOS工程,编译成功后将在out/STM32F769IDISCOVERY/lib目录下生成组件静态库文件libupnp.a及Demo静态库文件libupnp_demo.a,系统镜像文件为Huawei_LiteOS.bin。
-
烧录系统镜像文件,复位开发板。
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.1.0
build data : Jul 28 2021 16:24:26
**********************************
osAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
lwip_init OK!!
dhcp start...
Huawei LiteOS #
Upnp demo task start to run.
Upnp demo task finished.
显示Upnp demo task finished.表示UPnP控制点已经注册成功并完成了一次搜索请求,通过wireshark抓包工具可监测到多播M-SEARCH SSDP(Simple Service Discovery Protocol)消息,广播地址为239.255.255.250,如下图:
结语
感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步: https://gitee.com/LiteOS/LiteOS/issues
为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。
-end-
- 点赞
- 收藏
- 关注作者
评论(0)