Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
10. Насколько случайной является функция
11. Напишите
12. Реализуйте операторы
и
При необходимости посмотрите их математические определения в учебниках.
Послесловие
Если вы не любите математику, то, возможно, вам не понравилась эта глава и вы выберете для себя область приложений, в которой изложенная выше информация не понадобится. С другой стороны, если вы любите математику, то мы надеемся, что вы оцените точность выражения математических понятий в представленном нами коде.
Глава 25
Программирование встроенных систем
“Слово “опасный ” означает, что кто-то может умереть”.
Сотрудник службы безопасности
В этой главе мы рассмотрим вопросы программирования встроенных систем; иначе говоря, обсудим темы, связанные в первую очередь с написанием программ для устройств, которые не являются традиционными компьютерами с экранами и клавиатурами. Основное внимание уделяется принципам и методам программирования таких устройств, языковым возможностям и стандартам кодирования, необходимым для непосредственной работы с аппаратным обеспечением. К этим темам относятся управление ресурсами и памятью, использование указателей и массивов, а также манипулирование битами. Главный акцент делается на безопасном использовании, а также на альтернативе использованию низкоуровневых средств. Мы не стремимся описывать специализированные архитектуры устройств или способы прямого доступа к памяти аппаратного обеспечения, для этого существует специализированная литература. В качестве иллюстрации мы выбрали реализацию алгоритма кодирования-декодирования.
25.1. Встроенные системы
• Автомобили. В современный автомобиль могут быть встроены десятки компьютеров, управляющих впрыскиванием топлива, следящих на работой двигателя, настраивающих радио, контролирующих тормоза, наблюдающих за давлением в шинах, управляющих дворниками на ветровом стекле и т.д.
• Телефоны. Мобильный телефон содержит как минимум два компьютера; один из них обычно специализируется на обработке сигналов.
• Самолеты.
• Фотоаппараты. Существуют фотоаппараты с пятью процессорами, в которых каждый объектив имеет свой собственный процессор.
• Кредитные карточки (и все семейство карточек с микропроцессорами).
• Мониторы и контроллеры медицинского оборудования (например, сканеры для компьютерной томографии).
• Грузоподъемники (лифты).
• Карманные компьютеры.
• Кухонное оборудование (например, скороварки и хлебопечки).
• Телефонные коммутаторы (как правило, состоящие из тысяч специализированных компьютеров).
• Контроллеры насосов (например, водяных или нефтяных).
• Сварочные роботы, которые используются в труднодоступных или опасных местах, где человек работать не может.
• Ветряки. Некоторые из них способны вырабатывать мегаватты электроэнергии и имеют высоту до 70 метров.
• Контроллеры шлюзов на дамбах.
• Мониторы качества на конвейерах.
• Устройства считывания штриховых кодов.
• Автосборочные роботы.
• Контроллеры центрифуг (используемых во многих процессах медицинского анализа).
• Контроллеры дисководов.
Обратите внимание на крышку пятого цилиндра, на котором стоит человек. Это большой двигатель, приводящий в движение большой корабль. Если такой двигатель выйдет из строя, мы узнаем об этом в утренних новостях. У такого двигателя в крышке каждого цилиндра находится управляющая система цилиндра, состоящая из трех компьютеров. Каждая система управления цилиндром соединена с системой управления двигателем (еще три компьютера) посредством двух независимых сетей. Кроме того, система управления двигателем связана с центром управления, в котором механики могут отдавать двигателю команды с помощью специализированной системы графического интерфейса. Всю эту систему можно контролировать дистанционно с помощью радиосигналов (через спутники) из центра управления морским движением. Другие примеры использования компьютеров приведены в главе 1.