tux

Плюсы и минусы операционной системы

(Linux Embedded)

 

Что дает операционная система?

    Большую часть (в разумных пределах) задач встраиваемых систем можно решить без операционной системы (обычная "железяка" cortex M4 или ARM7 могут работать с сетью по каналу ethernet, иметь свой веб-сервер на борту, флеш-память, графический дисплей). Операционная система позволяет создавать сложные системы сбора данных, использовать множество утилит и программ, написанных для данной системы (flash-player, анимация, сетевые утилиты ftp, ssh и прочие).
    Архитектура программного обеспечения в операционных системах обычно сильно отличается от архитектуры встраиваемой системы с единым standalone-приложением, включающим в себя работу с драйверами и алгоритмы работы системы в целом. Операционная система подразумевает многопоточность и многозадачность, возможность запуска нескольких отдельных программ одновременно.

Стоит учесть, что если в операционной системе нет каких-то драйверов и BSP не полная, то задача работы с железом усложняется в разы, т.к. разработчик должен понимать и основы работы ОС, драйверов, в то же время обладать опытом работы с железом на низком уровне.

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

Чаще всего используют linux, хотя в зависимости от задачи возможно использование и других ОС (для задач реального времени и низкопроизводительных микроконтроллеров используют FreeRTOS, QNX, Windows CE).

Почему именно Linux?

На данный момент Linux хорошо поддерживает различные архитектуры. Linux бесплатный, что важно когда создаются серийные устройства. У Linux большинство исходных кодов бесплатны, что не так важно для обычного настольного ПК, но становится часто важным для разработчиков встраиваемых систем, т.к. исходные коды позволяют собрать программное обеспечение под свою платформу. Не у всех есть понимание того факта, что программы собранные под настольный компьютер (архитектура x86) не будут запускаться на другой архитектуре (ARM, AVR32).

 

На каком "железе" стоит создавать встраиваемую систему?

Сейчас чаще всего используют ARM (cortex, tdmi), также популярные MIPS, AVR32 и прочие. ARM имеет хорошую поддержку в плане готового программного обеспечения и дистрибутивов, имеет хороший показатель производительности/энергопотребления. Многие программы портированы на ARM-архитектуру.

 

Как прошивать получившиеся блоки?

Многие разработчики standalone-приложений привыкли создавать один проект в какой-нибудь среде разработки (IAR, Keil, ImageCraft и прочие), настраивать проект под определенный "камень" и прошивать при помощи JTAG или UART. Со встраиваемыми системами конечно намного больше возни для разработчика. Многие ОС загружаются при помощи загрузчика, который стоит и прошивать как обычное приложение. Дальше (как правило при помощи ethernet, реже RS-232) при помощи загрузчика из консоли загружается сама операционная система. Процесс загрузки Linux, к примеру, описан на многих интернет-ресурсах. Стоит отметить, что когда система готова и отлажена, возможно считать образ получившейся системы (фактически всю флеш-память ОС) и на производстве прошивать целиком всю флеш-память.