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

 
 
> Переход 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
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 50)
Xenia
сообщение Oct 12 2009, 12:09
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Br.Misha @ Oct 12 2009, 15:54) *
Сначала я смотрел на AT91SAM но они были очень дорогие а потом увидел LPC21** и они мне очень понравились(особенно их цена).


А какая у них цена? Может быть вам взглянуть на платформу AVR32, раз уж вы давно на AVR программите? AT32uc3A**** - самое оно, если вам Linux под микроконтролером запускать не надо. Предельно экономичен и многфункционален, и USB 2.0 у него есть, и даже Ethernet. А цена примерно того же порядка, как у старших моделей AVR8. А станет тесно и там, то всегда можно перейти на AT32ap7, которые с ним совместимы.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 12 2009, 12:12
Сообщение #3


Гуру
******

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



Цитата(Br.Misha @ Oct 12 2009, 15:54) *
...а потом увидел LPC21** и они мне очень понравились(особенно их цена).

Лучше посмотрите 23 и 24 - должны понравится еще сильнее.

Цитата(Br.Misha @ Oct 12 2009, 15:54) *
Подойдет ли LPC для моего проекта? еси да, то напишите пожалуйста какую литературу мне нада почитать и какой компил использовать.

ИМХО, обязательная литература:
- ARM7TDMI Technical Reference Manual
- User Manual на выбранный кристалл
- Technical Reference Manual на VIC
Пункты 1 и 3 доступны на arm.com
Без прочтения данной литературы неизбежно будут вопросы по работе прерываний.

Компилятор - какой нравится. Если привыкли к IAR'у - используйте его, если нет - посмотрите Keil.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 12 2009, 12:28
Сообщение #4


Гуру
******

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



Цитата
посоветуйте с чего начатьsmile.gif

Moderator
С чтения ветки для начинающих. Тему перенес. Впредь темы с избитыми вопросами размещенные где попало будут удаляться.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Oct 12 2009, 21:25
Сообщение #5


Местный
***

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



Большое спасибо всем кто ответилsmile.gif

К сожалению AT32 очень дорогие(самая дешевая стоет 105 грн) и в магазине тока под заказ не менее чем 10 шт.
У LPC23 очень много ног, минимум 100. Хотя я хз для чего они предназначены но врятле они мне пригодяться, самый дешевый (LPC2364FBD100) 55 грн.
А вот еси посмотреть на LPC21 то там самый простой LPC2101FBD48 и стоет 30 грн и у него 44 ноги, я думаю что для меня этого достаточно.
Для меня главное - СКОРОСТЬ
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 12 2009, 21:50
Сообщение #6


Гуру
******

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



Цитата(Br.Misha @ Oct 12 2009, 23:25) *
Для меня главное - СКОРОСТЬ

Тогда зачем было нужно поминать всуе
Цитата
хочу разработать один девайс в котором мне нада заюзать граф.дисплей, ММС и т.д.

Контроллеров которых у 21xx нет.
Цитата
Хотя я хз для чего они предназначены но врятле они мне пригодяться

Обалдеть sad.gif
И поле этого
Цитата
я думаю что для меня этого достаточно.

sad.gif Детский сад какой-то...


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


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Oct 13 2009, 03:50) *
Тогда зачем было нужно поминать всуе

Попробую предположить. Чел хочет начать с "эконом-класса", а уже когда "прижмёт" то воспользоваться наворотами 23хх/24хх. Там минимум изменений потребуется.

Сообщение отредактировал GetSmart - Oct 12 2009, 23:31


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 13 2009, 08:55
Сообщение #8


Гуру
******

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



Цитата(GetSmart @ Oct 13 2009, 01:30) *
Чел хочет...

Полагаю, что просто банальное "радиолюбительство" со всеми вытекающими последствиями.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение Oct 13 2009, 12:58
Сообщение #9


Местный
***

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



zltigo, какой та спецконтролер граф дисплея мне не нужен потому что на этих дисплеях обычный SPI интерфейс
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 13 2009, 13:15
Сообщение #10


Гуру
******

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



Цитата(Br.Misha @ Oct 13 2009, 15:58) *
что на этих дисплеях

от мобильников из мусорника
Цитата
обычный SPI интерфейс

И MMC карточку где-то нашел, о о существовании SD и контроллере Вы не подозреваете..... Вот я и говорю - радиолюбительство. Совсем другие "критерии" оценки и об этом нужно обязательно упоминать с самого начала, иначе просто пустая трата времени.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 13 2009, 18:19
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Br.Misha @ Oct 12 2009, 14:54) *
Подойдет ли LPC для моего проекта?

Для какого проекта, браток?
А то модераторы нервничают wink.gif
SPI для ЖКИ, SPI для SD-card, UARTс IrDA, USB device... Ффсе?
Память внутренняя.
STM32 гляньте, один из самых дешевых контроллеров ARM.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 13 2009, 18:45
Сообщение #12


Гуру
******

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



Цитата(Dog Pawlowa @ Oct 13 2009, 21:19) *
UARTс IrDA

