ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
23059 Топик полностью
MALLOY (02.03.2005 10:40, просмотров: 1) ответил КонстантинТ на Все смешалось в доме Облонских
Ответ: Не совсем Ядро АРМ имеет 2 входа прерываний FIQ и IRQ, к этим входам подключет приоритетный котроллер прерываний. В идеалогии ядра лежит то что FIQ имеет приоритет над IRQ. Тобиш когда приходит FIQ сбрасываются флаги разрешения прерываний FIQ и IRQ, при выходе из прерывания они востанавливаются.При входе в IRQ запрещентся только IRQ, а FIQ разрешен, следовательно он может быть вызван. Вот и вытикает что FIQ имеет приоритет. Теперь о вложенности. Когда ядро вошло в прерывание оно аппаратно збросило флаги разрешение. Но никто тебе не запрещеит их заново разрешить. Вот и получится тебе вложенность. Но тут много граблей начинается, в случаее с АВР все просто зделал стек по больше и все. У АРМа на каждое прерывание свой стек+копии регистров+CPSR о всем этом тебе прийдется заботится самому. На АСМе я этого не делал, а в ИАР все очень просто - просто нажуно к примеру здеолать так __irq __nested __arm void interrup_handler(void); С FIQ прерываниями такого делать нельзя так как он сохраняет больше регистров. Но на АСМе думаю можно и FIQ зделать вложенными. Но это нарушеает идеологию и это полный геморой.