САПР

 

В Гомельском государственном университете им. Ф. Скорины разработан инструментальный комплекс INTER, повышающий эффективность процесса создания аппаратно-программных систем с использованием серийно выпускаемых микропроцессоров и разрабатываемых процессоров. Рассмотрим основные возможности этого комплекса.

 

Недостатки традиционных аппаратно-программных средств отладки

 

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

 

Другой недостаток традиционных средств отладки состоит в низкой технологичности собственно процесса поиска и исправления ошибок в программах, резко контрастирующей с лучшими отладочными средами для традиционных языков программирования высокого уровня (Turbo Pascal, Borland C). И это закономерно, поскольку появляются все новые и новые микропроцессоры. Разработчики отладочных средств едва успевают поддержать стандартный набор (точки останова, средства просмотра памяти и регистров, разнообразные команды исполнения), как уже нужно начинать новую разработку на базе нового микропроцессора. Дело усугубляется постоянным усложнением как процессоров, так и ассемблеров для них: новые процессоры могут иметь конвейерную организацию команд и кэширование данных, параллельно исполняемые команды, команды задержанной передачи управления, повторяемые блоки команд (для организации циклов с нулевыми накладными расходами), циклическую и двунаправленную адресацию, алгебраический синтаксис и т. д. Попытки использовать при этом комплексы моделирования и проектирования цифровых систем на базе языков их описания ACTIV-CAD, OrCAD и даже супердорогостоящие комплексы типа Mentor Graphics, Visual HDL и других, основанных на языках VHDL и Verilog, сходят на нет из-за того, что практически невозможно разработать адекватную модель требуемого процессора.

 

Новые средства отладки

 

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

 

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

 

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

 

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

 

- цифровые сигнальные процессоры  -  TMS320c30, -c40, -c50, -c80 (Master Processor), ADSP 210x0;

 

- транспьютеры  -  T414, T800;

 

- микроконтроллеры  -  PIC, TMS370, МБ57;

 

- микропроцессоры  -  i8051, i8096, i8080, i8086/87, Z80;

 

- старые процессоры  -  PDP-11, IBM 360/370, Apple (6502);

 

- программируемые микрокалькуляторы  -  МК-61, МК-64;

 

- разнообразные гипотетические процессоры  -  процессор, управляемый потоками данных; процессор базы данных, процессор для языка ФОРТ.

 

Описание нетрадиционных средств отладки

 

Первой из предлагаемых нетрадиционных средств можно назвать инкрементную технологию отладки: имитация осуществляется непосредственно по исходным текстам программы, при этом окна редактора и отладчика совмещены; компиляция исходного текста редактируемой программы ведется в фоновом режиме непосредственно во время его набора и редактирования, что в свою очередь позволяет мгновенно перейти от редактирования программы к ее исполнению и обратно. Более того, среда отладки поддерживает возможность “горячего старта”: если во время исполнения программы разработчик нашел ошибку, он может не только ее сейчас же исправить, но и продолжить выполнение с любой точки (при изменениях в программе прежние значения сохраняются в памяти процессора, его регистрах, флагах и т. д.); точно так же можно заново начать исполнение программы с соответствующей реинициализацией данных. Очевидно, что при таком режиме существенно сокращается время на локализацию и исправление ошибок.

 

К нетрадиционным средствам относится также удобная для разработчика мощная система визуализации данных, которая обладает следующими возможностями:

 

- определение пользователем перечисляемых и вещественных типов;

 

- возможность задавать для визуализации непосредственно ассемблерные операнды и выражения над ними, а также заменять в поле имени ассемблерный операнд и выражение на произвольную мнемоническую запись (как в латинском, так и в русском алфавите, например “Длина строки” вместо “Table[AX]”);

 

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

 

- сохранение и восстановление набора и расположения окон текста программы, регистров, блоков памяти, “окон-картинок” без сброса состояния исполнения программы.

 

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

 

- присвоить значение переменной программы или элементу памяти процессора, периферийного устройства либо среды ($S);

 

- сравнить с эталонным выражением значение переменной программы или элемента памяти процессора, периферийного устройства или среды ($T). Теневые команды $S и $T очень удобны для организации автоматического тестирования подпрограмм и фрагментов программ. Кроме того, с помощью команды $T (расставив ее в опорных точках программы) можно организовать автоматическую локализацию ошибок;

 

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

 

Комплекс INTER может оказаться полезным при разработке ассемблерных программ для процессоров или контроллеров, в том числе промышленных, программируемых на языках типа РКС (релейно-контактных схем). Вы можете спросить: “Зачем мне ваша система, если у нас уже есть фирменный отладчик, тем более что ваш программный имитатор исполняет программы медленнее, чем наш аппаратно-программный, и к тому же неизвестно, как он верифицирован?”. На это мы можем ответить так. Да, вы не отладите окончательно свою систему, если у вас нет какого-либо аппаратного отладчика. Конечно, вы можете отладить любую аппаратно-программную систему и без комплекса INTER (что наверняка и делали уже много раз). Но с его помощью аппаратно-программный комплекс станет намного более быстродействующим (в реальных проектах быстродействие повышалось в 3 и более раза). Для этого примерно 80% работы (выполняющейся на аппаратно-программном отладчике) надо перенести в среду INTER. И эти 80% работы вы сделаете в 10 раз быстрее, потому что предлагаемый подход позволит:

 

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

 

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

 

- автоматизировать процесс контроля за правильностью исполнения программы с помощью “теневых” команд;

 

- развивать отладочную среду соответственно своим потребностям  -  используя заложенный в систему богатый потенциал настройки либо непосредственно обращаясь к разработчикам системы;

 

- оставаться в одной и той же мощной отладочной системе при переходе на другие процессоры.

 

Что до верификации, то с помощью INTER выполнено несколько реальных проектов (для процессора К1816ВЕ51), составивших в общей сложности свыше 10 000 строк текста на ассемблере, и ни разу не было обнаружено расхождения между работой программ в отладчике и на реальном процессоре.

 

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

 

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

 

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

 

Инструментальная система INTER работает на IBM-совместимых ПК под управлением MS DOS, имеет варианты для реального и защищенного режимов. Максимальная конфигурация требует около 5,5 Мб на жестком диске и зависит от состава описаний процессоров. Демонстрационную версию системы можно получить по Internet: http://www.internet.no/kennethi/  belarus/companies/sprl.

 

С авторами статьи можно связаться по телефонам: (0232) 56-4237, 47-3713 или по адресу: dolinsky@sc27.belpak.gomel.by.

 

Михаил Долинский, Игорь Зисельман, Сергей Белоцкий

Версия для печати