Подтвердить что ты не робот

С# для встроенных систем?

"С# предназначен для написания приложений как для хостинга, так и для встраиваемых систем, от очень больших, которые используют сложные операционные системы, вплоть до очень небольших функций". - цели разработки (википедия)

Хотя это сильно зависит от того, как встроено "emebedded",

Как вы думаете, насколько С# достигла этой цели?

Считаете ли вы, что С# так же хорош, если не лучший инструмент для задания, чем C/С++?

4b9b3361

Ответ 1

Ну, Micro Framework; Я не слышу много шума об этом, но я не вошел в "встроенный". Но это будет зависеть от того, что он делает... С# - хороший язык общего назначения, но есть еще время, когда требуется что-то жесткое ядро ​​(и повесить сложность кода).

Ответ 2

Есть много коммерчески успешных программных приложений, написанных на С# и для платформы WinCE. Например, некоторые set-top-boxes (от AT & T и т.д.) Запускают код С# на .net CF. Учитывая, что эти боксы имеют барабан размером 64 или 128 МБ, я думаю, что С# во встроенных встроенных достаточно.

Точка с такими улучшениями, как аппаратные ускорения и другие улучшения компилятора, язык JIT, такой как С#, способен к хорошей работе.

И самое большое преимущество заключается в том, что с последней версией Visual Studio вы можете отладить устройство от VS. По крайней мере, для среды разработчиков нет ничего хорошего.

примечание: платформа мудрая, есть много конкурентов для WinCE/WinMobile, и у каждого есть свои сильные стороны. В приведенном выше я говорю только о преимуществах среды разработки.

Ответ 3

Как вы знаете, вам нужно иметь встроенную мини-среду исполнения .net, если вы хотите написать свой код против нее на С#. Можно сказать, как Win CE.

Надеюсь, скоро у нас будут недорогие встроенные микросхемы .NET mini-mini на рынке, или они уже есть? Просто немного интересуюсь этой новостью.

http://www.windowsfordevices.com/news/NS4666205829.html

Небольшой запуск в Microsoft задний двор готов начать доставку крошечный 32-контактный чиповый компьютерный модуль который запускает ".NET Embedded", новый Встроенная программная платформа Microsoft разработанный для использования в часах и других "умные личные объекты". Модуль, разработанный при запуске .netcpu Corp., включает части Microsoft Технология интеллектуальных персональных объектов (SPOT).

Как бы то ни было, вот что-то интересное для вас. Взгляните на проект COSMOS. Он может перевести ваш IL-код на различные платформы (и в будущем для встроенных архитектур, надеюсь)

http://www.gocosmos.org/index.en.aspx

Космос включает в себя компилятор (IL2CPU, который является частью Космоса), который гласит входной файл (обычно оболочка) и Библиотеки Cosmos и компилирует в результате код IL к x86. IL2CPU имеет слой для кросс-платформы, и мы планируем для поддержки других процессоров и платформ, включая x64. IL2CPU также поддерживает некоторые методы расширения которые позволяют взаимодействовать с кодом С# напрямую с процессором, регистры и портов в ядре. IL2CPU содержит некоторые встроенные ассемблеры, но есть нет файлов ASM, которые необходимо связать в.

В настоящее время IL2CPU сначала выводит raw asm файлов (с комментариями IL), а затем обрабатывает их через nasm (свободный ассемблер). Позже мы планируем излучать непосредственно в двоичный файл.

Ответ 4

Вы можете проверить Netduino. Это приложение .Net Micro Framework на 32-битном микроконтроллере ARM с использованием С#. Его на netduino.com или это видео http://www.youtube.com/watch?v=UN-JXHHlgcY.

Так как С# использует фреймворк или виртуальную машину, которая служит промежуточным звеном между своим кодом С# и машинным кодом, я ожидаю, что он будет работать медленнее, чем с C или С++. Но в приложениях, где скорость не так важна, а доставка идет незамедлительно, это определенно немало.

Ответ 5

Я использую С# для некоторых моих встроенных приложений, и он работает достаточно быстро для моих целей (небольшие веб-серверы и т.д.) на чипе ARM с частотой 72 МГц. Кроме того, в micro micro Framework есть много дополнительных библиотек, которые можно обрезать выкл.

Ответ 6

Встраиваемые системы довольно часто предъявляют требования в реальном времени. Удовлетворение тех, кто использует язык для сбора мусора, вероятно, будет интересно.

Ответ 7

С# для встроенных систем, не использующих WinCE или Windows Embedded, требует .NET Micro, поэтому на самом деле нет различия между "размещенным и встроенным", поскольку для его размещения требуется независимо. То есть он размещен и может быть встроен, поэтому "размещенный или встроенный" не имеет смысла.

В настоящее время .NET Micro имеет объем памяти 300 КБ и поддерживается только на ARM и Blackfin, что делает его непригодным или слишком дорогостоящим для использования большого числа встроенных приложений. Более того, несмотря на то, что он поддерживает многопоточность, он не работает в режиме реального времени, что делает его непригодным для другого большого пакета приложений.

Несколько лет назад Microsoft провела бесплатную сессию в UK Embedded Systems Show, которая запустила новый .NET Micro; во время Q & A, когда я задал вопрос о поддержке в реальном времени и получил ответ "Нет, это не в режиме реального времени". потеряли время.

Ответ 8

Что было бы интересно сделать, это создать "компилятор", который превратит сборку .Net Micro Framework в собственный встроенный язык ассемблера. Однако придется вводить вызовы управления памятью в методы. В качестве альтернативы вместо того, чтобы пытаться "угадать", куда они идут, вы можете использовать psuedomethod, скажем, System.Memory.Delete(), и использовать это как знак для вставки удаления там.

Было бы интересно попробовать феникс-фреймворк; Я мог бы просто попробовать его на следующих выходных.

Ответ 10

У меня есть трудное время, полагая, что С# всегда будет оптимальным выбором для встроенной системы, по крайней мере, до той степени, что в настоящее время имеется мощность обработки. С# обычно нацелен на MSIL/CIL, а не на подходящий машинный язык. Возможно, что можно получить машинный код для конкретного процессора из С#, но вряд ли он будет ужасно эффективным. Лучшая ставка: придерживайтесь языков, которые находятся ближе к аппаратным средствам (c, С++, неуправляемые), несмотря на отсутствие встроенного управления памятью (как не детерминированное, как это), так и ограниченный диапазон доступных библиотек. Во встроенном, упрощенном и прозрачном - лучший выбор, imho.

Ответ 11

С# никогда не будет таким же хорошим, как c/С++ для встроенных устройств, потому что он управляется кодом и работает внутри .net framework. Что касается виртуальных машин, java намного превосходит .NET, что очевидно, почему миллиарды встроенных устройств работают на Java, тогда как очень мало работает на .NET. Проще говоря, у Microsoft нет коммерческой выгоды, поскольку люди используют С# во встроенных устройствах. Люди, которые программируют эти устройства, никогда не купят свою среду разработки Visual Studio... тогда зачем беспокоиться?