RT-Thread提供的网络世界入口 -net组件

作为一款在RTOS领域对网络支持很丰富的RT-Thread,对设备联网功能的支持的工具就是net组件。
位于/rt-thread/components/net路劲下,作为一款基础组件,env与Studio的工程配置项界面的配置项都依赖该目录下的Kconfig。
我们对网络功能的选择,或者其配置都属于该Kconfig的管理范畴。

在这里插入图片描述
从图片中的信息可以了解到,AT,Lwip,netdev,sal这些我们相对熟悉的功能也位于该目录中。
这四个基础组件,可以驱动的网络设备的种类多到各个方面。
从有线网络的各种 ETH 的方式,带 PHY 的 enc28j60,纯接口的 RJ45,还有自带网络协议栈的 W5500都可以直接经过配置,通过我们的 net 组件实现设备联网的需求;除了有线网络的接入方式,无线网络的接入方式则更多,2G模块,3G模块,4G模块,Cat-1模块,Cat-4模块,NB-IOT模块,乃至 5G 模块这些依赖基站运营商的入网方式,例如 SIM800,EC20,AIR720,L610,N58,M5311 等,这些不同厂家,不同工作频率的模组均可以通过 NET 组件入网;WIFI 这种无需运营商直接提供的网络的入网方式,例如 ESP8266,W60x,rw007 等。

通过上面的简单介绍,大家可以基本了解Net组件的作用,即为使用RT-Thread的设备提供上网能力。
上面的联网设备,品类繁多,方式各异,但其实追踪到依赖的基础net能力其实也没有多复杂。实际上大部分的功能依赖的基础能力,只有两组而已,即AT,Lwip;而用户,也就是开发者层面,大部分就只用到SAL这一个概念。
在这里插入图片描述
通过SAL接口大家可以实现MQTT,NTP,TFTP,TCP Client,TCP Server,webclient,UDP Client,UDP Server,webnet 等这些大家经常会使用的工具。像浏览器一样访问网站,webclient;模拟一个网站,webnet;连接各种云平台,Mqtt;获取准确授时,NTP;通过网络传输文件,TFTP;诸如此类功能,SAL提供了轻松访问网络的一把钥匙。可以理解这把钥匙是向上的。

总概

对于一个给定的模组,它的联网方式有时并不是单一的;以常见的Cat-4(4G)模块为例,一方面它可以使用AT命令这种经典的方式来实现网络连接;另一方面又可以通过PPP拨号,使用lwip的方式实现网络连接。

或者在以 W60x 为例,一方面可以使用 AT 的方式来实现联网功能;另一方面又可以使用裸 IP 包的方式来实现网络连接。

在选取上网模块时,应当考虑片上资源的情况,以及网络质量的问题,选择比较适合的联网方式。

AT

在这里插入图片描述
AT命令一开始并没有那么丰富,一开始用作拨号的功能,也就是电话业务方面的内容。
后来随着时间发展,AT命令的范围也一步步进行了扩展,而逐渐支持了网络的一些功能,例如TCP,UDP的功能;而到现在,有些模块甚至直接使用AT命令扩展的方式,实现了诸如MQTT,HTTP,HTTPS之类的功能。

这些使用扩展AT命令方式实现的上层应用堆模块依赖度高。在RT-Thread的IOT Package的栏目中,可以留意到这样的软件包,例如:bc28_mqtt。

RT-Thread 的AT socket功能,则是更接近底层,实现TCP UDP这样的接口,通过SAL来实现MQTT这种上层应用。

AT组件设计目的就是使设备能发送和解析AT命令。

  • 对于AT Client来说,是由MCU向Modem发送AT命令,由Modem响应命令,并给出回复。这种方式是我们常用的,通过支持AT的模组上网的常用方式。
  • 对于AT Server来说,是由MCU作为类似Modem的功能,由其它MCU向这个MCU发送AT命令,由这个MCU响应AT命令并做出回复。

Lwip

