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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как пишут под арм? Или с чего начать?, До этого всё были мелочи под AVR
Spider
сообщение May 1 2012, 12:24
Сообщение #1


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Всем привет!

Не бейте сильно, только. Вот хочу перейти на АРМ, имею пару отладочных платок (STM32 Дискавери и китайскую ourstm). В планах собрать консоль управления некой железкой в виде кнопочек и лампочек по USB и I/O, типа большого "джойстика". На AVR я бы сделал что-то вроде state-машины и обрабатывал состояния в цикле. Ну тут типа прогресс не стоит на месте, куча всяких RTOSов и прочее.
Посоветуйте как лучше поступить. Желательно получить ответ не как мне будет проще делать, а как кошернее и правильные. Дабы развиваться самому.
Заранее спасибо!
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 1 2012, 12:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Alexey Belyaev @ May 1 2012, 15:24) *
Посоветуйте как лучше поступить.


Для такой задачи ОС не нужна, хватит и примеров USB - устройств, поставляемых с тем же Кейлом и вообще тех примеров, которые поставляются с Кейлом для вашего МК.

Если есть желание осваивать ОС, то купите DevKit с предустановленным Линуксом. Например:

www.starterkit.ru
Go to the top of the page
 
+Quote Post
Spider
сообщение May 1 2012, 13:20
Сообщение #3


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Просто там куча параллельных задач, таких как управление блоком питания, кучка ШИМов, обработка драйверов периферии. Обработчики событий разных, это не просто джойстик sm.gif
Go to the top of the page
 
+Quote Post
zöner
сообщение May 1 2012, 13:47
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 195
Регистрация: 16-02-12
Пользователь №: 70 299



Цитата
Как пишут под арм? Или с чего начать?, До этого всё были мелочи под AVR
абсолютно так же, тем более если писать под GCC. Только придется подключить стандартные либы от STM32, с ними работа с периферией ненамного сложнее чем на АВР без либ. Для параллельности можно использовать Protothreads - абсолютно кроссплатформенная штучка, очень легкая

Сообщение отредактировал zöner - May 1 2012, 13:49
Go to the top of the page
 
+Quote Post
kan35
сообщение May 1 2012, 14:21
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Ни один еще проект с арм-ами пока не делал без freertos, везде она облегчает жизнь. Очень советую применять ее.
А так же проекты-примеры из IAR, и с stm.com выручают.
Go to the top of the page
 
+Quote Post
zöner
сообщение May 1 2012, 15:41
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 195
Регистрация: 16-02-12
Пользователь №: 70 299



Цитата
Ни один еще проект с арм-ами пока не делал без freertos
сколько памяти съедает сама РТОС ?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 1 2012, 15:52
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zöner @ May 1 2012, 18:41) *
сколько памяти съедает сама РТОС ?

По разному: scmRTOS в >2kB flash помещается.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 1 2012, 17:46
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(zöner @ May 1 2012, 16:47) *
Protothreads - абсолютно кроссплатформенная штучка, очень легкая

У дураков мысли сходятся, но, тем не менее, бОльшего минимализма я ещё не видал.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 1 2012, 17:58
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Alexey Belyaev @ May 1 2012, 17:20) *
Просто там куча параллельных задач, таких как управление блоком питания, кучка ШИМов, обработка драйверов периферии. Обработчики событий разных, это не просто джойстик sm.gif

+1 про protothreads.
Само по себе число параллельных задач мало о чём говорит. В большинстве случаев можно обойтись простым Super Loop легко и непринуждённо. Соответственно, protothreads в этом очень помогает.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение May 2 2012, 01:43
Сообщение #10


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Alexey Belyaev @ May 1 2012, 20:24) *
Всем привет!
Заранее спасибо!

Добрый день!
Я лично проходил все это тернистым путем. Моими учителями были уважаемые участники данного форума, других интернет-сообществ, различные FAQ, UM и т.д. и т.п.

