|
|
  |
startup asm |
|
|
|
Jan 23 2009, 16:51
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(sergey sva @ Jan 23 2009, 19:41)  А если оставить этот же стартап но использовать вот такой код в обработчике? Лучше и правильнее дать компилятору разобраться, какие регистры ему использовать и сохранять. Цитата(zltigo @ Jan 23 2009, 19:44)  Для ARM7 с его штатными IRQ и FIQ смысл организации вложеных прерываний практически свидетельствует о банальном бездумом подходе к делу. Иногда нужно иметь несколько прерываний с максимальным приоритетом, одним FIQ в таком случае не обойдешься.
|
|
|
|
|
Jan 23 2009, 17:26
|

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

|
Цитата(aaarrr @ Jan 23 2009, 19:05)  Затраты как раз сравнимы - те же несколько тактов. Это вариант "несколько FIQ" Код ldr pc,[pc,#-0xF20] То, что написано в качестве обертки для организации вложенности, полагаю, Вы еще помните? Или освежить? Сколько там тактов!?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 23 2009, 18:39
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(zltigo @ Jan 23 2009, 19:44)  Да и сами вложенные прерывания почти ненужная вещь. Делал за всю жизнь ровно два раза. Для ARM7 с его штатными IRQ и FIQ смысл организации вложеных прерываний практически свидетельствует о банальном бездумом подходе к делу. +1 Не нужны почти никогда вложенные прерывания, конкретно для арм, FIQ + невложенные IRQ прерывания должно хватать для 99% применений.. тч всякие очень умные обработчики нафиг не нужны... обычно... ИМХО...
|
|
|
|
|
Jan 23 2009, 19:00
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Jan 23 2009, 20:26)  Это вариант "несколько FIQ" Код ldr pc,[pc,#-0xF20] Спешу огорчить: работать не будет. Придется еще ручками источник найти. Сколько это тактов? Цитата(singlskv @ Jan 23 2009, 21:39)  конкретно для арм, FIQ + невложенные IRQ прерывания должно хватать для 99% применений.. Ну, мне приходилось встречаться и с этим 1%. Хотя пару раз всего.
|
|
|
|
|
Jan 23 2009, 19:33
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Jan 23 2009, 22:21)  А что, у атмеловские AIC настолько примитивны, что вектор для FIQ не хранят? Хранят, но читается из него всегда одно значение, увы  Да и на столь любимых Вами LPC с их PL190/192 векторизация FIQ как-то не предусмотрена - вот же примитив  Цитата(zltigo @ Jan 23 2009, 22:21)  Ну пусть не одна, так несколько команд - считать источник, test и прыгнуть. По любому и близко к затратам сохранение/воссановление контекста не лежит. Не нужно демонизировать затраты. С выключенными прерываниями нужно выполнить всего-то пяток команд: Код sub r14, r14, #0x04 stmfd sp!, {r14} mrs r14, SPSR stmfd sp!, {r0, r14} msr CPSR_c, #ARM_MODE_SYS А уж от сохранения/восстановления контекста в любом случае никуда не деться, тут Вы хватили.
|
|
|
|
|
Jan 23 2009, 20:38
|

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

|
Цитата(aaarrr @ Jan 23 2009, 21:33)  А уж от сохранения/восстановления контекста в любом случае никуда не деться, тут Вы хватили. Вопрос в размере контекста и степени бездумности его сохранения. Цитата Да и на столь любимых Вами LPC с их PL190/192 векторизация FIQ как-то не предусмотрена - вот же примитив Я в курсе LPC  и почему FIQ это FIQ. Напомню, что отцитированый код - Ваш, а не мой.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 23 2009, 21:09
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(zltigo @ Jan 23 2009, 23:38)  Вопрос в размере контекста и степени бездумности его сохранения. SPSR, LR - не так уж много. Цитата(zltigo @ Jan 23 2009, 23:38)  Напомню, что отцитированый код с попыткой изобразить обработку векторизации FIQ для Aтмел и к тому-же с чтением какого-то другого порта - Ваш, а не мой. Опять включили воображение некстати? Попытка изобразить обработку векторизации - звучит-то как! Готов выслушать замечания и по такому фрагменту: Код nop Уверен, они у Вас найдутся
|
|
|
|
|
Jan 23 2009, 21:15
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Принялся за скрипт для линковщика, посмотрел примеры от атмела для Using Open Source Tools for AT91SAM7S Cross Development revision Хочу попробовать его с этим стартапом. Такой вопрос: после того как будет сгенерирован бинарник, его можно просмотреть, может программа есть специальная, имею ввиду адреса как он там все распределил ? Если не затруднит, что еще нужно добавить что бы использовать с этим стартапам ? CODE OUTPUT_FORMAT("elf32-littlearm") /* формат памяти. прямой порядок байт (Little-endian). */ OUTPUT_ARCH(arm) /* архитектура АРМ */
ENTRY(_vec_reset) /* вектор сброса */
/* Память микроконтроллера AT91SAM7S256 */ MEMORY { flash : ORIGIN = 0x00100000, LENGTH = 256K /* FLASH EPROM */ ram : ORIGIN = 0x00200000, LENGTH = 64K /* static RAM area */ }
_stack_end = 0x0020FA00; /* конец стека (верх стека) */
SECTIONS /* начало секции */ { . = 0; .text : { *(.text) /* поместить сектор текст в флэш */ } >flash /*TEXT располажение flash */
.data : { *(.data) /* поместить сектор дата в рам */ } >ram /*DATA располажение в рам */
.bss : { } >ram /*BSS располажение в рам */
} /* конец секции */
|
|
|
|
|
Jan 23 2009, 21:34
|

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

|
Цитата(aaarrr @ Jan 23 2009, 23:09)  SPSR, LR - не так уж много. И переключение режимов.. Короче, это по минимуму 8 команд. Цитата Готов выслушать замечания и по такому фрагменту: Код nop Уверен, они у Вас найдутся  Мои замечия относились во к этому Вашему коду: Цитата 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,[pc,#-0xF20]; ldr pc,[pc,#-0xF20]; Вы действительно считаете, что я придираюсь и мне следовало промолчать?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|