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

 
 
> startup asm
sergey sva
сообщение Jan 14 2009, 14:12
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergey sva
сообщение Jan 20 2009, 21:11
Сообщение #2


Гуру
******

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



>Могу сделать одно, зато глобальное: использование подобного обработчика не имеет смысла.
Тоже хорошо, как говорится тяжело в учении легко в бою. smile.gif . Если не затруднит, на что обратить внимание ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 20 2009, 21:52
Сообщение #3


Гуру
******

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



Цитата(sergey sva @ Jan 21 2009, 00:11) *
Тоже хорошо, как говорится тяжело в учении легко в бою. smile.gif . Если не затруднит, на что обратить внимание ?

Логика приоритетов в AIC на FIQ не распространяется, источники Fast Forcing нужно снимать вручную, поэтому переключать режим и разрешать FIQ смысла не имеет - вложенности все равно не будет.

Если же абстрагироваться от этих моментов, то тут у Вас ошибка:
Код
    mrs   r8 ,       SPSR               @ сохранить в регистре R8_FIQ статуса программы до прерывания (SPSR)

Сохранять при таком раскладе что-либо в R8 нельзя, так как он может перетереться следующим прерыванием.

Цитата(sergeeff @ Jan 20 2009, 21:25) *
Кстати, как то набрел на такой обработчик, который короче и быстрее, но требует 128 байт в irq стеке:

А еще некорректно работает с CPSR.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 21 2009, 09:16
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Jan 21 2009, 01:52) *
А еще некорректно работает с CPSR.


Если не трудно, поясните, пожалуйста, в чем видится некорректность работы с CPSR?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 21 2009, 10:06
Сообщение #5


Гуру
******

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



Цитата(sergeeff @ Jan 21 2009, 12:16) *
Если не трудно, поясните, пожалуйста, в чем видится некорректность работы с CPSR?

Нельзя писать "потолочные" значения в зарезервированные биты CPSR. То есть правильный подход это чтение-модификация-запись.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 21 2009, 12:17
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(aaarrr @ Jan 21 2009, 14:06) *
Нельзя писать "потолочные" значения в зарезервированные биты CPSR. То есть правильный подход это чтение-модификация-запись.


Обратимся к первоисточнику : ARM Architecture Reference Manual, 2005, p.A4-78
Цитата
You must normally update the value of a PSR by moving the PSR to a general-purpose register (using the
MRS instruction), modifying the relevant bits of the general-purpose register, and restoring the updated
general-purpose register value back into the PSR (using the MSR instruction). For example, a good way to
switch the ARM to Supervisor mode from another privileged mode is:

MRS R0,CPSR ; Read CPSR
BIC R0,R0,#0x1F ; Modify by removing current mode
ORR R0,R0,#0x13 ; and substituting Supervisor mode
MSR CPSR_c,R0 ; Write the result back to CPSR

For maximum efficiency, MSR instructions should only write to those fields that they can potentially change.
For example, the last instruction in the above code can only change the CPSR control field, as all bits in the
other fields are unchanged since they were read from the CPSR by the first instruction. So it writes to
CPSR_c, not CPSR_fsxc or some other combination of fields.


таким образом, устанавливаются только контрольные биты в статус регистре.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 21 2009, 13:02
Сообщение #7


Гуру
******

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



Цитата(sergeeff @ Jan 21 2009, 15:17) *
таким образом, устанавливаются только контрольные биты в статус регистре.

Согласен, хотя выделили Вы не совсем тот фрагмент первоисточника:
Цитата
The immediate form must therefore only be used
when the intention is to modify all the bits in the specified fields and, in particular, must not be used if the
specified fields include any as-yet-unallocated bits.

Так как в control field заменяются все биты, то immediate form можно применить.

Справедливости ради замечу, что в старых выпусках ARM7TDMI Datasheet упоминались только CPSR_flg и CPSR, т.е. варианта CPSR_c не было вообще.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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:10
|- - aaarrr   Цитата(sergey sva @ Jan 20 2009, 01:10) С...   Jan 19 2009, 22:17
- - 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   При входе в 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 страниц V   1 2 >


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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 19:34
Рейтинг@Mail.ru


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