Но если быть более точным, то начинал с ARM GCC (WinARM) в 2008 г. на LPC2468. Затем на год все забросил. Снова вернулся с тем же компилятором. Потом снова бросил. Опять вернулся) В начале 2012 года все новогодние праздники угробил на серьезный разбор как инструмента (компилятора, линкера, скриптов), так и самого МК.

Тут использовался и Кейл, и GCC. Удалось написать свой загрузчик (проект забросил, не до него сейчас), который может грузить hex (именно этот формат) как с сети, так с SD-карты, так и по последовательному каналу.

Сгородил что-то типа маленького UDP-стека. Кривого и убогого.

Понял, что все это никому не нужно, в т.ч. и мне))) Проще, а главное - правильнее, взять готовое. Но, эти разборы дали мне очень неплохой опыт в различных направления (сеть, ядро ARM7, адресное пространство, MAC, PHY и т.д.).

Сейчас плотно мучаю ARM9.

Вот такой запутанный путь. Поэтому, извините, я Вам дать совет, как правильнее идти, не могу biggrin.gif biggrin.gif biggrin.gif

Сам до сих пор плохо понимаю, как это оно - правильно идти)))


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 2 2012, 02:50
Сообщение #11


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



WinARM по-любому хорошая тема была. Жаль, что оно всё не выжило. Ягарто, как бы Клён его не хвалил, всё равно фигня.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 2 2012, 03:12
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(kan35 @ May 1 2012, 20:21) *
Ни один еще проект с арм-ами пока не делал без freertos, везде она облегчает жизнь. Очень советую применять ее.

А вот интересно - вопрос любителям freertos - сколько она производительности проца съедает?
Она пытается вытеснять задачу по каждому прерыванию или только по сис. таймеру? Что если в системе есть высокочастотные прерывания?
На сколько тактов увеличивается время работы ISR-ов?

По своему опыту использования uCOS знаю, что она (в недоработанном своем виде wink.gif пытается вытеснить задачу по любому прерыванию и та же задача, но запущенная под ней, расходует примерно на 10% больше проиводительности, чем если бы была запущена без ОС.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 2 2012, 03:20
Сообщение #13


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Дык это же профайлером вычисляется всё.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 2 2012, 03:44
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Если-б у меня была эта ОС, я бы не спрашивал.
Go to the top of the page
 
+Quote Post
gladov
сообщение May 2 2012, 04:30
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 10-11-05
Из: Воронеж
Пользователь №: 10 687



Цитата(jcxz @ May 2 2012, 07:12) *
А вот интересно - вопрос любителям freertos - сколько она производительности проца съедает?
Она пытается вытеснять задачу по каждому прерыванию или только по сис. таймеру? Что если в системе есть высокочастотные прерывания?
На сколько тактов увеличивается время работы ISR-ов?

По своему опыту использования uCOS знаю, что она (в недоработанном своем виде wink.gif пытается вытеснить задачу по любому прерыванию и та же задача, но запущенная под ней, расходует примерно на 10% больше проиводительности, чем если бы была запущена без ОС.


Все сильно зависит от архитектуры процессора, порта ОС на эту архитектуру и, конечно, правильности применения данной ОС.
Насчет uCOS не согласен. Она будет пытаться перепланировать задачи при выходе из прерывания ТОЛЬКО в том случае, если в прерывании была вызвана функция C_ISR_ENTER(). Если необходимо 1000 раз выполнить прерывание без перепланирования и только на 1001-й передать управление другой задаче, так и вызовите C_ISR_ENTER() только на 1001 раз. Тогда и оверхеда не получите.
С Cortex'ами, например, еще проще. Там даже не надо системе говорить, что началось прерывание. В любой ПРАВИЛЬНО портированной ОС перепланировка будет вызвана при выходе из прерывания ТОЛЬКО в случае активации в этом прерывании каких-либо механизмов межпроцессного взаимодействия, таких как взведение семафоров, флагов, передача сообщений и т.п.
Так что при правильном использовании ОС оверхед минимален.
Go to the top of the page
 
+Quote Post

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

 


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


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