Страница 1 из 2

C# и atmega8

Добавлено: Пт июл 12, 2013 00:02:57
kelod
с МК опыта работы не было, с ассемблером тоже из языков , подходящих для мк знал когда-то паскаль, щас в основном пишу на c# подскажите пожалуйста, как на шарпе программировать контроллеры, хотя бы ткните носом где можно почитать, а то мне гугл какую-то фигню говорит((

Re: C# и atmega8

Добавлено: Пт июл 12, 2013 06:47:47
Kavka
AFAIK, компиляторов .net под МК нет. Вам проще будет Си или Си++ освоить, чем C# затаскивать на МК.

Re: C# и atmega8

Добавлено: Пт июл 12, 2013 22:02:18
YS
Все объектно-ориентированное изначально не подходит для МК, ибо страшно неэффективно обращается с ресурсами. А C# не подходит еще и из-за .NET.

Можете попробовать Arduino, может быть, понравится. Оно, как и C#, объектно-ориентировано и имеет примеры на каждый чих. Но это, конечно, среда для женщин, младших школьников и слабых духом.

Для сравнения - простейшая задача, мигание светодиодом, на ANSI C под ATmega32 весит 174 байта. На Wiring (язык Ардуино) - 1076 байт под тот же МК. Компилятор и там, и там - avr-gcc, просто Wiring - диалект С++ со своими библиотеками. Объектно-ориентирован, да.
СпойлерКстати, будете смеяться - мой текущий коммерческий проект как раз основан на Ардуино. Заказчик так захотел. :))) Ну а за деньги, как водится, любой каприз. :)) Так что это не тот случай, когда "не кодил, но осуждаю". :)

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 07:21:42
oleg110592
А C# не подходит еще и из-за .NET.
Подходит - можно поиграться и чего-то сотворить: http://singularengineer.com/stm32f4-dis ... framework/
на русском: http://habrahabr.ru/post/175989/

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 12:19:07
YS
Подходит ...
Угу. Только запускается на STM32F4, которые да-а-алеко не AVR. И да, то ли я просмотрел, то ли они стесняются показать - что там с эффективностью генерации кода?

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 13:29:09
oleg110592
у вас написано Все объектно-ориентированное изначально не подходит для МК, а стм32ф4 это МК. Эффективность слабая - там комментарий есть:
С целью оценить оверхед, добавляемый фреймворком, заменил тело цикла на много повторяющихся строчек:
led.Write(true); led.Write(false);
Итог довольно печальный: частота полученного сигнала ~47кГц. Для сравнения на чистом С будет 84МГц. Таким образом, разница в 3 порядка.
На «побаловаться» — сойдет. Но для чего-то более-менее серьезного пока сыровато.

подождем когда МК станут гигагерцовыми, тогда будет нормально :)

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 16:38:39
YS
у вас написано Все объектно-ориентированное изначально не подходит для МК, а стм32ф4 это МК.

...

частота полученного сигнала ~47кГц. Для сравнения на чистом С будет 84МГц. Таким образом, разница в 3 порядка.
Т.е., Вы считаете, что я не прав, и при разнице в три порядка (!!!) такое решение подходит для МК? :)))
подождем когда МК станут гигагерцовыми, тогда будет нормально
В корне неверный подход, но, к сожалению, популярный по причине присущей человеку лени. :) Задирать частоту МК только для того, чтобы чип с частотой 1 ГГц пережевывал мусорный код с той же эффективностью, с которой чип на 8 МГц выполняет нормальный код - это как-то странно, что ли... :wink:

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 20:53:46
oleg110592
Именно подходит для МК (я выразил чисто свое имхо) если уже решено это:
Изображение
пусть медленно, но легко решаема масса задач графика, юсб, ком порт и пр.
В корне неверный подход, но, к сожалению, популярный по причине присущей человеку лени.
Увы мы сейчас наблюдаем этот подход на PC. Програмисты на .NET уже более востребованы чем на си или с++. То же будет и на МК - это мое бредовое имхо, высказать мнение имею право.

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 21:18:40
YS
Что там решено - не понял. Скриншот нечитаем.
Програмисты на .NET уже более востребованы чем на си или с++.
Здесь есть небольшая разница, а именно - для каких задач востребованы. Для 90% задач типа "Hello, world!" действительно удобнее за пять минут обучить школьника сишарпу и посадить его кодить за еду. А вот те же драйвера, например, до сих пор пишут на Си долго учившиеся умные дяди...

