Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Встроенный

Отладка микропроцессоров: 1980–2016 — Исчерпывающая история

С зари дизайна электроники баги были неизбежны, а отладка — необходимой дисциплиной для борьбы с ошибками и определением, кто победит — и насколько тщательно.

Технологии отладки эволюционировали так же увлекательно, как и дизайны, которые они поддерживают. От простых подходов стимул-ответ-наблюдение до сегодняшних изощренных инструментов, оборудования и методологий, область выросла в такт с все более сложными системами. В 2017 году началась новая эра с введением отладки через функциональный I/O, обещающей еще большую эффективность и возможности.

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

1970-е – 1980-е

Системный дизайн тогда существенно отличался от сегодняшнего. Типичная плата включала CPU, (EP)ROM, RAM и периферийные IC вроде PIC, UART, DMA-контроллеров, таймеров и I/O устройств, каждый реализованный на отдельных чипах.

Отладка микропроцессоров: 1980–2016 — Исчерпывающая история
1980-е одноплатный компьютер (SBC)
(Источник: https://oldcomputers.net/ampro-little-board.html)

Разработчики писали код на ассемблере или C, компилировали, линковали и производили HEX-файл для ROM-образа. Процесс включал ручное стирание EPROM с UV-стирателем, программирование через последовательный или параллельный интерфейс и переустановку чипов на плату. Если программа не вела себя как ожидалось, доступно было несколько техник отладки.

Инспекция кода:

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

Светодиоды:

Классический метод использует набордовые LED или другие индикаторы для сигнализации состояния программы. Вставляя переключение LED в ключевых точках, разработчики могут визуально проследить поток выполнения. Когда доступны дополнительные I/O пины и логический анализатор, реальное время трассировки состояний становится возможным.

On-target Monitor:

Платы с последовательным портом и достаточной памятью могли хостить небольшую мониторную программу. Прыгая в этот монитор, разработчик мог пошагово проходить ассемблер, инспектировать регистры и память через RS-232 команды вроде s (step) или m 83C4,16 (показать память).

In-Circuit Emulator (ICE):

Для тех, кто мог позволить, ICE был высшим отладчиком. Он заменял CPU эмуляционной схемой, которая могла наблюдать и контролировать внутренние сигналы. Хотя громоздкий и дорогой — часто стоил тысячи долларов — ICE предоставлял продвинутые брейкпоинты, трассировку и возможность замены EPROM на эмуляционную RAM, устраняя необходимость стирать и перепрошивать во время разработки.

Отладка микропроцессоров: 1980–2016 — Исчерпывающая история
Motorola Exorciser ICE
(Источник: https://www.exorciser.net/personal/exorciser/Original%20Files/exorciser.jpg)
Отладка микропроцессоров: 1980–2016 — Исчерпывающая история
Intel MDS ICE
(Источник: https://www.computinghistory.org.uk/userdata/images/large/PRODPIC-731.jpg)

1982–1990

Три ключевых изменения возникли для встроенных разработчиков:

OCD доступ обычно использовал проприетарные интерфейсы вроде Background Debug Mode (BDM) или более распространенный JTAG, традиционно используемый для производственного тестирования. Пока некоторые инструменты могли обращаться к памяти пока CPU работал, другие не могли, приводя к вариациям между реализациями.

1990–2000

Внешняя трассировка стала непрактичной из-за высоких тактовых частот и внутреннего кэша. Вместо этого производители ввели сжатые данные трассировки ядра — захватывающие только не-последовательные изменения программного счетчика и сжимая их для off-chip транспорта. Это позволяло отладчику реконструировать пути выполнения, используя знание запущенной программы. Ключевые архитектуры включали IBM PowerPC, Motorola ColdFire и ARM 7TDMI ядра.

2000–2010

Сжатые датасеты трассировки позволили on-chip трассировочные буферы вроде ARM Embedded Trace Buffer (ETB), доступные через JTAG. Размер буфера мог быть сконфигурирован, балансируя площадь кремния против трассировочной производительности. Многоядерные SoC ввели новые вызовы: JTAG scan chains исчезали, когда ядра отключались. ARM CoreSight архитектура решила это, предоставляя единственный JTAG-based debug access port, который мог достичь всех memory-mapped CoreSight компонентов, включая множественные ядра, способные независимо циклировать питание.

2010–Настоящее

С подъемом 64-битных ядер и повсеместным использованием Linux/Android, on-device отладка набрала тягу. Kernel драйверы теперь экспонируют CoreSight компоненты, позволяя on-target захват трассировки через perf подсистему. ARM Embedded Logic Analyzer (ELA) возвращает богатство ранних ICE, предлагая сложные брейкпоинты, триггеры и доступ к внутренним SoC сигналам — все внутри кремния.

После 40 лет неистовой инновации, область стоит на пороге новой главы: отладка и трассировка через существующий функциональный I/O. Этот сдвиг обещает более легкие решения, сокращающие время разработки и затраты, повышая возможности, продолжая долгую войну с багами.

Встроенный

  1. Эволюция SPICE: от CANCER к современной симуляции схем
  2. Основы программирования микропроцессоров
  3. Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
  4. Cadence запускает Cloud Passport Partner Program для ускорения облачной миграции чип-дизайна
  5. Структура программы на C: разбор Hello World и процесс компиляции
  6. Makino: пионер первого японского НУ-фрезерного станка и машцентра
  7. Джин Хаас: создание наследия ЧПУ и империи моторспорта
  8. Mazak Corporation: от основания 1919 г. к мировому лидеру станкостроения
  9. Структура программы на C#: основные компоненты и пример Hello World
  10. Основы программирования ЧПУ: пошаговые уроки и примеры кода