Page 1 of 1
[已解决] bootloader内串口接收中断无法进入
Posted: Tue Aug 09, 2022 3:48 am
by Kx_Kevin
Hi
我在ubuntu下编译IDF-4.4.2。 修改了uart.c内的接口来适配外设串口的运行,发送没有问题,使用abup_boot_uart_init来初始化,abup_uart_tx_chars可以发送。
但接收到数据设备就立刻宕机,log文件导出放在附件中,修改的abup_custom_uart.c也已经提供。
烦请检查一下log是否能看出什么原因导致,以及我在中断方面是否有配置不对的地方,非常感谢。
期待回复
Re: bootloader内串口接收中断无法进入
Posted: Tue Aug 09, 2022 7:17 am
by ESP_Gargamel
直接把包含这些文件的 bootloader 目录打包给出来,其他要改的地方也一并说明。
Re: bootloader内串口接收中断无法进入
Posted: Tue Aug 09, 2022 7:36 am
by Kx_Kevin
Hi
感谢答复
附件已提供,替换component中的bootloader两个文件夹,abup_custom_xx.c文件都在bootloader_support目录内,已经没有其他需要修改的boot内容,请查收。
Re: bootloader内串口接收中断无法进入
Posted: Wed Aug 10, 2022 3:18 am
by ESP_Gargamel
串口中断是可以进入的,问题是你串口 isr 传进来的参数是 NULL,导致后面空指针了。
Code: Select all
r=abup_uart_isr_register(uart_num, abup_uart_group_isr_callback, NULL);
改成
r=abup_uart_isr_register(uart_num, abup_uart_group_isr_callback, &abup_uart_obj[uart_num]);
Re: bootloader内串口接收中断无法进入
Posted: Wed Aug 10, 2022 6:34 am
by Kx_Kevin
Hi
非常感谢,的确是这个问题。
我还发现现在这样的配置,不知道是哪里不太对,每过固定的10S设备就会重启,检查了一下喂狗接口发现外部文件无法调用,所以也不知道是不是看门狗导致。 修改了串口txfifo和rxfifo的thresh值从10改到15,也没有效果。
请问这是怎么回事呢?
Re: bootloader内串口接收中断无法进入
Posted: Wed Aug 10, 2022 7:41 am
by ESP_Gargamel
你那个 abup_timer_callback_cnt 要到 30 才会退出 while,这导致触发 RTC WDT 了,你要把 Bootloader config -> Timeout for RTC watchdog (ms) 改大,比如 30000。
Re: bootloader内串口接收中断无法进入
Posted: Wed Aug 10, 2022 8:15 am
by Kx_Kevin
Hi
感谢答复,我了解了。那除了你说的修改Bootloader config -> Timeout for RTC watchdog (ms)这样的固定时长,有没有喂狗的接口呢?在哪里怎么用?
因为bootloader里面的流程实际时间不可控,固定时长对我来说不现实。
Re: bootloader内串口接收中断无法进入
Posted: Wed Aug 10, 2022 9:14 am
by ESP_Gargamel
参看 esp_flash_encrypt_region 里面的喂狗。