了解下RTOS 最常用的一种扩展— AT 设备包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解下RTOS 最常用的一种扩展— AT 设备包相关的知识,希望对你有一定的参考价值。

RTOS 是一个开源的嵌入式设备操作系统,由 RT-Thread 开发。它为开发者提供了标准化的、友好的基础架构,开发者可以基于各种设备编写代码,它包含大量有用的类库和工具包,使开发过程更加便捷。

了解下RTOS

RTOS 使用的是模块方式,以便于扩展,这一点跟 ​​Linux​​ 类似。各种软件包可以让开发者将 RTOS 用于任何想要的目标设备。RTOS 最常用的一种扩展是 AT 设备包,它包含各种不同 AT 设备(例如调制解调器)的移植文件和示例代码。

在超过 62,000 次下载中(截止至撰写本文时),最流行的 RTOS 扩展之一是 AT 设备包,其中包括用于不同 AT 设备的移植文件和示例代码。

关于 AT ​命令

起初,AT 命令是一个协议,用于控制拨号调制解调器。随着调制解调器技术发展到较高的带宽,它仍然可以用作轻量级而高效的设备控制协议,主流的移动电话厂商也联手开发了一系列 AT 命令,用于控制移动电话上的 GSM 模块。

如今,AT 命令仍然在网络通信领域具有通用性,很多设备,例如 WiFi、蓝牙、4G,都支持 AT 命令。

如果你正在创建用于边缘计算输入、监控或物联网(IoT)的专用设备,则你可能接触到一些 RTOS 支持的 AT 设备,包括 ESP8266、ESP32、M26、MC20、RW007、MW31、SIM800C、W60X、SIM76XX、A9/A9G、BC26、AIR720、ME3616、M 6315、BC28 和 EC200X。

RT-Thread 包含套接字抽象层(SAL)组件,SAL 实现了多种网络协议和接口的抽象,为上层提供了一系列标准的 BSD 套接字 API。SAL 进而接管了 AT 的套接字接口,所以开发者只需要考虑网络应用层提供的网络接口。

这个软件包实现了设备(包括上述设备)上的 AT 套接字功能,支持通过标准套接字接口以 AT 命令的形式通信。RT-Thread 编程指南 中就有关于这些功能的详细介绍。

at_device 软件包是在 LGPLv2.1 许可证下分发的,借助 RT-Thread Env 工具 可以方便地获取到。该工具包含一个配置器和一个包管理器,它们分别用于配置内核和组件功能,可以用于定制组件并管理在线包。有了这些工具,开发者可以像搭积木一样构建系统。

获取 AT 设备包

为了使用配置了 RTOS 的 AT 设备,你必须启用 AT 组件库和 AT 套接字功能,需要:

  1. RT_Thread 4.0.2+
  2. RT_Thread AT 组件 1.3.0+
  3. RT_Thread SAL 组件
  4. RT-Thread netdev 组件

AT 设备包已经针对多种版本进行了相应的更新。版本不同,配置选项也相应地不同,因此必须针对相应的系统版本进行适配。目前最常用的 AT 设备包版本有:

  1. V1.2.0: 针对低于 V3.1.3 的 RT-Thread,V1.0.0 的 AT 组件
  2. V1.3.0: 针对低于 V3.1.3 的 RT-Thread,V1.1.0 的 AT 组件
  3. V1.4.0: 针对低于 V3.1.3 或等于 V4.0.0 的 RT-Thread,V1.2.0 的 AT 组件
  4. V1.5.0: 针对低于 V3.1.3 或等于 V4.0.0 的 RT-Thread,V1.2.0 的 AT 组件
  5. V1.6.0: 针对低于 V3.1.3 或等于 V4.0.1 的 RT-Thread,V1.2.0 的 AT 组件
  6. V2.0.0/V2.0.1: 针对高于 V3.1.3 的 RT-Thread,V1.3.0 的 AT 组件
  7. 最新版: 针对高于 V3.1.3 的 RT-Thread,V1.3.0 的 AT 组件

获取正确的版本的过程主要是在生成菜单时自动完成的。它基于现有的系统环境提供最合适的 AT 设备包。

正如前文提到的,不同的版本需要不同的配置选项。例如,

RT-Thread online packages  --->
IoT - internet of things --->
-*- AT DEVICE: RT-Thread AT component porting or samples for different device
[ ] Enable at device init by thread
AT socket device modules (Not selected, please select) --->
Version (V1.6.0) --->

按线程启用 AT 设备初始化的选项决定了配置是否创建一个单独的线程来初始化设备网络。

2.x 版本支持同时启用多个 AT 设备:

