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

 
 
> 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
 
Start new topic
Ответов
skkap
сообщение Feb 2 2010, 08:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 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



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

 


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


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