大家基本都是看过这个TCP/IP模型的,在嵌入式的网络协议栈入口中,Lwip就是很重要的一个入口;Lwip是开源的一个协议栈,得到验证和肯定的嵌入式TCP/IP网络协议栈,Lwip的全称a lightweight TCP/IP stack,一个轻量级的TCP/IP协议栈。

所以可以知道:lwip 并不是嵌入式上唯一的 TCP/IP 协议栈,但 lwip 是经过验证的,能胜任工作的 TCP/IP 协议栈。在 RT-Thread 中,提供了三个 lwip 的版本供用户使用: lwip1.4.1,lwip2.0.2,lwip2.1.2 ;通常大家在使用有线连接的方式使用网络时,一部分是使用的 lwip 协议栈,而另一部分则是使用了 w5500 这种方式来实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/121518.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于卷积神经网络的步幅(stride)

认识步幅(stride) 卷积核从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动,我们将每次滑动的行数和列数称为步幅。 计算步幅 假设输入的形状n∗n,卷积核的形状为f∗f&#xff0…

css排版—— 一篇优雅的文章(中英文) vs 聊天框的特别排版

文章 <div class"contentBox"><p>这是一篇范文——仅供测试使用</p><p>With the coming of national day, I have a one week holiday. I reallyexpect to it, because it want to have a short trip during these days. Iwill travel to Ji…

机器学习模板代码(期末考试复习)自用存档

机器学习复习代码 利用sklearn实现knn import numpy as np import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCVdef model_selection(x_train, y_train):## 第一个是网格搜索## p是选择查找方式:1是欧…

Vue3 + Vite + Ts + Router搭建项目

1、新建文件夹 从新建的文件夹cmd进入终端 2、安装vite—依据vite创建vue3项目 2.1、运行 npm init vitelatest2.2.1、输入项目名称 2.2.2、选择vue 2.2.3、选择TypeScript语言 3、安装依赖项 3.1、进入刚才创建的文件夹 cd vite-project 3.2、查看镜像 #查看当前源 npm con…

【uniapp+vue3/vue2】ksp-cropper高性能图片裁剪工具,详解

效果图&#xff1a; 1、ksp-cropper是hbuilder插件市场中的一款插件&#xff0c;兼容vue2和vue3 ksp-cropper插件安装地址&#xff0c;直接点击跳转 2、插件用法相对简单 &#xff08;1&#xff09;只要url有值就会显示插件&#xff0c;为空就会隐藏插件 &#xff08;2&#…

自动化测试框架 —— pytest框架入门篇

今天就给大家说一说pytest框架。 今天这篇文章呢&#xff0c;会从以下几个方面来介绍&#xff1a; 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 01、pytest框架介绍 pytest 是 pytho…

国产猫罐头可以长期作为主食吗?我家的优质TOP的猫罐头分享

我最近一直在调查国产猫罐头可以长期作为主食吗&#xff1f;看看我的购物订单&#xff0c;我已经尝试了几十款了。今天&#xff0c;我想和大家分享一些关于国产猫罐头的经验和见解。 近年来&#xff0c;国产宠粮市场取得了突破性的进展&#xff0c;各个猫粮商在配方、营养数据…

win10添加回环网卡步骤

打开命令行输入hdwwiz 添加新硬件向导 结果

Visual Studio 2022 + OpenCV 4.5.2 安装与配置教程

目录 OpenCV的下载与配置Visual Studio 2022的配置新建工程新建文件新建项目属性表环境配置测试先写一个输出将OpenCV的动态链接库添加到项目的 x64 | Debug下测试配置效果 Other OpenCV的下载与配置 参考这个OpenCV的下载与环境变量的配置&#xff1a; Windows10CLionOpenCV4…

CUDA学习笔记7——CUDA内存组织

CUDA内存组织 CUDA设备内存的分类与特征 内存类型物理位置访问权限可见范围生命周期1全局内存芯片外可读写所有线程和主机端由主机分配与释放2常量内存芯片外只读所有线程和主机端由主机分配与释放3纹理和表面内存芯片外一般只读所有线程和主机端由主机分配与释放4寄存器内存…

OpenSSL生成自签名证书

