Реклама:

Наиболее очевидный выбор языка программирования —- ассемблер. Действительно, на ассемблере можно написать любую программу, и, при условии минимальной грамотности программиста, она получится самой быстрой, а код — самым коротким (причем это относится ко всем областям программирования). Однако трудоемкость программирования на ассемблере и требования к квалификации программиста несравненно выше, чем для языков высокого уровня.

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

В то же время большинство современных реализаций языков программирования высокого уровня (Бейсик, Си, Паскаль и другие) имеют более или менее эффективные средства программирования устройств сопряжения. Рассматривая пригодность того или иного языка, следует проанализировать с точки зрения полноты, оптимальности и удобства программирования такие его возможности, как:

♦ программный доступ к устройствам ввода/вывода и к памяти,

♦ обработка прерываний,

♦ битовые логические операции,

♦ управление системным таймером и, возможно, какие-то другие в зависимости от конкретной задачи.

Написанные на языках высокого уровня программы, как правило, оказываются не намного медленнее и длиннее аналогичных программ, написанных на ассемблере. Многие эксперты считают, что наиболее удобен для программирования аппаратуры язык Си. Многие с ними не согласны. Во многом это дело вкуса и привычки программиста. Именно этим, по-видимому, и определен выбор авторами книги языка Си Ш реализации примеров программ.

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

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

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


⇐ Предыдущая страница| |Следующая страница ⇒