Помогает ли это настроение Linux для лучшего программиста на встраиваемых системах? - PullRequest
1 голос
/ 30 марта 2011

было бы интересно - если бы знал Образ жизни Linux или архитектура Linux , это дало бы лучший настрой для программирования на встраиваемых устройствах, особенно если в них установлена ​​какая-то ОС.
Просто хочу быть уверен, что я не пропустил ни одной важной вещи:)

Примечание:
Я пришел из фона Windows, могу программировать на C и C ++.
Увлечен и, наконец, хочу начатьво встроенное программирование.Я хотел бы начать с создания типичного проекта для любителей дома.

Было бы неплохо, если бы кто-то также прокомментировал BeagleBoard как отправную точку для меня.

Ответы [ 9 ]

3 голосов
/ 30 марта 2011

«Врезанный» - нечеткое слово.Существует две категории:

Существуют встроенные системы реального времени: приложения микроконтроллеров / микропроцессоров, которые непосредственно взаимодействуют с оборудованием на низком уровне абстракции.Типичными областями применения являются системы управления / автоматизации, промышленные, автомобильные, медтехнические, бытовая электроника, передача данных / телекоммуникаций и т. Д.

А еще существуют пушистые встраиваемые системы: различные ноутбуки: компьютеры, встроенный Linux, встроенные окна, телефоныи телефонные операционные системы, все, что связано с Интернетом, человеко-машинными интерфейсами и т. д.

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

В любом случае * nix может использоваться в качестве платформы разработки, поэтому, зная, что она победитне больно.

2 голосов
/ 01 апреля 2011

Да и нет. В основном да.

Лундин правильно описал «два встроенных мира» (хотя граница между ними очень размыта).

Если вы пишете для «более высоких встраиваемых» систем, таких как Android, или других устройств, работающих под управлением Linux, то, безусловно, экспертные знания Linux будут очень полезны. Вам все еще нужно знать некоторые «голые кости» и не пугаться, когда вы видите подобный оператор &=~ в C, но знаете Linux - Linux старого, где вы настраивали вещи, редактируя файлы в /etc где вы собирали свои собственные ядра для повседневного использования, где вы собирали программное обеспечение из тарболлов, вот что помогает. Знание современного Linux - Gnome, gconf-editor, Synaptic и им подобные не помогут.

Затем, если вы программируете устройства без ОС, в средней области - достаточно быстрые и мощные, чтобы запускать программы на C, но не ОС, вам все еще нужен Linux. Потому что кросс-компиляция. Вам не нужен настоящий Linux. Cygwin хорошо для этого. MinGW может быть достаточно. Тем не менее, вам, вероятно, понадобится создать свой собственный кросс-компилятор (на основе GCC), компоновщик, отладчик, инструменты make и остальную часть "основы" среды IDE. Если ваш поставщик микросхем не является крутым и не предоставляет полный набор инструментов с IDE.

Только когда вы работаете с крошечными процессорами, вам не нужен Linux. Такие вещи, как пульт дистанционного управления автомобильной сигнализацией, мигалка для рождественских огней, датчик давления в автомобильных шинах, монитор уровня заряда аккумулятора - все, что может иметь 16-байтовую ОЗУ, 1 КБ EEPROM и остальную часть процессора, чтобы соответствовать, вам нужно будет использовать IDE, которая работает с этим процессором , ни ОС, ни компилятор C, ни что-либо удаленно близкое к Linux - IDE, скорее всего, будет базироваться на Windows.

2 голосов
/ 30 марта 2011

Я бы сказал, что вам действительно не нужно знать Linux для встраиваемого программирования. Многие компании, разрабатывающие встроенное программное обеспечение, делают это в Windows и не имеют связи с другими ОС.

Но, конечно, знание большего делает вас более разносторонним, а общие знания - лучшим инженером. Это включает в себя разные ОС, как и многие другие.

Когда дело доходит до BeagleBoard, это зависит от типа приложения, которое вас интересует. Если вы хотите понять низкоуровневый уровень, я бы начал с более простого процессора и узнал, как использовать периферийные устройства, аппаратные прерывания, отладочные сигналы ... В какой-то момент есть смысл научиться делать это самостоятельно.

Полагаю, вы также можете пропустить это и начать с ARM-A8 и, возможно, со встроенной ОС, это просто не тот путь, которым я следовал.

1 голос
/ 30 марта 2011

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

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

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

