Н.П.БРУСЕНЦОВ, В.И.ЛОБАНОВ, Н.М.ЛОКТЕВ


              АДАПТИРУЕМАЯ ОТЛАДОЧНАЯ СИСТЕМА

                РАЗРАБОТКИ МКУ В СРЕДЕ ДССП


     Отладочные системы разработки микроконтроллерных устройств  (МКУ)
являются  основным  инструментом при проектировании и отладке цифровых
устройств на базе микропроцессоров и однокристальных микро-ЭВМ. Тради-
ционно  под  каждый  процессор разрабатывается своя специализированная
отладочная система.  Специализация затрагивает не  только  программное
обеспечение,  но и всю аппаратную поддержку.  Это приводит к тому, что
создание отладочных средств под новый микропроцессор  затягивается  на
1-2 года, а их стоимость достигает 5-10 тыс. долларов.
     Авторами была разработана простая и дешевая адаптируемая отладоч-
ная  система (АОС) для проектирования и отладки МКУ,  имеющих открытую
шину адреса/данных.  АОС позволяет перенастраиваться на новый тип про-
цессора при неизменном аппаратном обеспечении.  Изменение программного
обеспечения затрагивает не более 20%  общего объема.  Программная под-
держка  была  создана  в  среде  диалоговой системы структурированного
программирования (ДССП),  что и предопределило достаточно сжатые сроки
разработки  АОС.  ДССП  и  развиваемый  адаптивный  язык РАЯ описаны в
[1,2].
     Архитектура АОС является дальнейшим развитием идей,  изложенных в
[3,4],  по обеспечению простоты и универсальности отладочных  средств.
Аппаратная чать АОС представляет из себя плату, подключаемую через па-
раллельный интерфейс к системной шине ПЭВМ IBM PC/XT. Параллельный ин-
терфейс реализован на 3 микросхемах среднего уровня интеграции,  плата
АОС содержит 13 микросхем большого и среднего уровня интеграции.
     В состав платы АОС входят блоки и функциональные узлы:  интерфейс
адреса и данных (ИАД), интерфейс управляющих сигналов (ИУС), ОЗУ прог-
рамм пользователя (ОЗУПП),  ОЗУ контрольных точек (ОЗУКТ),  коммутатор
шины адреса (КША),  коммутатор шины данных (КШД), формирователь сигна-
лов управления (ФСУ) и блок управления МКУ (БУ). Эти узлы и блоки свя-
заны между собой шинами адреса (ША), данных (ШД) и управления (ШУ).
     Назначение блоков, узлов и шин АОС описывается следующим образом.
Блок ИАД предназначен для приема и передачи адреса и данных от инстру-
ментальной ПЭВМ. Блок ИУС передает сигналы управления от ПЭВМ на ФСУ и
БУ.  Блок ОЗУПП хранит программу пользователя, а также программу выве-
дения содержимого внутренней памяти целевого процессора,  которая заг-
ружается в ОЗУПП лишь на время ее исполнения.  ФСУ служит для формиро-
вания сигналов управления работой ОЗУПП, ОЗУКТ, КША, КШД. ОЗУКТ хранит
информацию о наличии контрольных точек.  БУ формирует сигналы управле-
ния целевым процессором для перевода последнего в один из режимов: ав-
томатический, пошаговый или режим КТ. Наличие БУ избавляет разработчи-
ка  от  необходимости аппаратной перестройки при переходе на новый тип
целевого процессора,  что обепечивает простую и быструю адаптируемость
АОС. Коррекции подвергается только программное обеспечение.

              Программное обеспечение отладочной системы.

        Программная часть  отладочной  системы  написана в среде ДССП.
Выбор данной среды объясняется наличием большого опыта работы у  авто-
ров в данной среде и наличия определенных программных наработок. Кроме
того, необычность построения системы с точки зрения  обычных  программ
даёт  некоторую надежду на повышенную трудность вскрытия готовой поль-
зовательской системы от несанкционированного доступа или  копирования,
(естественно при использовании определенных алгоритмов защиты).
        Полная версия программы поддержки отладочного устройства вклю-
