stringtranslate.com

Внутрисхемная эмуляция

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

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

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

Функция

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

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

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

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

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

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

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

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

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

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

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

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

Встроенная отладка

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

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

Интел

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

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

Рекомендации

  1. Кейл, Рейнхард (22 июля 2008 г.). «Отладка с помощью микроконтроллеров Cortex-M3». www.embedded.com . Проверено 25 мая 2013 г.
  2. ^ «Обзор режима Pentium Probe».
  3. ^ Патент США 4547849, Луи, Гленн; Реттер, Рафи и Шаанан, Нив и др., «Интерфейс между микропроцессором и сопроцессором», выпущено 15 октября 1985 г., передано корпорации Intel.  «Сигналы состояния цикла пользовательской шины, S1# и S0# поддерживают пользовательскую шину и ICE. Сигналы состояния цикла шины, ICES1# и ICES0# поддерживают шину ICE.… Шина ICE используется только для циклов чтения данных, чтения кода, остановки, выключения и записи в память.… микропроцессор принудительно переходит в совместимый режим при сбросе, … он невозможно переключиться обратно в совместимый режим, кроме как путем сброса (или точки останова ICE),… ICE необходимо уделить особое внимание, поскольку это единственный случай, в котором может произойти переключение ведущего микропроцессора из режима защиты в режим совместимости (за исключением сброса) … Программное обеспечение ICE начинает выполнение после точки останова ICE в режиме совместимости, а затем переключается в режим защиты для большей части своих операций».

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