Которого, кстати, тоже у 21xx нет в отличие от 23/24xx. Для SD SPI тоже не нативный интерфейс. Про использование дисплеев от старинных мобилок вместо нормальных LCD подключаемых набортным LCD контролерам тоже уже писал. Но это все это видимо из разряда
Цитата
хз для чего они предназначены но врятле они мне пригодяться


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
arm123
сообщение Oct 22 2009, 12:50
Сообщение #13


Участник
*

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


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #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
zltigo
сообщение Oct 25 2009, 15:21
Сообщение #31


Гуру
******

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



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

Да, а чей это там логотипчик на
http://www.keil.com/support/man/docs/armcc/armcc_pr01.htm
затесался smile.gif Да и сам сайт Keil. Все смешалось в доме Облонских..


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


Гуру
******

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



Цитата(zltigo @ Oct 25 2009, 18:21) *
Да, а чей это там логотипчик на
http://www.keil.com/support/man/docs/armcc/armcc_pr01.htm
затесался smile.gif Да и сам сайт Keil. Все смешалось в доме Облонских..

Ну и что? RealView Developer Suite и входящие в его состав RealView Compilation Tools - разработка именно ARM, Keil-то тут причем?
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 25 2009, 17:17
Сообщение #33


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(arm123 @ Oct 25 2009, 13:01) *
2zltigo, А есть где-нибудь просторах интернета исходники какого-нибудь проекта написанного не-"студенчески"?
Хочу проанализировать для общеобразовательных целей.


Держите. Надеюь, из состояния писанины "студенческих" исходников я уже вырос... Хотя, возможны недоработки в плане структуры программы.
Между прочим, как раз пример того, как я переходил с AVR (ATMega32) на ARM (AT91SAM7S64).

Тема здесь - http://forum.cqham.ru/viewtopic.php?t=17803

Для сборки ARM версии используется YAGARTO, для AVR - WinAVR.

Сообщение отредактировал Genadi Zawidowski - Oct 25 2009, 17:26
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2009, 18:52
Сообщение #34


Гуру
******

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



Цитата(aaarrr @ Oct 25 2009, 19:42) *
Keil-то тут причем?

При том,что на сегодняшний день Keil это подразделение ARM занимающееся всеми компиляторами принадлежащими ARM Company.


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


Гуру
******

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



Цитата(zltigo @ Oct 25 2009, 21:52) *
При том,что на сегодняшний день Keil это подразделение ARM занимающееся всеми компиляторами принадлежащими ARM Company.

Так таки и всеми?

Keil делал и делает (да, теперь в составе ARM) только MDK - "попсовую" среду, ориентированную на МК, ради которой он и был куплен.
RVDS же существовал и существует как отдельный продукт.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2009, 19:36
Сообщение #36


Гуру
******

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


Гуру
******

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



Цитата(zltigo @ Oct 25 2009, 22:36) *
Что-то я совсем не понимаю предмета спора sad.gif

А зачем тогда спорите? Просто Keil != ARM и не является компиляторостроителем последнего, а наоборот, использует наработки головной конторы в своем MDK.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2009, 19:58
Сообщение #38


Гуру
******

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



Цитата(Genadi Zawidowski @ Oct 25 2009, 20:17) *
Держите. Надеюь, из состояния писанины "студенческих" исходников я уже вырос...

Не sad.gif "студентов" тоже писавших, например, мультиплатформенный TI стек SimpleIT в извращениях превзойти трудно smile.gif.
Ну и такого типа фишки:
Код
        if ((baud_value % 10) >= 5)
                baud_value = (baud_value / 10) + 1;
        else
                baud_value /= 10;

Вместо:
Код
baud_value = ( (baud_value + 5) / 10)

Вполне по-студенчески - об округлении уже знают, но с реализацией sad.gif
P.S.
Не принимайте близко к сердцу - выложить исходники в качестве образца, это не подвиг, но что-то героическое в этом есть! Мне такое не по силам, обычно.


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


Гуру
******

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



Цитата(zltigo @ Oct 25 2009, 22:58) *
такого типа фишки

Это пять smile.gif

Цитата(zltigo @ Oct 25 2009, 22:58) *
...выложить исходники в качестве образца, это не подвиг, но что-то героическое в этом есть! Мне такое не по силам, обычно.

Угу. Иногда хочется что-то выложить, да стыдно. Причесать можно но, лень. А с тем, за что изначально не стыдно, оказывается жалко расставаться.
Вот и остается выкладывать разве что фрагменты в 10 строк максимум.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 25 2009, 20:51
Сообщение #40


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(zltigo @ Oct 25 2009, 23:58) *
Не принимайте близко к сердцу - выложить исходники в качестве образца, это не подвиг, но что-то героическое в этом есть! Мне такое не по силам, обычно.


Ох ничего себе! Честно говоря, этот кусок скопипастил сам знаете откуда...

Срочно поправил на

Код
        unsigned int baud_value = main_clock / baud_rate;

        return ((baud_value + 8) / 16);
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 25 2009, 21:02
Сообщение #41


Гуру
******

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



Цитата(Genadi Zawidowski @ Oct 25 2009, 23:51) *
Честно говоря, этот кусок скопипастил сам знаете откуда...