чает в себя следующие программные компоненты:
        - так называемая базисная система,  которая гораздо шире базо-
          вой  системы  ДССП за счёт того что к ней пристыковано боль-
          шинство из имеющихся в составе ДССП библиотек
        - программа  создания и поддержки параметров настройки и функ-
          ционирования системы;
        - программа сохранения системы и авторизации доступа;
        - модуль дизассемблера;
        - модуль редактирования памяти;
        - модуль поддержки аппаратной части отладчика;
        - сервисная оболочка системы;
        - кросс-ассемблер;
        - управляющая программа аппаратной части;
        - модуль программатора ПЗУ.

        Базисная система строится на основе ядра системы (файл  Q.EXE)
путем добавления к ней библиотек с последующим сохранением на диске. В
качестве присоединяемых библиотек использованы следующие компоненты:
        - программа прокрутки экрана ROLLSCR,
        - программа поддержки быстрой работы с экраном SCRW2LNM,
        - редактор текстов E,
        - модуль просмотра словаря ONLYQND,
        - отладчик программ OTL,
        - выдачи значений времени на экран DATETIME,
        - поддержки работы с мышью MOUSE,
        - средства организации меню MENU4,
        - набор утилит для работы в меню MENU4UTI,
        - организации помощи GENHLP4,
        - поддержки работы с прерываниями INT,
        - диспетчер параллельных процессов DISP,
        - вызова внешних сопрограмм EXEFILE,
        - организации меню выбора файлов SELFILE,
        - выдачи значений времени на экран PR-WATCH,
        - пакет контроля быстротекущих процессов RT-TMR,

        Время от  времени  пользовательская  надстройка  над  базисной
системой  требует  введения  или изменения функций в базисной системе.
Это значит,  что иногда приходится заново компилировать базовую систе-
му. Для автоматизации этого процесса введен механизм псевдокомпоновки.
Все составляющие компоненты системы  фиксируются  в  файле  компоновки
BASE.DSP  при  помощи  записей  типа  LOAD  <filename>.  Пример  файла
BASE.DSP приведен в приложении.
        После завершения компоновки базисная система  сохраняется  при
помощи строки SAVE NEWBASE PEXEC.  Это даёт возможность при старте ба-
зисной системы выполнить команды заданные в виде параметров  командной
строки. Обычно в качестве такой команды стоит команда LOAD <filename>.
При помощи этой команды загружается файл  компоновки  пользовательской
системы. Пример такого файла приведен в приложении 1.
        При своем выполнении файл компоновки определяет с помощью сло-
ва DEFINE?, пристыкована требуемая часть к системе или нет. Если часть
уже есть в системе, то загрузки её не происходит и компоновка идёт да-
лее.  Использование таких  файлов  позволяет  автоматизировать  сборку
системы,  а  значит  ускорить  компоновку пользовательской системы при
внесении изменений в любой из составляющих модулей системы.  Как пока-
зал  опыт  наиболее  часто изменяется пользовательская часть и в част-
ности её последние модули.

      Модули базисной системы меняются сравнительно редко, и уж совсем
редко приходится прибегать к коррекции ядра системы.  Коррекция потре-
бовалась для команд CDIR и CD.  Дело в том, что эти команды не исполь-
зуют командное прерывание DERR, вызываемое при сбоях в дисковой систе-
ме.  Это приводит к тому, что диагностика, выводимая этим прерыванием,
разрушает целостность оконной информации прикладной системы.  Произве-
денная коррекция позволяет перехватывать выдачу диагностических  сооб-
щений подобно тому, как это сделано в командах типа WOPEN CONNECT SPOS
IS OS IB OB и т. д. Корректировка базисной системы свелась к доработке
пакетов текстового редактора, организации меню и набора утилит для ме-
ню.

        В редакторе сделаны доступными или введены следующие слова:
- M1  M2 для возможности работать с отмеченным текстом во вновь созда-
  ваемых расширениях редактора.
- VYVEDIT PIE NIE NFE используется для ввода и вывода текста  в  буфер
  редактора  из меню выбора файлов без использования командной строки.
  Для сохранения целостности экрана при таком  вводе  пришлось  убрать
  диагностику числа введенных строк в буфер, так как число строк в ре-
  дакторе все равно видно при работе в нём.
