Внутрисхемная эмуляция - In-circuit emulation

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

В последнее время этот термин также охватывает аппаратные отладчики на базе Joint Test Action Group (JTAG), которые обеспечивают эквивалентный доступ с использованием оборудования для отладки на кристалле со стандартными производственными микросхемами. Использование стандартных микросхем вместо заказных версий делает технологию повсеместной и недорогой, а также устраняет большинство различий между средой разработки и средой выполнения. В этом распространенном случае термин внутрисхемный эмулятор используется неправильно , иногда сбивая с толку, потому что эмуляция больше не используется.

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

Функция

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

Эмулятор получает свое имя , потому что он эмулирует (имитирует) на центральный процессор (CPU) компьютера внедренной системы. Традиционно у него была вилка, которая вставлялась в гнездо, где обычно размещалась микросхема интегральной схемы ЦП . Большинство современных систем напрямую используют ЦП целевой системы со специальным доступом для отладки на основе JTAG. Эмуляция процессора или прямой JTAG-доступ к нему позволяет ICE делать все, что может делать процессор, но под контролем разработчика программного обеспечения.

ICE подключают компьютерный терминал или персональный компьютер (ПК) к встроенной системе. Терминал или ПК предоставляет программисту интерактивный пользовательский интерфейс для исследования и управления встроенной системой. Например, обычным делом является наличие отладчика уровня исходного кода с графическим оконным интерфейсом, который обменивается данными через адаптер (эмулятор) JTAG со встроенной целевой системой, не имеющей графического пользовательского интерфейса.

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

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

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

Преимущества

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

Большинство ICE состоят из блока адаптера, который находится между главным компьютером ICE и тестируемой системой. Штыревой разъем и кабельная сборка соединяют адаптер с гнездом, в котором фактический центральный процессор (ЦП) или микроконтроллер устанавливается внутри встроенной системы. Последние версии ICE позволяют программистам получить доступ к встроенной в ЦП схеме отладки через JTAG или интерфейс фонового режима отладки (BDM) для отладки программного обеспечения встроенной системы. В этих системах часто используется стандартная версия микросхемы ЦП, и их можно просто подключить к порту отладки в производственной системе. Их иногда называют внутрисхемными отладчиками или ICD, чтобы отличить тот факт, что они не копируют функциональность ЦП, а вместо этого управляют уже существующим стандартным ЦП. Поскольку ЦП не требуется заменять, они могут работать на производственных блоках, где ЦП впаян и не может быть заменен. В Pentium x86 для помощи в отладке ICE использует специальный «режим проверки».

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

Большинство хост-систем представляют собой обычные коммерческие компьютеры, не связанные с процессором, используемым для разработки. Например, ПК с Linux может использоваться для разработки программного обеспечения для системы, использующей чип Freescale 68HC11 , процессор, который не может работать с Linux.

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

Отладка на кристалле

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

Отладка на кристалле, часто называемая Joint Test Action Group (JTAG), использует предоставление дополнительного интерфейса отладки к действующему оборудованию в производственной системе. Он предоставляет те же функции, что и внутрисхемная отладка, например, проверка внутреннего состояния или переменных, и может иметь возможность устанавливать контрольные точки, точки останова и точки наблюдения. Разница в том, что это обеспечивается дополнительным кремнием в производственном процессоре, а не заменой процессора на внешний эмулятор отладки. По этой причине некоторые функции ICE изменены спецификациями процессора. К плате контроллера добавляется дополнительный интерфейс JTAG, который требуется в каждой производственной системе, но, поскольку для этого требуется всего несколько сигнальных контактов, дополнительные затраты минимальны. Интерфейсы JTAG изначально были разработаны и до сих пор используются для тестирования в конце производства.

Intel

Для поддержки отладки внутрисхемного эмулятора (ICE) на Intel 286 на процессоре были доступны пять дополнительных контактов: один входной контакт для внешнего принудительного установления точки останова ICE, ( ICEBP#) и две альтернативные пары выходных контактов для выбора операций через шину ICE. вместо пользовательской памяти. На 80286 существуют две инструкции ( 0F 04, 0F 05) для дампа / восстановления полного состояния ЦП до смещения памяти 0x800, а также однобайтовый префикс переопределения ( F1) для включения режима ICE для доступа к пользовательской памяти.

Смотрите также

использованная литература

внешние ссылки