ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
16 июня
1591716 Топик полностью
Nikolay_Po (Сегодня, 17:13, просмотров: 13) ответил klen на Давайте разбирастя, ув. кроты! контекст прерывания ( читай по сути исключения процессора ) и "что то где сохраняется контекст FreeRTOS" - веши перпендикулярные. 0) в FreeRTOS прерываний не существует 1) контекст исключений и контекст задач - ваще не одно и тоже 2) FreeRTOS + исключения(прерывания у меня работают с HPE 3) Где я балбес?
Есть вопросы. 1. Как при выходе из прерывания, при включённом HPE, если это прерывание само меняет контекст и само восстанавливает по своему разумению те же регистры, что восстанавливает и HPE, оставить контекст RTOS для задачи, а не восстановленое HPE состояние регистров на момент входа в прерывание? Я знаю только один способ - установить GIHWSTKNEN и выйти, предварительно сбросив MIE, чтобы защититься от вложенности. 

2. Как насчёт стека. Переключения стека при входе в разные прерывания? Если включено HPE и прерывается одно из прерываний RTOS, как быть с указателем стека? В оригинальном коде, в примерах, используется переключение стека mscratch. Но оно плохо подходит для вложенности. Как быть - пока не определился, не сложилось цельной картины. Вероятно, нужно сохранять отдельно указатель стека для прерываний, при входе в новое прерывание, его всегда приращивать сначала и лишь потом работать со стеком. А для прерываний RTOS, перед выходом, возвращать программный стек задачи. Как то так.