带你学习有用的知识

注册/登录|最近发布|今日推荐

主页 日常百科校园生活教育科学
当前位置:首页 > 生活

物联网主流的软件开发模式是怎么样的形式_物联网主流的软件开发模式是怎么样的

发布时间:2023-06-17 09:09责任编辑:姜小新关键词:软件,物联网

物联网设备,因为要连接的网络和应用的多样性,大大增加了软件开发的难度和复杂度,开发方式也会和以前的嵌入式设备有很大的不同。目前主流的软件开发模式是什么?我们以一个典型的MCU WiFi/NB-IoT SoC架构的物联网设备的开发为例(图1)。开发者需要为特定的无线SoC/模块开发MCU的TCP/IP协议层之上的应用,包括MQTT、HTTP、Web Socket、业务应用等等。一旦用户更换了无线芯片或模块,由于网络协议和编程接口的不一致,上层应用需要大幅度改动甚至重新启动。

(图1:当前的软件开发模式)

而如果采用RT-Thread操作系统的SAL抽象层(图2),开发人员就不需要考虑系统采用什么样的无线模式、无线芯片,甚至是什么样的模块和接口,只需要调用上层API接口就可以实现一次性开发和跨平台使用。不仅如此,RT-Thread支持的各类物联网软件包都可以轻松“即用”。

(图2:使用SAL的软件开发模式)

从上面可以看出,RT-Thread这次发布的SAL对物联网行业意义重大,真正实现了系统(MCU无线芯片/模块)层面的跨平台软件开发和兼容,也叫ACS(Application Cross System),后期的应用扩展将变得易如反掌。

SAL简介

SAL,Socketabstraction layer的缩写,意思是套接字抽象层,介于网络硬件层和应用层之间。它的前身是RT-Thread的DFS_NET组件。由于对lwIP的依赖和自身的局限性,RT-Thread几乎对其进行了重构。随着SAL的诞生,RT-Thread可以无缝接入各种网络芯片或模块(例如W5500/CH395等自带协议栈的以太网芯片,带AT指令的WiFi模块,GPRS模块,NB-IoT模块等。),大大提高了RT-Thread在物联网领域对不同网络硬件的兼容性。其主要特点如下(图3):

各种网络协议栈的抽象统一接口

提供标准BSDSocket API

统一fd(文件描述符)管理模式

(图3:网络框架图)

下面将从与SAL相关联的模块的角度来解释SAL的功能和实现:

应用层:应用层在做网络开发时可以直接使用SAL提供的BSD Socket API接口。接口层的统一抽象使我们的开发者能够快速应用许多支持RT-Thread提供的BSDSocket接口的物联网软件包。让我们的用户在网络编程中大大提高软件的复用性。

SAL实现层:这一层位于SAL的底层,为不同的模块、芯片或协议栈与SAL框架相连接。接入完成后,应用层几乎不需要关心真实的网络接入方式,减少了应用层和底层的耦合。

DFS文件系统层:SAL和DFS紧密结合,Socket描述符和fd文件描述符可以完全对应,实现了对fd的统一管理。应用层可以通过读/写和轮询/选择接口操作Socket套接字,更兼容POSIX标准。

应用场景:

用于对接AT指令的网络模块

当使用这些at模块进行网络开发时,不可避免地会在我们的应用程序代码中耦合许多与模块相关的AT通信代码。这也将导致不能重用以前使用标准BSD插座开发的组件。

有了SAL,我们只需要按照AT模块的指令方式实现SAL的对接接口(RT-Thread已经提供了常用模块的实现,比如乐心的ESP8266,移动很远的M26),上层应用就可以愉快的进行Socket编程了。

只是提一下,RT-Thread的AT组件具备以上功能,即将发布,敬请期待.

用于对接内置协议栈的网络芯片

随着W5500/CH395等网络芯片的日益普及,我们的MCU不需要运行网络协议栈,大大减少了MCU的资源占用。但是,它有与AT模块相同的问题。如何才能保证应用层仍然使用标准Socket进行简单编程?让萨尔解决这个问题。SAL已经构建了适应这些芯片的轮子,这将方便我们所有使用RT-Thread W5500/CH395的开发者。

非lwIP TCP/IP协议栈

在某些特殊领域,lwIP可能无法满足我们用户的要求。取代TCP/IP协议栈是必然的。正是因为有了SAL帧,新的协议栈只有对接后才能被上层应用安全使用,之前的代码也可以重用。

SocketCAN

Socket CAN作为Linux上CAN编程的一种方式,简单易用,易于编程。很多用户也想在RT-Thread上实现Socket CAN编程,这时候就需要SAL上场了。我们只需要在底层使用RT-Thread CAN设备就可以实现SAL框架对应的接口。

从DFS_NET迁移到SAL的指南

最初的DFS_NET配置位于:RT-Thread ComponentsDevice Virtual File System。

现有的SAL配置位于:rt-thread componentsnetworksocket抽象层。

与迁移相关的步骤如下:

确定在上一个项目中RT_USING_DFS_NET选项是否打开。如果它处于打开状态,则需要进行迁移。

RT_USING_DFS_NET选项在添加SAL组件后被放弃,取而代之的是SAL_USING_POSIX选项。如果需要迁移,请在ENV tool中打开上述SAL配置选项。

保存配置并退出ENV工具,以重新生成项目并完成迁移。

标签:SAL网络模块

知识推荐

高优知识网——分享有用的生活百科,一起学习优秀的知识。 垃圾信息处理邮箱 tousu446@163.com 网站地图
icp备案号 闽ICP备2023005118号-3 互联网安全管理备案 不良信息举报平台 Copyright 2023 www.gaoyou91.com All Rights Reserved