Использование моно во встроенном Linux для оборудования

Я провожу исследования для компании в качестве стажировки. У меня возник вопрос об использовании Mono, кроссплатформенной реализации платформы .Net. Моя компания занимается разработкой оборудования и программного обеспечения.

Мои знания об использовании встроенного Linux очень ограничены. Моя компания, в которой я прохожу стажировку, действительно ориентирована на .NET. Но в связи с новыми разработками mono они спрашивают себя, могут ли они нацелить Linux на небольшие проекты, а также избежать высоких затрат на лицензирование для людей, для которых они разрабатывают программное обеспечение и оборудование.

Я уже изучал, на что моно может (и пока не могу). Теперь я перехожу к встроенному вопросу. Я как бы запутался в рассказе о том, как создается встроенный Linux.

Я видел несколько историй, когда они просто использовали некоторые стандартные библиотеки Linux, чтобы встроить Linux в оборудование. Я также видел, что существуют специальные дистрибутивы Linux, такие как uClinux (также известный как µClinux). Так какая разница, или все равно. Как обычно выглядит этот процесс, когда я хочу использовать встроенный Linux на целевом устройстве?

Хорошо, чем моно-часть, поэтому в основном я хочу иметь возможность запускать C # во встроенном Linux. Здесь в основном используют uclinux, могу ли я использовать для этого моно? Я посмотрел на некоторые спецификации, и у них нет модуля управления памятью (MMU).

ТАК в основном я беспокоюсь о том, что нет MMU. Как отреагирует сборщик мусора?

Надеюсь, я не задавал лишних вопросов,

С уважением, и я уже благодарен вам за то, что вы это прочитали,

Бенджамин


person Benjamin    schedule 08.09.2010    source источник


Ответы (4)


Сборщик мусора не зависит от MMU, хотя он может быть более эффективным, если он есть.

В настоящее время мы используем его для генерации исключений с нулевой ссылкой без проверок: в uclinux вам нужно будет включить явные проверки (код уже есть, его просто нужно включить). Другие люди сообщали об использовании моно на uclinux, хотя, вероятно, есть некоторые настройки, необходимые для источников здесь и там, поскольку мы никогда не тестируем его на этой платформе (конечно, я говорю о uclinux на архитектуре процессора, которую мы уже поддерживаем, например, ARM, вы не уточнял).

Что касается других комментариев, AOT и mkbundle в значительной степени не имеют отношения к тому, что вам нужно. Что вам действительно нужно, так это уменьшить занимаемое монохромное изображение, чтобы оно соответствовало возможностям вашего устройства, см. http://www.mono-project.com/Small_footprint для получения дополнительной информации.

Если бы это был я, я бы всегда выбрал обычный ARM linux вместо uclinux для запуска сложного программного обеспечения, такого как моно или любой другой программы, которая вам нужна для работы в моно.

person lupus    schedule 09.09.2010
comment
‹Другие люди сообщили об использовании моно на uclinux› - person Benjamin; 09.09.2010
comment
Это настоящая проблема, с которой я столкнулся, я не нашел людей, которые действительно пробовали это, я попытался поискать здесь, но я никого не нашел, вы не знали, видели ли вы эти отчеты? - person Benjamin; 09.09.2010

Если на ваших устройствах нет MMU, возможно, вы захотите использовать Microsoft .NET с открытым исходным кодом. Micro Framework. Он гораздо более ограничен, чем .NET / Mono, и это интерпретатор, а не JIT, но он может работать на гораздо более ограниченном оборудовании.

person Mikayla Hutchinson    schedule 08.09.2010
comment
Это было бы решением, но это не решение моего вопроса, так как они хотят его в Linux. - person Benjamin; 09.09.2010

Моно может быть настолько ограничено, насколько вы хотите. Если вы используете устройство без MMU, я бы посмотрел на Ahead of Компиляция времени.

mkbundle также может работать, но я не уверен, что он может обойтись без MMU. Тем не менее, если вы используете AOT, вы сначала будете использовать mkbundle, чтобы получить все зависимости.

person supercheetah    schedule 08.09.2010
comment
Ни один из них не будет работать, если Mono не работает нормально. Все, что удаляет AOT, - это необходимость JIT - вам все еще нужна среда выполнения Mono для GC, ввода-вывода, метаданных и т. Д. И все, что делает mkbundle, - это встраивает Mono и ваше приложение в один исполняемый файл. - person Mikayla Hutchinson; 09.09.2010

Если ваша компания хочет нацелить на встроенные платы Linux через MONO, и все, что нужно, - это перенести какое-то приложение, которое уже работает на настольном компьютере с Windows, то у вас, вероятно, возникнут очень небольшие проблемы. Но если вы хотите поговорить с некоторыми периферийными устройствами IO, I2C, SPI, 1-Wire и другими, у вас возникнут проблемы с доступом к ним через MONO, и вам, вероятно, придется сделать какой-нибудь переводчик (вероятно, написанный на GCC), который будет шлюз между реальным оборудованием и вашим приложением MONO.

person avra    schedule 09.09.2010