在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

iincity
Posts: 23
Joined: Thu Sep 02, 2021 6:27 am

在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby iincity » Mon Mar 27, 2023 6:32 am

环境:ESP-IDF 4.4, 硬件:ESP32-S3-USB-OTG,插入TF卡,TF卡为fat文件系统
具体操作: 根据给定的目录名称列举目录下(不递归)的目录及文件;
TF卡里面的根目录下有两个目录
/-
未知
DIR230325_0925_未知车牌

两个子目录里面都有同样的5个文件
GBT19056_未知车牌_2100.VDR
GBT19056_未知车牌_2200.VDR
GBT19056_未知车牌_2300.VDR
GBT19056_未知车牌_2400.VDR
GBT19056_未知车牌_2500.VDR

在列举"未知"目录一切正常;
在列举"DIR230325_0925_未知车牌"目录时候,会阻塞导致
task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:

经过追踪vfs_fat_readdir_r 最后一次调用已经通过
if (fat_dir->filinfo.fname[0] == 0) {
// end of directory
ESP_LOGI(TAG, "vfs_fat_readdir_r end of directory");
*out_dirent = NULL;
return 0;
}
返回,经过这个之后就会触发
task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:

ESP_Junru
Posts: 49
Joined: Tue Jul 12, 2022 6:26 am

Re: 在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby ESP_Junru » Tue Mar 28, 2023 7:24 am

可能是 readdir 长时间运行导致看门狗未及时置位。
1. 将看门狗的触发时间调长
2. 将看门狗关闭
3. 将 readdir 任务优化,并穿插 vTaskDelay

iincity
Posts: 23
Joined: Thu Sep 02, 2021 6:27 am

Re: 在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby iincity » Tue Mar 28, 2023 8:02 am

可能是 readdir 长时间运行导致看门狗未及时置位。
1. 将看门狗的触发时间调长
2. 将看门狗关闭
3. 将 readdir 任务优化,并穿插 vTaskDelay

请问:关于调整主任务看门狗时间及关闭的,我找了半天没有确认是哪一个 :( ;


将 readdir 任务优化,并穿插 vTaskDelay

这个还真没有想到有什么方法,读一个目录在上层如何进行穿插 :(

iincity
Posts: 23
Joined: Thu Sep 02, 2021 6:27 am

Re: 在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby iincity » Tue Mar 28, 2023 1:02 pm

你上面的意思是在menuconfig里面进行配置是吗?我以为是可以通过调用接口来动态进行调整 :(

iincity
Posts: 23
Joined: Thu Sep 02, 2021 6:27 am

Re: 在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby iincity » Wed Mar 29, 2023 12:25 am

ESP_Junru wrote:
Tue Mar 28, 2023 7:24 am
可能是 readdir 长时间运行导致看门狗未及时置位。
1. 将看门狗的触发时间调长
2. 将看门狗关闭
3. 将 readdir 任务优化,并穿插 vTaskDelay
经过调整时长测试,结果是一样的,不是时长引起的,而是阻塞引起的。如果是时长引起的话不会每次都是同一个位置 :( :( :( 。估计是陷入循环不出来了.能不能查一下代码看一下?
Last edited by iincity on Wed Mar 29, 2023 7:22 am, edited 1 time in total.

ESP_Junru
Posts: 49
Joined: Tue Jul 12, 2022 6:26 am

Re: 在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby ESP_Junru » Tue Apr 11, 2023 9:52 am

看门狗时间延长能成功获取到文件吗?还是写了个死循环,卡死在里面了
不建议采用中文路径

iincity
Posts: 23
Joined: Thu Sep 02, 2021 6:27 am

Re: 在主任务里面使用readdir导致task_wdt: Task watchdog got triggered!!!

Postby iincity » Thu Apr 13, 2023 1:40 am

ESP_Junru wrote:
Tue Apr 11, 2023 9:52 am
看门狗时间延长能成功获取到文件吗?还是写了个死循环,卡死在里面了
不建议采用中文路径
不能获取到文件,我认为是你们的库有这个问题。我说的循环是你们库里面的循环,不是应用层。

Who is online

Users browsing this forum: No registered users and 96 guests