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

 
 
> Переход AVR to ARM, посоветуйте с чего начать:)
Br.Misha
сообщение Oct 12 2009, 11:54
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 253
Регистрация: 21-12-08
Пользователь №: 42 646



Здраствуйте!
Вобщем давно уже я програмлю AVR и с недавнего времени мне стало не хватать ресурсов. Наиболее мне не нравиться их скорость, очень мала для некоторых задач(в последнее время я стал юзать цветные граф.дисплеи, ММС и т.д.). Поэтому теперь хочу перейти на ARM.
Через пару месяцев я хочу разработать один девайс в котором мне нада заюзать граф.дисплей, ИК связь, ММС с FAT16/32 (я хз как на ARM но на AVR FAT очень сильно жрет ресурсы МК) и ещё желательно USB (хотя бы 1.0) ну и всё это нада будет сделать с батарейным питанием от литий-ионной батарейки на 3.6V.
Сначала я смотрел на AT91SAM но они были очень дорогие а потом увидел LPC21** и они мне очень понравились(особенно их цена).
Подойдет ли LPC для моего проекта? еси да, то напишите пожалуйста какую литературу мне нада почитать и какой компил использовать.

Заранее спасиба!

Сообщение отредактировал Br.Misha - Oct 12 2009, 12:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
arm123
сообщение Oct 22 2009, 12:50
Сообщение #2


Участник
*

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



В это теме задавались вопросы исключительно по выбору производителей микроконтроллеров с архитектурой ARM.
Но я хочу задать несколько конкретных вопросов по самой архитектуре.
Прочитал я ARM7TDMI Technical Reference Manual. Вроде все понятно за исключение некоторых нюансов. Так начнем с исключительных ситуаций.
Аварийные ситуации. Насколько я понял возникает в зависимости от линии ABORT. Но вот совсем непонятно применение данной искл. ситуации. В документе описывается пример с виртуальной памятью, но если чесно перечитывал 5 раз, ничего не понял вообще, не могли бы вы обьяснить тот пример более по-простому? Ну и если можно привести ещё парочку промеров, где можно удачно применять аварийные ситуации?
Как я понял они есть двух видов: аварийная предварительная выборка и аварийны данные. Я вообще не нашел в документе где описывается различие между ними. Не обьясните в чем между ними разница? И зачем они возникают.

Программные прерывание. Очень хорошо понял зачем они применяются благодаря объяснению: ТЫЦ
Но я так и не поня как процессор попадает в это состояние? И что мне нужно в кде написать что бы попасть в это прерывание?

И ещё вопрос: команды thunb выполняются медленнее? Правильно ли это? И ещё какие минусы применения thumb ещё наблюдаются?

Спасибо.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 22 2009, 13:01
Сообщение #3


Гуру
******

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



Цитата(arm123 @ Oct 22 2009, 16:50) *
Ну и если можно привести ещё парочку промеров, где можно удачно применять аварийные ситуации?

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

Цитата(arm123 @ Oct 22 2009, 16:50) *
Как я понял они есть двух видов: аварийная предварительная выборка и аварийны данные. Я вообще не нашел в документе где описывается различие между ними. Не обьясните в чем между ними разница? И зачем они возникают.

Prefetch Abort - исключение, возникающее при попытке ядра прочитать инструкцию, Data Abort - при попытке прочитать или записать данные.

Вообще же, так как сигнал ABORT является внешним, то ситуации, в которых он генерируются, зависят от конкретной реализации контроллера памяти и отличаются у разных производителей.

Цитата(arm123 @ Oct 22 2009, 16:50) *
Программные прерывание. Очень хорошо понял зачем они применяются благодаря объяснению: ТЫЦ
Но я так и не поня как процессор попадает в это состояние? И что мне нужно в кде написать что бы попасть в это прерывание?

Попадает по команде SWI. Компиляторы, как правило, предоставляют обертку, позволяющую оформить SWI как вызов:
Код
__swi int func(int, int);


Цитата(arm123 @ Oct 22 2009, 16:50) *
И ещё вопрос: команды thunb выполняются медленнее? Правильно ли это? И ещё какие минусы применения thumb ещё наблюдаются?

Thumb - это всего лишь метод упаковки команд, на скорость выполнения он не влияет. А вот на скорость выполнения программы в целом - да, влияет, и не в лучшую сторону.
Учитывая постоянно растущий объем доступной на кристалле памяти, использование Thumb представляется все менее целесообразным.
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 22 2009, 13:43
Сообщение #4


Участник
*

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



Цитата(aaarrr @ Oct 22 2009, 16:01) *
Попадает по команде SWI. Компиляторы, как правило, предоставляют обертку, позволяющую оформить SWI как вызов