- FRT  для возможности определения имени файла находящегося в редактор
  программным путем и создания из этого имени  родственных  файлов  то
  есть имеющих другое расширение.
- POSLPF для возможности альтернативной трансляции текста  из  буфера.
  Используется  для трансляции текста кросс-ассемблером,  подобно тому
  как это делается в интегрированных оболочках.


        По сравнению  с другими языками программирования ДССП обладает
рядом возможностей, которые были использованы в программе.
        1. В  системе  встроено  понятие сохраняемых данных,  что дает
возможность после окончания работы программы сохранить все  изменённые
данные в файле самой программы.  Конечно, с точки зрения экономичности
это может быть и неоптимальный подход,  поскольку  переписывается  вся
программа  даже тогда,  когда изменяется 1 байт.  В обычных языках это
выполняется при помощи файлов конфигурации.  Но с другой  стороны  вся
программа строится теперь из 1 файла,  и после её запуска не надо вво-
дить файл состояния системы,  так как конфигурация уже в памяти машины
и система готова к дальнейшей работе.
        2. Наличие команд работы с битами позволяет организовывать би-
товые  массивы  информации.  Причем  в отличие от обычных языков,  где
максимальная размерность массива равна 16,  в следствии чего требуются
усложнения индексации, здесь биты адресуются напрямую без дополнитель-
ного дробления.
        3. Механизм объектов типа ACT VAR позволяет строить  процедуры
подобные процедурам языка PASCAL, имеющим в качестве входного парамет-
ра имя процедуры.  Данный способ позволяет  добиться  большой  степени
обобществления процедур,  а  значит,  повысить  компактность программ.
Кроме того этот механизм может быть модифицирован в  FIX  ACT  VAR.  В
программе  при  помощи  этого  достигается  постепенное  наращивание и
расширение возможностей системы,  а также различная  степень  функцио-
нальной конфигурации системы.
        4. Ещё одним преимуществом является легкая переносимость прог-
рамм  на   машины   разной   архитектуры.   Так,  например,  редактор,
кросс-ассемблер  и  дизассемблер были первоначально созданы и отлажены
на машине ДВК-2,  а затем перенесены на IBM PC. При переносе доработке
подверглась только часть процедур, в которых есть обращение к дисковым
устройствам. Необходимость такой переделки обусловлена различным стро-
ением файловых систем на этих машинах.

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

        Рассмотрим назначение составляющих пользовательской системы

1. Программа создания и поддержки параметров настройки и  функциониро-
   вания системы.
        Служит для создания и определения различных системных перемен-
ных и массивов,  используемых в дальнейшем всеми пакетами  системы.  В
качестве  таких переменных выступают различные шаблоны имен файлов для
составления списка файлов ввода кода,  текста,  имена внешних  сопрог-
рамм,  тип  подключения  отладочного  устройства к машине.  Кроме того
здесь определяются цвета различных меню системы.  Если  программу  за-
пустить  в скомпонованной системе,  то она не транслируется,  а только
настраивает таблицу цветов.  Это очень удобно,  так как  позволяет  не
производить  из-за изменения цвета 1-го меню перекомпиляцию всей прог-
раммы.

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

3. Модуль дизассемблера.
        Служит для получения строки текста ассемблерной команды из за-
данного кода команды. Используется при непосредственной работе с аппа-
ратурой, для отображение текстовой мномоники команд отлаживаемой прог-
раммы.

4. Модуль редактирования памяти.
        Используется для просмотра  и  изменения  памяти  отлаживаемой
программы  без её перетрансляции.  Кроме того используется для проста-
новки контрольных точек.  Редактирование может вестись как в  кодовом,
так  и  в символьном виде.  Во время редактирования пользователь сразу
получает информацию об ассемблерной команде, соответствующей коду дан-
ной ячейки.  Есть возможность присвоения заданной области памяти зада-
ваемого значения.



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

6. Сервисная оболочка системы.
        Это пакет организации интегрированной оболочки системы,  в ко-
