|
startup asm |
|
|
|
Jan 14 2009, 14:12
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Объясните как работает этот кот, с ассемблером плохо знаком, сейчас читаю, но не совсем все понятно. А именно инструкция ldr записывает значение находящееся по адресу RESET_ADDR , в регистр pc, переменная RESET_ADDR не где не объявляется так же как и pc ? код взят отсюда : http://electronix.ru/forum/index.php?act=a...st&id=16569Код ldr pc, RESET_ADDR ldr pc, UNDEF_ADDR ldr pc, SWI_ADDR ldr pc, PREFETCH_ABORT_ADDR ldr pc, DATA_ABORT_ADDR .word 0 ldr pc, IRQ_ADDR ldr pc, FIQ_ADDR RESET_ADDR: .word RESET_handler UNDEF_ADDR: .word UNDEF_handler SWI_ADDR: .word SWI_handler PREFETCH_ABORT_ADDR: .word PREFETCH_ABORT_handler DATA_ABORT_ADDR: .word DATA_ABORT_handler .word 0 IRQ_ADDR: .word IRQ_handler FIQ_ADDR: .word FIQ_handler
|
|
|
|
|
 |
Ответов
|
Jan 19 2009, 22:10
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Сделайте замечания что, тут я не правильно понял в irq обработчике, Еще вопрос по fiq , теневой регистр, вроде не мало прочел, не где это не встречалось , это R8 -R14 что в них сохраняется, тоже что и RL ? CODE @---------------------------------------------------------------------------------------- IRQ_handler: sub lr, lr, #4 @ LR_IRQ - 4 stmfd sp!, {r0, r3, lr} @ сохранить в стеке IRQ, регистры R0 R1 и LR ldr r0, = AIC_BASE @ чтение из AIC_BASE и запись в регистр R0 ldr r1, [r0, #AIC_IVR] @ чтение из r0 + #AIC_IVR и запись в регистр R1 вектора прерываний mrs r0, SPSR @ Запись в регистр R0 Сохраненого Статуса SPSR stmdb sp!, {r0} @ сохранить в стеке регистр R0 (статус до прервания) mrs r0, CPSR @ Запись в регистре R0, и возврат в режим который был до прерывания orr r0, r0, #SYS_MODE @ Логическое ИЛИ регистра R0 с #SYS_MODE с сохранением в R0 msr CPSR, r0 @ переключение ядра, в Системный режим stmdb sp!, {r2, r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr}@ сохранить в стеке SyS регистры r2, r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr mov lr, pc @ Копировать в LR регистр, регистр r14 + 0х04 bl r1 @ Переход на вектор программы обработки прерывания ldmia sp!, {r2, r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr}@ Прочитать из стека регистры r2, r3, r4, r5, r6, r7, r8, r9, r10, fp, ip, lr mrs r0, CPSR @ сохранить в регистре R0 текущий статус bic r0, r0, #SYS_MODE @ Логическая операция AND NOT регистра R0 и #SYS_MODE orr r0, r0, #IRQ_MODE @ Логическое ИЛИ регистра R0 и #IRQ_MODE msr CPSR, r0 @ Запись в регистр CPSR регистр R0 и переключение ядра в IRQ_mode, ldr r0, = AIC_BASE @ чтение из AIC_BASE и запись в регистр R0 (базовый адрес AIC) str r0, [r0, #AIC_EOICR] @ сохранить R0 по адресу R0 + #AIC_EOICR и сброс прерывания ldmia sp!, {r0} @ чтение из стека и запись в R0 (статус до прерывания) msr SPSR, r0 @ запись в SPSR регистр R0 (возврат статуса до прерывания) ldmia sp!, {r0, r3, pc}^ @ запись в PC значения сохраненого, в момент возникновения прерывания и востановление регистров r0 r3, обновить CPSR @----------------------------------------------------------------------------------------
|
|
|
|
|
Jan 19 2009, 22:17
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sergey sva @ Jan 20 2009, 01:10)  Сделайте замечания что, тут я не правильно понял в irq обработчике,  Вроде все правильно поняли, только вот обработчик - дрянь  Цитата(sergey sva @ Jan 20 2009, 01:10)  Еще вопрос по fiq , теневой регистр, вроде не мало прочел, не где это не встречалось , это R8 -R14 что в них сохраняется, тоже что и RL ? Теневые регистры FIQ - R8-R12 (R13 и R14 и так у всех свои). В них ничего не сохраняется, они просто существуют только в режиме FIQ, из других режимов к ним доступа нет.
|
|
|
|
Сообщений в этой теме
sergey sva startup asm Jan 14 2009, 14:12 aaarrr RESET_ADDR - это метка, зачем ее объявлять еще? Jan 14 2009, 14:14 gotty Предположу что это тааблица векторов прерываний
и... Jan 14 2009, 14:35 sergey sva В один регистр PC, по очереди запишутся адреса мет... Jan 14 2009, 15:56 zltigo Цитата(sergey sva @ Jan 14 2009, 18:56) В... Jan 14 2009, 16:26  sergey sva Цитата(zltigo @ Jan 14 2009, 19:26) да у... Jan 14 2009, 17:17   aaarrr Цитата(sergey sva @ Jan 14 2009, 20:17) н... Jan 14 2009, 17:25 aaarrr Цитата(sergey sva @ Jan 14 2009, 18:56) В... Jan 14 2009, 16:28 sergey sva Если правильно понял, код:
.align 4
UNDEF_s... Jan 14 2009, 18:39 zltigo Цитата(sergey sva @ Jan 14 2009, 21:39) с... Jan 14 2009, 18:46 sergey sva ЦитатаТак и будете заниматься гаданиями?
с удоволь... Jan 14 2009, 19:35 sergeeff Описание ассемблера: http://infocenter.arm.com/he... Jan 14 2009, 20:05 sergey sva Наверно опять будет глупый вопрос, для чего нужно... Jan 15 2009, 19:58 zltigo Цитата(sergey sva @ Jan 15 2009, 22:58) д... Jan 15 2009, 20:01 sergey sva С этим кажется разобрался, ядро настраивается отде... Jan 15 2009, 21:24 aaarrr Цитата(sergey sva @ Jan 16 2009, 00:24) Н... Jan 15 2009, 21:47  sonycman Цитата(aaarrr @ Jan 16 2009, 01:47) Стек ... Jan 17 2009, 12:24   zltigo Цитата(sonycman @ Jan 17 2009, 14:24) Ско... Jan 17 2009, 12:34 sergey sva ЦитатаP.S. Пожалуйста, используйте знаки препинани... Jan 15 2009, 22:05 Сергей Борщ Цитата(sergey sva @ Jan 16 2009, 00:05) Г... Jan 16 2009, 06:34 sergey sva Буду читать. Мне еще не понятен один момент по раб... Jan 16 2009, 12:37 aaarrr Цитата(sergey sva @ Jan 16 2009, 15:37) В... Jan 16 2009, 13:22 sergey sva Как разместить метку, на асме по адресу 0x18 или 0... Jan 16 2009, 19:11 zltigo Цитата(sergey sva @ Jan 16 2009, 22:11) К... Jan 16 2009, 19:16 sergey sva Цитатастроительство дома без фундамента sad.gif
Ни... Jan 16 2009, 19:33 aaarrr Цитата(sergey sva @ Jan 16 2009, 22:33) н... Jan 16 2009, 20:10 sergey sva Если правильно понимаю? После перехода PC на адре... Jan 16 2009, 22:18 aaarrr Цитата(sergey sva @ Jan 17 2009, 01:18) Е... Jan 16 2009, 22:32  zltigo Цитата(aaarrr @ Jan 17 2009, 00:32) произ... Jan 16 2009, 22:44 sergey sva Как обрабатывать исключительные ситуации, например... Jan 17 2009, 16:04 aaarrr Ссылка с рекомендациями. Для data abort и undefine... Jan 17 2009, 18:21 sergey sva В функции prefetch_abort_handler_c должен быть ... Jan 17 2009, 18:48 aaarrr Цитата(sergey sva @ Jan 17 2009, 21:48) В... Jan 17 2009, 20:19 sergey sva Понятно. Разбираюсь еще с ассемблером, появился во... Jan 17 2009, 21:36 aaarrr Флаг S в команде указывает процессору, что нужно у... Jan 17 2009, 21:45 sergey sva Если правильно понял:
mov R1 , #0xFF
ands R1 , R1,... Jan 17 2009, 22:11 aaarrr Цитата(sergey sva @ Jan 18 2009, 01:11) l... Jan 17 2009, 22:21 sergey sva Виноват, не корректно поставил вопрос.
Если прави... Jan 17 2009, 22:29 aaarrr Цитата(sergey sva @ Jan 18 2009, 01:29) Е... Jan 17 2009, 22:33 sergey sva Что проверяет _check_mapping: , для чего сохранят... Jan 18 2009, 13:38 aaarrr check_mapping пишет 0x12345678 по адресу 0x200014 ... Jan 18 2009, 13:44 sergey sva Объясните, пожалуйста
Код AREA code1, DATA, READ... Jan 18 2009, 16:08 aaarrr Цитата(sergey sva @ Jan 18 2009, 19:08) О... Jan 18 2009, 16:30 sergey sva Поправите если что не так понял. Изучаю доку, но н... Jan 18 2009, 18:10 aaarrr Код sub r14, r14, #0x04 @ LR_abt = LR_abt - 0... Jan 18 2009, 19:28 sergey sva После чтения SPSR_c , устанавливаются биты #F_B... Jan 19 2009, 18:13 aaarrr Цитата(sergey sva @ Jan 19 2009, 21:13) П... Jan 19 2009, 18:23 sergey sva Вам, случайно не встречался пример обработки FIQ ... Jan 19 2009, 20:56 aaarrr Цитата(sergey sva @ Jan 19 2009, 23:56) В... Jan 19 2009, 20:59 sergey sva >вот обработчик - дрянь
где бы посмотреть как о... Jan 19 2009, 22:21 aaarrr Цитата(sergey sva @ Jan 20 2009, 01:21) г... Jan 19 2009, 22:42 sergey sva В инструкции msr SPSR_cxsf, r14 есть флаги ... Jan 20 2009, 17:15 aaarrr Цитата(sergey sva @ Jan 20 2009, 20:15) к... Jan 20 2009, 17:22 sergey sva А в чем будет разница, если не устанавливать cxsf... Jan 20 2009, 17:56 aaarrr Цитата(sergey sva @ Jan 20 2009, 20:56) А... Jan 20 2009, 18:00 sergeeff ЦитатаВ приведенном вами коде выполняется нескольк... Jan 20 2009, 18:25 aaarrr Цитата(sergeeff @ Jan 20 2009, 21:25) По ... Jan 20 2009, 20:59 sergey sva Если не ошибаюсь, то в этом обработчике, переход н... Jan 20 2009, 19:12 sergeeff Цитата(sergey sva @ Jan 20 2009, 23:12) Е... Jan 20 2009, 19:28 sergey sva Сделайте замечания, по FIQ обработчику.
Код@-----... Jan 20 2009, 20:29 sergey sva >Могу сделать одно, зато глобальное: использова... Jan 20 2009, 21:11 aaarrr Цитата(sergey sva @ Jan 21 2009, 00:11) Т... Jan 20 2009, 21:52  sergeeff Цитата(aaarrr @ Jan 21 2009, 01:52) А еще... Jan 21 2009, 09:16   aaarrr Цитата(sergeeff @ Jan 21 2009, 12:16) Есл... Jan 21 2009, 10:06    sergeeff Цитата(aaarrr @ Jan 21 2009, 14:06) Нельз... Jan 21 2009, 12:17     aaarrr Цитата(sergeeff @ Jan 21 2009, 15:17) так... Jan 21 2009, 13:02 sergey sva При входе в FIQ прерывание ,запрещаются автоматом... Jan 20 2009, 23:30 aaarrr SPSR-то зачем сохранять?
Можно извратиться так:
... Jan 21 2009, 00:05 sergey sva ЦитатаSPSR-то зачем сохранять?
Можно извратиться ... Jan 21 2009, 10:51 aaarrr Цитата(sergey sva @ Jan 21 2009, 13:51) В... Jan 21 2009, 10:58 sergey sva RE: startup asm Jan 21 2009, 15:51 zltigo Цитата(sergey sva @ Jan 21 2009, 17:51) С... Jan 21 2009, 17:42  aaarrr Цитата(zltigo @ Jan 21 2009, 20:42) Обраб... Jan 21 2009, 17:58   zltigo Цитата(aaarrr @ Jan 21 2009, 19:58) Возвр... Jan 21 2009, 19:11    aaarrr Цитата(zltigo @ Jan 21 2009, 22:11) Отлич... Jan 21 2009, 20:25     zltigo Цитата(aaarrr @ Jan 21 2009, 22:25) Сишна... Jan 21 2009, 20:48 aaarrr Что-то я не нашел INTERRUPT_VECTORS_END. А регистр... Jan 21 2009, 16:04 sergey sva >Что-то я не нашел INTERRUPT_VECTORS_END
> ... Jan 21 2009, 16:32 aaarrr Цитата(sergey sva @ Jan 21 2009, 19:32) К... Jan 21 2009, 16:36 sergey sva Если сделать так: объявить в присоединенном файле,... Jan 21 2009, 17:03 aaarrr Цитата(sergey sva @ Jan 21 2009, 20:03) Е... Jan 21 2009, 17:07 sergey sva поясните пожалуйста, что не правильно ? Jan 21 2009, 17:13 aaarrr КодRESET_ADDR: .word RESET_handler
UND... Jan 21 2009, 17:17 sergey sva Почему для UNDEF_handler:(Неопределенная инструкци... Jan 21 2009, 19:06 sergeeff Думается, что в embedded мире неожиданные exceptio... Jan 21 2009, 19:17 sergey sva Контроллер aic поддерживает 32 прерывания, эти пр... Jan 21 2009, 22:10 aaarrr Цитата(zltigo @ Jan 21 2009, 23:48) Ну а ... Jan 21 2009, 22:19 zltigo Цитата(aaarrr @ Jan 22 2009, 00:19) А на ... Jan 21 2009, 23:30  aaarrr Цитата(zltigo @ Jan 22 2009, 02:30) ... Jan 21 2009, 23:53   zltigo Цитата(aaarrr @ Jan 22 2009, 01:53) У при... Jan 22 2009, 08:24    aaarrr Цитата(zltigo @ Jan 22 2009, 11:24) Лично... Jan 22 2009, 09:06 sergey sva Каждый человек индивидуальный, как и его решения, ... Jan 22 2009, 17:30 aaarrr Цитата(sergey sva @ Jan 22 2009, 20:30) A... Jan 22 2009, 17:40 zltigo Цитата(sergey sva @ Jan 22 2009, 19:30) К... Jan 22 2009, 18:23  aaarrr Цитата(zltigo @ Jan 22 2009, 21:23) Допущ... Jan 22 2009, 18:32   zltigo Цитата(aaarrr @ Jan 22 2009, 20:32) Еще р... Jan 22 2009, 20:34 sergey sva Еще одна неясность возникла, вот код из файла опис... Jan 22 2009, 18:11 aaarrr Цитата(sergey sva @ Jan 22 2009, 21:11) A... Jan 22 2009, 18:20
2 страниц
1 2 >
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|