生成之前首先需要明白以下内容&#xff1a; 第三点的验证数字签名解释下&#xff1a;客户端将使用颁发机构的公钥解密得到的原始数据&#xff0c;再将原始数据通过哈希算法计算得到的哈希值&#xff08;此处应该是使用CA证书提供的哈希算法&#xff09;进行比对。如果两者一致&…

2022最新版-李宏毅机器学习深度学习课程-P46 自监督学习Self-supervised Learning(BERT)

一、概述&#xff1a;自监督学习模型与芝麻街 参数量 ELMO&#xff1a;94MBERT&#xff1a;340MGPT-2&#xff1a;1542MMegatron&#xff1a;8BT5&#xff1a;11BTuring NLG&#xff1a;17BGPT-3&#xff1a;175BSwitch Transformer&#xff1a;1.6T 二、Self-supervised Lear…

云计算:无所不能的超级英雄

引言 在这个奇妙的时代&#xff0c;云计算如同一位无所不能的超级英雄&#xff0c;无处不在。从智能家居到无人驾驶&#xff0c;从虚拟现实到人工智能&#xff0c;云计算为我们的生活带来了智能、便捷和有趣。它以其强大的能力和灵活性&#xff0c;令我们的生活变得更加智能化…

库存预占架构升级方案设计-交易库存中心

背景介绍 &#xfeff; 伴随物流行业的迅猛发展&#xff0c;一体化供应链模式的落地&#xff0c;对系统吞吐、系统稳定发出巨大挑战&#xff0c;库存作为供应链的重中之重表现更为明显。近三年数据可以看出&#xff1a; &#xfeff;&#xfeff; 接入商家同比增长37.64%、货…

rviz添加qt插件

一、增加rviz plugin插件 资料&#xff1a;http://admin.guyuehome.com/42336 https://blog.51cto.com/u_13625033/6126970 这部分代码只是将上面两个链接中的代码整合在了一起&#xff0c;整合在一起后可以更好的理解其中的关系 1、创建软件包 catkin_create_pkg rviz_tel…

css呼吸效果实现

实现一个图片有规律的大小变化&#xff0c;呈现呼吸效果&#xff0c;怎么用CSS实现这个呼吸效果呢 一.实现 CSS实现动态效果可以使用动画( animation)来属性实现&#xff0c;放大缩小效果可以用transform: scale来实现&#xff0c;在这基础上有了动画&#xff0c;就可以设置一个…

每日汇评:黄金将测试1935美元的200日移动均线

金价在美联储主席鲍威尔发表讲话之前仍然脆弱&#xff1b; 在市场情绪喜忧参半的情况下&#xff0c;美元与美债收益率走势艰难&#xff1b; 在上升的三角形破裂和看跌的相对强弱指数中&#xff0c;黄金价格看向200日移动均线&#xff1b; 黄金周四早时在略低于1950美元的三周…

访问者模式

详情可参考&#xff1a;https://zhuanlan.zhihu.com/p/380161731 意图&#xff1a;主要将数据结构与数据操作分离。 适用于&#xff1a;系统中有稳定的数据结构&#xff0c;且数据结构的功能经常发生变化。 双分派&#xff1a;我的理解是两次多态操作&#xff0c;动态获取对象…

mysql的备份和恢复

备份&#xff1a;完全备份 增量备份 完全备份&#xff1a;将整个数据库完整的进行备份 增量备份&#xff1a;在完全备份的基础之上&#xff0c;对后续新增的内容进行备份 备份的需求 1、在生产环境中&#xff0c;数据的安全至关重要&#xff0c;任何数据的都可能产生非常严重…

PHP保存时自动删除末尾的空格,phpstorm自动删除空白字符串

最近有个活儿&#xff0c;修改一个财务软件。 修改后给客户验收的过程中&#xff0c;客户反应有一个txt表格导出功能不能用了。之前是好的。 这次是新增&#xff0c;老的这个功能碰都没碰过&#xff0c;怎么能有问题呢&#xff1f;我心里OS 下班后我立马用系统导出TXT&#…