热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sal和ems区别(nucksal)

SAL,即Socketabstractionlayer的缩写,意为套接字抽象层,处于网络硬件层与应用层之间。其前身是RT-Thread的DFS_NET组件,由于其对lwI


物联网设备由于网络连接和应用的多样化,大大增加了软件开发的难度和复杂度,开发方式也会与以往的嵌入式设备有很大的不同。


目前主流的软件开发模式是什么?让我们以具有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,socket抽象层的缩写,意思是Socket抽象层,位于网络硬件层和应用层之间。它的前身是RT-Thread的DFS_NET组件。由于对lwIP的一定依赖和局限性,RT-Thread几乎对其进行了重构。


随着SAL的诞生,RT-Thread可以无缝接入各种网络芯片或模块(例如W5500/CH395等具有协议栈的以太网芯片、带AT指令的WiFi模块、GPRS模块、NB-IoT模块等。),大大提高了RT-Thread与IOT领域不同网络硬件的兼容性。其主要特点如下(图3):


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


提供标准的套接字应用编程接口


统一文件描述符管理模式




(图3:网络框架图)


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


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


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


DFS文件系统层:SAL和DFS紧密结合,Socket描述符和fd文件描述符可以完全对应,实现了fd的统一管理。应用层可以通过读/写和轮询/选择接口操作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帧,新的协议栈只有对接后才能被上层应用安全使用,之前的代码也可以重用。


插座控制器局域网


Socket CAN作为Linux上的一种CAN编程方式,使用方便,编程容易。很多用户也想在RT-Thread上实现Socket CAN编程,所以此时需要SAL。我们只需要用RT-Thread CAN设备实现底层SAL框架对应的接口即可。


[强烈推荐]


了解更多细节,关注RT-Thread。


推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 20211101CleverTap参与度和分析工具功能平台学习/实践
    1.应用场景主要用于学习CleverTap的使用,该平台主要用于客户保留与参与平台.为客户提供价值.这里接触到的原因,是目前公司用到该平台的服务~2.学习操作 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
author-avatar
Money00Fish
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有