|
|
  |
startup asm |
|
|
|
Jan 22 2009, 22:39
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(aaarrr @ Jan 23 2009, 00:23)  В отладочном варианте случился аборт->выдали диагностику->зависли. Смотрим, что там в консольке вывалилось, что на светодиодах в устройстве осталось. В любом варианте вываливается в аборт, если при этом обраруживается подключенный терминал, то в консоле и остается. Если терминал не подключен, то другие варианты сохранения и перезагрузка. При подключенном терминале поведение при вылете на аборт можно с него-же и изменить. Конфигурация системы обычно тоже есть.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 23 2009, 15:38
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Как-то разлаписто, я бы сказал  Зачем сразу полностью инициализировать AIC и прописывать все возможные обработчики прерываний? Понадобилось какому-нибудь модулю прерывание - в модуле инициализировали AIC, добавили (если нужно, конечно) wrapper и т.д. Цитата(zltigo @ Jan 23 2009, 18:33)  Кроме упражнений в copy-paste c абсолютно ненужной, точнее вредной ASM обертки более просто ничего нет  Asm-обертка уж точно не вредная, хотя нужна, конечно, далеко не всегда, это верно.
|
|
|
|
|
Jan 23 2009, 15:49
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Jan 23 2009, 18:42)  Ненужные вещи вредны. Вложенные прерывания бывают нужны. Да, далеко не всегда, но бывают. Называть код вредным только потому, что он в каком-то случае не нужен, не стоит. Но в стартапе ему, конечно, делать совершенно нечего, согласен. Цитата(sergey sva @ Jan 23 2009, 18:46)  Сразу все не будет инициализироваться только то где будет стоять единица,все остальное препроцессор выбросит. .equ IRQ_SYS_ON, 0 @ 1 инициализировать 0 нет У Вас все прерывания будут вложенными? Сильно сомневаюсь. Скорее всего, вообще будут задействованы 2-5 шт. Так зачем было все это писать?
|
|
|
|
|
Jan 23 2009, 16:01
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sergey sva @ Jan 23 2009, 18:57)  чтобы немного с ассемблером разобраться, Copy-paste - не лучший метод написания программы даже тогда, когда со всем разобрались. Для освоения просто вредный. Цитата(sergey sva @ Jan 23 2009, 18:57)  Да и вдруг еще кому он пригодится(мало ли где и какие и когда прерывания понадобятся а здесь вкл и все), А если понадобятся не вложенные прерывания (как чаще всего и бывает) - что делать будете?
|
|
|
|
|
Jan 23 2009, 16:41
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
> не нужна вообще Если использовать стандартное оформление void handler(void) __attribute__ ((interrupt ("IRQ"))); А если оставить этот же стартап но использовать вот такой код в обработчике? Код sub r14, r14, #0x04 stmfd sp!, {r0-r3,r14} bl irq_handler ldmfd sp!, {r0-r3,pc}^
|
|
|
|
|
Jan 23 2009, 16:44
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(aaarrr @ Jan 23 2009, 18:20)  В случае не вложенных прерываний обертка не нужна вообще. Да и сами вложенные прерывания почти ненужная вещь. Делал за всю жизнь ровно два раза. Один раз по причине того, что система базировалась на 80286 + MSDOS и возможности других реализаций были ограничены. Но в этом случае все делалось посерьезнее, например были собственный, а не наследуемые стековые фреймы. Второй раз, когда за два дня делалась примитивная штучка и лобовое решение являлось вполне приемлимым. Для ARM7 с его штатными IRQ и FIQ смысл организации вложеных прерываний практически свидетельствует о банальном бездумом подходе к делу. Цитата(sergey sva @ Jan 23 2009, 18:41)  А если оставить этот же стартап но использовать вот такой код в обработчике? Для чего, блин......
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|