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

 
 
 
Reply to this topicStart new topic
> NIOSII IDE - ошибки компиляции, Что я делаю не так
skkap
сообщение Feb 1 2010, 13:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 29-10-09
Из: Томск
Пользователь №: 53 297



Опишу ситуацию и свою последовательность действий.
Необходим проект на NIOS II, включающий работу с PIO и внешним UART. Все это собирается на циклоне2 на стартер ките "Alter Cyclone II FPGA Starter Board".
Для начала решил просто помигать светодиодами.
1. Создаю проект в квартус 9.0, указываю конкретную модель второго циклона (неоднократно создавал проекты под этот девайс и прошивал, все всегда было отлично).
2. Вызываю SOPC билдер и добавляю:
- on-chip память 8192 bytes
- cpu NIOS II / e, назначив ему созданную память во всех опциях.
- PIO 8bit - output
- sysid
Прикрепленное изображение


3. Вызываю функцию System - Auto-Assign Base Addresses
4. Генерирую ядро (долго)
5. Создаю схемный файл и прикрепляю выводы к процессору. А затем ассоциирую с реальными пинами ИС (компилируя проект между шагами).

Прикрепленное изображение


6. Сохраняю все и запускаю NIOS II IDE (От админа, об этом еще будет)
Создаю проект, темплейт Blanck.
7. Создаю сурс файл и пишу код:

Код
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "system.h"
#include <stdio.h>
#include <unistd.h>
static int count;
int main(void)
{
count = 0;
while( 1 )
{
usleep(500000);
IOWR_ALTERA_AVALON_PIO_DATA( PIO_BASE, count );
count++; /* Continue 0-ff counting loop. */
}
return 0;
}


8. Выставляю настройки оптимизации в свойствах проекта [syslib]
Прикрепленное изображение


9. Правый клик на мой проект (не syslib - билд).

10. Куча строчек бегут в консоли - и ОП самое интересное:

Код
Creating libnios_proj_test3_syslib.a...
Creating generated.sh...
      3 [main] ? (4968) d:\altera\90\quartus\bin\cygwin\bin\sh.exe: *** fatal error - couldn't allocate heap, Win32 error 487, base 0x680000, top 0x690000, reserve_size 61440, allocsize 65536, page_const 4096
      2 [main] sh 1044 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11
/cygdrive/d/altera/90/nios2eds/bin/gtf-generate: fork: Resource temporarily unavailable
make[1]: *** [system_description/../obj/generated.sh-t] Error 128
make: *** [system_project] Error 2
Build completed in 20.538 seconds


Что интересно ошибки вылазят различные. Все с sh.exe или main.exe.
В процессе выполнения еще такие вылазят:
Код
Compiling alt_remap_cached.c...
      4 [main] ? (5776) d:\altera\90\nios2eds\bin\nios2-gnutools\H-i686-pc-cygwin\bin\nios2-elf-gcc.exe: *** fatal error - couldn't allocate heap, Win32 error 487, base 0x6C0000, top 0x6E0000, reserve_size 126976, allocsize 131072, page_const 4096
      2 [main] nios2-elf-gcc 5616 fork: child -1 - died waiting for longjmp before initialization, retry 0, exit code 0x100, errno 11
Compiling alt_remap_uncached.c...


Доп информация: ОС Windows 7, Quartus 9. Установлено все в D:\Altera\90\

Что я пробывал:
1. Переставил все связанное с квартусом и НИОС на несистемный диск.
2. Пробовал Web версию квартуса и крякнутую 9.0
3. Отрубил UAC полностью
4. Назначил все приложения указанные в ошибках запускаться от админа

Вопрос: Что делать?
Go to the top of the page
 
+Quote Post
torik
сообщение Feb 1 2010, 13:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
4. Назначил все приложения указанные в ошибках запускаться от админа


Добавьте еще к этому "совместимость с XP", это частично поможет.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 1 2010, 14:47
Сообщение #3


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

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



Цитата(skkap @ Feb 1 2010, 16:14) *
Вопрос: Что делать?

1. Вышедшие на сегодняшний день версии альтеровского софта не поддерживают Windows 7 (ее поддержка обещена в v10, которая выйдет во втором - третьем квартале). Попробуйте установить режим совместимости с WinXP, как советовал ув. torik, а лучше пока перейдите на XP или Vista.
2. У Вас в SOPC Builder'e задано всего 2 килобайта ОЗУ. Этого действительно может и нехватить для размещения стека, кучи и пр. (при указаных установках библиотеки проекта). Попробуйте увеличить объем ОЗУ, или используйте альтернативную точку входа, примерно так :

