
Разработка программного обеспечения встраиваемых микропроцессорных систем, проектируемых на базе расширяемых вычислительных платформ семейства Zynq 7000 AP SoC фирмы Xilinx.
Часть 5
Установка параметров компоновщика для разрабатываемого проекта прикладной программы
Для того чтобы установить требуемые значения параметров компоновщика для создаваемой прикладной программы, необходимо, прежде всего, открыть страницу Settings раздела C/C++ Build диалоговой панели параметров разрабатываемого проекта програм-много приложения, воспользовавшись одним из способов, рассмотренных в [19]. На указанной странице нужно выбрать группу параметров ARM gcc linker, поместив курсор в строку с ее названием и щелкнув левой кнопкой мыши. После этого страница Settings диалоговой панели параметров разрабатываемого проекта прикладной программы приобретает вид, представленный на рис. 1.
В поле редактирования значения параметра Command приводится командная строка запуска компоновщика для формирования исполняемого модуля создаваемого программного приложения. Все опции этой командной строки, установленные для разрабатываемого проекта прикладной программы, отображаются во встроенной панели All options. Для изменения заданных опций следует выбрать соответствующую подгруппу параметров компоновки, входящую в состав группы ARM gcc linker. Общие параметры компоновщика представлены в подгруппе General, при открытии которой страница Settings диалоговой панели параметров разрабатываемого проекта программного приложения принимает вид, приведенный на рис. 2.
Параметр Do not use standard start files (-nostartfiles) позволяет заблокировать использование стандартных стартовых файлов. Для осуществления такой блокировки нужно установить индикатор состояния данного параметра в положение «Включено».
С помощью параметра Do not use default libraries (-nodefaultlibs) предоставляется возможность исключения применения в процессе компоновки разрабатываемой прикладной программы библиотек, используемых по умолчанию. Чтобы запретить подключение указанных библиотек компоновщиком, необходимо перевести индикатор состояния этого параметра во включенное положение.
Параметр No startup or default libs (-nodefaultlibs) позволяет выполнить процесс компоновки разрабатываемого программного приложения без подключения стандартных библиотек. Для запрета применения указанных библиотек следует установить индикатор состояния этого параметра в положение «Включено».
С помощью параметра Omit all Symbol Information (-s) осуществляется управление обработкой символьной информации. При включенном положении индикатора состояния этого параметра вся символьная информация пропускается.
Для указания сведений о дополнительных библиотеках, используемых в процессе компоновки создаваемого программного приложения, следует выбрать подгруппу параметров Libraries. При этом страница Settings диалоговой панели параметров разрабатываемого проекта прикладной программы преобразуется к виду, изображенному на рис. 3.
В случае выбора подгруппы параметров Libraries указанная страница содержит две встроенные панели с заголовками Libraries и Library search path. Во встроенной панели Libraries отображается список используемых библиотек, а в панели Library search path — пути доступа к применяемым библиотекам. Чтобы добавить нужную библиотеку в этот список, следует воспользоваться кнопкой , которая расположена над встроенной панелью Libraries. При нажатии данной кнопки появляется диалоговая панель с заголовком Enter Value, как показано на рис. 3. В этой диалоговой панели в поле редактирования значения параметра Libraries нужно указать идентификатор подключаемой библиотеки и подтвердить его нажатием клавиши OK. Для удаления какой-либо неиспользуемой библиотеки необходимо выделить соответствующую строку в списке, представленном во встроенной панели Libraries, после чего нажать кнопку
.
Определение полного названия папки, в которой должен выполняться поиск необходимой библиотеки, осуществляется с помощью кнопки , находящейся над встроенной панелью Library search path. После нажатия этой кнопки на экран выводится диалоговая панель с заголовком Add directory path, чей вид демонстрирует рис. 3. Полное название требуемой папки, включающее путь доступа к ней, указывается в поле редактирования значения параметра Directory, представленном в открывшейся диалоговой панели. Для быстрого поиска требуемой папки в составе рабочего каталога разрабатываемого проекта программного обеспечения можно воспользоваться клавишей Workspace, расположенной под полем редактирования значения параметра Directory. После нажатия этой клавиши на экране появляется диалоговая панель с заголовком Folder selection, чей вид представлен на рис. 4. Чтобы указать папку, находящуюся вне рабочего каталога разрабатываемого проекта программного обеспечения, следует использовать клавишу File system, при нажатии которой появляется стандартная панель навигации по дискам компьютера. Процедура выбора требуемой папки завершается нажатием клавиши OK, расположенной в нижней части диалоговой панели Add directory path. После этого полное название указанной папки добавляется в список, отображаемый во встроенной панели Library search path.
Для уточнения информации об используемом файле директив в процессе компоновки создаваемого программного приложения следует открыть подгруппу параметров Linker Script. При выборе этой подгруппы страница Settings диалоговой панели параметров разрабатываемого проекта прикладной программы приобретает вид, приведенный на рис. 5.
Идентификатор применяемого файла директив для компоновщика, включающий путь доступа к нему, отображается в поле редактирования значения параметра Linker Script. Выбор другого варианта файла директив для разрабатываемого проекта программного приложения осуществляется с помощью клавиатуры после активизации указанного поля редактирования. Кроме того, для поиска требуемого файла можно воспользоваться клавишей Browse, расположенной справа от поля редактирования значения параметра Linker Script. При нажатии этой клавиши открывается стандартная панель навигации по дискам компьютера, как показано на рис. 5. Эта панель позволяет быстро найти нужный файл директив не только в рабочем каталоге открытого проекта программного обеспечения, но и в других разделах.
Для установки дополнительных параметров компоновки, которые не представлены ни в одной из рассмотренных категорий, следует выбрать подгруппу Miscellaneous, после чего страница Settings диалоговой панели параметров разрабатываемого проекта прикладной программы принимает вид, изображенный на рис. 6.

