当前位置: 首页 > news >正文

RT-Thread ESP-Hosted

RT-Thread ESP-Hosted

该项目在MIT license下作为一个整体,但包含第三方代码在其他许可下。请仔细阅读以下不同许可代码的说明。

用途

用于MCU的spi接口WiFi驱动,适用于已适配RT-Thread的MCU。
已接入RT-Thread的spi设备驱动和wlan框架,与硬件无关代码。
该驱动使用rt-thread标准的spi设备通讯,wlan框架实现wifi命令行的支持
提供esp-idf命名相同的WiFi API调用
上代码:rt-thread_esp-hosted

概述

该存储库已将ESP-Hosted-MCU适配于RT-Thread系统,目前仅支持SPI总线协议,并使用RT-ThreadSPI Device进行SPI总线操作。

这个版本的ESP-Hosted提供:

  • 一个标准的802.3网络接口,用于发送和接收802.3帧
  • 支持蓝牙/BLE的标准HCI接口
  • ESP32芯片配置和控制Wi-Fi的控制接口
  • 用于升级ESP固件的OTA接口

ESP-Hosted-MCU解决方案利用主机现有的TCP/IP 和 蓝牙/BLE 协议栈SPI/SDIO/UART等硬件外设连接到ESP固件,软件层非常薄。

虽然这个项目没有为主机提供标准的802.11接口,但它提供了一种简单的方法,既Remote Procedure Calls(RPCs)用于配置Wi-Fi。对于主机和ESP板之间的RPC, ESP-Hosted-MCU使用了Protobuf,这是一种独立于语言的数据序列化机制。

关于ESP-Hosted-MCU的详细信息可以在ESP-Hosted README中找到。

使用

添加这个仓库

  • 将存储库克隆到RT-Thread项目中的packageslibraries目录。
  • 在RT-Thread项目的librariespackages文件夹中,在其Kconfig文件中包含用于ESP-HostedKconfig文件。
  • 例如,将ESP-Hosted包含在libraries目录中:
menu "External Libraries" source "$RTT_DIR/../libraries/rt-thread_esp-hosted/Kconfig" endmenu

配置 ESP-Hosted

  • 在env窗口中使用menuconfig命令
  • 选中Using esp-hosted for espressif
→ External Libraries [*] Using esp-hosted for espressif --->
  • 进入Using esp-hosted for espressif菜单,配置esp-hosted:
--- Using esp-hosted for espressif ESP-Hosted Configure ---> # ESP-Hosted 配置 Select the transport interface (SPI) ---> # 选择传输接口 Slave chipset to be used (Slave as ESP32C6) ---> # 选择从机芯片 [ ] Enable raw throughput transport ---- # 启用原始吞吐量传输 [ ] Enable Transport level packet statistics # 启用传输级别数据包统计 (8) The maximum number of simultaneous sync rpc requests # 同步RPC请求的最大数量 (8) The maximum number of simultaneous async rpc requests # 异步RPC请求的最大数量 (20) The priority of the esp-hosted rpc thread # RPC线程的优先级 (5120) The stack size of the esp-hosted rpc thread # RPC线程的堆栈大小 (20) The priority of the esp-hosted transport thread # 传输线程的优先级 (1024) The stack size of the esp-hosted SPI thread # SPI线程的堆栈大小 (8) The number for esp-hosted SPI queue # SPI传输队列的数量 (esp-hosted) Set the spi device name # SPI设备名称 (spi1) Set the spi bus name # SPI总线名称 (30000000) Set the maximum spi frequency(Hz) # SPI传输的最大频率 Select the pin name or number (Name) ---> # 选择引脚名称或编号 (PE.7) Set the SPI CS pin name # SPI CS引脚名称 (PE.5) Set the data ready pin name # 数据就绪引脚名称 (PE.6) Set the handshake pin name # 握手引脚名称 (PE.4) Set the reset pin name # 复位引脚名称 [*] Use thread initialization # 使用线程初始化 (2048) The stack size of the init thread # 初始化线程的堆栈大小 (20) The priority of the init thread # 初始化线程的优先级 [*] Enable Bluetooth ---> # 启用蓝牙/BLE HCI接口 Select hci interface (Using vhci device drivers) ---> # 选择HCI接口 (vhci) The vhci device name # vhci设备名称 Wi-Fi Configure ---> # Wi-Fi 配置 (40) Max number of WiFi static RX buffers # 静态RX缓冲区最大数量 (60) Max number of WiFi dynamic RX buffers # 动态RX缓冲区最大数量 Type of WiFi TX buffers (Dynamic) ---> # WiFi TX缓冲区类型 (16) Max number of WiFi cache TX buffers # WiFi TX缓存最大数量 (40) Max number of WiFi dynamic TX buffers # TX动态缓冲区最大数量 [ ] WiFi CSI(Channel State Information) # Wi-Fi CSI [ ] WiFi AMPDU TX # AMPDU TX(数据聚合) [ ] WiFi AMPDU RX # AMPDU RX(数据聚合) (752) Max length of WiFi SoftAP Beacon # SoftAP Beacon最大长度 (32) WiFi mgmt short buffer number # WiFi mgmt short buffer数量 [*] Enable WPA3-Personal # WPA3-Personal [ ] WiFi FTM # WiFi FTM [*] Power Management for station at disconnected # Wi-Fi PM [ ] WiFi GCMP Support(GCMP128 and GCMP256) # Wi-Fi GCMP [ ] WiFi GMAC Support(GMAC128 and GMAC256) # Wi-Fi GMAC (7) Maximum espnow encrypt peers number # espnow加密对等数量 [ ] Enable 802.11R (Fast Transition) Support # 802.11R

