Компоненты и технологии, № 4'2005 Софт
Окончание. Начало в № 3'2005,
Разработка встраиваемых микропроцессорных систем на основе ядра MicroBlaze,
реализуемых в ПЛИС семейств FPGA фирмы Xilinx, с помощью «мастера» Base System Builder Wizard
Валерий Зотов
Открывшаяся очередная диалоговая панель мастера Base System Builder Wizard используется для управления процессом создания файла директив компоновщика linker script и тестовой прикладной программы (рис. 12).
Для того чтобы мастер Base System Builder Wizard впоследствии автоматически сформировал файл директив компоновщика linker script и исходный текст тестовой прикладной программы, необходимо перевести во включенное состояние (отмеченное маркером) индикатор Generate Sample Application and Linker Script. В этой же диалоговой панели нужно указать идентификаторы компонентов периферийных устройств, которые будут использоваться в качестве стандартных устройств ввода STDIN и вывода STDOUT. Поле выбора Standard Input позволяет определить стандартное устройство ввода. Выпадающий список, открываемый с помощью кнопки, расположенной в правой части этого поля выбора, содержит идентификаторы доступных периферийных устройств, которые могут быть задействованы в качестве стандартного устройства ввода. Поле выбора Standard Output предназначено для определения идентификатора компонента периферийного устройства, которое будет использоваться в качестве стандарт-
Рис. 12. Диалоговая панель управления процессом создания файла директив для компоновщика linker script и тестовой прикладной программы
ного устройства вывода. Состояние указанных полей выбора, представленное на рис. 12, соответствует случаю, когда в роли стандартного устройства ввода и вывода выступает последовательный асинхронный приемопередатчик интерфейса RS232.
В процессе автоматической генерации файла директив для компоновщика linker script используется информация о выбранных устройствах памяти микропроцессорной системы, которые предназначены для хранения инструкций, данных и организации стека соответственно. Эта исходная информация определяется с помощью соответствующих полей выбора, которые расположены в нижней части диалоговой панели управления процессом создания файла директив linker script и тестовой прикладной программы (рис. 12). В поле выбора Instructionsука-зывается идентификатор устройства памяти, используемого для хранения команд программы. Поле выбора Data позволяет определить идентификатор устройства памяти, которое отводится под память данных. С помощью поля выбора Stack/Heap осуществляется назначение устройства памяти для организации стека. Если в составе проектируемой микропроцессорной системы не используются внешние (по отношению к ПЛИС) запоминающие устройства, то для хранения инструкций, данных и организации стека может использоваться только память, которая реализуется на базе ресурсов блочной памяти ПЛИС Block SelectRAM.
Процедура определения всех параметров, необходимых для формирования файла директив компоновщика linker script и исходного текста прикладной тестовой программы, завершается нажатием клавиши Next, находящейся в нижней части диалоговой панели (рис. 12). После закрытия этой панели на экран выводится следующая диалоговая панель мастера Base System Builder Wizard (рис. 13).
Данная панель позволяет запустить процесс автоматической генерации исходных файлов описания для проекта. Кроме того, в этой диалоговой панели отражаются основные сведения о конфигурации разрабатываемой системы и диапазонах адресного пространства памяти, которые выделены для периферийных устройств, включенных в состав спецификации аппаратной платформы. Прежде чем активизировать процесс генерации исходных файлов описания для проекта разрабатываемой микропроцессорной системы, необходимо убедиться в достоверности установленных значений всех перечисленных выше параметров.
В верхней части диалоговой панели, представленной на рис. 13, находится встроенное окно, в котором ото-------www.finestreet.ru--------------------------
Компоненты и технологии, № 4'2005
Рис. 13. Панель, запускающая автоматическую генерацию исходных файлов описания для проекта разрабатываемой микропроцессорной системы
бражаются следующие сведения о конфигурации проектируемой системы:
• тип используемого микропроцессорного ядра;
• выбранное значение системной тактовой частоты;
• информация об используемых инструментах отладки программного обеспечения;
• объем используемой блочной памяти ПЛИС Block SelectRAM.
Информация об адресном пространстве, выделяемом автоматически мастером Base System Builder Wizard для периферийных устройств, которые входят в состав разрабатываемой системы, отображается в соответствующих встроенных окнах диалоговой панели (рис. 13). Все компоненты системы распределены по группам в соответствии с типом шины, к которой они подключены. Информация о компонентах каждой из этих групп отображается в табличной форме в отдельном встроенном окне диалоговой панели запуска автоматической генерации исходных файлов для проекта разрабатываемой системы.
Все таблицы, представленные во встроенных окнах этой диалоговой панели, имеют аналогичную структуру. Верхняя строка каждой таблицы содержит сведения о названии соответствующей шины и ее типе. В ячейках, образующих первую колонку таблицы «Core Name», указываются названия типов IP-компонентов, входящих в состав микропроцессорной системы и подключенных к соответствующей шине. В ячейках, составляющих вторую колонку таблицы «Instance Name», отображаются идентификаторы соответствующих экземпляров IP-компонентов. Ячейки, входящие в состав колонки с названием «Base Addr», содержат значения базового адреса выделяемого адресного пространства для соответствующих экземпляров компонентов. В ячейках, которые образуют колонку с названием «High Addr», представлены значения, определяющие верхнюю границу адресного пространства компонентов.
Если какие-либо из значений адресов, установленных автоматически в таблицах, не удовлетворяют требованиям конфигурации адрес---------------------www.finestreet.ru -
ного пространства разрабатываемой системы, то их следует изменить после завершения работы мастера Base System Builder Wizard. Процесс редактирования может выполняться как в интерактивном, так и в текстовом режиме. Для изменения значений адресов в интерактивном режиме нужно открыть страницу «Peripherals» панели диалога создания и редактирования спецификации аппаратной платформы, воспользовавшись командой Add/Edit Cores из меню Project управляющей оболочки Xilinx Platform Studio. Можно также воспользоваться аналогичной командой из контекстно-зависимого меню, отображаемого на экране при щелчке правой кнопкой мыши на строке MHS File, которая находится на странице System встроенного окна проекта разрабатываемой системы, в разделе Project Files [6].
Запуск процесса автоматической генерации исходных файлов описания проектируемой микропроцессорной системы осуществляется с помощью кнопки Generate, которая расположена в нижней части диалоговой панели (рис. 13). После успешного завершения всех процедур формирования исходных файлов для проекта разрабатываемой системы на экране появляется финишная диалоговая панель мастера (рис. 14).
В верхней части этой диалоговой панели содержится сообщение о завершении автоматического создания исходных модулей проекта и результатах работы мастера. В центральной части диалоговой панели находится встроенное окно, в котором отображается список всех сформированных файлов. Идентификаторы сгенерированных файлов включают в себя полный путь доступа к ним. Мастер автоматически создает следующие исходные модули проекта разрабатываемой микропроцессорной системы:
• файл спецификации аппаратной платформы системы Microprocessor Hardware Specification (MHS);
• файл спецификации программных средств Microprocessor Software Specification (MSS);
• файл временных и топологических ограничений проекта аппаратной платформы
Рис. 14. Диалоговая панель завершения работы мастера Base System Builder Wizard
(только для инструментальных модулей, которые поддерживаются средствами разработки Xilinx Embedded System Tools);
• файл директив linker scripts, который описывает порядок размещения секций в исполняемом файле прикладной программы;
• файл, содержащий исходный текст тестовой прикладной программы;
• командный файл download.cmd, предназначенный для управления процессом загрузки конфигурационной последовательности проекта в ПЛИС непосредственно из оболочки Xilinx Platform Studio (XPS).
Под встроенным окном расположен индикатор состояния Save Settings File, который используется для управления сохранением всех значений параметров, установленных в текущем сеансе работы с мастером Base System Builder Wizard. Если этот индикатор находится в состоянии «включено», то все выполненные настройки будут сохранены в файле с расширением bsb. Название этого файла совпадает с идентификатором проекта разрабатываемой микропроцессорной системы. Данный файл может использоваться для создания проекта новой системы, конфигурация которой незначительно отличается от конфигурации уже разработанной.
Если все указанные выше файлы сформированы успешно, то для завершения работы мастера следует нажать кнопку Готово, которая находится в нижней части диалоговой панели (рис. 14). В противном случае для внесения каких-либо изменений можно вернуться к предыдущим диалоговым панелям, воспользовавшись кнопкой Назад. После закрытия финишной панели диалога мастера страница System встроенного окна проекта управляющей оболочки Xilinx Platform Studio приобретает вид, показанный на рис. 15.
dal
System Appbcabom Optorc Synfcots
Right Cick la Options
—0 System BSP 3 ф rmcrottoze.O
• Duvet cpu_v1 _00_a
• Debug Penpheial:
• OS standalone_v1_00_a
0 Generated Header rmcfobiaze.O/nclude/Hpafameiefs h
iamb **
tfrnb.cnth ) Q; imb_cntk
flmb_btam mb_opb } Щ RS232 } £ LE0i_88<
) X LE0.7SE6MENT ] Q DlP_Sw*ches_88«i 3 Project Fies
S MHS Fie: systen^new.rriw @ MSS Fie: system_ne*v mss (D P8D Fie sysiem_new pbd i UCF Fie: data\sy*tem_new ud @ MPACT Commend Fie: eic\downfc>ad cmd @ Implementation Options Fie: etc\last_iuntme.opt @ Bitgen Options Fie etc\b*gen_spartar»3.ul ^ tjff Protect Opbom
• Device: XC3S200FT256-4
• Netfcit T opLevel
• Implementation XPS
• HDLVHDL
• Sim Mode) BEHAVIORAL 3 (j|) Refe«ence Fies
ffi Log Fies [fe Report Fies
Рис. 15. Вид страницы System встроенного окна проекта управляющей оболочки Xilinx Platform Studio после успешного завершения работы мастера Base System Builder Wizard
Компоненты и технологии, № 4'2005
Прежде чем приступить к выполнению следующих этапов проектирования, рекомендуется просмотреть содержимое исходных файлов, сформированных мастером, и при необходимости внести изменения значений параметров, используя текстовый редактор или соответствующие диалоговые панели.
Спецификация аппаратной платформы встраиваемой микропроцессорной системы, подготовленная на основании данных, которые были указаны в интерактивном режиме с помощью диалоговых панелей, показанных на рис. 5-10, выглядит следующим образом:
#
# Created by Base System Builder Wizard for Xilinx EDK 6.3 Build EDK_Gmm.ll.2
#
# Mon Apr ll 16:39:51 2005
#
# Target Board: Xilinx Spartan-3 Starter Board Rev E
# Family: spartan3
# Device: XC3S200
# Package: FT256
# Speed Grade: -4
#
# Processor: Microblaze
# System clock frequency: 50.000000 MHz
# Debug interface: No Debug
# On Chip Memory : 8 KB
#
PARAMETER VERSION = 2.1.0
PORT fpga_0_RS232_RX_pin = fpga_0_RS232_RX, DIR = INPUT PORT fpga_0_RS232_TX_pin = fpga_0_RS232_TX, DIR = OUTPUT PORT fpga_0_LEDs_8Bit_GPIO_d_out_pin = fpga_0_LEDs_8Bit _GPIO_d_out, DIR = OUTPUT, VEC = [0:7]
PORT fpga_0_LED_7SEGMENT_GPIO_d_out_pin = fpga_0_LED _7SEGMENT_GPIO_d_out, DIR = OUTPUT, VEC = [0:11]
PORT fpga_0_DIP_Switches_8Bit_GPIO_in_pin = fpga_0_DIP _Switches_8Bit_GPIO_in, DIR = INPUT, VEC = [0:7]
PORT sys_clk_pin = sys_clk_s, DIR = INPUT, SIGIS = CLK PORT sys_rst_pin = sys_rst_s, DIR = INPUT
BEGIN microblaze
PARAMETER INSTANCE = microblaze_0 PARAMETER HW_VER = 3.00.a BUS_INTERFACE DOPB = mb_opb BUS_INTERFACE IOPB = mb_opb BUS_INTERFACE DLMB = dlmb BUS_INTERFACE ILMB = ilmb PORT CLK = sys_clk_s END
BEGIN 1mb_v10
PARAMETER INSTANCE = ilmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT LMB_Clk = sys_clk_s END
BEGIN lmb_v10
PARAMETER INSTANCE = dlmb PARAMETER HW_VER = 1.00.a PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT LMB_Clk = sys_clk_s END
BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = dlmb_cntlr PARAMETER HW_VER = 1.00.b PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00001fff BUS_INTERFACE SLMB = dlmb BUS_INTERFACE BRAM_PORT = dlmb_port END
BEGIN lmb_bram_if_cntlr PARAMETER INSTANCE = ilmb_cntlr PARAMETER HW_VER = 1.00.b PARAMETER C_BASEADDR = 0x00000000 PARAMETER C_HIGHADDR = 0x00001fff BUS_INTERFACE SLMB = ilmb BUS_INTERFACE BRAM_PORT = ilmb_port END
BEGIN bram_block PARAMETER INSTANCE = lmb_bram PARAMETER HW_VER = 1.00.a BUS_INTERFACE PORTA = ilmb_port BUS_INTERFACE PORTB = dlmb_port END
BEGIN opb_v20
PARAMETER INSTANCE = mb_opb PARAMETER HW_VER = 1.10.b PARAMETER C_EXT_RESET_HIGH = 1 PORT SYS_Rst = sys_rst_s PORT OPB_Clk = sys_clk_s END
BEGIN opb_uartlite PARAMETER INSTANCE = RS232 PARAMETER HW_VER = 1.00.b PARAMETER C_BAUDRATE = 9600 PARAMETER C_DATA_BITS = 8 PARAMETER C_ODD_PARITY = 0 PARAMETER C_USE_PARITY = 0 PARAMETER C_CLK_FREQ = 50000000 PARAMETER C_BASEADDR = 0x80040000 PARAMETER C_HIGHADDR = 0x8004ffff BUS_INTERFACE SOPB = mb_opb PORT OPB_Clk = sys_clk_s PORT RX = fpga_0_RS232_RX PORT TX = fpga_0_RS232_TX END
BEGIN opb_gpio
PARAMETER INSTANCE = LEDs_8Bit PARAMETER HW_VER = 3.01.a PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_DUAL = 0 PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 0 PARAMETER C_BASEADDR = 0x80050000 PARAMETER C_HIGHADDR = 0x8005ffff BUS_INTERFACE SOPB = mb_opb PORT OPB_Clk = sys_clk_s
PORT GPIO_d_out = fpga_0_LEDs_8Bit_GPIO_d_out END
BEGIN opb_gpio
PARAMETER INSTANCE = LED_7SEGMENT PARAMETER HW_VER = 3.01.a PARAMETER C_GPIO_WIDTH = 12 PARAMETER C_IS_DUAL = 0 PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 0 PARAMETER C_BASEADDR = 0x80060000 PARAMETER C_HIGHADDR = 0x8006ffff BUS_INTERFACE SOPB = mb_opb PORT OPB_Clk = sys_clk_s
PORT GPIO_d_out = fpga_0_LED_7SEGMENT_GPIO_d_out END
BEGIN opb_gpio
PARAMETER INSTANCE = DIP_Switches_8Bit PARAMETER HW_VER = 3.01.a PARAMETER C_GPIO_WIDTH = 8 PARAMETER C_IS_DUAL = 0 PARAMETER C_IS_BIDIR = 0 PARAMETER C_ALL_INPUTS = 1 PARAMETER C_BASEADDR = 0x80070000 PARAMETER C_HIGHADDR = 0x8007ffff BUS_INTERFACE SOPB = mb_opb PORT OPB_Clk = sys_clk_s
PORT GPIO_in = fpga_0_DIP_Switches_8Bit_GPIO_in END
Файл спецификации программных средств для проектируемой системы, сформированный мастером Base System Builder Wizard в соответствии с теми значениями параметров, которые были установлены в диалоговых панелях, представленных на рис. 5-10, имеет следующий вид:
PARAMETER VERSION = 2.2.0 BEGIN OS
PARAMETER OS_NAME = standalone PARAMETER OS_VER = 1.00.a PARAMETER PROC_INSTANCE = microblaze_0 PARAMETER STDIN = RS232 PARAMETER STDOUT = RS232 END
BEGIN PROCESSOR
PARAMETER DRIVER_NAME = cpu
PARAMETER DRIVER_VER = 1.00.a
PARAMETER HW_INSTANCE = microblaze_0
PARAMETER COMPILER = mb-gcc
PARAMETER ARCHIVER = mb-ar
END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = dlmb_cntlr END
BEGIN DRIVER
PARAMETER DRIVER_NAME = bram PARAMETER DRIVER_VER = 1.00.a PARAMETER HW_INSTANCE = ilmb_cntlr END
BEGIN DRIVER
PARAMETER DRIVER_NAME = opbarb PARAMETER DRIVER_VER = 1.02.a PARAMETER HW_INSTANCE = mb_opb END
BEGIN DRIVER
PARAMETER DRIVER_NAME = uartlite PARAMETER DRIVER_VER = 1.00.b PARAMETER HW_INSTANCE = RS232 END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 2.00.a PARAMETER HW_INSTANCE = LEDs_8Bit END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 2.00.a PARAMETER HW_INSTANCE = LED_7SEGMENT END
BEGIN DRIVER
PARAMETER DRIVER_NAME = gpio PARAMETER DRIVER_VER = 2.00.a PARAMETER HW_INSTANCE = DIP_Switches_8Bit END
Файл временных и топологических ограничений для проекта аппаратной платформы разрабатываемой микропроцессорной системы, который соответствует конфигурации инструментального модуля Spartan-3 Starter Kit, содержит следующие выражения:
## This system.ucf file is generated by Base System Builder based on the ## settings in the selected Xilinx Board Definition file. Please add other ## user constraints to this file based on customer design specifications.
Net sys_clk_pin LOC=T9;
Net sys_rst_pin LOC=l14;
## System level constraints
Net sys_clk_pin PERIOD = 20000 ps;
Net sys_rst_pin TIG;
## FPGA pin constraints Net fpga_0_RS232_RX_pin LOC=t13; Net fpga_0_RS232_TX_pin LOC=r13 Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LEDs_8Bit_GPIO_d_out_ Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LEDs_8Bit_GPIO_d_out Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO Net fpga_0_LED_7SEGMENT_GPIO
_pin<0> LOC=k12;
_pin<1> LOC=p14;
_pin<2> LOC=l12;
_pin<3> LOC=n14:
_pin<4> LOC=p13 _pin<5> LOC=n12 _pin<6> LOC=p12 _pin<7> LOC=p11 _d_out_pin<0> LOC=e14 _d_out_pin<1> LOC=g13 _d_out_pin<2> LOC=n15 _d_out_pin<3> LOC=p15 _d_out_pin<4> LOC=r16 _d_out_pin<5> LOC=f13 _d_out_pin<6> LOC=n16 _d_out_pin<7> LOC=p16 _d_out_pin<8> LOC=d1z _d_out_pin<9> LOC=g14; _d_out_pin<10> LOC=f14; _d_out_pin<11> LOC=e13;
Компоненты и технологии, № 4'2005
Net fpga_0_ Net fpga_0_ Net fpga_0 Net fpga_0 Net fpga_0 Net fpga_0 Net fpga_0 Net fpga_0
,DIP_SwitchesJ
,DIP_SwitchesJ
,DIP_SwitchesJ
,DIP_SwitchesJ
,DIP_SwitchesJ
,DIP_SwitchesJ
,DIP_SwitchesJ
,DIP_SwitchesJ
:_GPIO.
:_GPIO.
:_GPIO.
:_GPIO.
:_GPIO.
_GPIO
_GPIO
_GPIO
_m_pin<0>
_in_pm<1>
_in_pm<2>
_in_pm<3>
_in_pm<4>
_in_pm<5>
_in_pm<6>
_in_pm<7>
LOC=k13
LOC=k14
LOC=j13
LOC=j14
LOC=h13
LOC=h14
LOC=g12
LOC=f12
Исходный текст тестовой прикладной программы TestApp.c, подготовленный мастером Base System Builder Wizard на основе сведений о конфигурации инструментального модуля, выбранного для реализации разрабатываемой микропроцессорной системы, выглядит следующим образом:
/*
* Xilinx EDK 6.3 EDK_Gmm.11.2
*
* This file is a sample test application
*
* This application is intended to test and/or illustrate some
* functionality of your system. The contents of this file may
* vary depending on the IP in your system and may use existing
* IP driver functions. These drivers will be generated in your
* XPS project when you run the «Generate Libraries» menu item
* in XPS.
* Your XPS project directory is at:
* C:\Project\NewSys
*/
// Located in: microblaze_0/include/xparameters.h #include «xparameters.h»
#include «xutil.h»
#include «xgpio_l.h»
/*
* Routine to write a pattern out to a GPIO
* which is configured as an output
* PARAMETER C_ALL_INPUTS = 0
*/
void WriteToGPOutput(Xuint32 BaseAddress, int gpio_width)
{
int i=0, j=0, k=0; int numTimes = 5;
XGpio_mSetDataDirection(BaseAddress, 1, 0x00000000); /* Set as outputs */
while (numTimes > 0) { j = 1;
for(i=0; i<(gpio_width-1); i++) { XGpio_mSetDataReg(BaseAddress, 1, j); j = j << 1;
for (k=0; k<1000000; k++) {
; //wait
}
}
j = 1; j = ~j;
for(i=0; i<(gpio_width-1); i++) { XGpio_mSetDataReg(BaseAddress, 1, j);
j = j << 1;
for (k=0; k<1000000; k++) {
; //wait
}
}
numTimes--;
/*
* Routine to read data from a GPIO
* which is configured as an input
* PARAMETER C_ALL_INPUTS = 1
*/
Xuint32 ReadFromGPInput(Xuint32 BaseAddress)
{
Xuint32 data = XGpio_mGetDataReg(BaseAddress, 1); return data;
int main (void)
{
print(«-- Entering main() --\r\n»);
* MemoryTest routine will not be run for the memory at
* dlmb_cntlr.C_BASEADDR
* because it is being used to hold a part of this application program
*/
* MemoryTest routine will not be run for the memory at
* ilmb_cntlr.C_BASEADDR
* because it is being used to hold a part of this application program
*/
WriteToGPOutput(XPAR_LEDS_8BIT_BASEADDR, 8); WriteToGPOutput(XPAR_LED_7SEGMENT_BASEADDR, 12);
{
Xuint32 data = ReadFromGPInput(XPAR_DIP_SWITCHES_8BIT _BASEADDR);
xil_printf(«Data read from DIP_Switches_8Bit: 0x%x\r\n», data);
}
print(«-- Exiting main() --\r\n»); return 0;
Тестовая программа TestApp выполняет проверку функционирования всех периферийных устройств ввода-вывода, которые были включены в состав проектируемой системы. В начале файла TestApp.c в виде комментариев приведены краткие сведения о сформированной программе. Затем следуют директивы включения необходимых заголовочных файлов. После этого определяется функция WriteToGPOutput, которая выполняет запись данных в параллельный порт ввода-вывода, и функция ReadFromGPInput, которая осуществляет чтение данных из параллельного порта ввода-вывода. Далее расположен исходный текст основной программы main.
Исходный файл тестовой программы, создаваемый автоматически мастером Base System Builder Wizard, может использоваться в качестве шаблона в процессе разработки оригинальных пользовательских прикладных программ.
Формирование конфигурационной последовательности для проекта аппаратной части разрабатываемой
системы
Дальнейший процесс разработки аппаратной части проектируемой микропроцессорной системы включает в себя последовательное выполнение следующих этапов [7]:
• формирование списка соединений аппаратной платформы системы;
• реализация (Implementation) проекта аппаратной части системы;
• генерация конфигурационной последовательности ПЛИС.
Для ускорения процесса разработки можно сразу активизировать процедуру генерации конфигурационной последовательности ПЛИС, не выполняя предшествующих этапов. Перед этим необходимо при установке параметров проекта EDK с помощью группы кнопок с зависимой фиксацией Implementation Tool Flow выбрать управление процессом реализации проекта непосредственно из оболочки Xilinx Platform Studio. Чтобы приступить непосредственно к формированию конфигурационной последовательности ПЛИС для аппаратной части разрабатываемой системы, следует выбрать команду Generate Bitstream из всплывающего меню Tools или нажать кнопку 0 на оперативной панели управления XPS. Далее все необходимые процедуры выполняются в автоматическом режиме, включая все пропущенные этапы разработки. При этом необходимо обратить внимание на информационные сообщения соответствующих программ, которые выводят-
ся на странице Output встроенного окна консольных сообщений XPS, а также на предупреждения и сообщения об ошибках на страницах Warnings и Errors соответственно. При отсутствии ошибок после успешного создания файла конфигурационной последовательности ПЛИС можно перейти к разработке программного обеспечения для проектируемой системы.
Создание программного обеспечения для разрабатываемой системы
После успешного создания мастером Base System Builder Wizard спецификации программной платформы, проекта тестовой прикладной программы (Software project) и файла директив компоновщика (linker script) для завершения разработки программного обеспечения необходимо выполнить следующие процедуры [9]:
• генерацию драйверов и библиотек;
• компиляцию и компоновку прикладной тестовой программы.
Чтобы ускорить процесс формирования программного обеспечения для разрабатываемой микропроцессорной системы, можно сразу инициировать процесс генерации исполняемого кода прикладной тестовой программы. Для этого необходимо в основном меню управляющей оболочки Xilinx Platform Studio выделить пункт Tools, после чего в открывшемся всплывающем меню выбрать команду BuildAll User Applications или воспользоваться кнопкой быстрого доступа 0, расположенной на оперативной панели управления XPS. При этом перед выполнением компиляции и компоновки прикладной тестовой программы автоматически осуществляется генерация драйверов и библиотек в соответствии со спецификацией программной платформы.
Информация о ходе выполнения всех перечисленных выше процедур и их результатах отражается на странице Output встроенного окна консольных сообщений управляющей оболочки XPS. При этом необходимо убедиться в отсутствии ошибок, сведения о которых выводятся на странице Errors. В результате успешного завершения процедур компиляции и компоновки создается файл executable.elf, который содержит исполняемый код тестовой программы.
Включение исполняемого кода прикладной программы в конфигурационную последовательность проекта аппаратной части и загрузка конфигурационных данных в ПЛИС
Заключительными этапами процесса разработки встраиваемой микропроцессорной системы на основе FPGA фирмы Xilinx являются:
• запись исполняемого кода прикладной программы в конфигурационную последовательность проекта аппаратной части микропроцессорной системы;
• загрузка конфигурационных данных в кристалл.
Для дополнения конфигурационной последовательности ПЛИС, реализующей функции аппаратной части микропроцессорной системы, исполняемым кодом прикладной програм-
/*
//
/*
Компоненты и технологии, № 4'2005
мы следует выполнить команду Update Bitstream из всплывающего меню Too/s или нажать кнопку быстрого доступа Ё1, которая находится на оперативной панели управления XPS. Обновленная конфигурационная последовательность записывается в файл download.bit, который может непосредственно использоваться для конфигурирования кристалла FPGA.
Формирование мастером Base System Builder Wizard командного файла download.cmd позволяет осуществлять процесс загрузки конфигурационных данных в ПЛИС в пакетном режиме непосредственно из управляющей оболочки XPS. Чтобы выполнить конфигурирование кристалла FPGA для реализации функций разработанной микропроцессорной системы, необходимо подключить загрузочный кабель
к порту JTAG-интерфейса ПЛИС и затем выполнить команду Download из всплывающего меню Tools или нажать кнопку быстрого доступа 0 , расположенную на оперативной панели управления XPS. Проверка функционирования созданной микропроцессорной системы производится с помощью тестовой программы путем визуального контроля состояния светодиодных индикаторов и сообщений, отображаемых на экране монитора компьютера в рабочем окне программы HyperTerminal. Порядок сопряжения компьютера и отладочной платы из инструментального комплекта Spartan-3 Starter Kit, а также настройка параметров подключения программы HyperTerminal и протокола передачи данных детально рассмотрены в отдельной публикации [9].
Заключение
Мастер Base System Builder Wizard имеет множество преимуществ по сравнению с обычным способом [5-9] подготовки исходных файлов описания разрабатываемой системы. Для практического изучения процесса сквозного проектирования встраиваемых микропроцессорных систем с применением мастера BSB рекомендуется воспользоваться бесплатной 60-дневной версией пакета САПР Xilinx Embedded Development Kit (EDK). Данную версию средств проектирования можно запросить у официального дистрибьютора фирмы Xilinx в России, Беларуси и Украине, которым является центр поддержки и продаж InlineGROUP (http://www.plis.ru/).