Что касается разработки для встроенной системы без ОС ... У меня есть Arduino , с которым я иногда играю. Я запрограммировал его как для Windows, так и для Linux, и обнаружил, что опыт довольно схожий. Используя собственные инструменты Arduino, Windows, кажется, работает немного более гладко, но если вы хотите взломать его и сделать что-то интересное, вам лучше использовать Linux.

Лично (и это, вероятно, вызовет некоторые неприятные комментарии), я считаю, что Linux лучше всего подходит для продуктивной работы, а Windows лучше всего подходит для игр.

Итак, в основном все сводится к следующему: попробуйте использовать Linux для разработки своего проекта. Вы, вероятно, найдете, что это будет намного более гладким, более производительным опытом Если вам не нравится это, вы не должны продолжать использовать это. Но опыт, вероятно, будет того стоить.

Редактировать (из-за переписывания вопросов): Знание «образа жизни Linux» вряд ли сильно поможет при написании кода для встроенного проекта, в котором не работает сам Linux. Насколько я понимаю, философия Unix касается двух основных проблем:

  1. Каждый инструмент должен делать одну вещь и делать это хорошо (не создавайте то, что пытается быть всем).
  2. Когда это возможно, данные должны быть в виде простого текста (допускает простое прохождение процессов и поиск контента).

Если вы работаете в системе без операционной системы, вы пишете код для компилятора и вряд ли когда-либо будете работать с полной оболочкой. Вы также вряд ли будете иметь какую-либо файловую систему. Таким образом, оба эти пункта являются спорными; изучая Linux, вы вряд ли получите что-то конкретно связанное со встроенным программированием, хотя это, безусловно, не повредит: -)

0 голосов
/ 25 апреля 2011

Только если вы хотите встроить Linux!И как разработчик встраиваемых систем около 22 лет, я бы предположил, что Linux не подходит и не нужен для очень большой части проектов встраиваемых систем.

Понимание работы ОСРВ и преимущественного планирования в режиме реального времени и механизмов IPC поможет вам в этом.Взгляните на это например.

0 голосов
/ 08 апреля 2011

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

например, чтобы разрезать дерево, вам не нужно изобретать топор - просто начните использовать его, затемПостепенно вы можете научиться точить топор

Лучше начинать с малого - практиковаться и сосредотачиваться на определенных областях, как это требуется в течение часа.расти вместе с работой и работой, помня о своих целях

вы, несомненно, получите намного быстрее и не застрянете в цикле самоконтроля - НИОКР занимаются НИОКР;)

0 голосов
/ 31 марта 2011

Linux растет во встраиваемых системах ... см. Последние исследования:
Топ-10 тенденций на рынке встроенного программного обеспечения и инструментов в 2011 году - исследование VDC
Android становится лидером на рынке смартфонов в США

Знание образа жизни Linux определенно будет плюсом во встроенном домене, если интересующие вас приложения содержатся в вышеупомянутых ссылках.

0 голосов
/ 30 марта 2011

Я занимаюсь встраиваемым программированием в течение 10 лет, в настоящее время для сетевого оборудования, а до этого вертолётов Apache. Обе компании использовали POSIX-подобные операционные системы, но не встраивали Linux напрямую. Моя текущая компания в основном использует Windows для индивидуальных сред разработки. Тем не менее, у нас есть несколько коробок с Linux, которые можно использовать для специальных целей. Моя предыдущая компания использовала смесь Windows и Sun Solaris Unix. Поэтому, куда бы вы ни пошли, вы не можете использовать Unix или Linux на своем повседневном компьютере, но вы, вероятно, будете сталкиваться с ним хотя бы изредка.

С другой стороны, я знаю разработчиков, которые программировали на Linux для встраиваемых Linux-систем нацелены на всю свою карьеру. Это действительно зависит от компании, так как небольшие или новые компании имеют тенденцию использовать Linux больше, чем корпорации. Однако использование встроенных форм Windows на мишенях в моем опыте встречается очень редко. Я знаю, что устройства существуют, но я никогда лично не встречал разработчика, который работал над ним.

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

0 голосов
/ 30 марта 2011

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

Я не думаю, что установка ОС на встроенное устройство будет проще, чем начинать с нуля.Это принесет вам некоторые функциональные возможности (которые я не уверен, что вам действительно нужно изучать встроенные), но это принесет вам много трудного времени отладки в случае проблем с портом ОС.

...