Спасибо, я все понял не понятно одно. Вот есть основная программа и обработчик swi.
В обработчик мы попадаем как swi 14, к примеру. 14 находится в поле команты как констанка, которая игнорируется процессором. Но мне не понятно как мы её можем использовать попав уже в обработчик SWI? Это что получается нужно читать команду с которой мы перешли из памяти или как? Поясните пожалуйста.


А скорость при Thumb попадает из-за того что компилятор не может оптимально выстраивать конструкции, например я вычитал что в режиме thumb процессор только инструкции перехода могут выполнятся по условию.
Получается конструкцию: если (условие) то Операция1 иначе Операция1
в режиме ARM можно выполнить так:
1. Вычислить условие и поставить Флаг1 по результатам вычисления
2. Выполнить Операция1 при условии выставленного Флаг1
3. Выполнить Операция2 при условии невыставленного Флаг1

а в режиме Thumb мы как и в других системах должны использовать привычную для x86 конструкцию:

1. Вычислить условие
2. Если условие выполнено, то идти к 5
3. Выполнить Операция1
4. Идти к 6
5. Выполнить Операция2
6. …


Получается в режиме ARM код лишен одного условного и одного безусловного перехода, которые обычно больно бьют по производительности конвейерных архитектур.

Правильно ли я трактовал? Вы бы не могли привести общие рекомендации когда нужгно использовать ARM а когда Thumb?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 22 2009, 13:51
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
arm123
сообщение Oct 25 2009, 07:10
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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
aaarrr
сообщение Oct 25 2009, 12:06
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 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
zltigo
сообщение Oct 25 2009, 19:36
Сообщение #9


Гуру
******

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



Цитата(aaarrr @ Oct 25 2009, 15:06) *
Если бы это был Keil, то я бы так и написал. Это добро из комплекта RVDS.

смотрим на тот-же файл из поставки Keil:
CODE

;/*****************************************************************************/
;/* SWI.S: SWI Handler */
;/*****************************************************************************/
;/* This file is part of the uVision/ARM development tools. */
;/* Copyright © 2005-2006 Keil Software. All rights reserved. */
;/* This software may only be used under the terms of a valid, current, */
;/* end user licence from KEIL for a compatible version of KEIL software */
;/* development tools. Nothing else gives you the right to use this software. */
;/*****************************************************************************/

T_Bit EQU 0x20

PRESERVE8 ; 8-Byte aligned Stack
AREA SWI_Area, CODE, READONLY
ARM

EXPORT SWI_Handler
SWI_Handler

