Операционные системы
Встраиваемые системы часто не нуждаются в полной операционной системе. Некоторые используют специально созданные маленькие и простые операционные системы, которые начинают работать очень быстро, другие вообще не нуждаются в такой системе. Встраиваемые системы не так легко адаптировать, но они построены так, чтобы гораздо надежнее выполнять свои задачи. Так как аппаратное обеспечение проще, часто дешевле строить и работать быстрее.
В отличие от этого, компьютер общего назначения должен быть готов к работе с новыми драйверами устройств и программным обеспечением, о которых он еще не знает, например, с новыми принтерами или жесткими дисками. Он должен запускать различные прикладные программы.
По мере того, как встраиваемые системы становятся все больше, то, что раньше было только на компьютерах общего назначения или даже на мейнфреймах, теперь становится обычным явлением на встраиваемых системах. Это включает в себя защищенное пространство памяти и открытую среду программирования, в том числе Linux, NetBSD и т.д.
Некоторые примеры операционных систем, от простых до сложных:
- Простой контур управления - Таймер и контур используются для многократного вызова различных подпрограмм. Часто это делается одним человеком для небольших систем.
- прерывание управляется - Задачи запускаются разными событиями. Событием может быть что-то хронометрированное (например, каждые десять секунд) или нажатие кнопки или получение данных.
- упреждающая многозадачность - Каждая задача получает свою очередь на выполнение, а когда она заканчивает, то вызывает планировщика в операционной системе для выполнения следующей задачи.
- упреждающая многозадачность или многопоточность - задача может быть остановлена через некоторое время, чтобы позволить другой задаче запуститься на некоторое время. Ни одна задача не может запустить систему. На этом уровне считается, что система имеет "ядро операционной системы" и может выполнять задачи параллельно. Этот тип ОС обычно покупается у компании, которая работает только на встроенных операционных системах.
Операционные системы реального времени включают такие продукты, как MicroC/OS-II, Green Hills INTEGRITY, QNX или VxWorks. В отличие от MacOS или Windows 7, эти операционные системы не очень хорошо известны большинству людей. Но они используются во многих местах, где время и безопасность очень важны. Люди используют их каждый день и не осознают этого.
Распространенными примерами больших ядер являются встраиваемые Linux и Windows CE. Хотя они не имеют жестких временных ограничений, необходимых для строгой системы реального времени, они становятся все более распространенными, особенно для более мощных устройств, таких как беспроводные маршрутизаторы и GPS. Они позволяют повторно использовать код, являющийся общественным достоянием, для драйверов устройств, веб-серверов, брандмауэров и другого кода. Разработчики программного обеспечения, которые более удобны в написании приложений для ПК, также найдут это более знакомым. При необходимости можно использовать FPGA или другое специальное аппаратное обеспечение для тех вещей, которые действительно нуждаются в жестких временных рамках.
Инструменты
Как и другое программное обеспечение, разработчики встраиваемых систем используют компиляторы, ассемблеры и отладчики для разработки программного обеспечения встраиваемых систем. Однако они могут использовать и более специфические инструменты:
- Для систем, использующих цифровую обработку сигналов, разработчики могут использовать математические инструменты, такие как MATLAB, MathCad или Mathematica.
- Клиентские компиляторы и компоновщики могут быть использованы для улучшения оптимизации под конкретное оборудование.
- Встраиваемая система может иметь свой собственный специальный язык или инструмент проектирования, или добавлять усовершенствования к существующему языку, как тот, который используется в Basic Stamp.
Инструменты отладки:
- Внутрисхемный отладчик (ICD), аппаратное устройство, которое подключается к микропроцессору через JTAG-интерфейс. Он запускает и останавливает микропроцессор снаружи во время работы программного обеспечения. Он также позволяет считывать память и регистры, а также хранить программу в памяти.
- Внешняя отладка с помощью протоколирования или вывода через последовательный порт для отслеживания работы с помощью либо мигающего монитора (printfs).
- Интерактивная резидентная отладка - если ОС ее поддерживает, то это оболочка на встроенном процессоре, которая выполняет команды, набранные разработчиком (например, Linux).
- Внутрисхемный эмулятор заменяет микропроцессор на плате, обеспечивая полный контроль над всем, что может сделать микропроцессор.
- Полный эмулятор моделирует все возможности оборудования, позволяя контролировать и модифицировать его. Аппаратного обеспечения на самом деле не существует, но его притворная версия ("виртуальная" машина) находится на обычном ПК.
- Проверка внешних линий с помощью логического анализатора или мультиметра.
Если не ограничиваться внешней отладкой, программист, как правило, может загружать и запускать программное обеспечение через инструменты, просматривать код, запущенный в процессоре, и запускать или останавливать его работу. Вид кода может быть как ассемблерный код, так и исходный код. Некоторые интегрированные системы (например, VxWorks или Green Hills) имеют специальные функции, такие как отслеживание того, сколько места занимает программное обеспечение во время работы, какие задачи выполняются и когда что-то происходит.
В зависимости от того, какая из встраиваемых систем будет производиться, это повлияет на то, как она может быть отлажена. Например, отладка одной микропроцессорной системы отличается от отладки системы, где обработка выполняется также на периферии (DSP, FPGA, сопроцессор).