Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Запуск системы, быстрая активация устройств > Построение встраиваемых систем > Статьи руководства > Рекомендации по проектированию



Рекомендации по проектированию

Решение проблем с оборудованием

В этой статье:

Введение
Перед проектированием системы
Скорость процессора
Требования к памяти
Устройства периферии
Отладка
Обновление в процессе эксплуатации
Прочие аспекты проектирования
Файловая система флеш-памяти/EPROM
Местоположение начального загрузчика (IPL)
Графические платы
Шлюз A20
Внешняя шина ISA
Шина PCI
Внешние тактовые генераторы
Контроллеры прерываний
Последовательные и параллельные порты
Параллельный порт
Немаскируемые прерывания
Рекомендации и антирекомендации
Рекомендации:
Антирекомендации:

Введение

Поскольку ЗОСРВ «Нейтрино» является 32-разрядной операционной системой с поддержкой защищенного режима, в ней отсутствуют многие факторы, которые ограничивают проектирование встраиваемых систем (особенно на платформе x86, где существует большое количество проблем, унаследованных от DOS и процессора 8088). В этой статье перечислены рекомендации и антирекомендации по проектированию и реализации встраиваемой системы под управлением ЗОСРВ «Нейтрино», которые ускоряют цикл проектирования, снижают затраты на оборудование и адаптацию программных компонентов.

Перед проектированием системы

Перед проектированием системы следует ответить на ряд типовых вопросов:

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

Скорость процессора

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

По возможности следует создавать прототип системы на стандартном ПК (для архитектуры x86) или поддерживаемой отладочной плате (для архитектур x86, PPC, ARM и MIPS). Это позволяет быстро "почувствовать" скорость конкретного процессора.

Требования к памяти

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

Устройства периферии

По возможности следует использовать устройства периферии, которые поддерживаются ЗОСРВ «Нейтрино» — контроллеры дисков и PC-Card, сетевые платы, микросхемы флеш-памяти и графические контроллеры. Список поддерживаемых устройств публикуется на веб-сайте компании «СВД Встраиваемые Системы», а информация о сторонних продуктах — в разделе "Продукты".

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

Компания «СВД Встраиваемые Системы» выполняет заказные разработки; за дополнительной информацией обращайтесь к менеджерам по продажам.

Отладка

Во многие встраиваемые системы (особенно те, которые требуют минимизации затрат) следует включать только абсолютно необходимые функции. Тем не менее, поскольку проекты часто начинаются "с нуля", необходимо сначала проверять, что устройства работают сами по себе, а затем — с программами.

Мы рекомендуем устанавливать несложный в использовании порт отладки оборудования, чтобы принимать диагностическую информацию от устройств при загрузке системы. Как правило, достаточно выхода с регистром-защёлкой, который управляет одним светодиодом, однако более предпочтителен 8- или 16-разрядный порт, который управляет несколькими 7-сегментными светодиодами. Лучше всего использовать последовательный порт, поскольку программы могут записывать в него информативные и легко считываемые диагностические сообщения.

Можно не включать этот отладочный порт в окончательную сборку либо создавать незначительно измененную "финальную" версию платы. Как правило, ускорение разработки многократно окупает затраты на внедрение аппаратных средств отладки.

Обновление в процессе эксплуатации

В зависимости от особенностей целевой системы можно использовать различные средства ее обновления при эксплуатации:

Иногда средства обновления необходимы даже на начальных этапах разработки программного обеспечения для установки новых версий программ во встраиваемую систему.

Прочие аспекты проектирования

Существует ряд других аспектов проектирования аппаратных и программных компонентов встраиваемой системы. В этом разделе мы рассмотрим наиболее распространенные из них.

Файловая система флеш-памяти/EPROM

Твердотельные накопители информации могут линейно отображаться в любую область адресного пространства. В устаревших системах (преимущественно с архитектурой x86) накопители с большой емкостью часто были представлены в виде окна определенного размера (обычно от 8 до 64 Кбайт), а дополнительное оборудование отображало это окно в адресное пространство процессора (как правило, в первый мегабайт памяти).

В современном 32-разрядном процессоре физического адресного пространства обычно достаточно для полной адресации накопителя большой емкости. Это облегчает разработку программного обеспечения, поскольку в программах не требуется решать задачу доступа к устройствам с "оконным" отображением.

При проектировании аппаратной платформы следует учитывать два аспекта, которые касаются твердотельного накопителя — затраты и совместимость. Если планируется интегрировать накопитель в плату, его совместимость с другими операционными системами, скорее всего, не имеет принципиального значения; следовательно, можно целиком отображать накопитель в адресное пространство процессора и не добавлять аппаратные компоненты, которые переключают банки или отображают окна в память.

Следовать стандартам (PCMCIA, FFS2 и др.) для твердотельных накопителей также необязательно — наши драйверы файловых систем флеш-памяти поддерживают адресацию и могут обращаться к неструктурированным флеш-устройствам.

При определении логической структуры микросхем флеш-памяти необходим баланс между размером блока стирания и скоростью доступа. Если объединить четыре флеш-накопителя в 32-разрядную шину, скорость доступа к данным возрастает, но при этом в четыре раза увеличивается размер блока стирания (например, до 256 Кбайт).

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

Местоположение начального загрузчика (IPL)

В ЗОСРВ «Нейтрино» единственное требование к местоположению IPL заключается в том, что он должен быть доступен из вектора сброса процессора. Специальные аппаратные компоненты для "перемещения" загрузочного ПЗУ не требуются.

Графические платы

