|
Прерывания в NIOS, Ошибка при компиляции проекта, использующего VIC |
|
|
|
Dec 14 2010, 08:28
|
Участник

Группа: Участник
Сообщений: 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
Буду рад любой помощи
|
|
|
|
|
Dec 15 2010, 09:42
|
Участник

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

|
Спасибо за ответ Stewart Little. А как организовывать прерывания если я использую внутренний контроллер прерывания (IIC)? Допустим нужно организовать прерывание по приему данных по UART. 1) какие системные файлы необходимо подключить в проект 2) Как конкретно разрешается данное прерывание? 3) как конкретно "выглядит" вектор данного прерывания?
Скиньте ссылку где можно об этом прочитать, пожалуйста. Если у кого нибудь есть пример организации обработки прерывания в NIOS, скиньте пожалуйста (zamir221(собака)yandex.ру)
|
|
|
|
|
Dec 15 2010, 10:54
|
Участник

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

|
Меня как раз вариант "через HAL" и интересует...
|
|
|
|
|
Dec 16 2010, 04:27
|
Участник

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

|
VIC мне не нужен. Я использую IIC. Меня интересует как конкретно реализовать прерывание по приему данных по УАРТ. (на примере, если возможно). А именно какая конкретно команда в ниосе разрешает прерывания, какая команда разрешает прерывание по приему данных по УАРТ и т д...
|
|
|
|
|
Dec 16 2010, 04:43
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 16 2010, 06:44
|
Участник

Группа: Участник
Сообщений: 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 В чем может быть ошибка?
|
|
|
|
|
Dec 16 2010, 07:40
|
Участник

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

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

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

|
Цитата(Stewart Little @ Dec 16 2010, 14:15)  Уберите галку Reduced device drivers. И прочтите, наконец, мануал! Галочку Reduced device drivers убрал... эффекта никого. Ошибка та же самая вылазит. Мануал читал и делал все по нему. И пример взят оттуда же.
|
|
|
|
|
Dec 16 2010, 08:58
|
Участник

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

|
Все необходимые файлы включены, в том числе и system.h. Я понимаю разницу между прерываниями и просто работой с УАРТ. Хотелось бы разобраться с прерываниями (а именно с прерыванием по приему данных по УАРТу). Как сделать так, чтобы когда на УАРТ пришли данные с компьютера (с терминала) возникло прерывание? и уже в этом прерывании что-то делать....
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|