Руководство по микропрограммному обеспечению
Покупка
Тематика:
Прикладное программное обеспечение
Издательство:
ДМК Пресс
Под ред.:
Ганссл Джек
Перевод:
Семенкович А. О.
Год издания: 2016
Кол-во страниц: 408
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-173-0
Артикул: 651165.02.99
К покупке доступен более свежий выпуск
Перейти
Книга адресована разработчикам микрокода, пишущим те самые программы, на которых работают технологии XXI века. Она заполняет важнейший пробел в литературе по встраиваемому ПО. Существует настоятельная потребность в сборнике идей и концепций, справочнике, настольной книге инженеров, куда они заглядывали бы, чтобы найти решение своих задач и освежить в памяти забытый материал. В книге описываются инструментальные средства и методы улучшения качества программного кода, эволюционная разработка ПО, встраиваемые конечные автоматы, системы реального времени, обработка и управление ошибками. Примеры сопровождаются многочисленные листингами на языках С и С++. Издание предназначено инженерам и программистам, использующих встраиваемое ПО в своей работе, а также будет полезно студентам вузов и всем читателям, интересующимся микропрограммным обеспечением
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Руководство по микропрограммному обеспечению Интернет-магазин: www.dmkpress.com Книга - почтой: orders@alians-kniga.ru Оптовая продажа: “Альянс-книга” Тел.: (499)782-3889 books@alians-kniga.ru www.дмк.рф Книга адресована разработчикам микрокода, пишущим те самые программы, на которых работают технологии XXI века. Она заполняет важнейший пробел в литературе по встраиваемому программному обеспечению. Существует настоятельная потребность в сборнике идей и концепций, справочнике, настольной книге инженеров, куда они заглядывали бы, чтобы найти решение своих задач и освежить в памяти забытый материал. Главной темой этой книги является микрокод, однако суровая реальность мира встраиваемого ПО такова, что код и аппаратура взаимозависимы. Они не могут существовать в изоляции; ни в одной другой области программирования нет такой глубокой связи между реальным и виртуальным. Аналоговые инженеры постоянно твердят, что у них прекрасная профессия. Конечно, очень здорово ворочать операционными усилителями. Но бедняги не ведают, как это увлекательно – сделать так, чтобы все двигалось, огоньки мигали, газ тек. Это мы, разработчики встраиваемого ПО, управляем работой моторов, перекачиваем кровь, приводим в действие автомобильные тормоза, и выдвигаем компакт-диски из дисководов. Что может сравниться по притягательности с этой размытой границей между микрокодом и реальным миром? В книге описываются инструментальные средства и методы улучшения качества программного кода, эволюционная разработка ПО, встраиваемые конечные автоматы, системы реального времени, обработка и управление ошибками. Примеры сопровождаются многочисленными листингами на языках С и С++. Издание предназначено инженерам и программистам, использующих встраиваемое ПО в своей работе, а также будет полезно студентам вузов и всем читателям, интересующимся микропрограммным обеспечением. На сайте издательства www.dmkpress.com выложены исходные коды всех примеров программ из книги. Руководство по микропрограммному обеспечению Джек Ганссл 9 785970 601730 ISBN 978-5-97060-173-0
Руководство по микропрограммному обеспечению Под редакцией Джека Ганссла
The Filmware Handbook Edited by Jack Ganssle AMSTERDAM • BOSTON • HEIDELBERG • LONDON • NEW YORK • OXFORD • PARIS SAN DIEGO • SAN FRANCISCO • SINGAPORE • SYDNEY • TOKYO Newnes is an imprint of Elsevier
Руководство по микропрограммному обеспечению Под редакцией Джека Ганссла Москва, 2016
УДК 004.41 ББК 32.972.1 Г19 Г19 Руководство по микропрограммному обеспечению / под ред. Дж. Ганссла; пер. с англ. А. О. Семенкович. – М.: ДМК Пресс, 2016. – 400 с. ISBN 978-5-97060-173-0 Книга адресована разработчикам микрокода, пишущим те самые программы, на которых работают технологии XXI века. Она заполняет важнейший пробел в литературе по встраиваемому ПО. Существует настоятельная потребность в сборнике идей и концепций, справочнике, настольной книге инженеров, куда они заглядывали бы, чтобы найти решение своих задач и освежить в памяти забытый материал. В книге описываются инструментальные средства и методы улучшения качества программного кода, эволюционная разработка ПО, встраиваемые конечные автоматы, системы реального времени, обработка и управление ошибками. Примеры сопровождаются многочисленные листингами на языках С и С++. Издание предназначено инженерам и программистам, использующих встраиваемое ПО в своей работе, а также будет полезно студентам вузов и всем читателям, интересующимся микропрограммным обеспечением УДК 004.41 ББК 32.972.1 This edition of The Firmware Handbook by Jack Ganssle is published by arrangement with Elsevier INC of 200 Wheeler Road, 6th Floor, Burlington, MA01803, USA. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 075067606X (анг.) Copyright © Elsevier Inc. ISBN 9785970601730 (рус.) © Издание, оформление, перевод, ДМК Пресс, 2016
Содержание Благодарности ...............................................................................................................14 Введение ..........................................................................................................................15 I Основы оборудования ..................................................................................16 Введение ..........................................................................................................................17 Глава 1. Основы электроники ..................................................................................19 Цепи постоянного тока .......................................................................................................19 Напряжение и сила тока .............................................................................................19 Резисторы ........................................................................................................................21 Электрические цепи .....................................................................................................24 Мощность.........................................................................................................................27 Цепи переменного тока ......................................................................................................28 Конденсаторы .................................................................................................................29 Индуктивности ..............................................................................................................34 Активные компоненты ........................................................................................................35 Собираем все элементы вместе – источник питания ...............................................39 Осциллограф ..........................................................................................................................43 Средства управления ...................................................................................................43 Зонды.................................................................................................................................46 Глава 2. Логические цепи ..........................................................................................49 Кодирование чисел ..............................................................................................................49 Двоичнодесятичное представление ......................................................................52 Комбинаторная логика .......................................................................................................52 Логический элемент НЕ .............................................................................................53 Логические элементы И и НЕИ .............................................................................53 Логические элементы ИЛИ и НЕИЛИ ...............................................................55 Исключающее ИЛИ .....................................................................................................55 Схемы ................................................................................................................................56 Устройства с тремя состояниями .............................................................................59 Последовательностная логика .........................................................................................59 Логическое резюме ...............................................................................................................64 Глава 3. Советы по разработке аппаратных средств .....................................65 Диагностика ............................................................................................................................65 Средства подключения .......................................................................................................66 Другие рекомендации .........................................................................................................67 Резюме ......................................................................................................................................69
СОДЕРЖАНИЕ 6 II Проектирование ..............................................................................................70 Введение ..........................................................................................................................71 Глава 4. Инструментальные средства и методы улучшения качества программного кода ...................................................................................73 Введение ..................................................................................................................................73 Традиционный цикл последовательной разработки встраиваемой системы ...................................................................................................................................73 Типичные проблемы современного рынка встраиваемых систем .......................74 Общие методы повышения качества кода и сокращения сроков выхода на рынок ....................................................................................................................75 Фиксируйте спецификацию и работайте параллельно ...................................75 Создавайте контрольные отметки ...........................................................................75 Используйте доступные ресурсы ............................................................................75 Непрерывно обучайте своих сотрудников ...........................................................76 Основные факторы, влияющие на продолжительность цикла разработки ...............................................................................................................................76 Какой этап длится дольше других? ................................................................................77 Как снизить время разработки ПО и повысить качество кода .............................77 Пишите код в соответствии с внутренним руководством по оформлению ПО .....................................................................................................77 Выполняйте проверку кода .......................................................................................79 Выбирайте подходящие инструментальные средства разработки ..............79 Повторное использование вместо повторного изобретения ..........................82 Как сократить сроки проектирования аппаратной части системы .....................83 Используйте как можно больше готовой продукции .......................................83 Тщательно подбирайте микроконтроллер ...........................................................83 Пример микроконтроллеров, сокращающих сроки выхода на рынок, – микроконтроллеры Philips .................................................................84 Резюме и перспективы ........................................................................................................84 Глава 5. Советы по улучшению функций ............................................................86 Минимизируйте функциональные возможности .....................................................86 Инкапсулируйте ...................................................................................................................87 Избавляйтесь от избыточности .......................................................................................88 Сокращайте код реального времени ..............................................................................88 Ход программы должен быть грациозным ..................................................................89 Беспощадно улучшайте программы ...............................................................................89 Применяйте стандарты и экспертизу ............................................................................90 Тщательно комментируйте программу .........................................................................91 Резюме ......................................................................................................................................93 Глава 6. Эволюционная разработка ......................................................................95 Введение ..................................................................................................................................95 1. История ...............................................................................................................................96
СОДЕРЖАНИЕ 7 2. Проблемы, решаемые методом Эво ...........................................................................97 A. Парадоксы требований ..........................................................................................97 B. Очень короткие циклы ...........................................................................................98 C. Быстрая и частая обратная связь .................................................................... 100 D. Фиксация сроков .................................................................................................. 101 E. Оценка, планирование и контроль .................................................................. 103 F. Разница между напряженной работой и выполнением заказа .............. 104 G. Обязательства ........................................................................................................ 106 H. Риски ........................................................................................................................ 107 I. Производственные совещания .......................................................................... 107 J. Волшебные слова ................................................................................................... 108 3. Как мы используем метод Эво в работе над проектом ..................................... 109 A. День Эво ................................................................................................................... 109 B. Последний день цикла ........................................................................................ 110 C. Производственное совещание .......................................................................... 111 4. Памятки ........................................................................................................................... 112 А. Критерии назначения приоритетов заданиям ............................................ 112 В. Критерии назначения приоритетных сроков завершения промежуточных этапов ............................................................................................ 112 С. Критерии завершения задания ........................................................................ 113 5. Использование метода Эво в новых проектах .................................................... 114 6. Тестирование в методе Эво ........................................................................................ 116 7. Запросы об изменениях и отчеты о проблемах .................................................. 117 8. Инструментальные средства ..................................................................................... 117 9. Выводы .............................................................................................................................. 119 Благодарности .................................................................................................................... 121 Ссылки .................................................................................................................................. 121 Глава 7. Реализация встраиваемого конечного автомата ..........................123 Конечные автоматы .......................................................................................................... 123 Пример .................................................................................................................................. 124 Реализация ........................................................................................................................... 127 Тестирование ....................................................................................................................... 130 Запуск системы .................................................................................................................. 131 Ссылки .................................................................................................................................. 131 Глава 8. Иерархические конечные автоматы ..................................................132 Пример традиционного конечного автомата ........................................................... 133 Пример иерархического конечного автомата .......................................................... 135 Глава 9. Разработка приложений, критически важных для обеспечения безопасности .............................................................................140 Введение ............................................................................................................................... 140 Надежность и безопасность ........................................................................................... 141 История документа DO178B ....................................................................................... 141 Обзор стандарта DO178B ............................................................................................. 142
СОДЕРЖАНИЕ 8 Классификация неисправных состояний ................................................................. 143 Анализ архитектуры системы ....................................................................................... 144 Разбиение на разделы ............................................................................................... 144 Несколько версий разнородного ПО .................................................................. 145 Мониторинг безопасности ...................................................................................... 145 Документация по архитектуре системы .................................................................... 146 Жизненный цикл программного обеспечения согласно стандарту DO178B ............................................................................................................................... 146 Планирование.............................................................................................................. 146 Разработка .................................................................................................................... 147 Процесс разработки ................................................................................................... 147 Виды деятельности при разработке ПО ............................................................ 148 Верификация требований к ПО ............................................................................ 148 Верификация проектирования ПО ..................................................................... 149 Верификация программного кода ........................................................................ 149 Верификация процесса интеграции .................................................................... 149 Верификация процесса верификации ................................................................ 149 Управление конфигурацией ................................................................................... 150 Обеспечение качества ПО (SQA) ......................................................................... 151 Технология объектноориентированного программирования и проблемы приложений, критически важных для обеспечения безопасности ........................................................................................................................ 151 Итеративный процесс ...................................................................................................... 152 Проблемы сертификации объектноориентированных приложений ............. 152 Автоматическая генерация кода ........................................................................... 153 Автоматическая генерация тестов ....................................................................... 155 Возможность оперативного контроля ................................................................ 155 Управление конфигурацией ................................................................................... 155 Структурный охват ................................................................................................... 156 Невыполняемые/деактивированные участки программы .......................... 156 Наследование и множественное наследование ............................................... 156 Резюме ................................................................................................................................... 157 Ссылки .................................................................................................................................. 157 Глава 10. Установка и использование системы контроля версий ...........158 Введение ............................................................................................................................... 158 Мощь и элегантность простоты .................................................................................... 159 Контроль версий ................................................................................................................ 160 Типичные признаки отказа от использования (неполного использования) системы контроля версий .............................................................. 160 Простые системы контроля версий ............................................................................. 161 Усовершенствованные системы контроля версий ................................................. 161 Для каких файлов нужно использовать контроль версий .................................. 162 Совместная работа с файлами и клиенты системы контроля версий ............. 162 Нет локального клиента, нет общей файловой системы .............................. 163 Нет локального клиента, но есть общая файловая система ........................ 163
СОДЕРЖАНИЕ 9 Есть локальный клиент, но нет общей файловой системы ......................... 163 Есть и локальный клиент, и общая файловая система ................................. 163 Проблемы интегрированной среды разработки ..................................................... 164 Проблемы графического интерфейса пользователя ............................................. 164 Спецификация SCC ......................................................................................................... 165 Интерфейс для веббраузера или клиентJavaсистем контроля версий ...... 165 Основные положения концепции контроля версий ...................................... 166 Советы ............................................................................................................................ 171 Отслеживание ошибок .................................................................................................... 174 Неконфигурационные средства управления ........................................................... 176 ПО для зеркального отображения информации ............................................. 176 Автоматизированное резервное копирование ................................................. 176 Веббраузер .................................................................................................................. 176 Группы новостей в Интернете ............................................................................... 177 Заключительные комментарии .................................................................................... 177 Рекомендованная литература, ссылки и ресурсы .................................................. 178 III Математика .....................................................................................................180 Введение ........................................................................................................................181 Глава 11. Введение в машинные вычисления ..................................................182 Введение ............................................................................................................................... 182 Целочисленная арифметика .......................................................................................... 182 Деление и отрицательные числа .................................................................................. 182 Целые типы и их размер .......................................................................................... 185 Переполнение или исчезновение значащих разрядов .......................................... 186 Математические операции с плавающей запятой .................................................. 189 Неожиданный результат .......................................................................................... 189 Форматы с плавающей запятой ............................................................................ 190 Погрешности округления ........................................................................................ 192 Ошибки при умножении и делении .................................................................... 194 Ошибки при сложении и вычитании .................................................................. 195 Обработка ошибок при вычислениях с плавающей запятой ...................... 197 Использование эквивалентных выражений для устранения катастрофической потери точности .................................................................... 199 Арифметические операции с фиксированной запятой ........................................ 201 Область применимости ............................................................................................ 201 Представление чисел с фиксированной запятой и операции над ними ........................................................................................................................ 202 Обработка ошибок при выполнении операций с фиксированной запятой ........................................................................................................................... 203 Заключение .......................................................................................................................... 204 Библиография..................................................................................................................... 204
СОДЕРЖАНИЕ 10 Глава 12. Аппроксимации для вычислений с плавающей запятой .........205 Общие замечания о тригонометрических функциях ............................................ 206 Косинус и синус .......................................................................................................... 207 Более точное вычисление косинуса ............................................................................ 213 Тангенс ................................................................................................................................... 214 Более точное вычисление тангенса ............................................................................. 219 Арктангенс, арксинус и арккосинус ............................................................................ 220 Глава 13. Математические функции ...................................................................224 Код Грея ................................................................................................................................ 224 Умножение целого на константу .................................................................................. 224 Вычисление исключающего ИЛИ ............................................................................... 224 Извлечение квадратного корня в целых числах ..................................................... 225 Важнейшие математические функции ....................................................................... 225 Глава 14. Стандарт IEEE 754 для чисел с плавающей запятой .................226 Специальные значения .................................................................................................... 227 IV Системы реального времени ....................................................................229 Введение ........................................................................................................................230 Глава 15. Ядра реального времени ......................................................................231 Введение ............................................................................................................................... 231 Что такое ядро реального времени? ............................................................................ 231 Что такое задача? ............................................................................................................... 232 Тактовый интервал таймера ........................................................................................... 235 Планирование задач ......................................................................................................... 236 Переключение контекстов .............................................................................................. 238 Службы ядра ....................................................................................................................... 239 Службы ядра. Семафоры ......................................................................................... 239 Службы ядра. Очереди сообщений ...................................................................... 243 Службы ядра. Управление памятью .................................................................... 245 Нужно ли вам ядро? .................................................................................................. 245 Можете ли вы использовать ядро? ...................................................................... 246 Выбор ядра ................................................................................................................... 247 Заключение .......................................................................................................................... 250 Глава 16. Реентерабельность .................................................................................251 Атомарные переменные ................................................................................................... 251 Еще два правила ................................................................................................................. 253 Обеспечение реентерабельности кода ........................................................................ 254 Рекурсия ............................................................................................................................... 256
СОДЕРЖАНИЕ 11 Асинхронность оборудования/микропрограммного обеспечения .................. 257 Состояние конкуренции ................................................................................................. 258 Варианты решения проблемы ....................................................................................... 259 Другие ОС реального времени ..................................................................................... 261 Метастабильные состояния ........................................................................................... 262 Микрокод, а не оборудование ....................................................................................... 264 Глава 17. Латентность прерываний .....................................................................268 Получение данных ............................................................................................................ 271 Глава 18. Как работает ваш компилятор языка C: минимизация размеров программы .................................................................................................274 Современные компиляторы языка C .......................................................................... 275 Структура компилятора .......................................................................................... 275 Смысл программы ..................................................................................................... 277 Базовые преобразования ......................................................................................... 277 Распределение регистров ........................................................................................ 279 Вызовы функций ........................................................................................................ 280 Подстановка функций .............................................................................................. 280 Сжатие кода низкого уровня .................................................................................. 281 Компоновщик .............................................................................................................. 281 Управление оптимизацией, осуществляемой компилятором .................... 282 Модель памяти ............................................................................................................ 283 Советы по программированию ..................................................................................... 283 Правильно подбирайте размер переменных ..................................................... 283 Используйте указатели наиболее подходящего типа .................................... 284 Структуры и байты заполнения ............................................................................ 285 Используйте прототипы функций ....................................................................... 286 Используйте параметры .......................................................................................... 287 Не используйте операцию получения адреса ................................................. 287 Не используйте встроенный ассемблер ............................................................. 288 Не пишите остроумный код ................................................................................... 288 Проверяйте значения битовых полей перед использованием ................... 290 Следите за использованием библиотечных функций ................................... 290 Используйте дополнительные подсказки компилятору .............................. 291 Финальные замечания ..................................................................................................... 291 Благодарности .................................................................................................................... 292 Глава 19. Оптимизация кода на языках C и C++ ...........................................293 Устанавливайте размеры структур равными степени двойки ........................... 293 Размещайте метки «case» как можно ближе друг к другу ................................... 293 Размещайте наиболее используемые метки case вначале ................................... 293 Разбивайте крупные операторы switch на вложенные операторыпереключатели ............................................................................................. 294 Минимизируйте число локальных переменных .................................................... 295
СОДЕРЖАНИЕ 12 Описывайте локальные переменные как можно глубже внутри функций ................................................................................................................................ 295 Сокращайте число аргументов ..................................................................................... 295 Используйте ссылки при передаче параметров и возвращаемого значения для типов, имеющих длину более 4 байтов ........................................... 296 Не определяйте возвращаемое значение, если оно не используется............... 296 Учитывайте расположение ссылок относительно кода и данных .................... 296 Старайтесь использовать тип int вместо char или short ...................................... 297 Пишите облегченные конструкторы .......................................................................... 298 Старайтесь использовать инициализацию вместо присваивания ................... 298 Используйте списки инициализации конструкторов .......................................... 299 Не объявляйте функции виртуальными «на всякий случай» ........................... 299 Используйте подстановку для функций длиной в 1–3 строки ......................... 299 Глава 20. Макросы assert в системах реального времени .........................301 Проблемы встраиваемых систем .................................................................................. 301 Макросы assert в системах реального времени ....................................................... 303 V Ошибки и исправления ...............................................................................309 Введение ........................................................................................................................310 Глава 21. Реализация загружаемого микрокода с помощью флеш-памяти ................................................................................................................311 Введение ............................................................................................................................... 311 Микропрограмматор ........................................................................................................ 312 Преимущества микропрограмматоров ....................................................................... 312 Недостатки микропрограмматоров ............................................................................. 313 Получение микропрограмматора ................................................................................. 313 Базовый микропрограмматор ....................................................................................... 314 Типичные проблемы и их решение ............................................................................. 316 Отладчику «не нравятся» перезаписываемые области памяти ................. 316 Отладчикам «не нравится» код, выполняющий перемещение самого себя .................................................................................................................... 317 Невозможность генерации позиционнонезависимого кода ...................... 319 Отсутствие микрокода в момент загрузки ........................................................ 320 Постоянная блокировка по времени ................................................................... 320 Неожиданное отключение питания ..................................................................... 321 Аппаратные альтернативы.............................................................................................. 322 Разделение кода и данных .............................................................................................. 323 Гибкость и надежность..................................................................................................... 323 Глава 22. Диагностика памяти ...............................................................................325 Тестирование ПЗУ ............................................................................................................ 325 Тестирование ОЗУ ............................................................................................................ 327
СОДЕРЖАНИЕ 13 Глава 23. Энергонезависимая память .................................................................333 Контролирующие схемы ................................................................................................. 333 Запись многобайтных значений ................................................................................... 335 Тестирование ....................................................................................................................... 339 Выводы .................................................................................................................................. 340 Глава 24. Профилактическая отладка ................................................................341 Стеки и кучи ........................................................................................................................ 341 Заполнение памяти ........................................................................................................... 344 Блуждающий код ............................................................................................................... 346 Специальные дешифраторы .......................................................................................... 348 Блоки управления памятью ........................................................................................... 349 Выводы .................................................................................................................................. 350 Глава 25. Обработка исключительных ситуаций на C++ ...........................351 Горы (ориентиры безопасности исключительных ситуаций) ............................ 352 История этой территории ............................................................................................... 353 Коварная ловушка ............................................................................................................. 354 Смола! .................................................................................................................................... 356 Самый легкий путь ........................................................................................................... 357 Оператор присваивания – специальный случай .................................................... 359 В плохую погоду ................................................................................................................ 360 Подведем итоги .................................................................................................................. 363 Литература ........................................................................................................................... 367 Глава 26. Отличный сторожевой таймер ...........................................................368 Внутренние сторожевые таймеры ............................................................................... 371 Внешние сторожевые таймеры ..................................................................................... 374 Характеристики отличных сторожевых таймеров................................................. 375 Использование встроенного сторожевого таймера ............................................... 379 Внешний сторожевой таймер ........................................................................................ 381 Сторожевые таймеры для многозадачной среды ............................................ 383 Выводы и некоторые соображения ............................................................................. 385 Приложение A. ASCII-коды ..................................................................................388 Приложение Б. Выравнивание и порядок байтов .........................................390 Ограничения, накладываемые на выравнивание байтов ..................................... 390 Для чего нужно ограничивать выравнивание байтов? ................................. 390 Общие правила выравнивания байтов ............................................................... 392 Выравнивание структур для повышения эффективности .......................... 392 Порядок байтов .................................................................................................................. 393 Почему используется различный порядок байтов? ....................................... 393 Подпрограммы преобразования ........................................................................... 393 Указатель .......................................................................................................................395
Благодарности Я хотел бы поблагодарить всех авторов, чьи материалы вошли в состав данной книги. Это был огромный труд, но наконецто все готово! Также спасибо Кэрол Льюис, редактору издательства Newnes по новым проектам, и ее мужу Джеку, которые терроризировали меня целый год, пока я не пришел к такой концепции книги, которая, как мне кажется, должна быть понятна и читателям, и авторам. Кэрол положила начало моей авторской карьере более десяти лет назад, подвигнув меня на написание книги «The Art of Programming Embedded Systems» («Искусство программирования встраиваемых систем»). Спасибо ей за участие на протяжении всех этих лет. И особая благодарность – моей жене Мэрибет за помощь и поддержку, а также за колоссальный объем работы по форматированию материалов и административному руководству проектом. – Джек Ганссл, пристань Анкоридж, г. Балтимор, штат Мэриленд
Введение Вот оно – «Руководство по микропрограммному обеспечению»! Эта книга заполняет важнейший пробел в литературе по встраиваемому ПО. Существует настоятельная потребность в сборнике идей и концепций, справочнике, настольной книге инженеров, куда они заглядывали бы, чтобы найти решение своих задач и освежить в памяти забытый материал. Главной темой этой книги является микрокод, однако суровая реальность мира встраиваемого ПО такова, что код и аппаратура взаимозависимы. Они не могут существовать в изоляции; ни в одной другой области программирования нет такой глубокой связи между реальным и виртуальным. Аналоговые инженеры постоянно твердят, что у них прекрасная профессия. Конечно, очень здорово ворочать операционными усилителями. Но бедняги не ведают, как это увлекательно – сделать так, чтобы все двигалось, огоньки мигали, газ тек. Это мы, разработчики встраиваемого ПО, управляем работой моторов, перекачиваем кровь, приводим в действие автомобильные тормоза, контролируем развертку телевизионного изображения по горизонтали и по вертикали и выдвигаем компактдиски из дисководов. Что может сравниться по притягательности с этой размытой границей между микрокодом и реальным миром? Книга адресована разработчикам микрокода, пишущим те самые программы, на которых работают технологии XXI века. Эта книга создавалась не как учебник или вводный курс по написанию микрокода. Существует множество других пособий, цель которых – научить людей азам разработки встраиваемых систем. Не является она и введением в основы программирования. Каждый разработчик должен знать, что такое конструктивная стоимостная модель (COCOMO) Бёма, используемая для оценки затрат на разработку ПО; методы экстремального программирования; подходы Фагена и Гильба к инспектированию программного обеспечения; персональный метод разработки по Хамфри; модель оценки зрелости процессов разработки и сопровождения программного обеспечения, созданная в институте Software Engineering Institute, и ряд других хорошо известных и постоянно развивающихся методов. Тщательное программирование – ключевая составляющая успеха при создании любой большой системы, и мир встраиваемого ПО в этом не оригинален. В данном руководстве очень мало информации по операционным системам реального времени, TCP/IP, цифровым сигнальным процессорам и другим подобным темам. Эти актуальные вопросы крайне важны для огромного множества встраиваемых приложений. Однако для освещения каждого из таких вопросов требуется отдельное издание – и таких книг уже очень и очень много.
РАЗДЕЛ СТРАНИЦА I Основы оборудования II Проектирование 72 III Математика 183 IV Системы реального времени 232 V Ошибки и исправления 312 21 Глава 1. Основы электроники 51 Глава 2. Логические цепи 67 Глава 3. Советы по разработке аппаратных средств
Введение Первые электронные вычислительные машины были аналоговыми, в действительности они представляли собой совокупность операционных усилителей и ничего более. Того, что мы сейчас называем «программами», вообще не существовало, вместо них разработчики алгоритмов использовали массивы электронных компонентов, помещавшихся в петли обратной связи таких усилителей. Программирование сводилось в буквальном смысле к переключению проводов в машине. Только инженеры, хорошо разбиравшиеся в электротехнике, могли управляться с подобными монстрами. С появлением в 1940х гг. цифровых компьютеров, способных записывать информацию, программы превратились из электрических схем в биты, хранящиеся на различных носителях... хотя это было совершенно не похоже на то, что мы имеем сегодня! Менее очевидным преимуществом стало абстрагирование программиста от машины. Цифровая сущность вычислительных машин преодолела ограничения электрических параметров – больше не существовало ничего, кроме нуля и единицы. Возможности машинных вычислений открылись для огромной группы людей, гораздо более широкой, чем специалисты по электротехнике. Программирование стало самостоятельной дисциплиной со своими профессиональными приемами, ни один из которых не требовал даже самых элементарных знаний электроники и схемотехники. Единственное исключение – встраиваемые системы. Изобретение микропроцессора корпорацией Intel (1971 г.) вернуло компьютеры назад – к самым истокам. Вычислительные машины сразу стали достаточно доступными по цене и небольшими по размерам, чтобы их можно было встраивать в какуюлибо продукцию. Несмотря на низкую стоимость процессора, снижение общей стоимости систем снова оказалось проблемой для проектировщиков и программистов новой интеллектуальной продукции. Это последний рубеж вычислительной техники, на котором оборудование и микропрограммное обеспечение (микрокод, firmware) не отделимы друг от друга. Зачастую можно понизить стоимость системы, используя компоненты с более интеллектуальной программой, или повысить производительность, применив другой способ крепления. Наши микропрограммы тесно связаны с особенностями периферийного оборудования и датчиков, а также cо множеством явлений реального мира. Хотя и существует тенденция приглашать на работу «чистых» программистов, самыми лучшими разработчиками всегда оказываются те, кто имеет не только богатый опыт в разработке программного обеспечения, но и практические навыки в области электроники. Каждый разработчик встраиваемого ПО должен – нет, просто обязан! – знать содержание этой главы. Вы не имеете права заявить: «Ну, поскольку я программистразработчик микропрограммного обеспечения, мне не нужно знать, что такое резистор». Ваша задача как разработчика встраиваемого ПО – создание системы, которая будет больше, чем просто программным кодом. Более глубокие сведения по всем аспектам электроники содержатся в замечательной книге «The Art of Electronics» (русский перевод: Хоровиц П., Хилл У. Искусство схемотехники: в 2 т. М.: Мир, 1986). Джек Ганссл – автор ежемесячной колонки «Breakpoints» в разделе «Embedded Systems Programming» электронного еженедельника «Embedded Pulse», выходяВВЕДЕНИЕ 18 щего на вебсайте embedded.com; он написал четыре книги по встраиваемым системам и одну о своем неудачном опыте мореплавателя. Он начал заниматься встраиваемыми системами в начале 70х гг. еще на процессоре 8008. С тех пор успел основать и продать три электронные компании, в том числе одно из крупнейших предприятий по созданию инструментальных средств для разработки встраиваемого ПО. Как программист и руководитель Джек принимал участие в работах по созданию более 100 встраиваемых продуктов: от глубоководного навигационного оборудования до системы безопасности Белого дома. В настоя щее время он ведет семинары, посвященные наилучшим способам создания встраиваемых систем, для компаний по всему миру.
Глава 1. ОСНОВЫ ЭЛЕКТРОНИКИ Джек Ганссл Цепи постоянного тока Постоянный ток (DC) – замечательный термин, обозначающий сигналы, не изменяющиеся со временем. Здесь отсутствуют пики, как на электроэнцефалограмме мертвого мозга или на выходе аккумуляторной батареи. Источник питания вашего ПК получает постоянный ток из переменного тока (AC) обычной электросети. Рис. 1.1. Постоянный ток характеризуется сигналом постоянной, неменяющейся амплитуды Напряжение и сила тока Для характеристики электрического тока обычно пользуются напряжением и силой тока, не задумываясь, что за обеими величинами стоят фундаментальные закономерности физики. Атомы, имеющие недостаток или избыток электронов, называются ионами. Ионы могут иметь как положительный, так и отрицательный заряд. Два иона с противоположным зарядом (один положительный, что означает нехватку у него электронов, а другой отрицательный, обладающий одним или более дополнительным электроном) притягивают друг друга. Сила такого притяжения называется электродвижущей силой и обычно обозначается как ЭДС1. Заряды измеряются в кулонах (Кл), 1 кулон равен заряду 6,25×1018 электронов (для отрицательных зарядов) или протонов (для положительных). Ампер (А) – это заряд в 1 Кл, протекающий через данную точку за одну секунду. Напряжение 1 В – это разность потенциалов, благодаря которой проводник с текущим по нему током в 1 ампер совершит работу в 1 джоуль. Джоуль в секунду называется ваттом. 1 Вообще говоря, сила взаимодействия точечных зарядов называется кулоновской, а под термином ЭДС понимается физическая величина, равная отношению работы сторонних сил по перемещению заряда вдоль замкнутого контура к величине этого заряда. – Прим. пер.
К покупке доступен более свежий выпуск
Перейти