|
|
  |
Как писать на С++ при создание приложений под ARM, Примеры |
|
|
|
Jun 19 2012, 22:38
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
PoР - это что такое, просветите плиз..гугл выдает совсем не то  про "кишащий багами софт" я так немного утрируя написал, но,блин, я на эти крайне редкие баги попадаю не совсем крайне редко  ) про драйвер - да, из личного опыта. хоть то була не Linux, a FreeBSD, был LPT-порт и нужно его было запахать в режиме DMA со спецефической приблудой на другом конце порта и спецефическим алгоритмом(часть на уровне драйвера, часть уже на софте) - так помнится я тогда запарился на 1.5 месяца точно, хотя такая же задача на МК делается за пару-тройку дней. под винду еще сложнее(интерфейс у них сложный), пишу иногда дрова под свои приблуды на USB. мож из за привычки к голому железу, хз.. но тут уж выбора нету про время освоения: возьмем простую задачу - сделать какой-нибудь умный терморегулятор,многоканальный пусть будет(ну или там какой-то источник питания управляемый умный, что кому по вкусу) с маленьким дисплейчиком и несколькими кнопочками. Задача чисто на алгоритмы и вышку, остальное дело одного дня если с нуля. Ну во первых как-то рука не поднимется пихать тяжеловес на такую финтиклюшечку, а во вторых запахать тайм-критические алгоритмы на ос с неизвестными внутренностями будет однозначно дольше. ну и сложная 4-слойная плата + дубовые силовые ключи в ТО-247 как-то не очень клеится
|
|
|
|
|
Jun 19 2012, 22:52
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(brag @ Jun 20 2012, 02:38)  PoР - это что такое, просветите плиз..гугл выдает совсем не то  тортик  у меня на столе лежит две платы где память DDR2 на проц именно таким способом напаяна и никаких проблем с разводкой разумеется Цитата про драйвер - да, из личного опыта. хоть то була не Linux, a FreeBSD ааа... BSD, всё ясно, у Linux-а то более простые драйверы в плане написания, причем для упрощения и унификации нередко могут ядро перепахать от и до, да и литературы больше - вот у меня в подписи - бесплатные обучающие слайды  там вообще по всем подсистемам, например PCI или USB - разжевано досконально, а иди попробуй на голом железе USB-host драйвера написать или адаптировать демку от разработчиков - реально тяжелее у windows конечно вообще жуть дрова писать - приходилось знакомиться с сим процессом Цитата возьмем простую задачу не, ну такие простые задачи мы не рассматриваем, там действительно проще самому напахать на голом железе
--------------------
|
|
|
|
|
Jun 20 2012, 06:40
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (AVR @ Jun 20 2012, 03:34)  не совсем понял, это скорее намек или вопрос? я полагаю что энергопотребление при работе Linux и Qt будет несколько выше Это вопрос. Неспешно оцениваем возможность применения толстой платформы для закрытия таких мест, как GUI (на Qt поприятнее это делать, нежели голом железе), работа с флешь накопителями и прочее. Но вопрос энергопотребления стоит довольно жестко, поэтому вопрос не праздный. QUOTE (AVR @ Jun 20 2012, 03:34)  я сравнивал официальные отчеты от Ti для OMAP3 - при максимальной нагрузке - разницы между потреблением с ОС и без нее - не нашел, при отсутствии нагрузки - да, у Linux было процентов на 15 выше, не более Интересно было бы узнать в мВт.  QUOTE (AVR @ Jun 20 2012, 03:34)  да и сама ОС Linux жрет скорее оперативку, чем процессор - что приятно Это радует. QUOTE (AVR @ Jun 20 2012, 03:34)  P.S. понимаю какое отвращение могут вызвать мои слова у профессионалов, пишущих на голом железе для экономии энергии, но мне-то хорошо - ценой некоторого потребления и стоимость DDR2 - получаю платформу для легкой и быстрой разработки Никакого отвращения - все средства хороши к месту. Ресурсы и дальше будут расти и дешеветь, а время, затрачиваемое на разработку и поддержку, наоборот уменьшаться (количество задач растёт) и дорожать. Целесообразность рулит, а рассуждения "тру (Ъ) - не тру" - досужее.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 20 2012, 09:44
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Цитата Интересно было бы узнать в мВт. при выполнении реального приложения, а не тупого висения голой ОС в спячке. Цитата Это радует. любая ос такой должна быть  Цитата проще купить готовые китайские - намного дешевле и быстрей будет, а то пока вы С++ выучите ждать не охота если возможность есть, то однозначно проще.
|
|
|
|
|
Jun 20 2012, 10:53
|

