|
Пара вопросов по архитектуре |
|
|
|
May 12 2008, 10:12
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Если прерывание возникает во время команды безусловного перехода ( B ), в LR сохраняется адрес следующей команды Не волнуйтесь. Костыль там уже вставлен на уровне ядра  В LRirq сохраняется именно адрес комманды на который происходит переход, точнее, +4. Хотя точно сейчас посмотрю даташит. Да. Все правильно. Вот так надо возвращаться и из IRQ, и из FIQ. Код SUBS PC, R14, #4
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 12 2008, 10:14
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(InsolentS @ May 12 2008, 12:45)  Есть ещё одна проблема, не стал создавать новую ветку. Если прерывание возникает во время команды безусловного перехода ( B ), в LR сохраняется адрес следующей команды, а не той куда указывает B, т.е. прерывание как бы возникает по середине команды перехода, когда она уже загрузилась в конвейер, но ещё не выполнилась. Чувствую что надо поставить NOP чтобы прогнать конвейер, но не пойму где, посоветуйте пожалуйста как решить проблему эту  Либо компилятор вставит сам нужные команды, либо Вы вручную вставляете что-то типа Код @ Adjust and save LR_irq to IRQ stack sub lr, lr, #4 stmdb sp!, {r0, r1, lr} @ Save IRQ mode registers ........... @ Restore adjusted LR_irq from IRQ stack directly in the PC ldmia sp!, {r0, r1, pc}^ @ Restore IRQ mode registers Компиляторы имеют спец-средства для определения обработчика прерывания.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|