Да, есть такой источник заразы, почему-то трепетно любимый многими.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 25 2009, 21:05
Сообщение #42


Гуру
******

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



Цитата(aaarrr @ Oct 26 2009, 00:02) *
Да, есть такой источник заразы, почему-то трепетно любимый многими.

Неужели опять незабвенное светило образования Редькин?


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


Гуру
******

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



Цитата(zltigo @ Oct 26 2009, 00:05) *
Неужели опять незабвенный Редькин?

Нет, но все равно смешно - "либы" от Атмела.

Справедливости ради надо заметить, что большинство не напрягает себя copy-paste (что дает некоторой шанс увидеть и исправить маразм), а просто не задумываясь кидает "lib_AT91XXX.h" в проект.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Oct 25 2009, 21:16
Сообщение #44


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Если бы вы, как внимательные читатели, не обратили внимание на этот кусок, так бы оно и неслось по волнам истории, не опускаясь на дно...

короче, чтобы закончить жизнь этого наследия, пишу так:
Код
const unsigned int divisor = baud_rate * 16;

return (main_clock + divisor / 2) / divisor;


Интересно, поможет ли начать программировать под ARM это кому-нибудь?

Прочитал про копи-пэйст. Поскольку осваивать пришлось весьма спешно, специально начал с минимального файла (единственный main и последовательность кода для ножкодрыгательства), без использования этого набора функций от атмела. Через некоторое время стала понятна идеология разработчиков периферии, уже знал что и где искать в даташите.
Startup сначала был от yagarto, потом слегка переделывал.

Сообщение отредактировал Genadi Zawidowski - Oct 25 2009, 22:08
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение May 9 2011, 09:28
Сообщение #45


Местный
***

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



Хай!
Я купил себе три STM32: две STM32F100C8T6B и еще одну какую то за 8 баксов. Завтра еще закажу стм32дискавери.
У меня теперь возник вопрос на счет софта. В инете советовали Keil, скачал, начал юзать. Очень понравилось то, что через визард(STM32_Init.c) можно настроить периферию. Но тут есть 2 очень серьезный как для меня недостатка: Не отображаются подсказки после -> или точки и нельзя кликнув на функцию перейти к ней (кто юзает еклипс, тот поймет). Слышал что в эклипсе можно и для стм32 программить, но можно ли в нем использовать визард как в кейле?
Ну или может есть какая то другая прога, посоветуйте плиз!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 9 2011, 12:18
Сообщение #46


Гуру
******

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



Я бы советовал избегать любых визардов как чумы.
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение May 9 2011, 20:51
Сообщение #47


Местный
***

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



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

Тут кстати у меня очередная проблема: нигде в украине нет стм32-дискавери. Может кто мне его продать? Или может есть где то схема программатора для stm32, ну и желательно схема отладочной платы.
Go to the top of the page
 
+Quote Post
Artem_Petrik
сообщение May 10 2011, 16:48
Сообщение #48


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006



Цитата(Br.Misha @ May 9 2011, 23:51) *
Тут кстати у меня очередная проблема: нигде в украине нет стм32-дискавери. Может кто мне его продать? Или может есть где то схема программатора для stm32, ну и желательно схема отладочной платы.

Быть то он есть, в космодроме например, только цену двойную за него ломят. За 11 баксов, как тут вон вверху компеловский баннер рекламирует, я бы и сам с удовольствием взял... Ну там плюс минус. А 20 отдавать как-то пока жаба давит. Хотя может и придется.


Go to the top of the page
 
+Quote Post
Br.Misha
сообщение May 17 2011, 23:54
Сообщение #49


Местный
***

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



не нашел дискавери, заказал на ибее вот такую штуку: http://cgi.ebay.com/ws/eBayISAPI.dll?ViewI...e=STRK:MEWNX:IT
Тут стоит STM32F103VCT6. Кто нить его юзал? Да, и еще: на сколько стабильно работает ЮСБ у егого мк?
Go to the top of the page
 
+Quote Post
Br.Misha
сообщение May 29 2011, 21:23
Сообщение #50


Местный
***

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



дня 4 назад пришла та отладочная плата. Начал учить стм32. За 4 дня уже научился мигать светодиодом и обрабатывать нажатие кнопок)))))
Вобщем я тут подумал, стоит ли сейчас зубрить эту периферию? Ведь есть разные ОС для таких микроконтроллеров.
Кароче, мое решение: научиться использовать какую нить ос, а в процесе юзания STM32 уже осваивать периферию.
На сколько правильное или не правильно мое решение?

Сообщение отредактировал Br.Misha - May 29 2011, 21:31
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2011, 21:49
Сообщение #51


Гуру
******

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



Цитата(Br.Misha @ May 30 2011, 01:23) *
На сколько правильное или не правильно мое решение?

ИМХО, из обязательной для освоения периферии в данном случае NVIC (если что, я в курсе, что это часть ядра) и какой-нибудь UART. Остальное по мере надобности.
Собственно, это универсальный стартовый набор для любого незнакомого МК (ну, таймер еще).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 00:56
Рейтинг@Mail.ru


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