RT-Thread online packages  --->
IoT - internet of things --->
-*- AT DEVICE: RT-Thread AT component porting or samples for different device
[*] Quectel M26/MC20 --->
[*] Enable initialize by thread
[*] Enable sample
(-1) Power pin
(-1) Power status pin
(uart3) AT client device name
(512) The maximum length of receive line buffer
[ ] Quectel EC20 --->
[ ] Espressif ESP32 --->
[*] Espressif ESP8266 --->
[*] Enable initialize by thread
[*] Enable sample
(realthread) WIFI ssid
(12345678) WIFI password
(uart2) AT client device name
(512) The maximum length of receive line buffer
[ ] Realthread RW007 --->
[ ] SIMCom SIM800C --->
[ ] SIMCom SIM76XX --->
[ ] Notion MW31 --->
[ ] WinnerMicro W60X --->
[ ] AiThink A9/A9G --->
[ ] Quectel BC26 --->
[ ] Luat air720 --->
[ ] GOSUNCN ME3616 --->
[ ] ChinaMobile M6315 --->
[ ] Quectel BC28 --->
[ ] Quectel ec200x --->
Version (latest) --->

这个版本包含了很多其他选项,其中也有启用示例代码的选项,这对初学者或使用不熟悉的设备的开发者很有帮助。

你也可以设置相应选项,选择你想用来给你的组件供电的针脚、指示电源状态的针脚、样本设备使用的串行设备的名称,以及样本设备接收数据的最大长度。在合适的设备上,你也可以设置 SSID 和密码。

简而言之,控制选项是够用的。

  1. V2.x.x 版本支持同时启用多个 AT 设备,欲查看启用的设备信息,在 finsh shell 中执行 ifocnfig 命令即可。
  2. V2.X.X 版本需要设备在使用前先注册;注册可以在样例目录中进行,或在应用层以自定义方式进行。
  3. 针脚选项,例如电源针脚和电源状态针脚是按照设备的硬件连接来配置的。如果硬件的开启功能不可用,它们就会被设置为 -1。
  4. 一台AT 设备应当对应一个序列名称,每台设备的 AT 客户端名称应当是不同的。

AT 组件配置选项

当选择了 AT 组件包,启用了设备支持,AT 组件的客户端功能也就默认选择完成了。对 AT 组件来说,这就意味着有更多的选项要设置:

RT-Thread Components  --->
Network --->
AT commands --->
[ ] Enable debug log output
[ ] Enable AT commands server
-*- Enable AT commands client
(1) The maximum number of supported clients
-*- Enable BSD Socket API support by AT commnads
[*] Enable CLI(Command-Line Interface) for AT commands
[ ] Enable print RAW format AT command communication data
(128) The maximum length of AT Commonds buffer

与 AT 设备包有关的配置选项有:

  1. 支持的客户端最大个数:选择 AT 设备包中的多台设备时,需要将该选项配置为对应的设备台数;
  2. 通过 AT 命令启用 BSD 套接字 API 功能:当选择 AT 设备包时默认选择该选项。
  3. AT 命令的最大长度:AT 命令可发送的数据的最大长度

一切皆有可能

当你开始进行嵌入式系统编程,你会很快意识到,你可以创造自己想象得到得任何东西。RTOS 旨在帮助你实现它,它的那些功能包为你提供了良好的开端。现在,设备的互联也是可期待的。边缘的物联网技术必须能够通过各种协议进行通信,而 AT 协议是关键。


最常用的几个python库

