Научная статья на тему 'Директивы и сообщения об ошибках интегрированной среды разработки и отладки программного обеспечения встраиваемых систем pBlaze IDE'

Директивы и сообщения об ошибках интегрированной среды разработки и отладки программного обеспечения встраиваемых систем pBlaze IDE Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
192
36
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зотов Валерий

Предлагаемая статья продолжает серию публикаций, знакомящих с pBlaze IDE (Integrated Development Environment)— интегрированной средой разработки и отладки программного обеспечения восьмиразрядных микропроцессорных систем на основе конфигурируемых ядер семейства PicoBlaze [1–6] фирмы Xilinx. В предыдущей части цикла были представлены общие характеристики и подробное описание пользовательского интерфейса данных отладочных средств [7, 8]. В настоящей статье основное внимание уделяется описанию директив интегрированной среды pBlaze IDE и сообщений об ошибках, генерируемых при трансляции исходного текста микропроцессорных программ на языке ассемблера.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Зотов Валерий

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Директивы и сообщения об ошибках интегрированной среды разработки и отладки программного обеспечения встраиваемых систем pBlaze IDE»

Валерий ЗОТОВ

walerry@km.ru

Структурные элементы исходного текста ассемблерной программы, отлаживаемой в среде pBlaze IDE

Исходный текст программы на языке ассемблера ядра PicoBlaze, отлаживаемой с помощью интегрированной среды pBlaze IDE, может содержать следующие элементы:

• команды микропроцессорного ядра;

• директивы интегрированной среды

pBlaze IDE;

• метки;

• комментарии.

Отладочные средства pBlaze IDE поддерживают все команды всех версий микропроцессорного ядра семейства PicoBlaze. Синтаксис большинства команд совпадает с мнемонической формой записи инструкций микропроцессорных ядер PicoBlaze [1, 3-6]. Исключение составляют инструкции ввода-вывода, сложения и вычитания с учетом переноса и займа соответственно, возврата из подпрограмм и процедур обслуживания прерываний, а также команды разрешения и запрета прерываний.

Мнемоническая форма записи команд ввода INPUT и вывода OUTPUT в исходном тексте отлаживаемой микропроцессорной программы должна быть трансформирована в IN и OUT соответственно. Инструкции сложения двух операндов с учетом переноса ADDCY в ассемблерной программе записываются в сокращенном виде ADDC. Команда вычитания с учетом заема SUBCY модифицируется

Директивы и сообщения

об ошибках интегрированной среды разработки и отладки программного обеспечения встраиваемых систем pBlaze IDE

Предлагаемая статья продолжает серию публикаций, знакомящих с pBlaze IDE (Integrated Development Environment) — интегрированной средой разработки и отладки программного обеспечения восьмиразрядных микропроцессорных систем на основе конфигурируемых ядер семейства PicoBlaze [1—6] фирмы Xilinx. В предыдущей части цикла были представлены общие характеристики и подробное описание пользовательского интерфейса данных отладочных средств [7, 8]. В настоящей статье основное внимание уделяется описанию директив интегрированной среды pBlaze IDE и сообщений об ошибках, генерируемых при трансляции исходного текста микропроцессорных программ на языке ассемблера.

в SUBC. Инструкции возврата из подпрограмм RETURN и процедур обслуживания прерываний RETURNI в исходном тексте микропрограммы, отлаживаемой в среде pBlaze IDE, должны быть преобразованы в RET и RETI соответственно. Мнемоническая форма записи инструкций разрешения и запрета прерываний ENABLE INTERRUPT и DISABLE INTERRUPT сокращается до EINT и DINT соответственно.

Метки и комментарии, располагаемые в исходном тексте отлаживаемой микропроцессорной программы, должны полностью соответствовать тем правилам, которые изложены в предыдущих публикациях [1, 9].

Директивы интегрированной среды разработки и отладки микропроцессорных программ pBlaze IDE

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

Директива ORG предназначена для указания адреса размещения команд микропрограммы, следующих за строкой с этой директивой. Таким образом, данная директива позволяет явно указать адресное пространство для размещения в эмулируемом ППЗУ любой

части разрабатываемой микропроцессорной программы. Директиву ORG целесообразно использовать для выделения соответствующих секций в адресном пространстве эмулируемого ППЗУ микропрограмм, предназначенных для записи подпрограмм. Кроме того, директива необходима для записи вектора прерывания. Формат командной строки выглядит следующим образом.