Везде есть мейнстрим и 10% задач, для которых важно качество. При этом, если человек умеет писать качественно - освоение сишарпоардуиновой среды займет у него ровно пять минут. А вот если его мозг изначально покалечен подобной парадигмой, есть вероятность, что писать качественно он не научится никогда... Вспомните, что известный дядя говорил про Basic. Вот ровно та же ситуация.
То же будет и на МК
Да нет. МК по определению - среда с очень слабыми ресурсами, так что мусорного кода она практически не терпит. Что действительно правда, так это то, что обсуждаемый ардуиноподход привел к появлению той же Raspberry Pi - но это уже по сути полноценный комп. Возможно, что мейнстрим пойдет в это русло. Но собственно МК никуда не денутся.

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 21:50:04
dosikus
Увы мы сейчас наблюдаем этот подход на PC. Програмисты на .NET уже более востребованы чем на си или с++. То же будет и на МК - это мое бредовое имхо, высказать мнение имею право.
Ну конечно сей путь развития неправильный и тупиковый, но похоже так и будет.
Всеобщее отупление и ардуинозависимось . Снова же кокосы , микраПаскали , CVAVR .
Поколение визардов и индусских либ...

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 22:08:59
blackx
Ничего, когда-нибудь, когда меги станут быстрыми и многоядерными, и PHP портируют под авр! :)))

Программисты .NET/Java востребованы совсем не для тех задач, которые обычно возлагаются на C/C++. В чем тупиковость пути развития? Запросы ведь также растут. Раньше вам хватало пары кнопок и светодиодов в качестве интерфейса, ну максимум - семисегментного индикатора для вывода цифр. Потом, вы захотели добавлять в свои девайсы дисплеи от нокии 3310. А теперь уже не так бредово звучит мысль установить в свою систему цветной ЖК экран с сенсорным управлением и полноценным гуем. Может атмега пока с этим не очень справляется, неважно. Дешевые дисплеи то уже есть.

Разумно предположить, что в скором времени появятся копеечные и производительные системы-на-кристалле, с частотами порядка нескольких сотен мегагерц, которые можно будет хоть в простой будильник поставить. Это закономерный этап развития. Уже сейчас под АРМы никто не пишет свои программы на АСМе - нет смысла. Аналогично, когда-нибудь, и Си будет использоваться лишь для написания аппаратной абстракции, а Джаву и дотнет портируют под такие платформы.

Я к тому, что это вовсе не "всеобщее отупление". Сейчас средний разработчик на Java/.NET должен знать на порядки больше, чем требуется тому же разработчику сисемного ПО - просто из-за высокого уровня развития этих платформ.

Re: C# и atmega8

Добавлено: Сб июл 13, 2013 22:26:12
YS
Не, все не так страшно. :) Несмотря на то, что есть Ардуино, тру-программирование никуда не собирается деваться. Каждой задаче (точнее, каждому набору требований) свой инструмент, вот и все.

Я говорю только о том, что знать по возможности надо самые эффективные, "профессиональные", инструменты; не надо ограничиваться протезами для мозга. Но это уже каждый решает для себя сам.

Re: C# и atmega8

Добавлено: Вс июл 14, 2013 04:02:03
oleg110592
Поправил картинку, тут можно почитать подробнее о возможностях:
http://devdotnet.org/post/2013/05/03/Ne ... istem.aspx
http://devdotnet.org/post/2013/05/05/Ot ... onics.aspx
тру-программирование никуда и там не девается, можно писать native код:
http://www.tinyclr.it/a-new-journey-und ... ement.aspx
про native, для общего развития: http://www.olegtarasov.me/Post/2010/10/ ... native-kod

Re: C# и atmega8

Добавлено: Вс июл 14, 2013 13:36:35
Kavka
YS писал(а):Здесь есть небольшая разница, а именно - для каких задач востребованы. Для 90% задач типа "Hello, world!" действительно удобнее за пять минут обучить школьника сишарпу и посадить его кодить за еду. А вот те же драйвера, например, до сих пор пишут на Си долго учившиеся умные дяди...
Мнда...
Вспомним про Curiosity.
https://www.usenix.org/conference/hotdep12/tbd (видео только на английском).

Re: C# и atmega8

