福音开发者复用智慧产品(模块开发者协议芯片接口)

原创: 睿赛德 智慧产品圈因为要连接网络以及应用的多样化,物联网设备的复杂度和开发难度都大幅增加,开发方式也与之前嵌入式设备大不一样
以一个典型的MCU+WiFi/NB-IoT SoC架构的IoT设备开发为例,如下图所示,开发人员需要针对特定的无线模块,开发MCU TCP/IP协议层以上的应用,包括MQTT、HTTP、Web Socket、业务类应用等等
一旦用户更换了无线芯片或模块,因为网络协议、编程接口等不统一,上层应用都需要做大幅改动甚至需要重新开发
图:当前物联网设备的开发模式 为了解决由于无线模块不兼容导致的重复开发问题,RT-Thread最近发布了一个称为SAL的中间件产品
SAL,即Socket abstraction layer,意为套接字抽象层,处于网络硬件层与应用层之间,其前身是 RT-Thread 的 DFS_NET 组件
但DFS_NET 组件对 lwIP 有一定依赖,存在局限性,RT-Thread对其进行了近乎重构的再造
图:SAL在RT-Thread系统开发中的逻辑层级 其主要特性如下: 将多种网络协议栈接口抽象并统一 提供标准 BSD Socket API 统一fd(file descriptor)管理方式 “重造”后的SAL屏蔽了应用层,实现了系统级别的跨平台应用
开发者只需调用上层的API接口,即可实现一次开发、跨平台使用,极大的简化了系统开发复杂度
具体表现在: 应用层:应用层在做网络开发时,可以直接使用 SAL 提供的 BSD Socket API 接口
接口层的统一抽象,使得开发者可以快速应用 RT-Thread 提供的众多支持 BSD Socket接口的软件包,极大提升了软件的可重用性
SAL实现层:该层位于SAL底部,将不同的无线模块、芯片或协议栈与SAL框架对接
接入完成后,应用层几乎不需关心实际的网络接入方式,降低了应用层与底层之间的耦合
DFS文件系统层:SAL与 DFS 紧密结合, Socket 描述符与fd文件描述符完全对应,实现了fd的统一管理
应用层可以通过read/write、poll/select接口操作Socket套接字,兼容 POSIX 标准
图:带有SAL的OS系统框架 SAL使得RT-Thread可以无缝接入各种网络芯片或模块,如W5500/CH395 这类自带协议栈的以太网芯片、带 AT(Attention)指令的 WiFi 模块、GPRS 模块、NB-IoT 模块等,极大地提升了RT-Thread 在 IoT 领域对于不同网络硬件的兼容性
换句话说,即使开发者更换无线芯片或模块,SAL不需要做出任何改变,开发者也不需要再做二次开发
不仅如此,RT-Thread支持的各种软件包(包括内核层、组件和服务层、IoT框架层等),可以很方便的“即装即用”
对于开发人员的价值: 1、对接 AT 指令的网络模块 当使用这些 AT模块做网络开发时,不可避免地会在代码中耦合很多与模块相关的 AT通信代码
这也导致以前用标准BSD Socket开发过的组件没法被迁移过来
有了SAL,只需要针对AT 模块的指令方式,实现 SAL的对接接口(RT-Thread已经提供了常用模块,如乐鑫ESP8266、移远M26),上层应用即可方便地进行Socket编程了
RT-Thread 很快将会发布具有上述功能的AT 组件
2、对接内置协议栈的网络芯片 随着像 W5500/CH395 这类内置协议栈的芯片越来越普及,MCU就不需要跑网络协议栈,极大地降低了MCU的资源占用
可是跟AT模块一样,如何保证应用层依然能很方便的地使用标准Socket编程?这个问题SAL已经解决
SAL已经适配了适配这些芯片,方便所有使用 RT-Thread + W5500/CH395 的开发者
3、非lwIP的 TCP/IP 协议栈 在一些特殊领域,lwIP可能并不能满足用户的开发要求,更换TCP/IP协议栈就不可避免
有了SAL框架,新的协议栈只需与其对接完毕,上层应用即可放心使用,以前的代码也可以拿来重用
4、Socket CAN Socket CAN作为Linux上CAN编程的一种方式,编程顺手,简单易用
很多用户也想在RT-Thread上实现Socket CAN编程
有了SAL,只需在底层使用 RT-Thread CAN的设备上实现SAL框架对应的接口即可
RT-Thread此次发布的SAL对IoT产业具有巨大价值,真正实现了系统(MCU+无线芯片/模块)层面的跨平台软件开发和兼容,ACS(Application Cross System)后期的应用扩展也会变得易如反掌
-----------------------------------
福音开发者复用智慧产品(模块开发者协议芯片接口)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息