Рис. 6. Установка дополнительных параметров компоновщика для разрабатываемого проекта прикладной программы
В верхней части этой страницы находится поле редактирования значения параметра Linker Flags, в котором можно с помощью клавиатуры указать дополнительные опции компоновщика для разрабатываемого проекта программного приложения. Кроме того, для управления дополнительными опциями компоновщика предусмотрена встроенная панель Other options и группа кнопок, расположенных над этой панелью. Встроенная панель Other options содержит список дополнительных опций компоновщика, заданных разработчиком. Чтобы добавить новую опцию в отображаемый список, нужно воспользоваться кнопкой , помещенной над этой встроенной панелью. При нажатии указанной кнопки открывается диалоговая панель с заголовком Enter Value, которая содержит поле редактирования значения параметра Other options (XLinker [option]) (рис. 6). В этом поле редактирования нужно, используя клавиатуру, задать требуемый параметр командной строки компоновщика и подтвердить его нажатием клавиши OK, расположенной в нижней части диалоговой панели Enter Value. После нажатия клавиши OK в списке, отображаемом во встроенной панели Other options, автоматически добавляется новая строка, содержащая соответствующую опцию компоновщика. Для изменения какой-либо заданной опции необходимо выделить соответствующую строку списка и воспользоваться кнопкой
. При нажатии данной кнопки появляется диалоговая панель с заголовком Edit Dialog, имеющая ту же структуру, что и панель Enter Value. Удаление неактуальных опций из представленного списка дополнительных параметров осуществляется с помощью кнопки
после выделения строки, содержащей эти опции.
Встроенная панель Other Objects совместно с группой кнопок, находящихся над этой панелью, предоставляет возможность формирования списка дополнительных объектных файлов, используемых в процессе компоновки. Для включения дополнительного файла в этот список необходимо нажать кнопку , после чего на экран выводится диалоговая панель с заголовком Add File path, как показано на рис. 6. Открывшаяся диалоговая панель содержит поле редактирования значения параметра File, в котором нужно указать полный идентификатор требуемого файла, включающий путь доступа к нему. Для быстрого поиска необходимого файла в рабочем каталоге разрабатываемого проекта программного обеспечения предназначена клавиша Workspace, расположенная под полем редактирования значения параметра File. При ее нажатии на экране появляется диалоговая панель с заголовком File selection, имеющая тот же вид, что и диалоговая панель Folder selection (рис. 4). Чтобы найти файл, находящийся вне рабочего каталога разрабатываемого проекта программного обеспечения, следует воспользоваться клавишей File system, предоставляющей доступ к стандартной панели навигации по дискам компьютера. Выбрав требуемый файл, следует нажать клавишу OK, находящуюся в нижней части диалоговой панели Add File path, после чего соответствующий идентификатор добавляется в список, представленный во встроенной панели Other Objects.
После определения необходимых опций компилятора и компоновщика для разрабатываемого проекта прикладной программы рекомендуется установить требуемые значения параметров управления процессом генерации исполняемого модуля программного приложения.
Установка параметров управления процессом генерации исполняемого модуля разрабатываемой прикладной программы
Формирование исполняемого модуля разрабатываемого программного приложения организовано в среде Xilinx SDK в виде единого процесса Build, который включает последовательное выполнение процедур компиляции файлов исходного описания прикладной программы и компоновки объектных модулей и необходимых библиотек. Управление данным процессом, выполняемым в пакетном режиме, осуществляется с помощью командного файла makefile. Указанный файл создается автоматически средствами Xilinx SDK в соответствии с заданными значениями параметров процесса генерации исполняемого модуля разрабатываемого программного приложения. Для установки требуемых значений параметров этого процесса необходимо в диалоговой панели Properties for открыть страницу C/C++ Build, чей первоначальный вид представлен на рис. 7. Данная страница имеет три вкладки с названиями Builder Settings, Behaviour и Refresh Policy.
Вкладка Builder Settings содержит основные параметры процесса генерации исполняемого модуля создаваемого программного приложения. На этой вкладке рекомендуется в первую очередь указать вид используемых средств формирования исполняемого файла. Для этой цели предназначено поле выбора значения параметра Builder type. В выпадающем списке возможных значений этого параметра представлено два варианта — Internal builder и External builder. Если для создания исполняемого модуля планируется применять встроенный компилятор и компоновщик средств Xilinx SDK, то в поле выбора значения параметра Builder type следует указать вариант Internal builder. При использовании внешних средств генерации исполняемого модуля нужно выбрать вариант External builder. В этом случае разработчику предоставляется возможность изменить значения некоторых параметров процесса генерации исполняемого модуля, предлагаемые по умолчанию.
Прежде всего, целесообразно уточнить команду, предназначенную для запуска процесса формирования исполняемого файла разрабатываемой прикладной программы, с помощью параметров Use default build command и Build command. Чтобы использовать для запуска процесса генерации исполняемого модуля команду make, предоставляемую по умолчанию средствами разработки программного обеспечения, надо установить индикатор состояния параметра Use default build command в положение «Включено». Для назначения другой команды необходимо указанный индикатор переключить в сброшенное состояние, после чего становится доступным поле редактирования значения параметра Build command. Требуемая команда задается с помощью клавиатуры после активизации этого поля редактирования. Если для назначаемой команды нужно установить соответствующие переменные окружения, то следует воспользоваться клавишей Variables, которая расположена справа от поля редактирования значения параметра Build command. При нажатии этой клавиши на экран выводится диалоговая панель с заголовком Select build variable, чей вид демонстрирует рис. 8.
В центральной части открывшейся диалоговой панели отображается список всех переменных окружения, поддерживаемых средствами Xilinx SDK. Для быстрого поиска в этом списке требуемой переменной предусмотрено поле редактирования Choose a variable, которое представлено в верхней части диалоговой панели Select build variable. Идентификатор необходимой переменной указывается в этом поле редактирования с помощью клавиатуры. В составе указываемого идентификатора можно использовать символы «?» и «*», которые заменяют любой символ и последовательность символов соответственно. Для выбора нужной переменной окружения надо расположить курсор в соответствующей строке отображаемого списка и щелкнуть левой кнопкой мыши. При этом информация о типе выбранной переменной появляется в строке Type, расположенной под списком переменных окружения. Краткое описание переменной, выделенной в списке, приводится во встроенной панели Variable Description (рис. 8). Установка выбранной переменной окружения осуществляется нажатием клавиши OK, находящейся в нижней части диалоговой панели Select build variable.
Далее, в случае использования варианта External builder для параметра Builder type, можно выбрать способ формирования командного файла, управляющего процессом генерации исполняемого модуля програм-много приложения, воспользовавшись индикатором состояния параметра Generate Makefiles automatically. При включенном состоянии этого индикатора командный файл управления создается автоматически. В таком случае становится доступным индикатор состояния параметра Expand Env. Variable Refs in Makefiles, который определяет необходимость раскрытия переменных окружения в автоматически создаваемом файле makefile. Для использования сформированного ранее командного файла makefile следует установить индикатор состояния параметра Generate Makefiles automatically в положение «Выключено». При этом разработчику предоставляется возможность определения раздела, который будет использоваться в процессе генерации исполняемого модуля прикладной программы для записи временных файлов и промежуточных результатов. Полное название этого раздела записывается посредством клавиатуры в поле редактирования значения параметра Build directory. Кроме того, требуемый раздел в составе рабочего каталога разрабатываемого проекта программного обеспечения может быть указан с помощью диалоговой панели Folder selection, приведенной на рис. 4, которая открывается при нажатии клавиши Workspace, расположенной под полем редактирования значения параметра Build directory. Для создания новой папки или выбора раздела, находящегося вне рабочего каталога разрабатываемого проекта програм-много обеспечения, нужно воспользоваться клавишей File system, при нажатии которой появляется стандартная панель навигации по дискам компьютера.
После определения основных опций процесса генерации исполняемого модуля разрабатываемого программного приложения, представленных на вкладке Builder Settings страницы C/C++ Build, нужно установить требуемые значения параметров управления ходом этого процесса. Указанные параметры сосредоточены на вкладке Behaviour, чей вид показан на рис. 9.
Параметр Stop on first build error позволяет определить режим функционирования средств компиляции и компоновки прикладной программы при появлении ошибок. Если индикатор состояния этого параметра находится во включенном положении, то при возникновении первой же ошибки в процессе формирования исполняемого модуля программного приложения работа указанных средств приостанавливается. Для выполнения процесса генерации исполняемого модуля в полном объеме, невзирая на обнаруженные ошибки, нужно переключить индикатор состояния параметра Stop on first build error в положение «Выключено».
С помощью параметра Use parallel build предоставляется возможность параллельного выполнения средствами генерации исполняемого модуля нескольких заданий. По умолчанию индикатор состояния этого параметра находится в выключенном положении, при котором средства генерации исполняемого файла функционируют в однозадачном режиме. Для разрешения параллельного выполнения нескольких заданий следует установить индикатор состояния параметра Use parallel build в положение «Включено». При этом становятся доступными три кнопки с зависимой фиксацией (рис. 9), которые позволяют указать максимально возможное количество параллельно выполняемых заданий. Если в нажатом состоянии зафиксирована кнопка Use optimal jobs, то оптимальное число параллельно выполняемых задач средствами генерации исполняемого модуля устанавливается системой автоматически. Чтобы задать требуемое количество параллельно выполняемых заданий, нужно переключить в нажатое положение кнопку Use parallel jobs. После этого в доступное состояние переключается поле редактирования, расположенное справа от указанной кнопки. В этом поле следует с помощью клавиатуры или кнопок инкремента и декремента определить требуемое количество параллельно выполняемых задач. Для установки неограниченного количества параллельно выполняемых заданий для средств генерации исполняемого модуля необходимо зафиксировать в нажатом положении кнопку Use unlimited jobs.
Параметр Build on resource save (Auto build) управляет автоматическим запуском средств генерации исполняемого модуля разрабатываемой прикладной программы. Когда индикатор состояния этого параметра находится в состоянии «Включено», процесс формирования исполняемого файла программного приложения автоматически реализуется всякий раз при сохранении исходных модулей проекта. При выключенном состоянии параметра Build on resource save (Auto build) процесс генерации исполняемого модуля активизируется только при выборе команды соответствующего всплывающего или контекстно-зависимого меню.
С помощью индикатора состояния параметра Build (Incremental build) осуществляется включение/выключение инкрементного режима функционирования средств генерации исполняемого модуля программного приложения. При активизации инкрементного режима в процессе формирования исполняемого файла производятся только те операции, в которых участвуют исходные и объектные модули разрабатываемой прикладной программы, модифицированные после предыдущего запуска средств генерации исполняемого модуля.
Параметр Clean позволяет установить режим выполнения процесса формирования исполняемого файла прикладной программы, при котором осуществляется предварительная очистка рабочего каталога проекта от промежуточных и окончательных результатов, полученных в ходе предыдущих сеансов работы средств компиляции и компоновки. Для активизации этого режима нужно перевести индикатор состояния рассматриваемого параметра в положение «Включено».
После установки необходимых значений параметров управления ходом процесса создания исполняемого модуля в случае использования внешних средств компиляции и компоновки целесообразно указать элементы проекта, требующие обновления по окончании этого процесса. Для определения совокупности обновляемых ресурсов проекта следует открыть вкладку Refresh Policy страницы C/C++ Build, вид которой изображен на рис 10.
Список элементов разрабатываемого проекта, которые должны обновляться после завершения процесса генерации исполняемого модуля создаваемого программного приложения, отображается во встроенной панели Resources. Чтобы добавить требуемые ресурсы проекта в этот список, следует воспользоваться клавишей Add Resource, находящейся справа от указанной встроенной панели. При нажатии этой клавиши на экран выводится диалоговая панель с заголовком Resource Selection, как показано на рис. 10. В этой диалоговой панели отображается структура разрабатываемого проекта программного обеспечения, перед каждым элементом которой расположен индикатор состояния. Для включения какого-либо элемента проекта в состав группы добавляемых ресурсов следует установить соответствующий индикатор состояния в положение «Включено». Выбранные элементы будут добавлены в список обновляемых ресурсов после нажатия клавиши OK, имеющейся в нижней части диалоговой панели Resource Selection.
Для того чтобы установленные параметры процесса генерации исполняемого модуля разрабатываемого программного приложения вступили в силу, необходимо нажать клавишу «Применить» (Apply), которая представлена в нижней части страницы C/C++ Build. Для восстановления значений параметров, предлагаемых по умолчанию, здесь же предусмотрена клавиша Restore Defaults. Выполнение последующих этапов процесса разработки программного приложения иллюстрируется для наглядности примером тестовой программы для простейшей системы сбора и обработки данных, проектирование аппаратной части которой было подробно рассмотрено в [11].
Создание тестовой программы для простейшей системы сбора и обработки данных
Для проверки работоспособности проектируемой простейшей системы сбора и обработки данных создадим тестовую программу, демонстрирующую реализацию основных функций разрабатываемой системы. Эта программа должна выполнять циклическое чтение данных, поступающих из параллельного порта ввода/вывода, сравнение их с верхней и нижней границей допустимого диапазона значений и при выходе за их пределы формировать соответствующие сообщения, которые через последовательный порт интерфейса RS‑232 передаются вместе с данными на персональный компьютер. Для отображения поступающих данных и сообщений на экране монитора персонального компьютера может использоваться программа HyperTerminal, имеющаяся в составе операционных систем Windows 2000 и Windows XP. В случае применения компьютера, функционирующего под управлением операционной системы Windows 7, прием информации и отображение ее на экране может осуществляться с помощью программы TeraTerm.
Для разработки тестовой программы можно воспользоваться ранее созданным проектом программного приложения Tst_application, который был сформирован на основе шаблона Empty Application [18]. Кроме того, проект тестового приложения может быть быстро подготовлен и с помощью шаб-лона Hello World, рассмотренного в [19]. В рамках созданного проекта программного приложения необходимо сформировать исходные модули tst_app.h и tst_app.c. Первый из этих модулей представляет собой заголовочный файл, содержащий приведенные ниже директивы препроцессора, включающие в состав разрабатываемой программы необходимые файлы.
#include <stdio.h> #include “xparameters.h” #include “xgpio.h”
Второй модуль (tst_app.c) содержит исходный текст тестовой программы на языке C, который выглядит следующим образом:
// ***** Тестовая программа tst_app.c ***** //=========================================== // Включаемые файлы //=========================================== #include “tst_app.h” //=========================================== // Определение идентификатора входного порта данных //=========================================== #define GPIO_INPUT_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID #define LED_CHANNEL 1 //=========================================== // Декларация функции чтения данных из входного порта //=========================================== int GpioInputData(u16 DeviceId, u32 *DataRead); XGpio GpioInput; /* The driver instance for GPIO Device configured as I/P */ //=========================================== // Текст основной программы //=========================================== int main (void) { int i; int low_level = 15; // Значение нижнего допустимого уровня int high_level = 150; // Значение верхнего допустимого уровня int Status; u32 InputData; print(“-- Старт тестовой программы \n\r”); for (i=1; i < 10000; i++) { Status = GpioInputData(GPIO_INPUT_DEVICE_ID, &InputData); if (Status != XST_SUCCESS) { return XST_FAILURE; } if( (int)InputData < low_level) { printf(“Значение параметра выходит за пределы нижней границы допустимого диапазона: 0x%x \n”, (int)InputData); } else if( (int)InputData > high_level) { printf(“Значение параметра превышает верхнюю границу допустимого диапазона: 0x%x \n”, (int)InputData); } else { printf(“0x%x \n”, (int)InputData); } } print(“-- Завершение работы тестовой программы --\n\r”); return XST_SUCCESS; } //=========================================== // Определение функции чтения данных из входного порта //=========================================== int GpioInputData(u16 DeviceId, u32 *DataRead) { int Status; /* * Initialize the GPIO driver so that it’s ready to use, * specify the device ID that is generated in xparameters.h */ Status = XGpio_Initialize(&GpioInput, DeviceId); if (Status != XST_SUCCESS) { return XST_FAILURE; } /* * Set the direction for all signals to be inputs */ XGpio_SetDataDirection(&GpioInput, LED_CHANNEL, 0xFFFFFFFF); /* * Read the state of the data so that it can be verified */ *DataRead = XGpio_DiscreteRead(&GpioInput, LED_CHANNEL); return XST_SUCCESS; }
В начале модуля tst_app.c, после директивы включения заголовочного файла, определяются значения применяемых параметров, и выполняется декларация используемых функций. Затем следует исходный текст основной программы main. Далее определяется функция GpioInputData, которая осуществляет чтение данных из параллельного порта ввода/вывода общего назначения.
Выполнение процесса генерации исполняемого модуля разрабатываемой прикладной программы
Перед запуском процесса формирования исполняемого модуля разрабатываемой прикладной программы рекомендуется уточнить и при необходимости изменить активную конфигурацию средств компиляции и компоновки, которая будет использоваться при выполнении этого процесса. Средствами проектирования программного обеспечения встраиваемых микропроцессорных систем Xilinx SDK предлагается два стандартных варианта конфигурации — Debug и Release, которые предназначены для генерации соответственно отладочной и окончательной версии исполняемого модуля разрабатываемого программного приложения. Особенности этих стандартных вариантов, а также процедура создания новых вариантов конфигурации рассмотрены в [19]. Для уточнения активного варианта конфигурации средств генерации исполняемого модуля нужно в главном меню основного окна средств Xilinx SDK выбрать пункт Project, а затем в открывшемся всплывающем меню — строку Build Configurations. При этом на экране появляется всплывающее меню следующего уровня, в котором необходимо выбрать команду Set Active, как показано на рис. 11. После выполнения указанной команды открывается всплывающее меню, содержащее список доступных вариантов конфигурации средств компиляции и компоновки для разрабатываемого проекта прикладной программы.
В представленном списке текущий активный вариант конфигурации отмечен маркером, расположенным в начале строки с его названием. Для активизации другого варианта конфигурации средств компиляции и компоновки разрабатываемого програм-много приложения необходимо поместить курсор на соответствующую строку списка и щелкнуть левой кнопкой мыши. В рассмотренном выше всплывающем меню следующего уровня предусмотрена также команда Manage, которая предоставляет возможность управления различными вариантами конфигурации средств генерации исполняемого модуля. При выборе этой команды на экране появляется диалоговая панель с заголовком Manage Configurations (рис. 11), которая позволяет сделать активным требуемый вариант конфигурации, модифицировать его, а также сформировать новый или удалить неиспользуемый вариант.
Непосредственный запуск процесса генерации исполняемого модуля разрабатываемой прикладной программы может осуществляться автоматически сразу после выполнения команды сохранения исходных файлов, если установлен соответствующий режим, подтверждаемый наличием маркера в строке Build Automatically всплывающего меню Project (рис. 11). Однако режим автоматического запуска средств компиляции и компоновки в ряде случаев неэффективен, например, при разработке больших проектов, включающих значительное количество исходных модулей, в которые поочередно вносятся необходимые изменения.
Ручной запуск процесса формирования исполняемого модуля разрабатываемого программного приложения реализуется одним из трех возможных способов. Первый способ заключается в использовании команды Build Project из всплывающего меню Project после выделения строки с названием раздела разрабатываемого проекта прикладной программы во встроенной панели Project Explorer основного окна средств Xilinx SDK (рис. 12). Вторым способом активизации процедур компиляции и компоновки является нажатие кнопки быстрого доступа , расположенной на оперативной панели управления основного окна интегрированной среды разработки программного обеспечения встраиваемых микропроцессорных систем.
Для того чтобы воспользоваться третьим способом запуска процесса генерации исполняемого модуля, следует расположить курсор на строке с названием разрабатываемого проекта программного приложения во встроенной панели Project Explorer и щелкнуть правой кнопкой мыши. Затем в появившемся контекстно-зависимом всплывающем меню нужно выбрать команду Build Project (рис. 13). После выполнения указанной команды или нажатия кнопки на экране появляется диалоговая панель с заголовком Build Project, представленная на рис. 12, 13, в которой отображается индикатор выполнения процесса формирования исполняемого модуля. Кроме того, данная диалоговая панель содержит клавиши оперативного управления состоянием этого процесса. Клавиша Run in Background предоставляет возможность выполнения рассматриваемого процесса в фоновом режиме. Для принудительного прерывания процесса генерации исполняемого модуля предусмотрена клавиша Cancel. Чтобы получить детализированную информацию о текущих выполняемых операциях, следует воспользоваться клавишей Details. При ее нажатии диалоговая панель Build Project преобразуется к виду, изображенному на рис. 13.

