Mar_K 0 Posted May 17, 2021 (edited) · Report post Зравствуйте! Скрестил FreeRTOS, графическую либу LVGL и HAL (его использует пока только LVGL) на STM32f746 disco. Заметил следующее: 1) Если не вызывать диспетчер задач и поместить функцию lv_event_handler в бесконечный цикл, не включать DCache и ICache, то производительность одна. Если включить последние 2, то ожидаемо производительность возрастает в разы. 2) Если тотже цикл с вызвовом lv_event_handler поместить в таск и запустить диспетчер задач, то независимо от того включены ли кэши производительность низкая как при выключенных кэшах Пробовал различные комбинации размещения кучи LVGL и FreeRTOS : внутренняя память и внешняя. Драйвер дисплея (от LVGL) использует DMA с буфером во внешнем ОЗУ, работает на прерываниях. Дополнительно с помощью MPU отметил область буфера для DMA как некэшируемую. Один фиг! Еще пробовал разносить xPortSysTickHandler и Hal_IncTick на разные таймеры. Также пробовал lv_tick_inc помещать в отдельную задачу с задержкой. Вобщем, ничего не помогает -- тупо тормозит причем на простом GUI. В чем может быть причина? Правильно ли я понимаю, что причина может быть в том, что при переключении задач FreeRTOS инвалидирует кэш? Edited May 17, 2021 by Mar_K Quote Ответить с цитированием Share this post Link to post Share on other sites
mantech 0 Posted June 12, 2021 · Report post 17.05.2021 в 17:26, Mar_K сказал: Правильно ли я понимаю, что причина может быть в том, что при переключении задач FreeRTOS инвалидирует кэш? Зачем ей это?? Quote Ответить с цитированием Share this post Link to post Share on other sites