реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> MicroBlaze UART прервыания не работают
Dim4
сообщение May 14 2016, 19:12
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 12-05-16
Пользователь №: 91 689



Здравствуйте. Я хотел бы реализовать обмен с компьютером по 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


Вопрос в том, что я делаю не так?
Go to the top of the page
 
+Quote Post
Andrew Su
сообщение May 19 2016, 10:40
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



Цитата(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 будет все, как надо.
На первых порах этот путь иногда прииходится проходить несколько раз до получения ожидаемого результата
Удачи.
Go to the top of the page
 
+Quote Post
Dim4
сообщение May 19 2016, 13:29
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 12-05-16
Пользователь №: 91 689



Цитата(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.

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016