Python常用库大全,看看有没有你需要的。
环境管理
管理 Python 版本和环境的工具
p – 非常简单的交互式 python 版本管理工具。
pyenv – 简单的 Python 版本管理工具。
Vex – 可以在虚拟环境中执行命令。
virtualenv – 创建独立 Python 环境的工具。
virtualenvwrapper- virtualenv 的一组扩展。
包管理
管理包和依赖的工具。
pip – Python 包和依赖关系管理工具。
pip-tools – 保证 Python 包依赖关系更新的一组工具。
conda – 跨平台,Python 二进制包管理工具。
Curdling – 管理 Python 包的命令行工具。
wheel – Python 分发的新标准,意在取代 eggs。
包仓库
本地 PyPI 仓库服务和代理。
warehouse – 下一代 PyPI。
Warehousebandersnatch – PyPA 提供的 PyPI 镜像工具。
devpi – PyPI 服务和打包/测试/分发工具。
localshop – 本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。
分发
打包为可执行文件以便分发。
PyInstaller – 将 Python 程序转换成独立的执行文件(跨平台)。
dh-virtualenv – 构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。
Nuitka – 将脚本、模块、包编译成可执行文件或扩展模块。
py2app – 将 Python 脚本变为独立软件包(Mac OS X)。
py2exe – 将 Python 脚本变为独立软件包(Windows)。
pynsist – 一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python本身。
构建工具
将源码编译成软件。
buildout – 一个构建系统,从多个组件来创建,组装和部署应用。
BitBake – 针对嵌入式 Linux 的类似 make 的构建工具。
fabricate – 对任何语言自动找到依赖关系的构建工具。
PlatformIO – 多平台命令行构建工具。
PyBuilder – 纯 Python 实现的持续化构建工具。
SCons – 软件构建工具。
交互式解析器
交互式 Python 解析器。
IPython – 功能丰富的工具,非常有效的使用交互式 Python。
bpython- 界面丰富的 Python 解析器。
ptpython – 高级交互式Python解析器, 构建于python-prompt-toolkit 之上。
文件
文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。
imghdr – (Python 标准库)检测图片类型。
mimetypes – (Python 标准库)将文件名映射为 MIME 类型。
path.py – 对 os.path 进行封装的模块。
pathlib – (Python3.4+ 标准库)跨平台的、面向对象的路径操作库。
python-magic- 文件类型检测的第三方库 libmagic 的 Python 接口。
Unipath- 用面向对象的方式操作文件和目录
watchdog – 管理文件系统事件的 API 和 shell 工具
日期和时间
操作日期和时间的类库。
arrow- 更好的 Python 日期时间操作类库。
Chronyk – Python 3 的类库,用于解析手写格式的时间和日期。
dateutil – Python datetime 模块的扩展。
delorean- 解决 Python 中有关日期处理的棘手问题的库。
moment – 一个用来处理时间和日期的Python库。灵感来自于Moment.js。
PyTime – 一个简单易用的Python模块,用于通过字符串来操作日期/时间。
pytz – 现代以及历史版本的世界时区定义。将时区数据库引入Python。
when.py – 提供用户友好的函数来帮助用户进行常用的日期和时间操作。
文本处理
用于解析和操作文本的库。
通用
chardet – 字符编码检测器,兼容 Python2 和 Python3。
difflib – (Python 标准库)帮助我们进行差异化比较。
ftfy – 让Unicode文本更完整更连贯。
fuzzywuzzy – 模糊字符串匹配。
Levenshtein – 快速计算编辑距离以及字符串的相似度。
pangu.py – 在中日韩语字符和数字字母之间添加空格。
pyfiglet -figlet 的 Python实现。
shortuuid – 一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID。
unidecode – Unicode 文本的 ASCII 转换形式 。
uniout – 打印可读的字符,而不是转义的字符串。
xpinyin – 一个用于把汉字转换为拼音的库。
参考技术A 1、Arrow:python中处理时间的库有datetime,但是它过于简单,使用起来不够方便和智能,而Arrow可以说非常的方便和智能。
2、Behold:调试是每个程序员必备的技能,对于脚本语言,很多人习惯使用print进行调试,对于大项目来说,print功能远远不够,我们都希望调试方便,Behold是最合适的。
3、Click:现在几乎所有的框架都有自己的命令行脚手架,python也是如此。在命令行程序中,Click库是非常合适的选择。
4、Numba:想要从事数学方面的分析和计算,Numba是不能缺少的库。
5、Matlibplot:做过数据分析,数据可视化的数据学生一定知道Matlibplot这个软件,是一个收费的商用软件,在python中,Matlibplot为了实现这个软件中功能开发的第三方python库。
参考技术B 标准库
Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。
Python标准库的主要功能有:
1.文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能
2.文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能
3.操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志(logging)等功能
4.网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能
5.网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架
6.W3C格式支持,包含HTML,SGML,XML的处理。
7.其它功能,包括国际化支持、数学运算、HASH、Tkinter等

Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、Web开发、数据库接口、图形系统多个领域。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组函式库,Boost.Python,使得以Python或C++编写的程式能互相调用。Python常被用做其他语言与工具之间的“胶水”语言。
著名第三方库
1.Web框架
Django: 开源Web开发框架,它鼓励快速开发,并遵循MVC设计,开发周期短。
ActiveGrid: 企业级的Web2.0解决方案。
Karrigell: 简单的Web框架,自身包含了Web服务,py脚本引擎和纯python的数据库PyDBLite。
Tornado: 一个轻量级的Web框架,内置非阻塞式服务器,而且速度相当快
webpy: 一个小巧灵活的Web框架,虽然简单但是功能强大。
CherryPy: 基于Python的Web应用程序开发框架。
Pylons: 基于Python的一个极其高效和可靠的Web开发框架。
Zope: 开源的Web应用服务器。
TurboGears: 基于Python的MVC风格的Web应用程序框架。
Twisted: 流行的网络编程库,大型Web框架。
Quixote: Web开发框架。

2.科学计算
Matplotlib: 用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。
SciPy: 基于Python的matlab实现,旨在实现matlab的所有功能。
NumPy: 基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案。

3.GUI
PyGtk: 基于Python的GUI程序开发GTK+库。
PyQt: 用于Python的QT开发库。
WxPython: Python下的GUI编程框架,与MFC的架构相似。

4.其它
BeautifulSoup: 基于Python的HTML/XML解析器,简单易用。
PIL: 基于Python的图像处理库,功能强大,对图形文件的格式支持广泛。
PyGame: 基于Python的多媒体开发和游戏软件开发模块。
Py2exe: 将python脚本转换为windows上可以独立运行的可执行程序。

以上是关于了解下RTOS 最常用的一种扩展— AT 设备包的主要内容,如果未能解决你的问题,请参考以下文章

Zephyr RTOS -- West 命令及编译过程简介

Zephyr RTOS -- West 命令及编译过程简介

Zephyr RTOS -- West 命令及编译过程简介

css @规则

Pixhawk---基于NSH的Firmware开发与调试

金笛电信设备常用at指令