торой  пользователь  осуществляет свою работу.  Оболочка предоставляет
следующие возможности: работа в режиме отладчика программы, редактиро-
вание текста программы,  трансляция программы, чтение файла кода прог-
раммы с диска и запись в ОЗУ ПП и КТ,  запись  в  дисковый  файл  кода
программы из ОЗУ ПП и КТ,  просмотр файлов директории,  просмотр файла
программами типа PCVIEW и т.д., настройка параметров системы, програм-
мирование ППЗУ, чтение файла в редактор.
        Данных возможностей вполне достаточно, чтобы произвести полную
разработку программы не выходя из системы. Работа в оболочке построена
так,  чтобы  максимальным  образом  разгрузить пользователя от ручного
ввода команд. Этому также способствует поддержка манипулятора "мышь" в
данном режиме.


7. Кросс-ассемблер.
        Служит для  трансляции  текста программы в исполняемый код за-
данного микропроцессора.  При трансляции создается файл листинга прог-
раммы, по которому в случае ошибок можно произвести исправление текста
программы.  После завершения трансляции код вновь полученной программы
автоматически  записывается в дисковый файл,  а также переписывается в
память отладчика  и после чего используется для отладки на аппаратуре.
По  своей  организации  кросс-ассемблер  является  двухпроходным,  что
обусловлено требованием пользователя иметь реальный листинг, где в по-
лях меток ссылок вперёд стоит реальный код а не 0-е значение. По опыту
работы  можно  отметить,  что перенастройка кросса на другой процессор
требует 2-4 дней. В настоящее время объём файла исходного текста прог-
раммы для трансляции ограничен 64-мя килобайтами.


8. Управляющая программа аппаратной части.
        Обеспечивает реализацию  всех режимов работы аппаратуры и сер-
висных функций отладки. Обеспечиваются следующие режимы и возможности:
        - остановка процессора,
        - очистка ОЗУ КТ,
        - обнуление всех ресурсов,
        - модификация системы счисления для ввода значений,
        - модификация основных регистров и памяти,
        - сброс процессора,
        - исполнение 1 цикла команды,
        - исполнение 1 команды полностью без вывода регистров,
        - исполнение 1 команды полностью с выводом регистров,
        - автоматическая работа процессора,
        - запустить до точки останова,
        - переключение частоты тактирования процессора,
        - инвертирование режима отображения ОЗУ,
        - вызов помощи по системе команд процессора,
        - полуавтоматическая трассировка программы,

9. Модуль программатора ПЗУ.

        Позволяет, не выходя из системы,  запрограммировать код, полу-
ченный  после отладки программы в ПЗУ с ультрафиолетовым стиранием се-
рии К573.

        В своё  время  были  предприняты попытки введения ассемблерных
вставок с целью ускорения работы системы, но ощутимого реального выиг-
рыша от их введения не получено. Это объясняется тем, что значительные
ограничения накладываются аппаратурой.  Поэтому с целью сохранения пе-
реносимости программ  решено  отказаться  от  их  использования  и все
составные части системы написаны на базовом языке системыю.  Вся прог-
рамма со всеми её компонентами занимает объём на диске в 105 килобайт.
Сравнивая аналогичные по назначению программы мы видим,  что их  обьём
как минимум в 1.5-2 раза превышает объём нашей программы.
       Работа АОС   была   проверена   на   целевых  процессорах  типа
КР1816ВЕ48,  КР1806ВЕ1, КФ1868ВЕ1. Не вызывает никакого сомнения рабо-
тоспособность  АОС  со всеми восьмиразрядными процессорами фирм Intel,
Motorola,  Zilog и т.п.  Сроки адаптации зависят от  типа  процессора.
Например, для КР1816ВЕ35 они составили 2 недели, для КФ1868ВЕ1 - 3 не-
дели.

     Краткие технические характеристики АОС-8.
1. Разрядность целевых процессоров, бит  - 4; 8
2. Объем ОЗУ программ, кбайт             - 4
3. Количество контрольных точек          - 4096
4. Количество корпусов ИМС               - 13 + 3
5. Основные режимы работы:
   - отладка программ;
   - сброс всех контрольных точек;
   - распечатка справочника по системе;
   - запись любого участка ОЗУ программ на магнитный носитель  в  виде
     файла;
   - чтение файла программы и запись его в ОЗУ программ;
   - запись-чтение внешней и внутренней памяти МКУ на магнитный  носи-
     тель.
