То, что я собираюсь сказать, может вызвать пламенную войну, но ...
Я обнаружил, что Linux является гораздо более продуктивной средой разработки, чем Windows. На моей предыдущей работе мы занимались разработкой встроенного программного обеспечения для управляемых коммутаторов и оборудования промышленной автоматизации, в котором использовалась встроенная операционная система Linux. У всех разработчиков были как Windows, так и Linux, так как программное обеспечение пользовательского интерфейса работало только на Windows. Мы все использовали Linux для разработки, хотя это было просто.
На моей нынешней работе единственный выбор - запустить Windows, но чтобы сделать его более продуктивным, мы используем Cygwin , который предоставляет Linux-подобную среду. Очень сложно разработать программное обеспечение для Windows, которое не предназначено специально для Windows.
Что касается разработки для встроенной системы без ОС ... У меня есть Arduino , с которым я иногда играю. Я запрограммировал его как для Windows, так и для Linux, и обнаружил, что опыт довольно схожий. Используя собственные инструменты Arduino, Windows, кажется, работает немного более гладко, но если вы хотите взломать его и сделать что-то интересное, вам лучше использовать Linux.
Лично (и это, вероятно, вызовет некоторые неприятные комментарии), я считаю, что Linux лучше всего подходит для продуктивной работы, а Windows лучше всего подходит для игр.
Итак, в основном все сводится к следующему: попробуйте использовать Linux для разработки своего проекта. Вы, вероятно, найдете, что это будет намного более гладким, более производительным опытом Если вам не нравится это, вы не должны продолжать использовать это. Но опыт, вероятно, будет того стоить.
Редактировать (из-за переписывания вопросов): Знание «образа жизни Linux» вряд ли сильно поможет при написании кода для встроенного проекта, в котором не работает сам Linux. Насколько я понимаю, философия Unix касается двух основных проблем:
- Каждый инструмент должен делать одну вещь и делать это хорошо (не создавайте то, что пытается быть всем).
- Когда это возможно, данные должны быть в виде простого текста (допускает простое прохождение процессов и поиск контента).
Если вы работаете в системе без операционной системы, вы пишете код для компилятора и вряд ли когда-либо будете работать с полной оболочкой. Вы также вряд ли будете иметь какую-либо файловую систему. Таким образом, оба эти пункта являются спорными; изучая Linux, вы вряд ли получите что-то конкретно связанное со встроенным программированием, хотя это, безусловно, не повредит: -)