Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ESP32-C3_RISC-V
wifi
蓝牙BLE
ESP32C3芯片WIFI和BLE驱动问题
发布于 2023-10-08 16:28:59 浏览:891
订阅该版
[tocm] # ESP32C3芯片WIFI和BLE驱动问题 目前个人实现了一套ESP32C3芯片的WIFI驱动和BLE驱动,但是在具体运行过程中存在一些问题,具体个人实现方式和问题描述如下所示。 ## 个人实现方式 ### Scons编译实现方式 根据`esp-idf`库的`CMake`编译系统配置以及`idf.py build`所生成的编译日志编写`Sconscript`文件,通过`scons`编译系统来管理`esp-idf`代码并且实现了利用`scons`来编译`RT-Thread`和`esp-idf`。 ### WIFI驱动实现方式 根据`esp-idf`库的`wifi`组件的`CMake`编译配置以及`idf.py build`所生成的编译日志来配置`Sconscript`将`wifi`组件纳入`RT-Thread`编译。撰写`drv_wifi.h`和`drv_wifi.c`搭建`RT-Thread`和`esp-idf`之间的桥梁,实现`RT-Thread`中的`WIFI`框架接口。 ### BLE驱动实现方式 根据`esp-idf`库的`bluetooth`组件的`CMake`编译配置以及`idf.py build`所生成的编译日志来配置`Sconscript`将`bluetooth`组件纳入`RT-Thread`编译。和`WIFI`组件不同,我们采用`esp-idf`所提供的`nimble`组件来实现`BLE`支持,通过使用`es-idf`的`nimble`组件和`esp-idf`所提供的`nimble`使用样例来实现`ble`的支持。 ## 问题描述 ### `rt_mq_send`等函数在`ISR`中运行的问题 在实现`WIFI`驱动和`BLE`驱动过程中出现了一种新的问题,在运行过程中出现断言错误,报错内容为在中断环境`ISR`中使用了`rt_mq_send`等函数,这些函数由于使用自旋锁等组件需要关闭中断进行操作从而使得这些函数不能在中断环境中进行调用。 报错截图: ![报错截图](https://oss-club.rt-thread.org/uploads/20231008/5eed589fd4f436b6b8012ed93c234702.png) ### `WIFI`的`ap`模式可以扫描到`WIFI`但是无法连接 在稳定情况下`wifi`的`ap`模式可以被手机扫描到但是无法获取`ip`地址,个人猜测为`lwip`和`wifi`接口对接问题导致错误。 ### `pc`跑飞现象 该问题主要出现在`BLE`驱动当中,具体表现为运行`BLE`一段时间之后会出现取指错误中断,具体表现为`pc`和`sp`指针地址相同,本人猜测为栈溢出导致了上述错误。 ### 其他问题 除上面两个错误之外还有其他许多错误,例如报错`Guru Meditation Error: Core 0 panic'ed (instruction access fault). Exception was unhandled.`等等,稳定性较差,但是有时还是可以扫描到并进行连接。 ## 复现步骤 我的`rt-thread`仓库地址在[https://github.com/WCX1024979076/rt-thread/tree/esp32](https://github.com/WCX1024979076/rt-thread/tree/esp32),`packages/esp-idf`仓库在[https://github.com/WCX1024979076/esp-idf](https://github.com/WCX1024979076/esp-idf),`packages/freertos-wrapper`仓库在[https://github.com/WCX1024979076/FreeRTOS-Wrapper](https://github.com/WCX1024979076/FreeRTOS-Wrapper) ### WIFI组件 `WIFI`组件启用只需要在`menuconfig`中开启`BSP_USING_WIFI`开关即可。 ### BLE组件 `BLE`组件启用首先需要确保`BSP_USING_WIFI`和`RT_USING_WIFI`和`lwip`组件关闭;之后打开`BSP_USING_BLE`开关;最后是将样例程序加入到`scons`编译并在`bsp/ESP32_C3/main/main.c`中调用时钟初始化程序和样例程序入口,样例程序在`bsp/ESP32_C3/packages/ESP-IDF-latest/examples/bluetooth/nimble`下。 ## 个人关于问题的猜测 由于乐鑫公司原厂的`wifi`库和`nimble`库和`FreeRTOS`紧密绑定同时乐鑫公司也对`FreeRTOS`进行相关定制,导致在实现`WIFI`和`BLE`驱动过程中使用`FreeRTOS-Wrapper`出现了一些问题。另外由于乐鑫公司所使用的`wifi`库是通过二进制静态链接库所实现导致调试难度提高。最后个人能力也有有限,对嵌入式这一块还不算太了解以及缺乏相关调试设备。如果各位能帮忙解决我将不胜感激,我的联系方式为[timwcx@qq.com](mailto:tim-wcx@qq.com)。
查看更多
2
个回答
默认排序
按发布时间排序
bernard
2023-10-08
这家伙很懒,什么也没写!
rt_mq_send断言的问题,可以想办法提到线程中来运行,这样就不会有这个问题了。
RTT_逍遥
认证专家
2023-10-08
https://github.com/supperthomas
中断中可以试试用API rt_mq_send_interruptible
撰写答案
登录
注册新账号
关注者
0
被浏览
891
关于作者
TimWcx
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
潘多拉wifi管理例程中ap模式未启动
2
柿饼派通信时经常出现通信失败的问题
3
潘多拉开发板AP6181 WiFi问题
4
ARTPI中wifi和eth
5
RTT用esp8266无论是客户端还是服务端都会报一个错误
6
ART-PI 在运行Touchgfx时如果打开wifi就在初始化时有一段时间乱码
7
使用WIFI框架后,是否还需要勾选硬件Enable Ethernet选项?
8
再更改FAL分区信息后Wifi无法找到wifi_image
9
libwifi_6212 有源码吗?
10
怎样通过lwip获取当前地理位置信息
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
2
Rt-thread中OTA下载后,bootloader不搬程序
3
ulog 日志 LOG_HEX 输出时间改为本地日期时间
4
在RT-Thread Studio中构建前执行python命令
5
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
9
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
4
次点赞
Ghost_Girls
1
篇文章
7
次点赞
xiaorui
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部