ORG <числовое_значение_адреса>

Числовое значение адреса в директиве ORG может быть представлено в десятичной или шестнадцатеричной форме. При использовании десятичной формы представления адреса необходимо помнить о том, чтобы указываемое значение не превосходило максимальной границы адресного пространства памяти микропрограмм. В шестнадцатеричной форме представления числовое значение адреса задается в виде последовательности из двух или трех шестнадцатеричных символов, начинающейся с префикса $. Количество шестнадцатеричных разрядов зависит от используемого типа микропроцессорного ядра. Для ядер РкоВ^е, реализуемых на базе кристаллов семейств 8райап-П, враГап-ПЕ, Virtex, Virtex-E и СооШиппег-П [1, 2, 3, 5], адрес задается в виде двухразрядного шестнадцатеричного числа. В программах, предназначенных для микропроцессорного ядра на основе ПЛИС семейств 8райап-3, Virtex-II,

IN s1, $1A

LOAD s2, si

SUB s2, 10

JUMP NC, output_data

JUMP next_cmd

output_data: OUT si, $1C

next_cmd: LOAD s3, s1

ORG $A5

interrupt_subroutine: ADD s2, 05

OUT s2, $1C

RETI ENABLE

ORG $FF

JUMP interrupt_subroutine

Рис. 1. Вид основного окна отладчика pBlaze IDE с результатами трансляции фрагмента исходного текста микропроцессорной программы, демонстрирующего применение директивы ORG

Virtex-IIPRO и Virtex-4 [1, 4, 6], значение адреса содержит три шестнадцатеричных разряда.

В качестве примера далее приводится фрагмент исходного текста микропроцессорной программы, который наглядно поясняет способ практического применения директивы ORG.

Директива ORG $FF предписывает ассемблеру транслировать код вектора прерывания по адресу FF. Необходимость этого обусловлена архитектурными особенностями микропроцессорных ядер PicoBlaze, предназначенных для реализации в кристаллах семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E и CoolRunner-II. В программах, которые разрабатываются для ядра, выполняемого на ПЛИС семейств Spartan-3, Virtex-II, Virtex-IIPRO и Virtex-4, код вектора прерывания должен находиться по адресу 3FF. С помощью директивы ORG $A1 дается указание ассемблеру транслировать код процедуры обработки прерывания, начиная с адреса A5. Окно отладчика интегрированной среды pBlaze IDE с результатами трансляции рассматриваемого фрагмента микропрограммы отражает последствия воздействия директивы ORG на генерируемый код (рис. 1). Первые три шестнадцатеричные цифры в начале каждой строки в окне отладчика указывают адрес размещения кода соответствующей инструкции в эмулируемом ППЗУ микропрограмм.

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

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

Кроме того, директива EQU позволяет установить эквивалентность задаваемого идентификатора и обозначения одного из регистров общего назначения. То есть, директива EQU может применяться для переименования регистров общего назначения. Использование мнемонических идентификаторов для регистров общего назначения делает разрабатываемую микропроцессорную программу более наглядной. При этом для замены используемого регистра достаточно в одной строке, содержащей соответствующую директиву EQU, указать идентификатор требуемого регистра общего назначения. Следует учитывать, что в отличие от директивы ассемблера NAMEREG [1, 9], при указании нового имени регистра с помощью директивы EQU стандартный идентификатор этого регистра также доступен для использования в инструкциях микропрограммы.

Для декларации и непосредственного присвоения числового значения переменной или константе используется следующий формат командной строки директивы EQU.

<идентификатор_переменной_или_константы>

ЕОи <числовое_значение>

В состав идентификатора переменной, константы или регистра общего назначения мо-