Добавлено: Вс июл 14, 2013 13:44:16
YS
тут можно почитать подробнее о возможностях
Почитал. Во-первых, обратим внимание на минимальные требования к хардваре:
для встраиваемого применения в 32- и 64-разрядных микроконтроллерах, содержащих как минимум 256 КБайт флеш памяти(ПЗУ) и 64 КБайт оперативной памяти(ОЗУ).
Понятно, что никакими восьмибитниками тут и не пахнет. Чтобы пережевывать подобный код с пристойной скоростью нужна мощнейшая числомолотилка, что и не скрывается. Это грустно. Для сравнения, вот, что можно сделать на контроллере с одним (!) килобайтом RAM, если подходить с умом.
Разрабатывать устройства на платформе .NET Micro Framework гораздо проще, быстрее, и менее трудозатратнее, что приводит к снижению стоимости разработки. Это достигается путем использование более высокоуровневого подхода к программированию.
...
Дополнительно, если разработчик имеет опыт разработки настольных приложений для платформ .NET, то он может использовать все свои навыки и опыт для разработки устройств платформы .NET Micro Framework. Программный код для платформы .NET с определенной адаптацией можно перенести на устройства работающие на платформа .NET Micro Framework.
Опять же, экономим время и деньги в ущерб эффективности. За месяц учим школьника писать интерфесы на C#, потом пересаживаем его на встроенную платформу. Понятно, я несколько утрирую, но смысл именно такой...

Далее упоминаются какие-то дисплеи, тачскрины и в таком духе. Т.е., опять ориентация на свистелки и красотульки.
про native, для общего развития
Прочел. В комментариях автор разъясняет, что такой подход удобен в основном для того, чтобы подключить к гламурному интерфейсу, написанному на C#, нативную библиотеку, которая и будет делать основную работу. Что логично и правильно, в общем.
в скором времени появятся копеечные и производительные системы-на-кристалле, с частотами порядка нескольких сотен мегагерц, которые можно будет хоть в простой будильник поставить
Уже, уже. Raspberry Pi, Virt2Real и подобные китайские поделки, сотни и тысячи их. Почитайте тот же Hack a Day - на таких компах чаще всего делают то, для чего хватило бы копеечного МК, опять же, экономя мозговые усилия за счет вычислительной мощности.

Это логическое продолжение Ардуино. Лень переучиваться? Давайте писать на языке, который максимально похож на что-то высокоуровневое. Мигание диодиком компилируется в такой код, который не влезает в МК? Давайте возьмем МК побольше! Код насколько велик, что не влезает уже ни в один МК семейства? Давайте возьмем ARM! И так далее. Чисто экстенсивное решение проблем.

Среди примеров Ардуино есть демокод для Bluetooth-модуля. Он не делает почти ничего - только настраивает модуль и перекидывает данные с аппаратного UART'а в модуль и обратно. Так вот, в скомпилированном виде он занимает почти пять килобайт!!!

Как-то раз я писал подобный код, правда, под MSP430 - конфигурация встроенного температурного сенсора и пересылка его данных через самописный софт-UART. Вышло чуть больше килобайта.
Вспомним про Curiosity.
Вспомним.

http://alvinalexander.com/bookmarks/tec ... sity-rover
It's running 2.5 million lines of C on a RAD750 processor manufactured by BAE.

Re: C# и atmega8

Добавлено: Вс июл 14, 2013 14:53:36
oleg110592
на контроллере с одним (!) килобайтом RAM
напомнило: «640КБ должно быть достаточно для каждого» (640K ought to be enough for anybody) — легендарная фраза, приписывается Биллу Гейтсу, основателю Microsoft, 1981-й год, времена создания первых IBM PC и MS DOS 1.0.
свеженький микроконтроллер от микрочип:
Изображение
тенденция, однако

Re: C# и atmega8

Добавлено: Вс июл 14, 2013 20:06:19
Kavka
YS писал(а):вот, что можно сделать на контроллере с одним (!) килобайтом RAM, если подходить с умом.
Мне больше нравиться запись с Breakpoint 2008 - слышно реакцию зала !!! 8)
http://www.youtube.com/watch?v=5ozFhqh-vKI

Re: C# и atmega8

Добавлено: Чт июл 18, 2013 15:27:07
balmer
Неправильная аргументация почему C# не нужно использовать на микроконтроллерах. C# он хорош, потому как эта RAD система, где все нужные библиотеки уже написаны. Там где этих библиотек нет, C# теряет всю привлекательность для знающих его.

Re: C# и atmega8

Добавлено: Чт июл 18, 2013 15:35:56
YS
Неправильная аргументация ... Там где этих библиотек нет, C# теряет всю привлекательность для знающих его.
Библиотеки можно написать. Для Ардуино же написали? И для С# напишут, если придет популярность в этой нише. Но вот проблему производительности в рамках этой парадигмы не решить никак. Разве только взять МК помощнее, что, собственно, и делают.

Re: C# и atmega8

Добавлено: Чт июл 18, 2013 16:56:14
oleg110592
Для .NET MF уже написана приличная библиотека классов.
Вспомнил - есть именно компилятор C# для пиков: http://en.pigmeo.org/wiki/Main_Page
Заброшен похоже, есть исходники - можно продолжить кому хочется иметь личный компилятор :)