STMFD SP!, {R12, LR} ; Store R12, LR
MRS R12, SPSR ; Get SPSR
STMFD SP!, {R8, R12} ; Store R8, SPSR
TST R12, #T_Bit ; Check Thumb Bit
LDRNEH R12, [LR,#-2] ; Thumb: Load Halfword
BICNE R12, R12, #0xFF00 ; Extract SWI Number
LDREQ R12, [LR,#-4] ; ARM: Load Word
BICEQ R12, R12, #0xFF000000 ; Extract SWI Number

LDR R8, SWI_Count
CMP R12, R8
BHS SWI_Dead ; Overflow
ADR R8, SWI_Table
LDR R12, [R8,R12,LSL #2] ; Load SWI Function Address
MOV LR, PC ; Return Address
BX R12 ; Call SWI Function

LDMFD SP!, {R8, R12} ; Load R8, SPSR
MSR SPSR_cxsf, R12 ; Set SPSR
LDMFD SP!, {R12, PC}^ ; Restore R12 and Return

SWI_Dead B SWI_Dead ; None Existing SWI

SWI_Cnt EQU (SWI_End-SWI_Table)/4
SWI_Count DCD SWI_Cnt

IMPORT __SWI_0
IMPORT __SWI_1
IMPORT __SWI_2
IMPORT __SWI_3
SWI_Table
DCD __SWI_0 ; SWI 0 Function Entry
DCD __SWI_1 ; SWI 1 Function Entry
DCD __SWI_2 ; SWI 2 Function Entry
DCD __SWI_3 ; SWI 3 Function Entry
; ...
SWI_End


END


Главные отличия в свежих годах Copyright ну и естественно теперь ©Keil. Что-то я совсем не понимаю предмета спора sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Br.Misha   Переход AVR to ARM   Oct 12 2009, 11:54
- - Xenia   Цитата(Br.Misha @ Oct 12 2009, 15:54) Сна...   Oct 12 2009, 12:09
- - aaarrr   Цитата(Br.Misha @ Oct 12 2009, 15:54) ......   Oct 12 2009, 12:12
- - zltigo   Цитатапосоветуйте с чего начать Moderator С чтения...   Oct 12 2009, 12:28
- - Br.Misha   Большое спасибо всем кто ответил К сожалению AT32...   Oct 12 2009, 21:25
|- - zltigo   Цитата(Br.Misha @ Oct 12 2009, 23:25) Для...   Oct 12 2009, 21:50
|- - GetSmart   Цитата(zltigo @ Oct 13 2009, 03:50) Тогда...   Oct 12 2009, 23:30
|- - zltigo   Цитата(GetSmart @ Oct 13 2009, 01:30) Чел...   Oct 13 2009, 08:55
- - Br.Misha   zltigo, какой та спецконтролер граф дисплея мне не...   Oct 13 2009, 12:58
|- - zltigo   Цитата(Br.Misha @ Oct 13 2009, 15:58) что...   Oct 13 2009, 13:15
- - Dog Pawlowa   Цитата(Br.Misha @ Oct 12 2009, 14:54) Под...   Oct 13 2009, 18:19
|- - zltigo   Цитата(Dog Pawlowa @ Oct 13 2009, 21:19) ...   Oct 13 2009, 18:45
|- - Сергей Борщ   Цитата(aaarrr @ Oct 22 2009, 16:51) Я бы ...   Oct 22 2009, 14:15
|- - arm123   Цитата(aaarrr @ Oct 22 2009, 16:51) Я бы ...   Oct 22 2009, 14:16
||- - zltigo   Цитата(arm123 @ Oct 22 2009, 17:16) Навер...   Oct 22 2009, 14:26
|||- - arm123   Цитата(zltigo @ Oct 22 2009, 17:26) Это ч...   Oct 22 2009, 15:59
|||- - aaarrr   Цитата(arm123 @ Oct 22 2009, 19:59) Давно...   Oct 22 2009, 16:10
||- - aaarrr   Цитата(arm123 @ Oct 22 2009, 18:16) Навер...   Oct 22 2009, 14:27
|- - zltigo   Цитата(aaarrr @ Oct 25 2009, 15:06) Если ...   Oct 25 2009, 15:21
||- - aaarrr   Цитата(zltigo @ Oct 25 2009, 18:21) Да, а...   Oct 25 2009, 16:42
||- - zltigo   Цитата(aaarrr @ Oct 25 2009, 19:42) Keil-...   Oct 25 2009, 18:52
||- - aaarrr   Цитата(zltigo @ Oct 25 2009, 21:52) При т...   Oct 25 2009, 19:07
|- - aaarrr   Цитата(zltigo @ Oct 25 2009, 22:36) Что-т...   Oct 25 2009, 19:43
- - arm123   Я понял лучше всего использовать uint32_t и тому п...   Oct 22 2009, 17:20
|- - aaarrr   Цитата(arm123 @ Oct 22 2009, 21:20) И это...   Oct 22 2009, 17:26
|- - zltigo   Цитата(arm123 @ Oct 22 2009, 20:20) но вс...   Oct 22 2009, 17:38
- - arm123   2zltigo, А есть где-нибудь просторах интернета исх...   Oct 25 2009, 09:01
|- - zltigo   Цитата(arm123 @ Oct 25 2009, 12:01) 2zlti...   Oct 25 2009, 10:10
|- - Genadi Zawidowski   Цитата(arm123 @ Oct 25 2009, 13:01) 2zlti...   Oct 25 2009, 17:17
|- - zltigo   Цитата(Genadi Zawidowski @ Oct 25 2009, 20...   Oct 25 2009, 19:58
|- - aaarrr   Цитата(zltigo @ Oct 25 2009, 22:58) таког...   Oct 25 2009, 20:04
|- - Genadi Zawidowski   Цитата(zltigo @ Oct 25 2009, 23:58) Не пр...   Oct 25 2009, 20:51
|- - aaarrr   Цитата(Genadi Zawidowski @ Oct 25 2009, 23...   Oct 25 2009, 21:02
|- - zltigo   Цитата(aaarrr @ Oct 26 2009, 00:02) Да, е...   Oct 25 2009, 21:05
|- - aaarrr   Цитата(zltigo @ Oct 26 2009, 00:05) Неуже...   Oct 25 2009, 21:06
- - Genadi Zawidowski   Если бы вы, как внимательные читатели, не обратили...   Oct 25 2009, 21:16
- - Br.Misha   Хай! Я купил себе три STM32: две STM32F100C8T6...   May 9 2011, 09:28
- - aaarrr   Я бы советовал избегать любых визардов как чумы.   May 9 2011, 12:18
- - Br.Misha   Ок, тогда визард отпадает. Почти уверен что дальше...   May 9 2011, 20:51
|- - Artem_Petrik   Цитата(Br.Misha @ May 9 2011, 23:51) Тут ...   May 10 2011, 16:48
- - Br.Misha   не нашел дискавери, заказал на ибее вот такую штук...   May 17 2011, 23:54
- - Br.Misha   дня 4 назад пришла та отладочная плата. Начал учит...   May 29 2011, 21:23
- - aaarrr   Цитата(Br.Misha @ May 30 2011, 01:23) На ...   May 29 2011, 21:49


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

 


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


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