ZiFi
ZiFi copied to clipboard
Зависание при попытке доступа в сеть
При нажатии на любую ссылку (музыка, картинка, страница - не важно) в примерно 1 случае из 20 загрузка зависает в самом начале и дальше уже никак не двигается пока не перезапустишь zifi.spg. Версия 7.32.
Проверяю на TSConf для MIST. Добавил в конфу задержку: пока fifo не заполнится до >= 191 байта или не пройдёт таймаут от момента последнего полученного по uart байта - выдаю в ZF_IFR всегда 0. Это помогло, т.е проблема где-то в работе с fifo.
Глянул в код - подозрения на fifo_inir - https://github.com/HackerVBI/ZiFi/blob/989a8e18cd8438849b49e27f28debd3f86960eb0/zifi.asm#L796 Тут из fifo всегда вычитывается в буфер 191 байт, даже если по факту в fifo меньше данных, т.е. оконцовка буфера может забиваться мусором. Так же не увидел обработки ситуации если начали вычитывать fifo в тот же момент, пока ESP ещё в процессе передачи ответа.
Например, ответ "CONNECT OK" zifi может прочитать как "CONN<куча мусора>", не найдёт ожидаемого ответа и сбросит буфер, после чего в следующий раз прочитает "ECT OK<куча мусора>".