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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Прерывания в NIOS, Ошибка при компиляции проекта, использующего VIC
Zamir
сообщение Dec 14 2010, 08:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Здравствуйте.
Пытаюсь разобраться с прерываниями в NIOSе.
Создал в SOPC ядро с поддержкой VIC. Написал маленький проект в NIOS. При компиляции студия выдает ошибки:

ERROR - Nios II system libraries in the IDE development flow do not support an external interrupt controller port on the Nios II.
Use the Nios II software build tools development flow instead.

14.12.2010 14:26:25 - (SEVERE) generate: java.lang.IllegalStateException: java.lang.IllegalStateException: com.altera.ingenuous.GTFElement.GTFElementErrorException: <error> element in GTF script

Буду рад любой помощи



Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Dec 14 2010, 12:38
Сообщение #2


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Zamir @ Dec 14 2010, 11:28) *
ERROR - Nios II system libraries in the IDE development flow do not support an external interrupt controller port on the Nios II.
Use the Nios II software build tools development flow instead.

Ну так создавайте софтовый проект не в Legacy NiosII IDE, а в NiosII SBT.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 15 2010, 09:42
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Спасибо за ответ Stewart Little.
А как организовывать прерывания если я использую внутренний контроллер прерывания (IIC)?
Допустим нужно организовать прерывание по приему данных по UART.
1) какие системные файлы необходимо подключить в проект
2) Как конкретно разрешается данное прерывание?
3) как конкретно "выглядит" вектор данного прерывания?

Скиньте ссылку где можно об этом прочитать, пожалуйста.
Если у кого нибудь есть пример организации обработки прерывания в NIOS, скиньте пожалуйста (zamir221(собака)yandex.ру)
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 15 2010, 10:28
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



по умолчанию там все через HAL разруливается и прерывания не видны. в настройках System Library или
в свойствах BSP устройства типа UART можно выбрать в качестве стандартного ввода/вывода и использовать
обычные функции библиотеки C fprintf, fscanf...
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 15 2010, 10:54
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Меня как раз вариант "через HAL" и интересует...
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Dec 15 2010, 13:32
Сообщение #6


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Zamir @ Dec 15 2010, 16:54) *
Меня как раз вариант "через HAL" и интересует...

RTFM, как говорят грубые люди sm.gif
Exception Handling
AN 595: Vectored Interrupt Controller Usage and Applications
Example Designs for AN595


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 16 2010, 04:27
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



VIC мне не нужен. Я использую IIC. Меня интересует как конкретно реализовать прерывание по приему данных по УАРТ. (на примере, если возможно). А именно какая конкретно команда в ниосе разрешает прерывания, какая команда разрешает прерывание по приему данных по УАРТ и т д...
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 16 2010, 04:43
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



так вы конкретно скажите, вам реализация через стандартный драйвер HAL нужна или вы хотите делать
свой обработчик прерывания? (эти пункты взаимоисключающие)
если HAL - там работа идет через getchar, printf.
Код
/* A simple program that recognizes the characters 't' and 'v' */
#include <stdio.h>
#include <string.h>
int main ()
{
    char* msg = "Detected the character 't'.\n";
    FILE* fp;
    char prompt = 0;
    fp = fopen ("/dev/uart1", "r+"); //Open file for reading and writing
    if (fp)
    {
        while (prompt != 'v')
        { // Loop until we receive a 'v'.
            prompt = getc(fp); // Get a character from the UART.
            if (prompt == 't')
            { // Print a message if character is 't'.
                fwrite (msg, strlen (msg), 1, fp);
            }
        }
        fprintf(fp, "Closing the UART file.\n");
        fclose (fp);
    }
    return 0;
}

если надо свое прерывание, то смотрите в сторону alt_irq_register
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 16 2010, 06:44
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Цитата(vadimuzzz @ Dec 16 2010, 10:43) *
так вы конкретно скажите, вам реализация через стандартный драйвер HAL нужна или вы хотите делать
свой обработчик прерывания? (эти пункты взаимоисключающие)
если HAL - там работа идет через getchar, printf.
Код
/* A simple program that recognizes the characters 't' and 'v' */
#include <stdio.h>
#include <string.h>
int main ()
{
    char* msg = "Detected the character 't'.\n";
    FILE* fp;
    char prompt = 0;
    fp = fopen ("/dev/uart1", "r+"); //Open file for reading and writing
    if (fp)
    {
        while (prompt != 'v')
        { // Loop until we receive a 'v'.
            prompt = getc(fp); // Get a character from the UART.
            if (prompt == 't')
            { // Print a message if character is 't'.
                fwrite (msg, strlen (msg), 1, fp);
            }
        }
        fprintf(fp, "Closing the UART file.\n");
        fclose (fp);
    }
    return 0;
}

если надо свое прерывание, то смотрите в сторону alt_irq_register


Скомпилил этот пример, предварительно установив в настройках систем либрари УАРТ как стандартное средство ввода/вывода. Выдает ошибку:
/FPGA_3.c:344: undefined reference to `fopen'
obj/FPGA_3.o(.text+0xbe4):../FPGA_3.c:349: undefined reference to `getc'
obj/FPGA_3.o(.text+0xc10):../FPGA_3.c:352: undefined reference to `fwrite'
obj/FPGA_3.o(.text+0xc2c):../FPGA_3.c:356: undefined reference to `fclose'
необходимые библиотечные файлы подключены, работаю в NIOS II IDE v9.1
В чем может быть ошибка?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Dec 16 2010, 07:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



какие еще настройки в System Library выставлены?
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 16 2010, 07:40
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Цитата(vadimuzzz @ Dec 16 2010, 13:08) *
какие еще настройки в System Library выставлены?


такие настройки


Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Dec 16 2010, 08:15
Сообщение #12


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Цитата(Zamir @ Dec 16 2010, 13:40) *
такие настройки

Уберите галку Reduced device drivers.
И прочтите, наконец, мануал!


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 16 2010, 08:33
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Цитата(Stewart Little @ Dec 16 2010, 14:15) *
Уберите галку Reduced device drivers.
И прочтите, наконец, мануал!


Галочку Reduced device drivers убрал... эффекта никого. Ошибка та же самая вылазит. Мануал читал и делал все по нему. И пример взят оттуда же.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Dec 16 2010, 08:46
Сообщение #14


Лентяй
******

Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843



Определитесь, что же Вы все-таки хотите - использовать прерывания, или просто работать с UART'ом. Это две большие разницы (pending или polling).
По поводу примера - все ли включаемые файлы Вы добавили в исходник? Я что-то там system.h не вижу.


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
Zamir
сообщение Dec 16 2010, 08:58
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 10-09-08
Пользователь №: 40 105



Все необходимые файлы включены, в том числе и system.h. Я понимаю разницу между прерываниями и просто работой с УАРТ. Хотелось бы разобраться с прерываниями (а именно с прерыванием по приему данных по УАРТу). Как сделать так, чтобы когда на УАРТ пришли данные с компьютера (с терминала) возникло прерывание? и уже в этом прерывании что-то делать....
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:12
Рейтинг@Mail.ru


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