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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Переход AVR to ARM, посоветуйте с чего начать:)
aaarrr
сообщение Oct 22 2009, 13:51
Сообщение #16


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 17:43) *
Но мне не понятно как мы её можем использовать попав уже в обработчик SWI? Это что получается нужно читать команду с которой мы перешли из памяти или как? Поясните пожалуйста.

Да, именно так. Вот, например, обработчик от ARM:
CODE

;;; Copyright ARM Ltd 1998. All rights reserved.

PRESERVE8
AREA SWI_Area, CODE, READONLY

EXPORT SWI_Handler
IMPORT C_SWI_Handler

T_bit EQU 0x20

SWI_Handler

STMFD sp!, {r0-r3, r12, lr} ; Store registers
MOV r1, sp ; Set pointer to parameters
MRS r0, spsr ; Get spsr
STMFD sp!, {r0, r3} ; Store spsr onto stack and another
; register to maintain 8-byte-aligned stack
TST r0, #T_bit ; Occurred in Thumb state?
LDRNEH r0, [lr,#-2] ; Yes: Load halfword and...
BICNE r0, r0, #0xFF00 ; ...extract comment field
LDREQ r0, [lr,#-4] ; No: Load word and...
BICEQ r0, r0, #0xFF000000 ; ...extract comment field

; r0 now contains SWI number
; r1 now contains pointer to stacked registers

BL C_SWI_Handler ; Call main part of handler
LDMFD sp!, {r0, r3} ; Get spsr from stack
MSR spsr_cf, r0 ; Restore spsr
LDMFD sp!, {r0-r3, r12, pc}^ ; Restore registers and return

END


Цитата(arm123 @ Oct 22 2009, 17:43) *
Правильно ли я трактовал? Вы бы не могли привести общие рекомендации когда нужгно использовать ARM а когда Thumb?

Нужно еще прибавить урезанность работы с immediate, методов адресации и т.п.
Я бы сказал, что всегда нужно работать в ARM.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 22 2009, 14:15
Сообщение #17


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(aaarrr @ Oct 22 2009, 16:51) *
Я бы сказал, что всегда нужно работать в ARM.
Кроме процессоров ADuC, которые имеют 16-битную неспешную флеш и в них Thumb ощутимо быстрее.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 22 2009, 14:16
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 22-10-09
Пользователь №: 53 141



Цитата(aaarrr @ Oct 22 2009, 16:51) *
Я бы сказал, что всегда нужно работать в ARM.

Наверное за исключение когда обьемы FLASH ограничены. Мне вот дали пример большого проекта под АРМ, я ещё не смотрел что он делает, но если собрать его под Thumb то получается 70155, а под ARM 116639, разница в 46К что более чем в полтора раза больше.

В описании указано, что ARM поддерживает оба порядка следования байт little-endian и big-endian. Сказано что по-умолчанию используется little-endian, но никак не могу найти где описано как эту смену произвести? В компиляторе нашел флаг смены порядка, но как это делается командами процессора?


кстати читал что такие большие команды как "STMFD sp!, {r0-r3, r12, lr}"регулярно использоваться не рекомендуется так как значительно повышает латентность прерываний. Вообще читал, что высокая латентность большой из недостатков данной архитектуры, так ли это? А то что-то не верится smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 22 2009, 14:26
Сообщение #19


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 17:16) *
Наверное за исключение когда обьемы FLASH ограничены. Мне вот дали пример большого проекта под АРМ, я ещё не смотрел что он делает, но если собрать его под Thumb то получается 70155, а под ARM 116639, разница в 46К что более чем в полтора раза больше.

Это что-то жуткое написано (скорее чего-нибудь в стиле восьмибитовика)- разница у меня обычно крайне не велика - единицы процнентов, ну 10.
Цитата
В описании указано, что ARM поддерживает оба порядка следования байт little-endian и big-endian. Сказано что по-умолчанию используется little-endian, но никак не могу найти где описано как эту смену произвести?

Как правило никак - ядро это одно, а реализация в железе, как правило не поддерживает такую возможность.

Цитата
кстати...

А что Вы хотели заказав зараз пересылку кучи регистров?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 22 2009, 14:27
Сообщение #20


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 18:16) *
Наверное за исключение когда обьемы FLASH ограничены. Мне вот дали пример большого проекта под АРМ, я ещё не смотрел что он делает, но если собрать его под Thumb то получается 70155, а под ARM 116639, разница в 46К что более чем в полтора раза больше.

Использование Thumb из-за ограниченного размера флеш все же крайний случай, ИМХО.

