esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

eastworld
Posts: 13
Joined: Tue Jun 08, 2021 9:29 am

esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby eastworld » Mon Aug 02, 2021 1:51 am

偶尔会出现这个错误,是什么原因导致的呢?
Attachments
捕获.PNG
捕获.PNG (35.13 KiB) Viewed 10633 times

ESP_XieWX
Posts: 27
Joined: Fri Jun 22, 2018 7:39 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby ESP_XieWX » Mon Aug 02, 2021 3:31 am

您好,请问您那里是如何复现的呢? 有没有什么规律?

eastworld
Posts: 13
Joined: Tue Jun 08, 2021 9:29 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby eastworld » Mon Aug 02, 2021 3:52 am

wifi和蓝牙都已经开启,有一个语音芯片是一线模式工作模式,通信之前,调用taskENTER_CRITICAL(mux)禁用中断的时候,偶尔会出现这个问题呢。

ESP_XieWX
Posts: 27
Joined: Fri Jun 22, 2018 7:39 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby ESP_XieWX » Mon Aug 02, 2021 3:54 am

复现的代码,方便提供吗?

eastworld
Posts: 13
Joined: Tue Jun 08, 2021 9:29 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby eastworld » Mon Aug 02, 2021 4:01 am

/*** voice.c **/

static portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;

void ja_enter_critical(void)
{
taskENTER_CRITICAL(&mux);
}

void ja_exit_critical(void)
{
taskEXIT_CRITICAL(&mux);
}

void line_1A_WT88F(uint8_t data)
{
int i = 0x00;

voice_data_set(0x00);
voice_delay(5000);


sched_info("_j<1>\n");

ja_enter_critical();
for (i = 0x00; i < 0x08; i++) {
if (data&0x01) {
voice_data_set(0x01);
voice_delay(600);
voice_data_set(0x00);
voice_delay(200);
} else {
voice_data_set(0x01);
voice_delay(200);
voice_data_set(0x00);
voice_delay(600);
}
data = data >> 0x01;
}
voice_data_set(0x01);
ja_exit_critical();
sched_info("_j<2>\n");
}

是基于blecent的基础例子构建的代码,蓝牙任务的优先级与播放语音的任务优先级时一样。

ESP_XieWX
Posts: 27
Joined: Fri Jun 22, 2018 7:39 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby ESP_XieWX » Mon Aug 02, 2021 8:21 am

可能是锁中断的时间太久了
造成蓝牙底层业务没得到及时的执行

eastworld
Posts: 13
Joined: Tue Jun 08, 2021 9:29 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby eastworld » Mon Aug 02, 2021 9:07 am

嗯,感觉也是,去掉锁代码就很久没有浮现那个问题了,不过又出现了另外一个问题 ,此时wifi作为station已经正常工作,蓝牙一直在扫描, 过段时间出现 : assert rwble.c 261, param 00020000 00000000
Attachments
捕获.PNG
捕获.PNG (50.22 KiB) Viewed 10568 times

eastworld
Posts: 13
Joined: Tue Jun 08, 2021 9:29 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby eastworld » Tue Aug 03, 2021 11:24 am

蓝牙扫描时设置为被动扫描就没问题哦,设置为主动扫描就会出现这个问题。

ESP_XieWX
Posts: 27
Joined: Fri Jun 22, 2018 7:39 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby ESP_XieWX » Fri Aug 06, 2021 1:38 am

1. 扫描结果上报之后,有没有在 callback 里面做太多的耗时操作?
2. 有没有对flash的操作?

eastworld
Posts: 13
Joined: Tue Jun 08, 2021 9:29 am

Re: esp32c3 出现 assert sch_arb.c 890, param 00000000 00000000

Postby eastworld » Tue Aug 10, 2021 6:45 am

嗯,之前也发现flash操作会对蓝牙有影响, flash操作时,关掉蓝牙扫描就没事了。蓝牙事件回调函数没有很耗时的操作,这边发现跟扫描参数有关系 将扫描之间间隔itvl设置为BLE_GAP_SCAN_SLOW_INTERVAL1(1.28 秒),扫描windows设置为BLE_GAP_SCAN_SLOW_WINDOW1(11.25 ms)时就不会出现这个问题。

Who is online

Users browsing this forum: No registered users and 22 guests