фанат Linux'а
    
Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008

|
Цитата(dxp @ Jun 20 2012, 10:40)  Это вопрос. Неспешно оцениваем возможность применения толстой платформы для закрытия таких мест, как GUI (на Qt поприятнее это делать, нежели голом железе), работа с флешь накопителями и прочее. Но вопрос энергопотребления стоит довольно жестко, поэтому вопрос не праздный. Интересно было бы узнать в мВт.  по этой ссылке есть оценки потребления для AM335x Cortex-A8) подробно в мВт - я так понимаю что AM335X родственник OMAP3 но без DSP ядра, но зато с 3D, типа Freescale iMX (да, кстати, как OpenGL-то без полновесной ОС юзать?  ) + есть платка для оценки этого проца - это опенсорсный проект (так что тут никакой рекламы), есть исходники чертежа платы и всего прочего No OS : DDR Access = 455.31 mWt No OS : Static Image Display = 419.36 mWt Linux PSP : No application running after boot = 486.51 mWt т.е. ценой 30-65 мВт мы получаем полновесную ОСь, которая хоть и полновесная, но не грузит процессор и позволяет уходить в режим глубокого сна дабы не сочли рекламой Ti, могу сказать что эти оценки можно смело применить для многих других ARM различных происзводителей и к Atmel и прочим равно как и обучающие материалы у меня в подписи - распространяются под лицензией Creative Commons Attribution-ShareAlike 3.0, т.е. свободные бесплатные материалы, где все доходчиво и досконально разжевано ЗЫ пиарю за идею, просто нравится ОС Linux
--------------------
|
|
|
|
|
Jun 20 2012, 11:30
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 18-10-07
Пользователь №: 31 485

|
Цитата(andrewlekar @ Jun 22 2011, 08:57)  Расказ про ООП конечно увлекательный, но стоит учитывать, что как только вы вылезете за область применения, описанную dxp (наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой. Конкретно: множественное наследование сразу ставит крест на проекте, перегрузка функций и операторов приводит к очень хитрым багам, развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов... Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?! Использование шаблонов С++ сильно тормозит компиляцию и плохо контролируется по расходу памяти. В общем, это неправда, что С++ оправдан везде, где оправдан С. Точно и сразу зарплата этого программиста вырастает ). Задача всегда такая. Как сделать быстро, качественно, надежно, поддерживаемо и дешево. И ОПП впишется наверно в единичные случаи без MMU.
|
|
|
|
|
Jun 20 2012, 11:53
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(AVR @ Jun 20 2012, 13:53)  No OS : DDR Access = 455.31 mWt No OS : Static Image Display = 419.36 mWt Linux PSP : No application running after boot = 486.51 mWt А если "No OS" и "No DDR" то сразу на 200mWt меньше...
|
|
|
|
|
Jun 21 2012, 02:25
|
Местный
  
Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188

|
Цитата(AVR @ Jun 20 2012, 18:28)  откуда вязалсь цифра на 200 mWt меньше? это есть по моей ссылке или это Ваши измерения? Из datasheet-ов на DDR чипы и собственных измерений - сопоставлял потребление EVB, на которых DDR память была и своих устройств, где ее не было.
|
|
|
|
|
Jul 5 2012, 00:34
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046

|
Как бы красиво и безопасно реализовать такую штуку: обьект должен иметь возможность независимо добавлятся/удалятся в несколько связанных списков. И чтобы можно было к нему обратится через эти списки. Типа так (прямое обращение к приватам с целью сокращения строк кода, не обращайте внимания): CODE class CdllNode{ public: void Enqueue(CdllNode *node); ... private: CdllNode *next; CdllNode *prev; };
class SomeClass{ public: virtual void someMethod(); private: CdllNode n1; CdllNode n2; CdllNode n3; };
CdllNode queue1; CdllNode queue2; CdllNode queue3; SomeClass someobj;
void f(){ queue1.Enqueue(&someobj.n1); queue2.Enqueue(&someobj.n2); queue3.Enqueue(&someobj.n3); } Адресоватся в итоге нужно как-то так просто Код void f1(){ SomeClass *body=queue2.next; body->someMethod(); } Пока работает на offsetof(), но это не безопасно и вообще запрещено стандартом для nonPOD-классов (хотя именно такая реализация на данный момент работает). Добавлять в класс CdllNode указатель на обьект SomeClass'а не конает - embedded,мало памяти,все дела.. так же, как и использование множественного виртуального наследования. тоесть должно быть максимум оптимизировано по быстродействию и обьему оперативной памяти.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|