BLE连接成功并运行数小时后系统重启

fftust
Posts: 3
Joined: Mon Jul 22, 2019 6:56 am

BLE连接成功并运行数小时后系统重启

Postby fftust » Fri Aug 28, 2020 2:33 am

我的系统是基于micropython+espidf(V3.3)。当esp32作为从机被其他设备连接上之后, 一般运行几个小时我的系统就会出现重启或者其他不可能出现的问题。 比如micropython报这样的错误
File "neurons_protocol/neurons_engine.py", line 353, in neurons_request
File "neurons_protocol/neurons_engine.py", line 221, in common_neurons_command_request
AttributeError: 'bytearray' object has no attribute 'append'

重启时,backtrace也没有打印出有效信息, 类似这样
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x40269a07 PS : 0x00060130 A0 : 0x800ea269 A1 : 0x3fafe720
A2 : 0x3fafe740 A3 : 0x00000028 A4 : 0x00060520 A5 : 0x3ffc46a8
A6 : 0x3ffc4aa8 A7 : 0x0000b2b5 A8 : 0x00000000 A9 : 0x800e00cc
A10 : 0x800e00cb A11 : 0x3ffcbf08 A12 : 0x8009b94b A13 : 0x3fb0db70
A14 : 0x00000003 A15 : 0x00060023 SAR : 0x00000010 EXCCAUSE: 0x0000001c
EXCVADDR: 0x800e00cb LBEG : 0x40094ee8 LEND : 0x40094ef3 LCOUNT : 0x00000000

ELF file SHA256: 0000000000000000000000000000000000000000000000000000000000000000

Backtrace: 0x40269a07:0x3fafe720

系统描述:
1. micropython使用了spiram作为其heap使用。
2. micropython位于core1, 没有其他多余线程。


我的配置信息如下:
# MicroPython on ESP32, ESP IDF configuration with SPIRAM support
# The following options override the defaults

CONFIG_IDF_TARGET="esp32"

# Application manager
CONFIG_APP_EXCLUDE_PROJECT_VER_VAR=y
CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y

# Bootloader config
CONFIG_LOG_BOOTLOADER_LEVEL_NONE=y
CONFIG_LOG_BOOTLOADER_LEVEL=0

# log
CONFIG_LOG_DEFAULT_LEVEL_NONE=y
CONFIG_LOG_DEFAULT_LEVEL=0

# ESP32-specific
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
CONFIG_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
CONFIG_SPIRAM_USE_MEMMAP=y
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=n
CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=n
CONFIG_ESP32_XTAL_FREQ_AUTO=y

# Power Management
CONFIG_PM_ENABLE=y

# FreeRTOS
CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2
CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK=y
CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
# UDP
CONFIG_PPP_SUPPORT=y
CONFIG_PPP_PAP_SUPPORT=y
CONFIG_PPP_CHAP_SUPPORT=y

CONFIG_TCPIP_LWIP=y

CONFIG_BT_ENABLED=y
CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY=y
CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY=
CONFIG_BTDM_CONTROLLER_MODE_BTDM=
CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y
CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
CONFIG_BT_BLUEDROID_PINNED_TO_CORE_1=y
CONFIG_BT_BLUEDROID_PINNED_TO_CORE=1
CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST=y
CONFIG_BT_STACK_NO_LOG=y
CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY=y

CONFIG_FREERTOS_HZ=500
CONFIG_TIMER_TASK_PRIORITY=1

CONFIG_INT_WDT_CHECK_CPU0=n
CONFIG_INT_WDT_CHECK_CPU1=n
CONFIG_TASK_WDT_CHECK_IDLE_TASK=n

CONFIG_ESP32_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_CACHE_WORKAROUND=y
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
CONFIG_SPIRAM_USE_MALLOC=y
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST=y

CONFIG_SPIRAM_SPEED_80M=y
CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
CONFIG_ESPTOOLPY_FLASHFREQ="80m"
CONFIG_SPIRAM_OCCUPY_VSPI_HOST=y

# CONFIG_FREERTOS_UNICORE=y

# wifi
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=10


目前发现的具体情况是,当BLE开启但是不连接时, 一切正常。但是一旦连接之后就会出问题(即使没有数据传输也会出问题)。
有没有人知道,蓝牙连接后会对系统产生哪些影响。

顺带说一下, 我单独测试蓝牙功能(无micropython)或者单独测试micropython都没有问题。 蓝牙和micropython没有任何代码上的联系。

jamesxie
Posts: 15
Joined: Fri Jun 22, 2018 7:39 am

Re: BLE连接成功并运行数小时后系统重启

Postby jamesxie » Thu Oct 29, 2020 7:42 am

看log,是野指针,这一点可以检查下应用层的代码,应该是应用代码里那里访问越界了

Who is online

Users browsing this forum: No registered users and 4 guests