skkap 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Опишу ситуацию и свою последовательность действий. Необходим проект на 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. Назначил все приложения указанные в ошибках запускаться от админа Вопрос: Что делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба 4. Назначил все приложения указанные в ошибках запускаться от админа Добавьте еще к этому "совместимость с XP", это частично поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 1 февраля, 2010 Опубликовано 1 февраля, 2010 · Жалоба Вопрос: Что делать? 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) { бла-бла-бла } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skkap 0 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба Спасибо всем за ответы! Нашел решение своей проблемы, хоть и кривое. При первом билде (когда полностью билдится 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, ... Как читать из порта? Подскажите пожалуйста :) 2. Вопрос про время компиляции. Как его сократить? что делаю я: правлю код, компилирую проект (бегающий огонек около минуты), компилирую проект quartus (минута), прошваю. Это нормально? Совсем не привык к таким задержкам, программирую много и давно, но такого не видел :/ 3. Где вообще почитать про программирование в этой IDE с этими библиотеками и компилятором. Т.к. множество привычных функций нет, а куча всяких неизвестных мне IOWR_ALTERA_AVALON_PIO_DATA присутствует. Находил много кода по форумам, функции из них компилятор не признает. Буду благодарен за куски полезного кода и примеры. Спасибо :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serhiy_UA 1 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба ...Собрал систему с UART приемопередатчиком. ... Как читать из порта? Подскажите пожалуйста... Стандартных функций не применял, а создал для UART небольшой монитор, в который захожу каждые 2 мс. В приложении один из файлов проекта, my_rs232.h, отвечающий за UART. Как читать из порта - там показано. Все работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба 1. Собрал систему с UART приемопередатчиком. Запись в stdout происходит отлично посредством функции printf, но чтение никак не пойму.Везде в доках altera говорят о полной совместимости по потокам с ANSI C. Что же на деле? Не знает такой функции, как и fopen, fclose, ... Как читать из порта? Подскажите пожалуйста :) А документацию на 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; } 2. Вопрос про время компиляции. Как его сократить? что делаю я: правлю код, компилирую проект (бегающий огонек около минуты), компилирую проект quartus (минута), прошваю. Это нормально? Совсем не привык к таким задержкам, программирую много и давно, но такого не видел :/ Во-первых, переходите на версию 9.1 - там компиляция в NiosII EDS происходит существенно быстрее. Во-вторых - после того, как Вы получили исполняемый код, не обязательно перекомпилировать проект в квартусе. Можно заливать код прямо из-под NiosII EDS (Run As). Для этого ваш cpu должен иметь JTAG Debug модуль. 3. Где вообще почитать про программирование в этой IDE с этими библиотеками и компилятором. Т.к. множество привычных функций нет, а куча всяких неизвестных мне IOWR_ALTERA_AVALON_PIO_DATA присутствует. Находил много кода по форумам, функции из них компилятор не признает. Буду благодарен за куски полезного кода и примеры. На исторической родине Особо смотрите Nios II Software Developer's Handbook , раздел Developing Programs Using the Hardware Abstraction Layer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slonok 1 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба а попробуйте брандмауэр винды 7 отключить и посмотрите, что там с компиляцией будет. джитаг сервер тоже в ней глючит, приходилось в ручную его запускать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться