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

StackOverflow https://stackoverflow.com/questions/3668146

Вопрос

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

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

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

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

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

Так что в основном я беспокоюсь о том, нет ММУ. С тех пор как будет реагировать сборщик мусора?

Я надеюсь, что не дал перегрузку вопросов,

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

Бенжамин

Это было полезно?

Решение

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

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

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

Если бы это было я принял решение, я всегда выбираю регулярную ARM Linux через UCLinux для беговой комплексной программы, такой как Mono или какая-либо программа, необходимая для бега на моно.

Другие советы

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

Моно может быть так же ограничено, как вы хотите, чтобы это было. Если вы используете устройство, которое не имеет ММУ, я бы посмотрел в Опрос состав времени.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top