历史上的今天
返回首页

历史上的今天

今天是:2025年07月20日(星期日)

2018年07月20日 | 带你了解什么叫SAL套接字抽象层

2018-07-20

物联网设备,因为要连接网络和应用的多样化,导致软件的开发难度和复杂度大幅地增加,开发方式也会与之前的嵌入式设备大不一样。当前主流的软件开发模式是怎么样的呢?我们以一个典型的MCU+WiFi/NB-IoT SoC架构的IoT设备开发为例(图示一),开发人员需要针对特定的无线SoC/模块,开发MCU TCP/IP协议层以上的应用,包括MQTT、HTTP、Web Socket、业务类应用等等。一旦用户更换了无线芯片或模块,因为网络协议、编程接口等的不统一,上层应用都需要做大幅的改动甚至要重头来过。


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


而如果采用了RT-Thread操作系统的SAL抽象层(图示二),开发者则无须考虑系统采用的是哪种无线方式、哪种无线芯片、甚至哪种模块,哪种接口,只需调用上层的API接口,即可实现一次开发,跨平台使用。不仅如此,RT-Thread支持的各种IoT软件包,都可以很方便的“即装即用”。


              (图示二:具备SAL的软件开发模式)

 

以上可见,RT-Thread此次发布的SAL可谓对IoT产业意义重大,真正实现了系统(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 在 IoT 领域对于不同网络硬件的兼容性。其主要特性如下(图示三):

  • 抽象、统一多种网络协议栈接口

  • 提供标准 BSDSocket API

  • 统一 fd(file descriptor)管理方式


image.png?imageView2/2/w/550


(图示三:网络框架图)

 

下面将站在与 SAL 相关联的模块角度,说明SAL 的功能与实现:

  • 应用层 :应用层在做网络开发时,可以直接使用 SAL 提供的 BSD Socket API 接口。接口层的统一抽象,使得我们的开发者也可以快速应用 RT-Thread 提供的众多支持 BSDSocket 接口的 IoT 软件包。让我们的用户 在网络编程方面极大的提升了软件的可重用性。

  • SAL 实现层:该层位于 SAL 的底部,针对不同的模块、芯片或协议栈,完成与 SAL 框架的对接实现。接入完成后,应用层几乎不需要关心真正的网络接入方式,降低了应用层与底层的耦合。

  • DFS 文件系统层:SAL 与 DFS 紧密结合, Socket 描述符与fd文件描述符可以完全对应起来,实现了fd的统一管理。使得应用层可以通过read/write 、 poll/select 接口操作 Socket 套接字,更加兼容 POSIX 标准。

 

应用场景:

对接 AT 指令的网络模块

在使用这些 AT 模块做网络开发时,不可避免地会在我们的应用代码中耦合很多与模块相关的 AT 通信代码。这样也会导致,以前使用标准的 BSD Socket 开发过的组件没法被重用过来。

有了SAL,只需要我们针对AT 模块的指令方式,实现 SAL的对接接口(RT-Thread已经提供了常用模块的实现,例如,乐鑫的 ESP8266,移远的 M26),上层应用即可愉快地进行Socket编程了。

这里稍微提一下,RT-Thread 的 AT 组件已具有上述功能,很快将会发布,敬请期待……


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


随着像 W5500/CH395 这类网络芯片的越来越普及,我们的 MCU 也就不需要跑网络协议栈了,极大地降低了MCU的资源占用情况。可是跟AT模块也有同样的问题,怎么样才能保证应用层依然很简单地使用标准Socket进行编程?这个问题就交给SAL去解决吧。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 Components → Device virtual file system

现有的 SAL 配置位于: RT-ThreadComponents → Network → Socketabstraction layer

 

迁移相关步骤如下:

  1. 确定之前项目中是否开启 RT_USING_DFS_NET 选项,若开启需要进行迁移。

  2. RT_USING_DFS_NET 选项在SAL 组件添加之后被废弃,由 SAL_USING_POSIX 选项代替,若需要迁移,在 ENV 工具中开启上述 SAL 配置选项。

  3. 保存配置并退出ENV 工具,重新生成工程,完成迁移。 


推荐阅读

史海拾趣

Herth+Buss Fahrzeugteile GmbH & Co KG公司的发展小趣事
定期清洁传感器表面,防止灰尘和污垢影响灵敏度。
Anachip公司的发展小趣事

随着国内市场的饱和,Anachip公司开始将目光投向海外市场。公司通过参加国际电子展会、建立海外销售渠道等方式,逐步打开了国际市场。在海外市场,Anachip的产品以其高性能和可靠性赢得了客户的青睐。随着国际化拓展的深入,公司的业绩也实现了快速增长。

Daburn公司的发展小趣事

在Daburn公司的发展历程中,质量控制一直是重中之重。公司建立了严格的质量管理体系,从原材料采购到生产流程再到成品检验,每一个环节都严格把控。此外,Daburn还注重持续改进,通过引入先进的生产设备和工艺,不断提高产品的质量和性能。这种对质量的执着追求让Daburn赢得了客户的信任和好评。

Bce Sud公司的发展小趣事

Bce Sud公司成立之初,专注于研发高效能的半导体芯片。面对市场上激烈的竞争,公司创始人凭借其在微电子领域的深厚积累,带领团队成功研发出一款具有低能耗、高稳定性的新型芯片,这一技术突破为公司在市场上打开了局面。随着这款芯片的推出,Bce Sud逐渐在电子行业树立了技术领先的形象。

EPC公司的发展小趣事

某EPC公司注重与产业链上下游企业的合作与共赢。公司与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和成本控制。同时,公司积极与设备制造商、系统集成商等合作伙伴开展深度合作,共同研发新技术、新产品,为客户提供更加全面的解决方案。通过合作共赢的模式,公司实现了跨越式的发展,成为了电子行业的领军企业之一。

BURGESS公司的发展小趣事

随着时间的推移,BURGESS不断扩展其业务范围,并于1984年首次开发租船服务。这一创新举措不仅满足了客户多样化的需求,也进一步巩固了其在行业内的领先地位。此后,BURGESS继续其国际化步伐,成功进驻美国市场,进一步扩大了其全球影响力。

问答坊 | AI 解惑

CC4035-4位移位寄存器

CC4035芯片是一个功能很强大的芯片本文将介绍用它来做4位移位寄存器补码输出、并行存取…

查看全部问答>

单片机芯片解密与加密方法

芯片加密方法是芯片设计公司为了提高单片机的保密性而设计的,而解密是属于逆向分析设计的,设计公司和解密公司的竞争一直没有停止过,设计公司在不断的提高保密手段,而解密公司也在不断的产生新的解密手段。但是从条件来讲,设计公司的设备和投入 ...…

查看全部问答>

??请教2440下wince摄像头编程

本人是wince初学者,想实现wince5.0在2440开发板上利用摄像头拍照,储存,触屏上显示图片等功能。我用VS2005开发,把camera.cpp,camera.h等驱动文件添加到项目里,现在CIS_Close CIS_Deinit CIS_Init CIS_IOControl CIS_Open CIS_PowerDown CIS_Pow ...…

查看全部问答>

高手援助!U盘大小修改问题

我的U盘是PNY的,u盆分区工具把它从8G改成2G。现在想将它还原成8G应该怎么做啊? 直接用右键格式化做不到。请高手援助,谢谢!…

查看全部问答>

FAT表的应用

我的U盘使用的是FAT表文件系统,请问用FLASH的物理地址上我要怎么去找到logic 0地址,有什么标志或者什么提示吗?…

查看全部问答>

不同应用的LED封装支架的选材要求

replyreload += \',\' + 770964;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

白光LED线路版焊接技术要求及注意事项

 蓝光、绿光LED焊接要求与白光LED相同,以一般白光LED焊接的水准来看,而有这样的基本要求,操作需要注意。蓝光、绿光LED焊接要求与白光LED相同,以一般白光LED焊接的水准来看,而有这样的基本要求,操作需要注意如下:   1、生产时一定要戴防 ...…

查看全部问答>

求助:如何解决频繁上下电引起的单片机死机的问题

如何解决频繁上下电引起的单片机死机的问题…

查看全部问答>

询问TI-M3地址对应的数据的位数问题

TI的M3在4G的寻址空间是不是在某一地址位置FLASH和SRAM的容量是1byte(手册上说的多少kB是指kbytes?),而寄存器是32位(4byte)的?…

查看全部问答>