Домашняя страница Поиск Контакты ICN | |
E-Doku Информация Справка Обратная связь | |
Команда AMO DISPA связана с заданием отображения памяти Displayer, которое является резидентным и постоянно находится в главной памяти системы. Это задание расположено в одной подсистеме с заданием отслеживания (трассировки) сообщений.
Инструментальная программа Memory Displayer позволяет системным специалистам считывать и изменять различные предварительно заданные и/или указанные участки памяти служебного терминала.
Команда AMO DISPA управляет поддержанием связи с этим терминалом, поэтому без нее Displayer не в состоянии выполнять свою задачу. Именно АМО используется для отображения содержимого памяти, считанного утилитой Displayer на служебном терминале, с которого и запускается само задание отображения памяти.
Displayer - это онлайновая инструментальная программа тестирования, которая может применяться для интеграции компонентов и проверки системы как техническими специалистами на местах, так и клиентами.
Функции команды AMO DISPA приведены ниже.
Вывод на дисплей содержимого памяти в виде шестнадцатеричного дампа при выполнении операций логического уровня (например, отображение всех видов памяти, указанных в АМО по имени, адресу и размерам матрицы). |
Создание пользовательских логических идентификаторов памяти для любого заданного адреса в памяти, в том числе и в виде таблицы. |
Дополнительное хранение адресов и размеров матриц для других участков памяти, задаваемых пользователем либо в рабочей области АМО (только при работе АМО), либо в области размещения резидентного задания Displayer каждого процессора (обеспечивается защита от стирания при перезапуске), либо в области сохранения на жестком диске (обеспечивается защита от стирания при перезагрузке). |
Изменение содержимого памяти при выполнении операций логического уровня (содержимое участка памяти, имя, адрес и размеры матриц которого должны быть указаны в АМО пользователем). |
Отображение и изменение содержимого памяти при выполнении операций логического уровня (базовый образ памяти, для которой в АМО заданы имя, смещение адреса и размеры матрицы). |
Ограничения Memory Displayer
Displayer не способен выполнять функции отладчика и не предназначен для этого. Эту инструментальную программу следует рассматривать в качестве дополнения к средствам выявления неполадок и диагностики возникающих проблем.
Примечание
Функции команды AMO DISPA приведены ниже.
|
: | Запуск AMO DISPA. | |||
|
: | Запрос на ввод данных в диалоговом режиме. |
Обзор процедуры
Код команды | Параметр | |
EXEC-DISPA |
PROCID=<параметр>; |
Примечания
a) | AMO DISPA управляет программой Displayer, установленной на указанном процессоре, а сама выполняется в ADS. |
б) | Данная команда AMO в течение нескольких минут остается в диалоговом режиме, ожидая ввода. Если ввод не произведен, выполнение команды прекращается автоматически . |
Пример
Ввод:
<EXEC-DISP:A1; |
Вывод:
H500: AMO DISPA STARTED
AMO DISPA VARIANT/VERSION F2/003 OF 1993-02-25
DISPLAYER VARIANT/VERSION G1/006 OF 1994-09-27
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*END; * = запрос на ввод команды. |
Операция INPUT-DISPA используется только для доступа к функции записи-считывания WRITE-READ; выполнить ее с терминала администрирования и технического обслуживания (АМТ) пользователь не может. На этом терминале отображается только приведенная ниже текстовая строка, предлагающая пользователю произвести ввод (следующая после текста звездочка указывает на готовность системы принять ввод).
DISPLAYER-INPUT IN <имя_процессора> PLEASE:
*
Данный текст указывает на то, что предыдущая команда АМО успешно выполнена .
Допустимые при этом команды перечислены ниже.
Примечания
a) | По умолчанию данная команда АМО выводит цифры в шестнадцатеричном коде (в этом случае они помечаются буквой H), если задан вывод в десятичном формате, используется суффикс T. |
б) | После подачи данной команды АМО на дисплей, если не указано иного, выводится шестнадцатеричный дамп с соответствующими символами в коде ASCII (аргумент CHAR) без вставки пустых строк (аргумент DIST). |
в) | При выполнении команд LST, SET и DEF адрес памяти имеет один и тот же формат (ADR=<селектор>-<смещение>). |
Создав определители памяти, можно присвоить ее участкам смысловые названия, что значительно упрощает их отображение и модификацию. .
Как правило, воспользоваться определителями памяти можно только тогда, когда они хранятся в рабочей области АМО, которая после подачи команды AMO-DISPA всегда очищается. Чтобы сохранить созданные определители, их нужно скопировать в другую область хранения. При создании и сохранении таких определителей хранилище более высокого уровня всегда дополняется хранилищем низшего уровня (другими словами, если задано AREA= HD, создаваемый определитель заносится также в область хранения резидентного задания Displayer и в рабочую область АМО).
Определители памяти всегда создаются для того процессора, Displayer которого в данный момент контролируется с помощью описываемой команды АМО. При этом все остальные одноименные определители памяти, созданные для других процессоров и хранящиеся в рабочей области АМО или на жестком диске, заменяются на новые.
Если в названии определителей памяти имеются пробелы, они обязательно удаляются. Таким образом, названия "DB_D_ CPB_TBL" и "DB_D_CPB_TBL" воспринимаются системой как одно и то же. Правда, если название содержит только пробелы, один из них остается. Звездочка в начале или конце вводимого названия определителя памяти играет роль "символа замещения" и используется в тех случаях, когда не нужно вводить полного уникального имени (например, для команды DEF). С учетом этого, команда "LST,DEF,DB_D_DH*" выведет на дисплей содержимое как памяти DB_D_DH_DEV_TBL, так и памяти DB_D_DH_LINE_TBL.
Адрес памяти для команд LST, SET, и DEF имеет один и тот же формат (ADR=<селектор>-<смещение>).
a) | Определители физической памяти. В качестве таких определителей используются простые предварительно заданные имена (символьные адреса) для адресов физической памяти. |
б) | Определители логической памяти. Эти определители описывают размеры матрицы. В них указывается начальный адрес таблицы, длина элементов и диапазон индексов. |
a) | Рабочая область AMO. В рабочей области AMO хранятся все данные, необходимые для обработки содержимого памяти как шестнадцатеричных файлов. Сразу после запуска АМО буфер этой рабочей области пуст. Всего в него можно поместить до 400 определителей памяти. При обработке содержимого памяти как шестнадцатеричных файлов достаточно данных, содержащихся в рабочей области АМО. При необходимости пользователь может копировать их сюда из других областей хранения. Заполнить буфера рабочей области AMO можно следующими способами: |
1. | создать определители памяти; |
2. | копировать определители памяти: |
a) | из области сохранения резидентного задания Displayer в главной памяти того процессора, с которым ведется работа в данный момент; |
б) | из области хранения жесткого диска. |
б) | Область резидентного задания. Область резидентного задания создается в главной памяти каждого процессора, на котором загружена инструментальная программа Displayer. Она обеспечивает защищенное от перезапуска системы хранение определителей памяти. Всего в эту область можно записать до 50 таких определителей. Заполнить буфер области резидентного задания можно следующими способами: |
1. | создать определители памяти; |
2. | копировать определители памяти: |
a) | из рабочей области AMO; |
б) | из области хранения жесткого диска. |
в) | Резервная область жесткого диска. Пользователь может выделить на жестком диске файл для хранения определителей памяти, которые должны сохраняться и в случае перезапуска системы. Заполнить эту область хранения на жестком диске можно следующими способами: |
1. | создать определители памяти; |
2. | копировать определители памяти: |
a) | из рабочей области AMO; |
б) | из области хранения резидентного задания Displayer в главной памяти того процессора, с которым в данный момент ведется работа. |
Пользователи могут создавать определители как физической, так и логической памяти. Главное различие между ними состоит в том, что в определителях логической памяти кроме адреса хранения должна указываться также структура матрицы.
Определители физической памяти используются в качестве описательных символов для адресов хранения и предназначены для многократного использования. Им назначается структура фиктивной матрицы Dummy Array (диапазон индексов от 0 до 0, длина элемента 65535 байт), а сами такие определители вводятся в область администрирования AMO.
Определители логической памяти используются при обращении к области хранения как к матрице, а также для доступа к отдельным элементам.
Созданный адрес логической памяти можно сохранить либо в рабочей области АМО (которая доступна только при работе АМО), либо в области хранения резидентного задания, либо в области хранения жесткого диска, тогда как созданные адреса физической памяти хранятся исключительно в рабочей области АМО.
Синтаксис команды
> Описание адреса с указанием селектора и смещения.
> Описание адреса с указанием места хранения.
> Описание структуры матрицы и места хранения.
Примеры
Пользователю нужно создать символ адреса для начального ввода в буфер слежения трассировщика сообщений. В соответствии со структурой данных в буфере слежения, адрес следующей записи может отстоять на четыре байта от данной.
Ввод:
*def,адр,ввод1,адр,3cf0-099c;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*def,адр,ввод2,табл1,ввод1,0,4;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Команда создания определителя логической памяти на основе символа адреса приведена ниже. В данном примере структура матрицы введена в буфер слежения трассировщика сообщений из второго ввода, а для элементов указан диапазон от 1 до 25. Каждый элемент имеет длину 30 байт(что соответствует длине стандартного ввода для сообщений ОС).
Ввод:
*def,имя_пользователя,ввод2,amo,30,1&&25;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Синтаксис команды
Название можно вводить частично, задав в начале и/или конце текстовой строки символ звездочки, который система воспринимает как символ замещения. Если название не введено или введено частично, в выводимый на дисплей список включаются все определители памяти.
В качестве областей хранения можно указывать AMO, HD и RES.
Пример
После выполнения действий, описанных в предыдущем примере, пользователь хочет просмотреть все определители памяти, хранящиеся в рабочей области АМО.
Ввод:
*lst,def,,amo;
Вывод:
DEFINITIONS IN AMO DISPA
NAME SEL OFF ELEM_L MIN_I MAX_I PID
ENTRY1 3CF0H 099CH FFFFH 0H 0H A1
ENTRY2 3CF0H 09BAH 1EH 1H 19H A1
DISPLAY-INPUT IN A1 PLEASE:
Значения заголовков::
NAME - название описываемой памяти;
SEL - селектор описываемой памяти;
OFF - смещение описываемой памяти;
ELEM_L - длина элемента описываемой памяти;
MIN_I - минимальный индекс описываемой памяти;
MAX_I -максимальный индекс описываемой памяти;
PID - идентификатор процессора описываемой памяти.
Адреса памяти можно копировать из мест их хранения в рабочую область АМО (когда АМО работает), в область хранения резидентного задания Displayer или в область хранения на жестком диске.
Синтаксис команды
> Общая процедура копирования из одной области хранения в другую.
> Копирование модуля данных компоновки в рабочую область АМО.
Пример
Пользователь намерен скопировать все определители памяти, которые начинаются с текста "ENT", из области резидентного задания в рабочую область АМО.
Ввод:
*copy,def,ent*,res-amo;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*lst,def,,amo;
Вывод:
DEFINITIONS IN AMO DISPA
NAME SEL OFF ELEM_L MIN_I MAX_I PID
ENTRY1 3CF0H 099CH FFFFH 0H 0H A1
ENTRY2 3CF0H 09BAH 1EH 1H 19H A1
DISPLAY-INPUT IN A1 PLEASE:
Определители памяти приходится удалять, чтобы освободить пространство хранения в соответствующем месте.
После того, как выполнение команды AMO DISPA прекращено, рабочая область АМО автоматически очищается.
Синтаксис команды
Этот файл используется для хранения определителей памяти, скопированных в область резервирования жесткого диска с помощью команды COPY или DEF.
Применение области резервирования на жестком диске не только гарантирует защиту определителей памяти при перезагрузке, но и позволяет копировать их на съемные носители информации (например, картриджи) для использования на других системах. Такая операция выполняется простым копированием файла.
Синтаксис команды
В системе должен существовать файл с указанным в команде именем.
Если в команде указано, сколько определителей памяти нужно сохранить, АМО исходит из того, что такого файла на диске нет, и пытается создать файл указанного размера. Задавать точное число определителей памяти не обязательно, так как созданный файл затем можно динамически расширять по мере необходимости.
Если число не введено, АМО считает, что такой файл уже существует, находит и открывает его, после чего на дисплей выводится количество содержащихся в нем определителей памяти.
Если файл с указанным именем уже открыт для обработки (с помощью команды DUMP или PATCH), открыть его второй раз невозможно. В таких случаях на дисплей выводится сообщение об ошибке F16. Однако пользователям разрешено применять команду FILE для повторного открытия различных файлов с целью их последовательной обработки в одном и том же диалоговом окне Displayer.
Пример
Ввод:
*file,:dbd:els/defsav1;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Указанный файл уже существует. Если бы его не было, на экране появилось бы сообщение об ошибке.
При использовании определителей логической памяти информация на дисплей всегда выводится в байтах. Во всех других случаях пользователь может выбирать между байтами (BYTE), словами (WORD) и двойными словами, или словами двойной точности (DWORD).
Синтаксис команды
> Вывод с использованием символа адреса.
> Вывод с использованием прямого адреса.
> Вывод с использованием определителя логической памяти.
Примеры
В списке связей базы данных ADS для статической таблицы задания Static Task Table введен адрес 0F38:0265. В списке Prolib Listing, длина элемента установлена равной 7.
Ввод:
*lst,da,f38-265,byte,140;
Вывод:
ADDRESS: 0F38H:0265H
CONTENTS HEX (ASCII)
0( 0) 0D55542000000814 4654200000021B46 .UT ....FT ....F
10( 16) 54200000020B4143 541400020C414652 T ....ACT....AFR
20( 32) 0001021846415300 0102194655500001 ....FAS....FUP..
30( 48) 0201545420010105 1520202000000215 ..TT .... ....
40( 64) 2020200000021520 2020000002152020 .... ....
50( 80) 2000000215202020 0000021520202000 .... .... .
60( 96) 0002152020200000 0215202020000002 ... .... ...
70( 112) 1520202000000215 2020200000021520 . .... ....
80( 128) 2020000002152020 20000002 .... ...
DISPLAYER-INPUT IN A1 PLEASE:
Пользователь хочет создать определитель логической памяти для таблицы статического задания Static Task Table. Такой определитель сохраняется также в области резервирования резидентного задания Displayer для последующего применения.
Ввод:
*def,adr,static_task_tbl,adr,0f38-0265;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*def,logname,static_task_tbl,res,7,1&&20;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Теперь нужно вывести на дисплей элементы таблицы статического задания под номерами 1, 2, 3 и 8.
Ввод:
*lst,logname,static_task-tbl,1&&3&8;
Вывод:
TABLE: STATIC_TASK_TBL
INDEX: 0001H ADDRESS: 0F38H:0265H
CONTENTS HEX (ASCII)
0( 0) 0D555420000008 .UT ...
TABLE: STATIC_TASK_TBL
INDEX: 0002H ADDRESS: 0F38H:026CH
CONTENTS HEX (ASCII)
0( 0) 14465420000002 .FT ...
TABLE: STATIC_TASK_TBL
INDEX: 0003H ADDRESS: 0F38H:0273H
CONTENTS HEX (ASCII)
0( 0) 1B465420000002 .FT ...
TABLE: STATIC_TASK_TBL
INDEX: 0008H ADDRESS: 0F38H:0296H
CONTENTS HEX (ASCII)
0( 0) 01545420010105 .TT ...
DISPLAYER-INPUT IN A1 PLEASE:
В режиме высокоуровневого доступа пользователь может задавать различные типы отображения определителей памяти (предварительно установленные в интерфейсе "человек-машина"), либо указывать группы соответствующего содержимого памяти.
Когда поступает запрос на отображение области хранения загрузочной области связи (BCASA) на пульте оператора (SEL= SCREEN), АМО выводит первые 2000 байт, а затем делает паузу, чтобы оператор мог прекратить дальнейший вывод. Это необходимо из-за большого объема загрузочной области, которая занимает примерно 48 Кбайт. Однако на диске сохраняется вся область BCASA. Для каждой команды необходимо указывать новое имя файла, что исключает опасность случайной замены прежних данных в существующем файле (см. сообщение F29).
Синтаксис команды
Допустимые значения типа вывода приведены в разделе 0.81.9 "Описание параметров" (параметр TYPE).
Пример
Ввод:
*lst,int,dchs;
Вывод:
TABLE: DASS_HW_CHAN_D_STATE_TBL
CONTENTS HEX (ASCII)
0( 0) 4242424242424242 0102424242424242 BBBBBBBB..BBBBBB
10( 16) 4242424242424242 4242424242424242 BBBBBBBBBBBBBBBB
20( 32) 4242424242424242 4242424242424242 BBBBBBBBBBBBBBBB
30( 48) 4242424242424242 4242424242424242 BBBBBBBBBBBBBBBB
40( 64) 42 B
DISPLAYER-INPUT IN A1 PLEASE:
Теперь пользователь хочет скопировать область хранения BCA в файл на жестком диске..
Ввод:
*lst,int,bcasa,hd,:pds:cer/bcafile;
Вывод:
H6: 49152T BYTES COPIED INTO FILE :PDS:CER/BCAFILE
DISPLAYER-INPUT IN A1 PLEASE:
Чтобы не допустить опечаток, количество вновь вводимых значений должно соответствовать количеству изменяемых участков памяти. Кроме того, длина новых значений должна быть точно такой же, как и для выбранного типа вывода памяти (если выбрана BYTE, например, должно быть введено двузначное шестнадцатеричное число).
Синтаксис команды
Количество участков памяти, которые нужно изменить, указывается десятичным числом.
Для ввода новых значений используются шестнадцатеричные числа, которые разделяются дефисами.
Ввод может производиться в форматах BYTE, WORD или DWORD.
> Внесение изменений с использованием символа адреса.
> Внесение изменений с прямым указанием адреса.
> Внесение изменений с использованием определителя логической памяти.
Пример
Данный пример иллюстрирует изменение типа устройства для терминального задания с 02 на 05.
Адрес таблицы статических заданий введен в базе данных ADS как 0F38:0265. В списке Prolib длина элемента указана равной 7, а смещение типа устройства относительно начала элемента равно 6.
В большинстве случаев элемент для терминального задания имеет номер 3.
Ввод:
*def,adr,tt_elem,adr,0f38-0273;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*lst,adr,tt_elem,byte,7;
Вывод:
TABLE: TT_ELEM
ADDRESS: 0F38H:0273H
CONTENTS HEX (ASCII)
0( 0) 01545420010102 .TT ...
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*set,adr,tt_elem,byte,7,01-54-54-20-01-01-05;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*lst,adr,tt_elem,byte,7;
Вывод:
TABLE: TT_ELEM
ADDRESS: 3E20H:00FBH
CONTENTS HEX (ASCII)
0( 0) 01545420010105 .TT ...
DISPLAYER-INPUT IN A1 PLEASE:
Перед тем, как приступить к обработке файла с помощью команды DUMP или PATCH, его нужно выбрать с помощью описываемой команды.
Если файл с таким же именем уже назначен в качестве области резервирования жесткого диска, открыть его еще раз невозможно. В таких случаях программа отображения Displayer AMO выводит сообщение об ошибке F16. Тем не менее, пользователю разрешается использовать команду Е для повторного открытия различных файлов с целью их последовательной обработки в ходе одного диалогового сеанса работы с Displayer.
Синтаксис команды
Указанный в команде файл должен уже существовать.
Перед тем, как просматривать содержимое файла, его нужно выбрать с помощью команды Е.
Адреса, внесенные в определители памяти, интерпретируются как целые числа длиной 4 байта, которые указывают на сдвиг подлежащих выводу данных относительно начала файла. Это же относится и к адресам вывода при использовании команды LST.
При использовании определителей логической памяти информация всегда отображается в байтах, во всех же других случаях пользователь может выбирать между байтами (BYTE), словами (WORD) и двойными (двойной точности) словами (DWORD).
Синтаксис команды
> Вывод с использованием символа адреса.
> Вывод с использованием прямого адреса (смещения/сдвига указателя).
> Вывод с использованием определителя логической памяти.
Пример
В данном примере предполагается, что определители памяти хранятся на жестком диске в файле defsav1, а пользователь хочет вывести на дисплей листинг первых двух определителей.
Ввод:
*e,:dbdb:els/defsav1;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*def,adr,entry_tbl,adr,0-0;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*def,logname,entry_tbl,amo,37,1&&2;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*dump,logname,entry_tbl,1&&2;
Вывод:
TABLE: ENTRY_TBL
INDEX: 0000H ADDRESS: 0000H:0000H
CONTENTS HEX (ASCII)
0( 0) 44425F445F43505F 4445565F53544154 DB_D_CP_DEV_STAT
10( 16) 4520202020202020 2020DADEA0340100 E ...4..
20( 32) 0000FF0700 .....
INDEX: 0001H ADDRESS: 0000H:0025H
CONTENTS HEX (ASCII)
0( 0) 44425F445F43505F 4445565F53544154 DB_S_CP_DEV_STAT
10( 16) 5553202020202020 20207051C0340200 US pQ.4..
20( 32) 0000FF0700 .....
DISPLAYER INPUT IN A1 PLEASE:
Данная функция не предназначена для замены функции AMO PATCH. При внесении изменений в область памяти на жестком диске программа отображения Displayer не использует адрес памяти, так как для обработки содержимого местоположение памяти на жестком диске значения не имеет.
Перед тем, как вносить изменения в содержимое файла, этот файл нужно выбрать с помощью команды Е.
Чтобы не допустить опечаток, количество вновь вводимых значений должно соответствовать количеству изменяемых участков памяти. Кроме того, длина новых значений должна быть точно такой же, как и для выбранного типа вывода памяти (если выбран формат BYTE, например, должно быть введено двузначное шестнадцатеричное число).
Синтаксис команды
Количество изменяемых участков памяти указывается десятичным числом, а новые значения вводятся в шестнадцатеричном коде и разделяются дефисом.
> Внесение изменений с помощью символа адреса.
> Внесение изменений с указанием прямого адреса.
> Внесение изменений с помощью определителя логической памяти.
Пример
На основании дампа памяти из приведенного выше примера пользователь решает откорректировать адрес второго участка памяти, заменив 34C0:5170 на 34A0:CEDA.
Ввод:
*patch,logname,entry_tbl,dword,1,34a0ceda,1,1a;
Вывод:
DISPLAYER-INPUT IN A1 PLEASE:
Ввод:
*dump,logname,entry_tbl,1&&2;
Вывод:
TABLE: ENTRY_TBL
INDEX: 0000H ADDRESS: 0000H:0000H
CONTENTS HEX (ASCII)
0( 0) 44425F445F43505F 4445565F53544154 DB_D_CP_DEV_STAT
10( 16) 4520202020202020 2020DADEA0340100 E ...4..
20( 32) 0000FF0700 .....
INDEX: 0001H ADDRESS: 0000H:0025H
CONTENTS HEX (ASCII)
0( 0) 44425F445F43505F 4445565F53544154 DB_S_CP_DEV_STAT
10( 16) 5553202020202020 2020DACEA0340200 US pQ.4..
20( 32) 0000FF0700 .....
DISPLAYER INPUT IN A1 PLEASE:
Исправление успешно внесено.
Hicom 300 E V3.0 Руководство по обслуживанию | Siemens Ном. для зак.: P31003-G1037-E403-4-5620 | Дата конвертации: 2000-10-27 |
Контакты: группа E-Doku | © Siemens AG 2000 |