Все драйверы ЗОСРВ «Нейтрино» можно настраивать на взаимодействие с графическими платами с любыми адресами — необходимость отображать область VGA в первый мегабайт адресного пространства отсутствует.

Шлюз A20

Традиционное ограничение, связанное с использованием первого мегабайта адресного пространства на платформе x86, часто касается шлюза A20 — аппаратного компонента, который сбрасывает шину адреса A20 в ноль независимо от значения, которое устанавливает на ней процессор.

Это действие выполнялось для устаревших программ, которым требовался возврат из адреса 0xFFFFF на адрес 0x00000. Поскольку это требование отсутствует в ЗОСРВ «Нейтрино», необходимость включать шлюз A20 в состав аппаратной платформы отсутствует. На некоторых встраиваемых процессорах x86 шлюз A20 интегрирован непосредственно в процессорную микросхему; в этом случае IPL отключает его в самом начале работы.


Note: Если в системе необходимо наличие стандартной BIOS, шлюз A20 обычно не требуется (следует уточнять у поставщика BIOS).

Внешняя шина ISA

В ЗОСРВ «Нейтрино» не требуется отображать внешнюю шину ISA в стандартное адресное пространство архитектуры x86 (от 0x00000 до 0xFFFFF). Это облегчает проектирование аппаратной платформы и избавляет разработчиков от необходимости создавать теневую оперативную память и переносить часть оперативной памяти (как правило, в диапазоне от 0xA0000 до 0xFFFFF) в другое место.

Тем не менее, если аппаратная платформа должна включать в себя стандартную BIOS и поддерживать ее расширения, такая оптимизация невозможна, поскольку расширения BIOS обычно находятся в диапазоне от 0xA0000 до 0xEFFFF.

Шина PCI

В ЗОСРВ «Нейтрино» все драйверы PCI взаимодействуют с менеджером PCI-шины ( pci-bios, pci-acpi и pci-lioh), который непосредственно работает с устройствами.

Подробнее см. в описании конкретных менеджеров ресурсов pci-*.

Внешние тактовые генераторы

ЗОСРВ «Нейтрино» позволяет использовать внешний тактовый генератор. В некоторых системах имеется "стандартный" источник тактовых сигналов, который является компонентом аппаратной платформы или встроен непосредственно в микросхему процессора. При необходимости операционная система может работать с внешними сигналами, которые генерируются другим источником. Тем не менее, следует иметь в виду два аспекта:

Таким образом, следует задавать достаточно высокую частоту тактовых сигналов. Почти все современные процессоры позволяют обрабатывать тактовые сигналы с частотой от 1 кГц; у процессоров Pentium, RISC-процессоров с частотой 300 МГц и др. этот показатель еще выше.

Обратите внимание, что значение частоты генератора может не являться "круглым" числом; если в системе удобно использовать контроллер скорости передачи или другую микросхему в качестве источника тактовых сигналов, операционная система может точно масштабировать частоту входного сигнала для использования во внутренних таймерах и счетчиках текущего времени.

Контроллеры прерываний

На архитектуре x86 модуль startup-* по умолчанию поддерживает два программируемых контроллера прерываний. Они должны быть совместимы с микросхемой 8259; в стандартной конфигурации вторичный контроллер прерываний подключен к линии IRQ2 первичного контроллера.


Note: Не следует подключать устройства к линиям IRQ7 и IRQ15 микросхемы 8259, поскольку эти прерывания известны своей ненадежностью.

Если платформа x86 имеет другую архитектуру, в ней можно использовать контроллеры прерываний, но необходимо разрабатывать код для их поддержки.

В системах с архитектурой, отличной от x86, можно подключать несколько устройств к единственной линии прерывания, соединенной с процессором. Как правило, этот подход реализуется одним из двух способов:

В любом случае необходимо определять порядок и приоритеты прерываний устройств. Аппаратные и программные компоненты должны настраиваться так, чтобы источник прерываний с самыми строгими временными требованиями имел максимальный приоритет и обрабатывался в первую очередь (подробнее см. в описаниях функций InterruptAttach() и InterruptAttachEvent()).

Последовательные и параллельные порты

Наличие последовательных и параллельных портов во встраиваемой системы желательно и настоятельно рекомендуется, но не является обязательным. ЗОСРВ «Нейтрино» поддерживает микросхему 16550 с 16-разрядными FIFO-буферами. Наши драйверы работают с этими устройствами, используя выравнивание по байтам и двойным словам.

Если на платформе имеются несколько последовательных портов, они могут использовать общее прерывание. Обнаружение источника прерывания и его последующая обработка осуществляются программно и поддерживаются стандартными драйверами последовательных портов ЗОСРВ «Нейтрино».

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

Следует по возможности использовать DTR, DSR, RTS и CTS, поскольку аппаратное управление потоком целесообразно в системах с медленными процессорами.

Параллельный порт

Как правило, параллельному порту не требуется линия прерывания, поэтому наши стандартные драйверы параллельного порта не используют ее.

Немаскируемые прерывания

Не используйте немаскируемое прерывание (Non-Maskable Interrupt, NMI) в системах с архитектурой x86. Более того, оно не поддерживается процессорами PPC, MIPS и ARM. Немаскируемое прерывание отличается от обычного прерывания тем, что его невозможно отключать сбросом флага включения прерывания ЦП. Немаскируемые прерывания обычно генерируются событиями, которые требуют немедленного реагирования (ошибка четности, аппаратный сбой или предстоящее отключение питания).

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

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

Немаскируемые прерывания могут приводить к непрогнозируемым нарушениям в работе любых программ.

Рекомендации и антирекомендации

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

Рекомендации

Антирекомендации




Предыдущий раздел: перейти