гут входить прописные и строчные буквы латинского алфавита (А-2, а^), цифры (0-9) и символы подчеркивания (_). При этом в имени константы не должно быть пробелов или каких-либо символов-разделителей. Числовое значение переменной или константы указывается в десятичной или шестнадцатеричной форме. В последнем варианте числовое значение задается в виде последовательности, состоящей из двух шестнадцатеричных символов (0-9, А-Б, а-^ с префиксом $.

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

<идентификатор_переменной_или_константы >

ЕОи <арифметическое_выражение>

Например, выражение max_delay EQU' 4 устанавливает эквивалентность идентификатора max_delay и значения 4, а строка min_size EQU 256/8 определяет значение min_size, равное результату выражения 256/8.

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

<новый_идентификатор_регистра_общего_назначения > ЕОИ <стандартный_идентификатор_регистра_общего_назначения>

Например, выражение buffer_reg EQU s5 задает для регистра общего назначения 85

Рис. 2. Вид основного окна отладчика рБіагв 1ОБс результатами трансляции фрагмента, демонстрирующего использование директив ОвЩ ОвОиТи ОвЮ

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

В представленном фрагменте исходного текста микропроцессорной программы переопределены идентификаторы трех регистров общего назначения. Регистр s1, который выполняет функцию хранения данных, считанных из входного порта ввода-вывода, обозначен как три_1кЛа_^. Для регистра s2, используемого в операции вычисления разности текущего и максимального значений, с помощью директивы EQU задано новое название —

diff_data_reg. Регистр общего назначения sЗ, предназначенный для записи предыдущего значения, переименован в old_data_reg. Последующие строки исходного текста микропрограммы содержат директивы EQU, которые определяют значения констант, используемых далее в роли адресов портов ввода-вывода и параметров арифметических и логических команд. В частности, константа in_port_addr определяет значение адреса используемого входного порта ввода-вывода, константа out_port_addr — выходного порта и константа bus_port_addr — двунаправленного порта ввода-вывода. Константа с идентификатором max_data используется для указания максимально допустимого значения некоторого контролируемого параметра, значения которого считываются из входного порта с адресом in_port_addr.

Директивы DSIN, DSOUT, DSЮ предназначены для декларации портов ввода-вывода, состояние которых необходимо контролировать в процессе отладки микропрограммы. Следует обратить внимание на то, что для осуществления моделирования выполнения программы необходимо обязательно описать все используемые порты ввода-вывода с помощью данных директив. Информация о значениях данных, поступающих в указанные порты ввода-вывода, будет автоматически отображаться в окне отладчика в процессе эмуляции функционирования микропрограммы. При этом состояние сигналов, поступающих во входной или двунаправленный порт ввода-вывода, доступно для изменения в интерактивном режиме. Таким образом, разработчику в процессе отладки предоставляется возможность модификации

входных данных, поступающих на порты ввода-вывода.

Для объявления входного порта используется следующий формат командной строки директивы DSIN.

<идентификатор_входного_порта>

ОБШ <значение_адреса_входного_порта>

Идентификаторы портов ввода-вывода задаются в соответствии с теми же правилами, что и идентификаторы констант, переменных и регистров в директивах EQU. Значения адресов в директивах DSIN, DSOUT, DSЮ указываются в той же форме, что и в директивах ЮRG. Например, выражение $ц!иеке$_роП DSIN $16 определяет входной порт $и>Нске$_рогґ с адресом 22 (16 в шестнадцатеричном представлении). Кроме того, в качестве адреса порта может указываться идентификатор константы, определяемой с помощью директивы EQU.

Декларация выходного порта осуществляется с помощью выражения, формат которого выглядит следующим образом:

<идентификатор_выходного_порта>

РБОиТ <значение_адреса_выходного_порта>

Например, в строке leds_port DSOUT $10 описывается выходной порт leds_portс адресом 16 (10 в шестнадцатеричном представлении).

Директива DSЮ для определения вход-ного-выходного порта имеет следующий формат:

<идентификатор_входного-выходного_порта>

ББЮ <значение_адреса_входного-выходного_порта>

Например, выражение Ьш_ро^ DSЮ $20 указывает на то, что в процессе моделирования будет отображаться состояние вход-ного-выходного порта bus_port с адресом 32 (20 в шестнадцатеричном представлении).

Чтобы смоделировать выполнение фрагмента микропроцессорной программы, поясняющего использование директивы EQU, необходимо дополнить его директивами декларации портов ввода-вывода DSIN, DSЮUT и DSЮ. После включения соответствующих командных строк наш пример будет выглядеть следующим образом:

input_data_reg ЕОИ 81 diff_data_reg ЕОИ 82 old_data_reg ЕОИ 83 in_port_addr ЕОИ $1А out_port_addr ЕОИ $1С bus_port_addr ЕОИ $2Б max_data ЕОИ 20 corr_data ЕОИ 5

IN_DATA_PORT ББШ in_port_addг OUT_DATA_PORT ОБОиТ out_port_addr BUS_PORT ОБЮ bus_port_addr

input_data_reg EQU s1 diff_data_reg EQU s2 old_data_reg EQU s3 in_port_addr EQU $1A out_port_addr EQU $1C bus_port_addr EQU $2D max_data EQU 20 corr_data EQU 5

IN input_data_reg, in_port_addr LOAD diff_data_reg, input_data_reg SUB diff_data_reg, max_data JUMP NC, output_data JUMP next_cmd output_data: OUT input_data_reg, out_port_addr next_cmd: LOAD old_data_reg, input_data_reg

ORG $A5

interrupt_subroutine: ADD diff_data_reg, corr_data

OUT diff_data_reg, out_port_addr RETI ENABLE

ORG $FF

JUMP interrupt_subroutine

IN input_data_reg, IN_DATA_PORT LOAD diff_data_reg, input_data_reg SUB diff_data_reg, max_data JUMP NC, output_data JUMP next_cmd output_data: OUT input_data_reg, OUT_DATA_PORT next_cmd: LOAD old_data_reg, input_data_reg

ORG $A5

interrupt_subroutine: ADD diff_data_reg, corr_data

OUT diff_data_reg, OUT_DATA_PORT RETI ENABLE

ORG $FF

JUMP interrupt_subroutine

Рис. 3. Вид основного окна отладчика рБіагв ЮЕс результатами трансляции фрагмента, демонстрирующего использование директив DSROMи ОвйЛМ

После трансляции данного фрагмента основное окно интегрированной среды рВїаге ЮЕ приобретает вид, показанный на рис. 2. В правой части рабочего окна отладчика появляются панели, предназначенные для отображения данных входного порта ввода-вывода Ш_БАТА_РОЯТ, выходного порта ОиТ_ОАТА_РОКТ и двунаправленного порта ввода-вывода БШ_РОКТ, которые были определены с помощью соответствующих директив ЮЗШ, ЮЗОиТ и ЮЗІО.

Директивы ЮЗКЛЫ и ЮЗКОЫ позволяют определить блоки памяти ИАМ16, которые используются в качестве ОЗУ (ЯАМ) и ПЗУ (ИОМ) соответственно. Объем каждого блока памяти, определяемого с помощью данных директив, составляет шестнадцать ячеек. Значение начального (базового) адреса объявляемого блока памяти должно быть кратно 16. Содержимое ячеек блоков памяти, которые были указаны в директивах ЮЗКОЫ и ЮЗКЛЫ, в наглядной форме автоматически отображается в информационных панелях, расположенных в нижней части основного окна отладочных средств рВїаге ЮЕ.

Для декларации блока оперативной памяти применяется следующий формат командной строки директивы ЮЗКЛЫ.

В составе идентификаторов блоков памяти ОЗУ и ПЗУ могут использоваться те же символы, что и в идентификаторах констант, переменных и портов ввода-вывода, которые указываются в директивах EQU. Значения адресов в директивах DSROMи DSRAMуказы-ваются в той же форме, что и в директивах ORG. Например, выражение sicel DSRAM $30 определяет блок оперативной памяти sUcel с базовым адресом 48,

Формат командной строки директивы DSROM, используемой для определения блоков ПЗУ, выглядит следующим образом:

Данные, которые должны храниться в ячейках декларируемого блока памяти, указываются в виде последовательности шестнадцати значений, отделяемых друг от друга запятыми, Значения данных могут задаваться как в десятичной, так и в шестнадцатеричной форме, При использовании шестнадцатеричной формы представления перед числовым значением используется символ $, Например, строка coeff_tabl DSROM $10, З, 12, 14, б, 8, 20, 12, 24, 21, 2З, ЗЗ, 47, 19, З1, ЗЗ, ЗЗ определяет блок ПЗУ coeff_taM с начальным адресом 1б,

Продемонстрируем применение директив DSROM и DSRAM в процессе отладки программного обеспечения, модифицировав фрагмент программы, который иллюстрирует использование директив описания портов ввода-вывода DSIN, DSOUTи DSIO. Для этого дополним приведенный выше фрагмент командами записи данных в ОЗУ и соответствующими директивами определения блоков оперативной и постоянной памяти, Преобразованный фрагмент микропрограммы имеет следующий вид,

input_data_reg EQU s1 diff_data_reg EQU s2 old_data_reg EQU s3 in_port_addr EQU $1A out_port_addr EQU $1C bus_port_addr EQU $2D max_data EQU 20 corr_data EQU З

IN_DATA_PORT DSIN in_port_addr OUT_DATA_PORT DSOUT out_port_addr BUS_PORT DSIO bus_port_addr buf_ram DSRAM $З0 rom_tabl DSROM $80, З, 1,7,9,З,б,4,11,2,1З,17,0,З,0,20,18

IN input_data_reg, IN_DATA_PORT LOAD diff_data_reg, input_data_reg SUB diff_data_reg, max_data JUMP NC, output_data JUMP next_cmd output_data: OUT input_data_reg, OUT_DATA_PORT OUT input_data_reg, buf_ram IN input_data_reg, rom_tabl ADD diff_data_reg, input_data_reg OUT diff_data_reg, buf_ram+1 next_cmd: LOAD old_data_reg, input_data_reg

ORG $AЗ

interrupt_subroutine: ADD diff_data_reg, corr_data

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

OUT diff_data_reg, OUT_DATA_PORT RETI ENABLE

ORG $FF

JUMP interrupt_subroutine

Директивы ЮЗКЛЫ и ЮЗКОЫ, включенные в исходный текст микропроцессорной программы, определяют соответственно блок оперативной памяти с базовым адресом 80 и блок постоянной памяти с начальным адресом 128. Рис. 3 наглядно показывает влияние этих директив на конфигурацию основного окна отладочных средств рВїаге ЮЕ.

Группа директив интегрированной среды разработки и отладки программ рВїаге ЮЕ используется для управления работой с файлами. В эту группу входят директивы включения исходных файлов, генерации выходных файлов различного формата и директива исполнения командного файла.

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

<идентификатор_блока_ПЗУ>

DSROM <значение_базового_адреса> <значение_данных1>, <значение_данных2>, <значение_данных16>

<идентификатор_блока_ОЗУ> DSRAM <значение_базового_адреса>

чения. Добавление содержимого указанных файлов выполняется после первого прохода трансляции основного текста микропроцессорной программы. Командная строка директивы ШСЬ имеет следующий формат.

Директива VHDL предназначена для автоматического формирования файла описания содержимого программной памяти на языке VHDL после трансляции исходного текста микропроцессорной программы на языке ассемблера. VHDL-описание содержимого ППЗУ микропрограмм используется на этапах синтеза и моделирования проектируемой системы в САПР серии Xilinx ISE (Integrated Software Environment). Формат командной строки этой директивы имеет следующий вид,

В качестве идентификатора файла шаблона указывается название файла, который содержит соответствующий шаблон описания содержимого ППЗУ микропрограмм на языке VHDL. Идентификатор модуля программной памяти представляет собой имя объекта программной памяти в составе VHDL-описания проектируемой микропроцессорной системы.

Для автоматической генерации файла описания содержимого программной памяти в формате, воспринимаемом генератором ядер Xilinx CORE Generator, используется директива COE. Формат командной строки данной директивы выглядит следующим образом:

Разрядность слова может указываться только для микропроцессорных ядер PicoBlaze на основе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E [1-3]. Возможными значениями этого параметра являются 8 и 16.

Директива MEM предписывает после успешного завершения трансляции исходного текста микропроцессорной программы на языке ассемблера сформировать файл описания содержимого памяти в формате, используемом утилитой Data2MEM/Data2BRAM. Командная строка директивы MEM имеет следующий формат:

При использовании директив, предназначенных для управления формированием выходных файлов (VHDL, COE и MEM), следует обратить внимание на то, что каждая

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

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

EXEC «<командная_строка>»

В командной строке может быть представлен идентификатор команды или исполняемого файла (с расширением exeили com), сопровождаемый необходимыми параметрами. Например, директива EXEC impact запускает модуль программирования iMPACT, входящий в состав пакета САПР серии Xilinx ISE, в интерактивном режиме.

Для исполнения командного (пакетного) файла формат директивы EXEC имеет следующий вид:

EXEC «<идентификатор_командного_файла>.сш&>

Например, выражение EXEC bat_file.cmd предписывает выполнить после трансляции ассемблерной программы последовательность команд, представленную в пакетном файле bat_file.cmd.

Сообщения об ошибках интегрированной среды pBlaze IDE

Процесс трансляции микропроцессорной программы в среде pBlaze IDE включает в себя несколько проходов. При первом проходе выполняется формирование таблицы перекодировки символьных обозначений. Результатом второго прохода является генерация исполняемого кода микропроцессорной программы. При третьем проходе создается объект моделирования. Информация об ошибках в транслируемой программе, выявленных при первом проходе, отображается только во встроенном окне журнала регистрации сообщений (Log Pane). В первой части сообщения указывается номер строки исходного текста микропроцессорной программы, в которой обнаружена ошибка. Во второй части отображается ее кодовое обозначение. При обнаружении ошибок в процессе второго прохода информация о них отображается не только в окне журнала регистрации сообщений, но и непосредственно в исходном тексте микропроцессорной программы, представленном в окне отладчика. Кодовое обозначение ошибки размещается в той части строки, где представлены адрес инструкции и ее шестнадцатеричное представление.

Наиболее распространенными ошибками при разработке программ на языке ассемблера микропроцессорного ядра PicoBlaze являются:

• опечатки при написании команд микропроцессорного ядра или директив интегрированной среды pBlaze IDE;

• отсутствие метки строки, на которую имеются ссылки в командах программы;

• отсутствие двоеточия после текста метки;

• повторное использование одной метки для нескольких строк;

• неправильные названия регистров, указываемые в качестве параметров команд;

• ошибки в указании параметров инструкций микропроцессорного ядра;

• отсутствие обязательных параметров команд микропроцессорного ядра или директив интегрированной среды pBlaze IDE;

• недопустимые значения числовых параметров инструкций микропроцессорного ядра и директив интегрированной среды pBlaze IDE;

• использование инструкций, которые не поддерживаются применяемой версией микропроцессорного ядра.

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

При выявлении ошибки в тексте команды или директивы во встроенном окне журнала регистрации сообщений выводится строка следующего формата:

line <номер_строки,_содержащей_неидентифицированную_ко-манду_или_директиву>: ?Syntax

Данное сообщение отображается также в случае отсутствия или при ошибочной записи второго обязательного параметра инструкции. Кроме того, аналогичное сообщение появляется в тех случаях, когда обнаруживаются лишние параметры в инструкциях микропроцессорного ядра PicoBlaze или директивах интегрированной среды pBlaze IDE.

Об отсутствии метки строки, на которую встречаются ссылки в командах перехода или вызова подпрограммы, ассемблер информирует следующим сообщением:

line <номер_строки,_содержащей_неопределенную_метку>: ?Undefined

Аналогичное сообщение выводится также в случае наличия ошибки в названии регистра, указанного в качестве второго параметра инструкции.

При обнаружении в исходном тексте программы двух или более строк с одинаковой меткой выводится следующее предупреждение:

INCL «<идентификатор_включаемого_файла_1>»,

[«<идентификатор_включаемого_файла_2>»,

«<идентификатор_включаемого_файла_N>»]

VHDL «<идентификатор_файла_шаблона>.vhd», < <идентификатор_формируемого_файла>.vhd», <идентификатор_модуля_программной_памяти>»

COE «<идентификатор_формируемого_файла>.coe», [<разрядность_слова>]

MEM «<идентификатор_формируемого_файла>.mem

line <номер_строки,_содержащей_повторно_используемую_мет-ку>: ?Label

В том случае, когда после текста метки отсутствует двоеточие, уведомление об ошибке выглядит следующим образом:

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

При трансляции микропрограммы, содержащей инструкцию, которая не поддерживается установленной версией микропроцессорного ядра, генерируется следующее сообщение:

Обнаружение ошибки в идентификаторе регистра, который указан в качестве первого параметра команды, сопровождается сообщением вида:

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

Если в инструкции микропроцессорного ядра пропущена запятая, которая отделяет значения параметров команды друг от друга, то сообщение об ошибке выглядит следующим образом:

В этом случае дополнительно выводится также сообщение об ошибке в синтаксисе команды.

Когда директива ЕОи используется для повторного переименования названия регистра общего назначения, в окне журнала регистрации сообщений выводится следующая строка:

Если в директиве EQUуказан идентификатор, который уже используется в качестве названия регистра общего назначения или имени константы (переменной), то генерируется следующее сообщение об ошибке:

line <номер_строки,_содержащ;ей_директиву_EQU_с_повтор-но_используемым_идентификатором>: ?Double

При отсутствии в командной строке директивы EQU определяемого идентификатора выводится сообщение, которое имеет следующий вид:

line <номер_строки,_содержащ;ей_директиву_EQU_с_отсутству-ющим_идентификатором>: ?Equate

При повторном использовании директив формирования выходных файлов VHDL, COE и MEM транслятор формирует следующее предупреждение:

line <номер_строки,_содержащей_повторную_д;ирективу_VHDL, COE, MEM>: ?Not allowed

Если в директиве определения блока ПЗУ DSROM указано значение стартового адреса, не кратное 1б, то выводится предупреждение следующего вида:

line <номер_строки,_содержащей_директиву_DSROM_с_некор-ректным_значением_базового_адреса>: ?ROM Start

В случае обнаружения директивы декларации блока ОЗУ DSRAM, содержащей значение базового адреса, не кратное 1б, появляется следующее сообщение:

line <номер_строки,_содержащ;ей_директиву_DSRAM_с_некор-ректным_значением_базового_адреса>: ?RAM Start

Если в директиве COE указано некорректное значение разрядности слова или данный параметр указан для версии микропроцессорного ядра семейства PicoBlaze, которая его не поддерживает, то сообщение об ошибке имеет следующий вид:

line <номер_строки,_содержащей_директиву_ COE_с_некоррект-ным_значением_параметра_разрядности>: ?Width

Когда в директиве описания порта ввода-вывода DSIN, DSOUT или DSIO задано значение адреса, которое уже используется другим портом, в процессе трансляции формируется следующее предупреждение:

line <номер_строки_директивы_описания_порта_ввода-выво-да_с_повторяющимся_адресом>: ?Map

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

line <номер_строки_директивы_описания_порта_ввода-выво-да_с_некорректным_адресом>: ?I/O Map

Если в качестве параметра в директиве ORG указан идентификатор, который не является значением адреса, то выводится со-

общение, которое выглядит следующим образом:

line <номер_строки_директивы_ORG,_содержащей_пара-метр,_не_являющийся_адресом>: ?Address

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

line <номер_строки_директивы,_содержащей_идентификатор_от-сутствующего_файла>: ?Not found

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

Литература

1. Зотов В. Проектирование встраиваемых микропроцессорных систем на основе ПЛИС фирмы Xilinx. М.: Горячая линия — Телеком. 200б.

2. Зотов В. PicoBlaze — семейство восьмиразрядных микропроцессорных ядер, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 2003. № 4,

3. Зотов В. Система команд микропроцессорного ядра PicoBlaze, реализуемого на основе ПЛИС семейств Spartan-II, Spartan-IIE, Virtex, Virtex-E // Компоненты и технологии. 2003. № З,

4. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства Virtex-II // Компоненты и технологии. 2003. № б,

З. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейства CoolRunner-II // Компоненты и технологии. 2003. № 7,

6. Зотов В. Особенности микропроцессорного ядра PicoBlaze, предназначенного для применения в проектах, реализуемых на основе ПЛИС семейств Spartan-3, Virtex-II и Virtex-IIPRO // Компоненты и технологии. 200З. № З-б.

7. Зотов В. Программирование конфигурационной памяти встраиваемой системы, реализуемой на основе микропроцессорного ядра семейства PicoBlaze в ПЛИС фирмы Xilinx // Компоненты и технологии. 200б. № 2.

8. Зотов В. pBlaze IDE — интегрированная среда разработки и отладки программного обеспечения встраиваемых 8-разрядных микропроцессорных систем, реализуемых на основе ПЛИС фирмы Xilinx // Компоненты и технологии. 200б. № 3-4.

9. Зотов В. Разработка программ на языке ассемблера для семейства микропроцессорных ядер PicoBlaze // Компоненты и технологии. 2003. № 8.

line <номер_строки,_содержащей_метку_без_двоеточия>: ?Colon

line <номер_строки,_содержащей_неподдерживаемую_инструк-цию>: ?Opcode

line <номер_строки,_содержащей_ошибочный_идентифика-тор_регистра>: ? Register

line <номер_строки_с_отсутствующей_запятой>: ?Comma

line <номер_строки,_содержащей_директиву_повторного_пере-именования_регистра>: ?Reg Name

i Надоели баннеры? Вы всегда можете отключить рекламу.