реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Пара вопросов по архитектуре
InsolentS
сообщение May 9 2008, 23:18
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Цитата(Rst7 @ May 10 2008, 01:31) *
Без нее будут регистры супервизора, в ней самая соль.

А, теперь дошло, спасибо beer.gif


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
InsolentS
сообщение May 12 2008, 09:45
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Есть ещё одна проблема, не стал создавать новую ветку.
Если прерывание возникает во время команды безусловного перехода ( B ), в LR сохраняется адрес следующей команды, а не той куда указывает B, т.е. прерывание как бы возникает по середине команды перехода, когда она уже загрузилась в конвейер, но ещё не выполнилась. Чувствую что надо поставить NOP чтобы прогнать конвейер, но не пойму где, посоветуйте пожалуйста как решить проблему эту 07.gif


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 12 2008, 10:05
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Все правильно: в LR_irq сохраняется адрес возврата + 0x04, в обработчике адрес модифицируется. Никаких NOP'ов не нужно.
Go to the top of the page
 
+Quote Post
Rst7
сообщение May 12 2008, 10:12
Сообщение #19


Йа моск ;)
******

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



Цитата
Если прерывание возникает во время команды безусловного перехода ( B ), в LR сохраняется адрес следующей команды


Не волнуйтесь. Костыль там уже вставлен на уровне ядра wink.gif В LRirq сохраняется именно адрес комманды на который происходит переход, точнее, +4. Хотя точно сейчас посмотрю даташит.

Да. Все правильно. Вот так надо возвращаться и из IRQ, и из FIQ.
Код
SUBS PC, R14, #4


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
InsolentS
сообщение May 12 2008, 10:13
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 414
Регистрация: 8-06-06
Пользователь №: 17 897



Да, спасибо большое, разобрался :-)
Более внимательно прочтение даташита на ядро показало, что когда возвращаемся из PABT, FIQ, IRQ, надо из LR вычитать 4, а если из DABT то 8.


--------------------
Курильщик даташитов со стажем
Go to the top of the page
 
+Quote Post
amw
сообщение May 12 2008, 10:14
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(InsolentS @ May 12 2008, 12:45) *
Есть ещё одна проблема, не стал создавать новую ветку.
Если прерывание возникает во время команды безусловного перехода ( B ), в LR сохраняется адрес следующей команды, а не той куда указывает B, т.е. прерывание как бы возникает по середине команды перехода, когда она уже загрузилась в конвейер, но ещё не выполнилась. Чувствую что надо поставить NOP чтобы прогнать конвейер, но не пойму где, посоветуйте пожалуйста как решить проблему эту 07.gif

Либо компилятор вставит сам нужные команды, либо Вы вручную вставляете что-то типа
Код
@ 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.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 14:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.02931 секунд с 7
ELECTRONIX ©2004-2016