Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ESP32-C3_RISC-V
wifi
蓝牙BLE
ESP32C3芯片WIFI和BLE驱动问题
发布于 2023-10-08 16:28:59 浏览:969
订阅该版
[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`等函数,这些函数由于使用自旋锁等组件需要关闭中断进行操作从而使得这些函数不能在中断环境中进行调用。 报错截图:  ### `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)。
查看更多
3
个回答
默认排序
按发布时间排序
qq1078249029
2025-02-19
这家伙很懒,什么也没写!
我遇到了 rt_mq_send等函数在ISR中运行的问题 这个问题并找到原因了,但是解决起来很麻烦 https://club.rt-thread.org/ask/article/27690a93a4369e76.html 简而言之,为了兼容乐鑫魔改的freertos,rtt自己写了一个兼容层,但是rtt使用驱动时会对资源加锁,这在兼容层是可以保证对资源访问需要解锁的,但是在兼容层之下的乐鑫的freertos则不能保证访问资源必须加锁,他们有他们的一套逻辑。于是就在乐鑫那边出了问题
bernard
2023-10-08
这家伙很懒,什么也没写!
rt_mq_send断言的问题,可以想办法提到线程中来运行,这样就不会有这个问题了。
RTT_逍遥
认证专家
2023-10-08
https://github.com/supperthomas
中断中可以试试用API rt_mq_send_interruptible
撰写答案
登录
注册新账号
关注者
0
被浏览
969
关于作者
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
MCAX-156 ADC测评
2
【FRDM-MCXA156测评】- CherryUSB与hid鼠标设备模仿
3
【FRDM-MCXA156测评】- 硬件SPI模块
4
【NXP-MCXA156】恩智浦A156上的 IIC(硬件) 实践
5
【FRA156测评DM-MCX】- PWM模块
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
GD32
ADC
flashDB
编译报错
socket
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
出出啊
1520
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
178
次被采纳
crystal266
551
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部