ESP-Hosted Configure菜单中,主要是传输接口从机芯片以及传输以为的引脚配置,其他的默认即可。
Select hci interface选项用于选择使用vhci设备驱动或者NimBLE hci 驱动的HCI接口。
选择vhci设备驱动将创建一个字符类型设备,该设备将模拟蓝牙HCI接口。
选择NimBLE hci 驱动将直接接入NimBLE协议栈。

Wi-Fi Configure菜单中,主要是关于ESP32WiFi参数配置。
WiFi AMPDU TXWiFi AMPDU RX选项建议关闭,在测试中发现开启后,Wi-Fi容易丢包,可能是由于路由器不遵循标准协议导致。

硬件连接

SignalESP32ESP32-C2/C3/C5/C6ESP32-S2/S3
CLK14612
MOSI13711
MISO12213
CS151010
Handshake26317
Data Ready445
Reset InENEN/RSTEN/RST

如果您熟悉esp-idf,您也可以尝试修改引脚
或者使用 Flash Download Tool 烧录firmware目录中对应芯片的固件。

构建ESP32固件

$ cd esp-hosted/slave $ rm -rf sdkconfig build $ idf.py set-target <esp_chipset>

其中 <esp_chipset> 可以是 “esp32”, “esp32s2”, “esp32s3”, “esp32c2”, “esp32c3”, “esp32c5”, “esp32c6”

  • 执行以下命令配置项目
$ idf.py menuconfig
  • 这将打开项目配置窗口。 要选择SPI传输接口,导航到ESP-Hosted Configuration -> Transport layer -> SPI interface -> select然后退出菜单配置。

  • 要构建并烧录应用程序到ESP设备,请运行

$ idf.py-p<serial_port>build flash
  • 收集ESP固件日志使用
$ idf.py-p<serial_port>monitor

检查启动

从机日志

在成功烧录后,您应该在ESP日志中看到以下信息:

I (412) NETWORK_ADAPTER: ********************************************************************* I (422) NETWORK_ADAPTER: ESP-Hosted-MCU Slave FW version :: 1.0.0 I (432) NETWORK_ADAPTER: Transport used :: SPI only I (442) NETWORK_ADAPTER: *********************************************************************
主机日志

您应该在主机日志中看到以下信息:

\|/ - RT - Thread Operating System /|\5.0.2 build Feb15202509:39:292006-2022Copyright by RT-Thread team lwIP-2.1.2 initialized![4]I/SFUD: Found a Winbond flash chip. Size is16777216bytes.[9]I/SFUD: norflash flash device initialized successfully.[14]I/SFUD: Probe SPI flash norflash by SPI device spiflash success.[I/FAL]RT-Thread Flash Abstraction Layer initialize success.[39]I/sal.skt: Socket Abstraction Layer initialize success.[I/FAL]The FAL block device(filesystem)created successfully[154]I/SDIO: SD card capacity31166976KB. found part[0], begin:2097152, size:29.738GB[167]I/filesystem: sd cardmountto'/sdcard'[1265]I/transport: Features supported are:[1266]I/transport: - WLAN over SPI[1269]I/transport: - HCI over SPI[1273]I/transport: - BLE only[1276]I/transport: Chip is: ESP32c6[1279]I/vhci.dev: Host BT Support: Enabled[1283]I/vhci.dev: BT Transport Type: vhci devices[2387]I/WLAN.dev: wlan init success[2424]I/WLAN.lwip: eth device init ok name:w0[2426]I/WLAN.dev: wlan init success[2444]I/WLAN.lwip: eth device init ok name:w1