Рис. 13. Запуск процесса генерации исполняемого модуля с помощью команды контекстно-зависимого всплывающего меню
Процесс компиляции и компоновки разрабатываемой прикладной программы выполняется в автоматическом режиме. Информация о его ходе и результатах отражается на вкладке Console встроенной панели консольных сообщений основного окна средств Xilinx SDK. При обнаружении каких-либо проблем в процессе генерации исполняемого модуля краткие сведения о них выводятся на этой же вкладке (рис. 13). Для получения более подробной информации необходимо открыть вкладку Problems, вид которой демонстрирует рис. 14.
Детализированные сведения о выявленных проблемах в процессе генерации исполняемого модуля представлены в форме таблицы, включающей пять колонок с названиями Description, Resource, Path, Location и Type. Все проблемы в представленной таблице подразделяются на две категории, информация о которых содержится в разделах Errors и Warnings соответственно. Раздел Errors объединяет сообщения о критических ошибках в процессе компиляции и компоновки разрабатываемого программного приложения. Предупреждения о возможных некорректных ситуациях в процессе генерации исполняемого модуля отображены в разделе Warnings. В колонке Description приводится описание обнаруженных проблем. В ячейках столбца Resource указаны идентификаторы файлов, к которым относятся соответствующие сообщения об ошибках или предупреждения. Полный путь доступа к этим файлам имеется в ячейках, входящих в состав колонки Path. Если указанные файлы содержат исходный код разрабатываемой прикладной программы, то сведения о номере строки, в которой обнаружена ошибка, приводятся в соответствующих ячейках столбца Location. Информация о типе ошибки или предупреждения отображается в колонке Type.
Для быстрого поиска и исправления обнаруженных ошибок, а также анализа предупреждений следует развернуть раздел Errors или Warnings соответственно, расположить курсор на нужной строке таблицы и дважды щелкнуть левой кнопкой мыши. При этом автоматически открывается новая вкладка основного окна интегрированной среды разработки программного обеспечения Xilinx SDK, отображающая содержимое файла, в котором обнаружена выбранная ошибка или к которому относится соответствующее предупреждение. На открывшейся вкладке автоматически выделяется строка, содержащая ошибку или возможную проблему, вызвавшую предупреждение, как показано на рис. 14. После исправления ошибки или устранения проблемы, вызвавшей предупреждение, необходимо сохранить файл и повторно активизировать процесс создания исполняемого модуля разрабатываемой прикладной программы.
В ходе выполнения рассматриваемого процесса в составе раздела разрабатываемого проекта программного приложения автоматически формируется подраздел, название которого совпадает с выбранным вариантом конфигурации средств генерации исполняемого модуля (рис. 14). Этот подраздел используется для записи промежуточных и окончательных результатов компиляции и компоновки. В сформированном подразделе представлен также автоматически сгенерированный командный файл, предназначенный для управления процессом создания исполняемого модуля разрабатываемой прикладной программы. Для ознакомления с содержимым этого файла нужно расположить курсор в строке с его идентификатором и дважды щелкнуть левой кнопкой мыши. Затем появляется новая вкладка основного окна средств Xilinx SDK, чей вид демонстрирует рис. 15.
В случае успешного завершения процедур компиляции и компоновки создается файл, идентификатор которого совпадает с названием разрабатываемого проекта прикладной программы и имеет расширение .elf. Этот файл, содержащий исполняемый код программного приложения, представлен не только в подразделе, название которого совпадает с выбранным вариантом конфигурации средств компиляции и компоновки, но и в подразделе Binaries, сформированном автоматически. Сгенерированный elf-файл может быть загружен непосредственно в кристалл расширяемой процессорной платформы после конфигурирования аппаратной части разрабатываемой микропроцессорной системы на базе ресурсов программируемой логики PL [1, 2, 5, 6, 7, 10, 11].
Для отображения подробной информации о содержании сгенерированного исполняемого модуля следует поместить курсор в строку с его идентификатором, расположенную во встроенной панели Project Explorer, и дважды щелкнуть левой кнопкой мыши, после чего в основном окне средств Xilinx SDK добавляется новая вкладка, чей вид приведен на рис. 16.
В верхней области этой вкладки представлены сведения о расположении и формате сформированного исполняемого файла. Далее отображается подробная информация о секциях сгенерированного исполняемого модуля прикладной программы (рис. 16). Затем приводится шестнадцатеричный исполняемый код программного приложения, сопровождаемый дизассемблированными командами (рис. 17). Таким образом, разработчику предоставляется возможность оценки реализации исполняемого модуля прикладной программы на уровне команд ассемблера.
После успешного создания исполняемого модуля программного приложения рекомендуется проверить его функционирование с помощью аппаратных отладочных средств [12, 13, 14].
- Зотов В. Расширение семейства программируемых систем на кристалле Zynq‑7000 AP SoC // Компоненты и технологии. 2013. № 12. 2014. № 1.
- Zynq‑7000 All Programmable SoC Overview. Advance Product Specification. — Xilinx, 2013.
- Zynq‑7000 All Programmable SoC (XC7Z010, XC7Z015, and XC7Z020): DC and AC Switching Characteristics. — Xilinx, 2013.
- Zynq‑7000 All Programmable SoC (XC7Z030, XC7Z045, and XC7Z100): DC and AC Switching Characteristics. — Xilinx, 2013.
- Zynq‑7000 All Programmable SoC Technical Reference Manual. — Xilinx, 2013.
- Zynq‑7000 All Programmable SoC: Concepts, Tools, and Techniques (CTT) A Hands-On Guide to Effective Embedded System Design. — Xilinx, 2013.
- Zynq‑7000 All Programmable SoC Software Developers Guide. — Xilinx, 2013.
- Zynq‑7000 All Programmable SoC PCB Design and Pin Planning Guide. — Xilinx, 2013.
- 7 Series FPGAs and Zynq‑7000 All Programmable SoC XADC Dual 12‑Bit 1 MSPS Analog-to-Digital Converter User Guide. — Xilinx, 2012.
- Зотов В. Средства автоматизированного проектирования и этапы разработки встраиваемых микропроцессорных систем на базе расширяемых процессорных платформ семейства Zynq‑7000 AP SoC // Компоненты и технологии. 2014. № 2–3.
- Зотов В. Проектирование встраиваемых микропроцессорных систем на базе расширяемых процессорных платформ семейства Zynq‑7000 AP SoC в САПР Xilinx ISE Design Suite // Компоненты и технологии. 2014. № 4–12. 2015. № 1.
- Зотов В. Аппаратные средства разработки и отладки встраиваемых микропроцессорных систем, проектируемых на основе расширяемых вычислительных платформ фирмы Xilinx семейства Zynq‑7000 AP SoC // Компоненты и технологии. 2013. № 1.
- Зотов В. ZedBoard — эффективный инструмент разработки и отладки встраиваемых микропроцессорных систем, проектируемых на основе расширяемых вычислительных платформ фирмы Xilinx семейства Zynq‑7000 AP SoC // Компоненты и технологии. 2013. № 6.
- Зотов В. MicroZed — семейство унифицированных модулей для отладки и реализации встраиваемых микропроцессорных систем, проектируемых на основе платформ фирмы Xilinx серии Zynq‑7000 AP SoC // Компоненты и технологии. 2013. № 11.
- Embedded System Tools Reference Manual. — Xilinx, 2013.
- Зотов В. Разработка программного обеспечения встраиваемых микропроцессорных систем, проектируемых на базе расширяемых вычислительных платформ семейства Zynq‑7000 AP SoC фирмы Xilinx. Часть 1 // Компоненты и технологии. 2015. № 2.
- Зотов В. Разработка программного обеспечения встраиваемых микропроцессорных систем, проектируемых на базе расширяемых вычислительных платформ семейства Zynq‑7000 AP SoC фирмы Xilinx. Часть 2 // Компоненты и технологии. 2015. № 3.
- Зотов В. Разработка программного обеспечения встраиваемых микропроцессорных систем, проектируемых на базе расширяемых вычислительных платформ семейства Zynq‑7000 AP SoC фирмы Xilinx. Часть 3 // Компоненты и технологии. 2015. № 4.
- Зотов В. Разработка программного обеспечения встраиваемых микропроцессорных систем, проектируемых на базе расширяемых вычислительных платформ семейства Zynq‑7000 AP SoC фирмы Xilinx. Часть 4 // Компоненты и технологии. 2015. № 5.