По-моему, это господин
ART_ME тут насылает волны флуда, всунувшись со своей RTOS в тему, не поняв её (темы) смысла. Зачем RTOS, если нет проблем с тайм-менеджментом в проге, но есть проблема быстродействия отдельных функций? RTOS не решает проблему быстродействия, она решает проблему тайм-менеджмента и обмена между задачами.
ART_ME, просто изучите более углубленно эту самую RTOS, чтобы не пороть пурги, по-русски выражаясь. Извините за грубость, но пока что вы в этой RTOS нихренашеньки не петрите, кроме тупого "поставил и чето накрутил". И чето походу вы как-то не очень-то врубаетесь в толкование термина "задачи реального времени". Поскольку этот термин несколько сокращен. Полностью он называется "задачи реального МАСШТАБА времени". То есть дается некое дискретное значение квантования этого времени. А не исполняется "прям вот здесь и сейчас".
Задача топикстартера вполне решается с помощью прерываний для тех процессов, которые требуют скорейшей обработки. Прерывания для того и были придуманы. Всё, что медленное и неважное, остается выполняться в главном цикле. Всё, что срочное, помещается в прерывания.
Ну и типовая проблема ардуино-скетчей - медленные обращения к входам/выходам из-за универсальных тяжеловесных для этого функций.
Вы ответили на кучу вопросов, которые Вам никто не задавал.
А вы сами со своей RTOS на какой вопрос ответили? Вначале посмотрите на себя, потом других ругать будете.
временем чтения данных из области Flash
Если медленно читается из области флеша, перенесите требуемые данные в SRAM микроконтроллера еще до начала работы с ними. Это называется кэшированием данных и так принято поступать всегда в подобных случаях.