Код
int main (void) __attribute__ ((weak, alias ("alt_main")));
//***** Use alt_main as entry point for this free-standing application *****
int alt_main (void)
{ бла-бла-бла
}


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
skkap
сообщение Feb 2 2010, 08:56
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 29-10-09
Из: Томск
Пользователь №: 53 297



Спасибо всем за ответы!
Нашел решение своей проблемы, хоть и кривое. При первом билде (когда полностью билдится syslib) всегда вылазят ошибки, причем сааамые разные. После этого повторный билд проходит в основном без ошибок (то есть то нету ошибок - чудеса). Ну жаловаться не на что, совместимость не заявлено - потому работаем как можем. Радует факт, что это похоже все таки из-за ОС, а значит Win7 XP mode все гарантированно исправит, проверю позже.

А сейчас пользуясь вашим вниманием, задам несколько вопросов.

1. Собрал систему с UART приемопередатчиком. Запись в stdout происходит отлично посредством функции printf, но чтение никак не пойму.Везде в доках altera говорят о полной совместимости по потокам с ANSI C.
Цитата
4.9.6.4 The scanf function
Synopsis
#include <stdio.h>
int scanf(const char *format, ...);


Что же на деле? Не знает такой функции, как и fopen, fclose, ... Как читать из порта? Подскажите пожалуйста smile.gif

2. Вопрос про время компиляции. Как его сократить? что делаю я: правлю код, компилирую проект (бегающий огонек около минуты), компилирую проект quartus (минута), прошваю.
Это нормально? Совсем не привык к таким задержкам, программирую много и давно, но такого не видел :/

3. Где вообще почитать про программирование в этой IDE с этими библиотеками и компилятором. Т.к. множество привычных функций нет, а куча всяких неизвестных мне IOWR_ALTERA_AVALON_PIO_DATA присутствует. Находил много кода по форумам, функции из них компилятор не признает. Буду благодарен за куски полезного кода и примеры.

Спасибо smile.gif
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Feb 2 2010, 09:47
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(skkap @ Feb 2 2010, 11:56) *
...Собрал систему с UART приемопередатчиком. ... Как читать из порта? Подскажите пожалуйста...

Стандартных функций не применял, а создал для UART небольшой монитор, в который захожу каждые 2 мс.
В приложении один из файлов проекта, my_rs232.h, отвечающий за UART. Как читать из порта - там показано. Все работает.
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Feb 2 2010, 10:29
Сообщение #6


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

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



Цитата(skkap @ Feb 2 2010, 11:56) *
1. Собрал систему с UART приемопередатчиком. Запись в stdout происходит отлично посредством функции printf, но чтение никак не пойму.Везде в доках altera говорят о полной совместимости по потокам с ANSI C.
Что же на деле? Не знает такой функции, как и fopen, fclose, ... Как читать из порта? Подскажите пожалуйста smile.gif

А документацию на UART почитать не пробовали?
Код
/* 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;
}


Цитата(skkap @ Feb 2 2010, 11:56) *
2. Вопрос про время компиляции. Как его сократить? что делаю я: правлю код, компилирую проект (бегающий огонек около минуты), компилирую проект quartus (минута), прошваю.
Это нормально? Совсем не привык к таким задержкам, программирую много и давно, но такого не видел :/

Во-первых, переходите на версию 9.1 - там компиляция в NiosII EDS происходит существенно быстрее.
Во-вторых - после того, как Вы получили исполняемый код, не обязательно перекомпилировать проект в квартусе. Можно заливать код прямо из-под NiosII EDS (Run As). Для этого ваш cpu должен иметь JTAG Debug модуль.

Цитата(skkap @ Feb 2 2010, 11:56) *
3. Где вообще почитать про программирование в этой IDE с этими библиотеками и компилятором. Т.к. множество привычных функций нет, а куча всяких неизвестных мне IOWR_ALTERA_AVALON_PIO_DATA присутствует. Находил много кода по форумам, функции из них компилятор не признает. Буду благодарен за куски полезного кода и примеры.

На исторической родине
Особо смотрите Nios II Software Developer's Handbook , раздел Developing Programs Using the Hardware Abstraction Layer


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
slonok
сообщение Feb 2 2010, 14:25
Сообщение #7


Участник
*

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



а попробуйте брандмауэр винды 7 отключить и посмотрите, что там с компиляцией будет.
джитаг сервер тоже в ней глючит, приходилось в ручную его запускать.


--------------------
Всем дали сапоги! Мне не дали сапоги! Прошу выдать сапоги! ЗАЯВЛЕНИЕ!
Go to the top of the page
 
+Quote Post

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

 


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


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