6. Режим отладки включает в себя автоматический и пошаговый режимы,  а
   также режим контрольных точек.

     Вопрос разрядности  целевого процессора для АОС не является прин-
ципиальным:  просто увеличивается разрядность ОЗУПП,  КША, КШД, ИАД. В
настоящее  время разрабатывается АОС-16 для работы с 4- ,  8- и 16раз-
рядными целевыми процессорами. В результате НИОКР будет создана АОС-16
для целевого 16-разрядного ФОРТ/ДССП-процессора,  выпуск которого пла-
8нируется в НПО "Светлана" (г. С.-Петербург).



                    Л И Т Е Р А Т У Р А

1. Брусенцов Н.П. Микрокомпьютеры. М.:Наука, 1985, с. 141-165.

2. Брусенцов  Н.П.  и  др.  Развиваемый адаптивный язык РАЯ диалоговой
   системы программирования ДССП. М.: изд. МГУ, 1987.

3. Лобанов  В.И.  Архитектура  отладочных средств для микроконтроллера
   //Микропроцессорные средства и системы, N 3, 1986, с. 30-32.

4. Лобанов В.  И.  Мальков В.  А. Аппаратное отладочное устройство для
   //малоразрядной мткро-ЭВМ Электронная промышленность, 1986, вып. 2,
   с. 52-53.

                     А Н Н О Т А Ц И Я



           Брусенцов Н.П., Лобанов В.И., Локтев Н.М.

  Адаптируемая отладочная система разработки МКУ в среде ДССП.

     Рассматривается пример  применения  ДССП для решения весьма акту-
альной задачи создания адаптируемой отладочной системы (АОС)  проекти-
рования микроконтроллерных устройств.  Приводятся краткое описание ап-
паратного и программного обеспечения АОС, технические характериятики.


     Библиогр.: 3 названия.

Приложение 1. Пример файла компоновки базисной системы.

"Компоновка ДССП системы.     Версия 1.4.  6 Июня   1992."
B10 CR 11 ! SCOLOR TOS''
LOAD PRIMEF
USE SYSTEM
WRD FIND DEFINE? E2D
NOT %IF :: : DEFINE? WRD FIND BR0 T0 DEF?1 ;
: DEF?1 C@UB E2D NOT ;
    %FI
B16
:: : PEXEC [] 81 'PSP SETHI C 1- @B TEXEC [] ;
USE  SYSTEM
LOAD MEMORY
LOAD SCRW2LNM
LOAD ROLLSCR    USE  $ROLLSCR
LOAD E2
LOAD ONLYQND
LOAD OTL
LOAD DATETIME
LOAD MOUSE
LOAD MENU4SLN
LOAD MENU4UTI
LOAD GENHLP4L
LOAD INT
LOAD DISP
LOAD EXEFILE
LOAD SELFILE
LOAD PR-WATCH
LOAD RT-TMR
[LOAD OVL]
B16 CANCEL
SAVE NEWBASE PEXEC [Сохранение системы]
BYE

Приложение 2. Пример файла компоновки пользовательской системы.

DEFINE?  $COLOR   NOT %IF 0 LOAD QCL      %FI
DEFINE?  $EXSV    NOT %IF   LOAD EXSAVE   %FI
DEFINE?  $DIAS    NOT %IF   LOAD DIAS1806 %FI
DEFINE?  $DUMP    NOT %IF   LOAD NSNDU    %FI
DEFINE?  $HARD    NOT %IF 1 LOAD NQAPBIT  %FI
DEFINE?  $OS      NOT %IF   LOAD SERVIS   %FI
DEFINE?  $ASSEM   NOT %IF   LOAD NPASS2   %FI
DEFINE?  $HELP    NOT %IF   LOAD HELPCOMN %FI
DEFINE?  $CNTOS   NOT %IF 1 LOAD CNT1806  %FI
DEFINE?  $ADPROG  NOT %IF   LOAD ADPROG   %FI
SS