固件更新

ESP-Hosted支持通过传输接口升级ESP32固件,升级过程如下:

msh />esp_ota /flash/network_adapter.bin esp-hosted ota update started erasing the ota partition..writing:[==================================================]100%1084496|100KB/s firmwarewritesuccess!!slave will restart after5sec

esp_ota命令可以支持在线下载或者本地文件作为固件升级包。
在线下载方式需要依赖webclient软件包:

msh />esp_ota https://file.server.com/network_adapter.bin esp-hosted ota update started erasing the ota partition..writing:[==================================================]100%1084496|81KB/s firmwarewritesuccess!!slave will restart after5sec msh />

芯片支持

CHIPSDIOSPI
ESP32x*
ESP32-C6xo
ESP32-C5x*
ESP32-C3xo
ESP32-C2xo
ESP32-S3x*
ESP32-S2x*

‘x’ 表示不支持
‘o’ 表示已测试和支持
‘*’ 表示理论上支持,但未经检验的

更多信息

  • esp-hosted
  • esp-hosted-mcu
  • espressif

联系方式&支持

  • 邮箱: 1425295900@qq.com
  • 微信:Evlers
  • 如果驱动上有什么问题欢迎提交PR或者联系我一起交流
  • 如果你觉得这个项目不错,记得给个Star~感谢支持!
http://www.jsqmd.com/news/447196/

相关文章:

  • durable_rules模式匹配技术:DFA编译如何实现纳秒级字符串处理
  • local-web-server性能优化指南:让你的开发服务器飞起来
  • Flutter响应式管理面板AI功能集成:智能分析与自动化操作终极指南
  • 生产车间班组长绩效考核方案优化与绩效提升策略
  • 记录踩过的坑-金蝶云·苍穹平台-页面开发
  • 自平衡摩托车控制系统设计:Python实现方案
  • Ease高级特性:动态更新targetValue实现实时动画轨迹调整
  • 如何用Jspreadsheet CE快速创建动态数据表格:从数组到JSON的实战指南
  • REINFORCE、Remax、GRPO、DR.GRPO、DAPO、REINFORCE++、GPG、OPO、GSPO、SAPO、CLIP-COV、VC-PPO、VAPO对比
  • 微信小程序单元测试与集成测试完整指南:从入门到实战
  • (算法题)N个数求和
  • Flutter响应式管理面板终极容器化部署指南:Docker与Kubernetes实践
  • Clojure-lsp完全指南:从安装到精通的10个核心步骤
  • 终极指南:5个BackstopJS测试报告定制技巧与品牌化实战
  • IDEA与Gradle构建冲突,导致java重复类的解决方案
  • 大型项目测试策略:BackstopJS 场景分组与模块化配置管理终极指南
  • BackstopJS 测试数据隐私保护终极指南:敏感信息屏蔽与测试环境隔离技巧
  • 揭秘Rust Search Extension工作原理:从输入到结果的毫秒级响应
  • 如何高效调试与监控DeepSearcher:日志系统完全指南
  • DeepSearcher+Ollama:本地部署大模型的终极推理方案
  • ntlm_theft源代码解析:Python实现哈希窃取文件生成的核心原理
  • 微信小程序开发完整指南:从组件到云开发的实战教程
  • Crabviz支持哪些编程语言?一文了解LSP驱动的跨语言调用图生成能力
  • Opa vs 传统Web开发:为什么选择函数式语言构建前端应用?
  • MobileNet-Caffe核心代码解析:eval_image.py如何实现图像预测
  • AI驱动元宇宙应用的多模态生成:文本_图像_语音的融合架构
  • DeepSearcher分布式部署终极指南:多节点协同处理方案深度解析
  • 5分钟掌握PHP HTTP消息接口:构建标准化Web应用的核心指南
  • 团队协作新姿势:用Dockerized统一开发工具版本的实战技巧
  • postgresql-event-sourcing快照机制:提升事件溯源性能的关键技巧