Цитата(arm123 @ Oct 22 2009, 18:16) *
В описании указано, что ARM поддерживает оба порядка следования байт little-endian и big-endian. Сказано что по-умолчанию используется little-endian, но никак не могу найти где описано как эту смену произвести? В компиляторе нашел флаг смены порядка, но как это делается командами процессора?

Эндианизм задается аппаратно сигналом BIGEND ядра, поменять его программно нельзя.

Цитата(arm123 @ Oct 22 2009, 18:16) *
кстати читал что такие большие команды как "STMFD sp!, {r0-r3, r12, lr}"регулярно использоваться не рекомендуется так как значительно повышает латентность прерываний. Вообще читал, что высокая латентность большой из недостатков данной архитектуры, так ли это? А то что-то не верится smile.gif

Да, это так. Некоторые компиляторы имеют опцию принудительного разбиения LDM/STM.
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 22 2009, 15:59
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 22-10-09
Пользователь №: 53 141



Цитата(zltigo @ Oct 22 2009, 17:26) *
Это что-то жуткое написано (скорее чего-нибудь в стиле восьмибитовика)

Давно хотел спросить, а что означает фраза "написано в стиле восьмибитовика"???
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 22 2009, 16:10
Сообщение #22


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 19:59) *
Давно хотел спросить, а что означает фраза "написано в стиле восьмибитовика"???

Наверное, имеется в виду использование где ни попадя восьмибитных переменных вместо нативных 32-х битных.
Таки да, thumb в этом случае будет заметно компактнее.
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 22 2009, 17:20
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 22-10-09
Пользователь №: 53 141



Я понял лучше всего использовать uint32_t и тому подобное.
И это получается если я даже знаю что переменная хранит значение не больше 256, или вообще ноль/не_ноль, но все-равно лучше использовать 32-битную переменную? Ну и аналогично просто 16 битную переменную?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 22 2009, 17:26
Сообщение #24


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 21:20) *
И это получается если я даже знаю что переменная хранит значение не больше 256, или вообще ноль/не_ноль, но все-равно лучше использовать 32-битную переменную? Ну и аналогично просто 16 битную переменную?

Если вам не нужна именно восьмибитная переменная, то да, нужно использовать 32-х битную. Иначе получите изрядный оверхед на постоянном приведении результата операций к восьми битам.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 22 2009, 17:38
Сообщение #25


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 20:20) *
но все-равно лучше использовать 32-битную переменную?

Для портируемости правильнее что-то типа int_fast8_t, int_least8_t

P.S.
Вообще-то Ваши вопросы правильные, что редкость, то тем не менее на форуме они обсуждались МНОГОКРАТНО. Надо-бы ознакомиться с предшественниками sad.gif, для начала.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 25 2009, 07:10
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 22-10-09
Пользователь №: 53 141



Цитата(aaarrr @ Oct 22 2009, 17:51) *
Да, именно так. Вот, например, обработчик от ARM:

Кстати Вы очень часто приводите стандартные примеры от ARM. Но я их что-то нигде найти не могу, подскажите от куда вы их выдираете?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2009, 08:44
Сообщение #27


Гуру
******

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



Цитата(arm123 @ Oct 25 2009, 10:10) *
...примеры от ARM

Все это добро, обычно с компиляторами идет, а от "ARM" это Keil, который давненько уже "ARM Company". Только особо не обольщайтесь, хоть и "Company", но исходники там больше "Студеческие".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 25 2009, 09:01
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 22-10-09
Пользователь №: 53 141



2zltigo, А есть где-нибудь просторах интернета исходники какого-нибудь проекта написанного не-"студенчески"?
Хочу проанализировать для общеобразовательных целей.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2009, 10:10
Сообщение #29


Гуру
******

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



Цитата(arm123 @ Oct 25 2009, 12:01) *
2zltigo, А есть где-нибудь просторах интернета исходники какого-нибудь проекта написанного не-"студенчески"?

Цельного не встречал smile.gif. А так, приличные исходники встречаются. У "студенческих" тоже на самом деле тоже есть чему поучится - им цельности не хватает, но отдельные элементы и приемы, которым, видимо учили, весьма познавательны. Сшивки между ними ну буквально "белыми нитками" и самодельные куски страшные встречаются sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 25 2009, 12:06
Сообщение #30


Гуру
******

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



Цитата(zltigo @ Oct 25 2009, 11:44) *
Все это добро, обычно с компиляторами идет, а от "ARM" это Keil, который давненько уже "ARM Company".

Если бы это был Keil, то я бы так и написал. Это добро из комплекта RVDS.
Go to the top of the page
 
+Quote Post

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

 


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


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