Некоторое время я возился с Arduino, и я нахожусь в процессе перехода от новичка к среднему. Я хотел бы высказать некоторые мнения о .NET Micro Framework с точки зрения производительности и доступности оборудования.
Я программист .NET, но я обнаружил, что обработка для Arduino практически не требует усилий ... Это настолько близко к C #, что все, что я хочу сделать, даже не требует использования документации.
Во всяком случае, что лучше?
arduino
.net-micro-framework
Крис Б. Беренс
источник
источник
Ответы:
Если вы хотите перейти от новичка к среднему языку, вам нужно выучить язык C. Даже если вы отложите всю дискуссию о блокировке Windows, вам нужно хорошо разбираться в программировании на C, прежде чем вы сможете выполнять качественную работу над микроконтроллер на языке более высокого уровня, как .NET Micro или C ++.
Встроенные системы состоят из пирамиды знаний, и вам действительно нужно знать хотя бы некоторые из каждого шага, чтобы стать хорошим дизайнером:
^ Код пользователя
^^ Операционные системы
^^^ Язык C
^^^^ Язык ассемблера
^^^ ^^ Архитектура микроконтроллера
^^^^^^ Цифровой дизайн
^^^^^^^ Полупроводники ^^^^^^^^
Базовая электроника (закон Ома)
Платформа Arduino обеспечивает удобный хобби для любителей пирамиды где-то между языком Си и операционной системой.
Конкретные к вашему платформе .NET Framework Micro вопроса, О говорит:
Кроме того, брошюра отличает ее от Windows Mobile , Windows Embedded , CE 6.0 и .NET Compact Framework и сравнивает с Linux, Real-Time, Java и пользовательскими операционными системами. Это огромный скачок от фреймворка Arduino / Processing.
Ваш Arduino имеет 8-битный процессор с 1 КБ ОЗУ. В дополнение к 8-битной и 32-битной потере мощности, он также работает менее чем в два раза быстрее, чем большинство перечисленных процессоров. Хотя я бы не стал отговаривать вас от перехода на 32-разрядный процессор, я бы порекомендовал его как шаг от среднего до продвинутого.
Это действительно легко использовать много времени и памяти с несколькими строками в C # или C ++, которые незначительны для двухъядерного процессора, работающего на пару гигагерц с гигабайтами оперативной памяти, но которые могут иметь огромное значение для встроенного устройства , Пока вы не разбираетесь в ассемблере и / или C или не являетесь гуру в C # или C ++, я бы не рекомендовал использовать его для встроенного программирования.
Итак, я бы начал с загрузки WinAVR и запрограммировал бы простую процедуру мигания светодиода на C. Если C полностью вас смущает, сделайте немного собственного кода («Hello World») на вашем ПК, а затем перейдите к микроконтроллер, но это не должно быть необходимым. Затем перейдите к общению через UART, начните использовать прерывания и переделайте некоторые из ваших проектов Arduino на C. Затем найдите (или создайте!) Новую плату разработки с другим микроконтроллером, возможно, PIC или ARM , и некоторые лакомства, такие как ЖК-экран, Ethernet, SD-карта или все, что вы хотите, и попробуйте изучить новую систему. Добравшись туда, вы будете лучше знать, куда хотите пойти.
Мы будем здесь, чтобы помочь вам на этом пути!
источник
У меня нет опыта работы с «.NET Micro Framework», но я очень подозрительно отношусь ко всему, что связано с работой виртуальной машины на низкоэнергетических встроенных платформах. Для меня это просто пустая трата времени. Вам нужно больше процессоров питания, больше памяти, больше энергопотребления, чтобы добиться того же эффекта, что и запуск более выделенной платформы, которая компилируется в машинный код. Возможно, почему мой Android-телефон с 528 МГц, на котором установлена виртуальная машина (аналогичная JVM), часто чувствует себя медленнее, чем мой предыдущий 312-МГц Palm Treo, работающий несколько лет назад, который запускает приложения, скомпилированные для машинного кода.
Вкратце, для .NET MF требуется процессор ARM, который на шаг выше по мощности и сложности по сравнению с 8-битными чипами ATMega, используемыми в Arduino.
Я предлагаю, что если Arduino делает то, что вы хотите, придерживайтесь этого. Если нет, вы можете обратиться к более мощным чипам ATMega или ATXmega, а также к ним, которые работают с ARM непосредственно в C / C ++, без дополнительного уровня перевода .NET поверх него.
источник
Если вы хотите перейти на промежуточный уровень, вы должны попробовать платформу вне среды Arduino. Их много на выбор, вы можете остаться на 8 битах, даже с микроконтроллером Atmel, или перейти к другому поставщику. Используйте IDE, напишите язык кода C, поймите, как работает MCU, напишите свой собственный код загрузчика или используйте встроенный программист и продолжайте двигаться.
Но если вы действительно хотите попробовать написать на C # для микроконтроллеров, попробуйте это: http://www.trygtech.com/products/sh7619_evb.php
Он использует гораздо больший MCU, типичный объем .NET занимает около 512 КБ флэш-памяти и 256 КБ ОЗУ.
источник
Я только что видел Netduino, который может быть интересным компромиссом для вас. Я понятия не имею о системных спецификациях или деталях, но похоже, что он использует .NET Micro, так что это похоже на хороший способ, по крайней мере, попробовать эту среду.
источник
Самой большой проблемой для Processing / Arduino является отсутствие приличного отладчика. У меня есть дракон AVR, но это мало помогает, потому что (а) отладчик AVR Studio работает медленно и глючит, или (б) отладка в Eclipse просто медленная и, хотя и менее, все еще глючит. У меня не было возможности попробовать это в WinAVR, но это следующее в списке.
Конечно, в Arduino IDE нет отладчика.
Как только вы выходите за рамки простых приложений и начинаете создавать приложения, которые должны выполнять сложную работу на уровне проводных и беспроводных сетей, это довольно разочаровывает. Именно поэтому я серьезно смотрю на .NET MF - играю с SDK, и у меня скоро появится некоторое оборудование.
источник
Вы можете проверить Netduino . Он создан для совместимости с компоновкой и выводами arduino и запускает .NET Micro Framework. Таким образом, вы можете кодировать на C # и даже отлаживать в Visual Studio!
До сих пор я обнаружил, что с ним очень хорошо и легко работать. Хотя я не нашел много учебников, я думаю, что вы можете просто портировать много вещей из Arduino. Я, будучи новичком, смог легко перенести настройку фоторезистора / фотоэлемента и код из учебника Arduino.
источник
Вы могли бы рассмотреть возможность разработки в стиле C на Arduino на STM32 (ARM M3) через один из нескольких проектов с открытым исходным кодом. LeafLabs и xduino имеют работающее аппаратное обеспечение и наборы инструментов на основе Arduino. Я использовал плату Leaflabs Maple, когда мне нужен 32-битный микроконтроллер, по сравнению с обычными чипами Atmega
источник
Вы могли бы взглянуть на http://www.hpinfotech.ro/html/cvavr.htm, которая является хорошей простой в использовании IDE для Atmel, и написать, что некоторые CI использовали это профессионально и это очень хорошо, больше похоже на уровень удобства, который вы получить из IDE, как Visual Studio. У меня есть Eclipse, чтобы быть немного неуклюжим для разработки Android, не так гладко, как купленный.
У меня есть Netduino, в которой я реализовал систему управления Tricopter для развлечения, которая работает в режиме реального времени и надежно работает, написана на C # с Visual Studio 2010. Отладка на устройстве, как правило, превосходна, у меня есть автоматическая синхронизация данных через Wi-Fi, и у меня есть крошечный HTTP-сервер в самолете.
источник
Мы используем .NET Micro Framework в производственных приложениях (точные измерительные приборы). Работает нормально.
Современные микропроцессоры достигли состояния, когда вы можете использовать парадигму «создать-увидеть-профиль-изменить-увидеть ...». Объемы памяти сейчас довольно большие и дешевые, поэтому, скорее всего, вы не будете складываться в условиях нехватки памяти.
И, как разработчик C #, вы знаете, что адекватное профилирование для достижения желаемого условия - лучший способ жить, чем угадывать, что еще и что нужно сделать сложнее, создавая код, чтобы сделать ваш код (и, возможно, нет) немного быстрее.
источник