Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: MicroBlaze UART прервыания не работают
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Dim4
Здравствуйте. Я хотел бы реализовать обмен с компьютером по UART через прерывание с помощью xps, пытаюсь запустить пример xuartlite_intr_example.c, но компилятор sdk ругается на
'XPAR_INTC_0_UARTLITE_0_VEC_ID' undeclared (first use in this function), при условии, что она объявлена в xparameters.h. Возможно, это связано с тем, что пришлось для подключения контроллера прерывания дописать пару строк в mhs-файл (использую plb шину, почему-то по по простому к входу прерываний микроблейза подключиться не смог):

Код
BEGIN xps_intc
...
PORT Irq = microblaze_0_Interrupt
END

BEGIN microblaze
...
PORT INTERRUPT = microblaze_0_Interrupt
END


Вопрос в том, что я делаю не так?
Andrew Su
Цитата(Dim4 @ May 14 2016, 22:12) *
Здравствуйте. Я хотел бы реализовать обмен с компьютером по UART через прерывание с помощью xps, пытаюсь запустить пример xuartlite_intr_example.c, но компилятор sdk ругается на
'XPAR_INTC_0_UARTLITE_0_VEC_ID' undeclared (first use in this function), при условии, что она объявлена в xparameters.h. Возможно, это связано с тем, что пришлось для подключения контроллера прерывания дописать пару строк в mhs-файл (использую plb шину, почему-то по по простому к входу прерываний микроблейза подключиться не смог):

Код
BEGIN xps_intc
   ...
   PORT Irq = microblaze_0_Interrupt
  END
  
  BEGIN microblaze
   ...
   PORT INTERRUPT = microblaze_0_Interrupt
  END


Вопрос в том, что я делаю не так?


Добрый день. Дописывать в mhs ничего не надо, если правильно пройти весь путь создания проекта. В ISE добавить новый модуль - Microblaze, при его создании включить в него uart, в XPS задать адреса, внешние порты, добавить в XPS контроллер прерываний, в закладке Port для контроллера прерываний подключить к его входу сигнал сигнал прерывания от uart, выход контроллера прерывания сам подключится к входу прерываний Microblaz (можно проверить по именам сигналов). После всех настроек сделать экспорт в SDK, создать там проект и в mhs будет все, как надо.
На первых порах этот путь иногда прииходится проходить несколько раз до получения ожидаемого результата
Удачи.
Dim4
Цитата(Andrew Su @ May 19 2016, 10:40) *
Добрый день. Дописывать в mhs ничего не надо, если правильно пройти весь путь создания проекта. В ISE добавить новый модуль - Microblaze, при его создании включить в него uart, в XPS задать адреса, внешние порты, добавить в XPS контроллер прерываний, в закладке Port для контроллера прерываний подключить к его входу сигнал сигнал прерывания от uart, выход контроллера прерывания сам подключится к входу прерываний Microblaz (можно проверить по именам сигналов). После всех настроек сделать экспорт в SDK, создать там проект и в mhs будет все, как надо.
На первых порах этот путь иногда приходится проходить несколько раз до получения ожидаемого результата
Удачи.


Да, проблема решилась банальным пересозданием проекта. И, что бы темы не создавать, пытаюсь разобраться с работой FSL-шины, создал IP-ядро, в качестве примера автоматом сгенерировался vhdl, выполняющий приём данных и их сложение, и выдачу результата. Подключил в xps в качестве master Microblaze, а тестовое ядро в качестве slave. Экспортирую проект в sdk, и там пытаюсь сложить два числа:
Код
#include <stdio.h>
#include "platform.h"
#include "mb_interface.h"
#include "xparameters.h"
#include "fsl.h"
#include "xparameters.h"
#include "xstatus.h"



int main(void)
{
    init_platform();
    unsigned int a=0x000fffff;
    unsigned int b=0x000aaaaa;
    unsigned int result;
    putfslx(a,0,FSL_DEFAULT   );
    putfslx(b,0,FSL_DEFAULT  );
    getfslx(result,0,FSL_DEFAULT   );
    xil_printf("%08x",result);
    return XST_SUCCESS;
}


При дебаге зависает на первой putfslx.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.