vadimuzzz 0 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба выслал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 15 апреля, 2010 Опубликовано 15 апреля, 2010 · Жалоба Все получил. Компиляция прошла без упоминаний о триальности опенкорки, так что делаю вывод что все заработает на железке (это проверю завтра). Спасибо за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 19 апреля, 2010 Опубликовано 19 апреля, 2010 (изменено) · Жалоба Итак, все заработало как я и ожидал. Программка и Система была простейшая - бегущий светодиод (т.е., On-chip RAM, PIO-out, контроллер EPCS, System ID, CPU). Все работало и зашивалось в EPCS на ура. Далее я решил поиграться с прерываниями. Всего-лишь в существующую систему добавил PIO-вход (кнопочки), настроил в нем прерывания и автоназначил их в SoPC-билдере. Компилю, зашиваю, делаю в Nios II IDE простейший проект для отработки прерывания, успешно его компилирую, а далее при попытке загрузить его в плату получаю следующее фи: Using cable "USB-Blaster [USB-0]", device 1, instance 0x00 Pausing target processor: OK Reading System ID at address 0x0000A020: verified Initializing CPU cache (if present) OK Downloading 00004000 ( 0%) Downloading 00009820 (96%) Downloaded 13KB in 0.2s (65.0KB/s) Verifying 00004000 ( 0%) Verifying 00009820 (96%) Verify failed between address 0x9820 and 0x99C7 Leaving target processor paused Насколько я понял из альтеровских и ниосовских форумов, такая ошибка возникает как правило при неверном pinout, невыполнении таймингов для внешней памяти (но у меня-то вся память - OnChip...), наводках по линии ТCK у JTAG. В чем может быть дело? - Pinout (Assignments для всей платы одним файлом) взят с фирменного диска, работал с ним уже сто раз на не-ниосовских проектах - все разведено нормально. - Никакой внешней памяти кроме EPCS я не использую. Более того, раньше с ней все работало (до того как я добавил в систему PIO-вход). - Timing Analyzer, конечно, поругивается варнингами про отрицательные слэки, но раньше же все работало. Неужели из-за добавления простого порта все так уехало? - Вроде как, судя по адресам - это как раз флэшка. Но какого хрена она тогда раньше нормально работала? П.С.: на всякий прилагаю скриншот системы П.П.С.: клок, если что, беру не с PLL, а напрямую с источника на плате (50 МГц). Изменено 19 апреля, 2010 пользователем spectr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 19 апреля, 2010 Опубликовано 19 апреля, 2010 · Жалоба такое впечатление, что либо бинарник большой, либо адреса левые. как будто что-то не пересобралось (system library?) куда-то он не туда пишет, ну и проверить естественно не может. выхлоп компилятора покажите Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spectr 0 19 апреля, 2010 Опубликовано 19 апреля, 2010 (изменено) · Жалоба Вот отчет компилятора IDE: **** Build of configuration Debug for project test_project **** make -s all includes Compiling main.c... ../main.c: In function `init_button_pio': ../main.c:34: warning: implicit declaration of function `alt_irq_register' ../main.c: At top level: ../main.c:39: warning: return type of 'main' is not `int' ../main.c: In function `main': ../main.c:41: warning: unused variable `value' Linking test_project.elf... Info: (test_project.elf) 13 KBytes program size (code + initialized data). Info: 3120 Bytes free for stack + heap. Creating generated_app.sh... Post-processing to create ram_memory.hex Hardware simulation is not enabled for the target SOPC Builder system. Skipping creation of hardware simulation model contents and simulation symbol files. (Note: This does not affect the instruction set simulator.) Post-processing to create epcs_flash_controller_boot_rom.flash Build completed in 27.984 seconds Вот простыня исходника: #include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" //-------------------------------------------------------------- void delay(value) { int i=0; for(i=0;i<value;i++); } //-------------------------------------------------------------- static void handle_button_interrupts(void* context, alt_u32 id) { volatile int* edge_capture_ptr = (volatile int*) context; *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE); IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE,0); IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTONS_BASE,0xF); } //-------------------------------------------------------------- //-------------------------------------------------------------- //-------------------------------------------------------------- //-------------------------------------------------------------- //-------------------------------------------------------------- volatile int edge_capture; static void init_button_pio() { void* edge_capture_ptr = (void*) &edge_capture; IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTONS_BASE,0xF); IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTONS_BASE,0); alt_irq_register(BUTTONS_IRQ,edge_capture_ptr,handle_button_interrupts); } //-------------------------------------------------------------- void main(void) { int value = 0x00000001; init_button_pio(); while (1) { if(edge_capture!=0) { switch(edge_capture) { case 0x1: IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE , 0x1); break; case 0x2: IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE , 0x2); break; case 0x4: IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE , 0x4); break; case 0x8: IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE , 0x8); break; default: break; } } } Если это важно: в свойствах системной библиотеки параметры Program Memory и ReadOnly Memory установлены на On-Chip память. Еще одно уточнение - процессор по сбросу и исключению уходит в память EPCS. Но в системной библиотеке, как я уже писал выше память программ и ROM-память указывают на OnChip-память. Может из-за этого косячить? Во! Когда я изменил в свойствах системной библиотеки указание памяти программ и ROM с OnChip на EPCS, то компилятор выдал-таки ошибку, причем как раз с теми адресами, которые он выдавал при верификации: **** Build of configuration Debug for project test_project **** make -s all includes Compiling main.c... ../main.c: In function `init_button_pio': ../main.c:34: warning: implicit declaration of function `alt_irq_register' ../main.c: At top level: ../main.c:39: warning: return type of 'main' is not `int' ../main.c: In function `main': ../main.c:41: warning: unused variable `value' Linking test_project.elf... /cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/../../../../nios2-elf/bin/ld: region epcs_flash_controller is full (test_project.elf section .text). Region needs to be 8908 bytes larger. /cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/../../../../nios2-elf/bin/ld: address 0xa2b4 of test_project.elf section .epcs_flash_controller is not within region epcs_flash_controller /cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/../../../../nios2-elf/bin/ld: section .rodata [00009820 -> 0000984b] overlaps section .exceptions [00009820 -> 000099c7] /cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/../../../../nios2-elf/bin/ld: section .rwdata [0000984c -> 0000a2b3] overlaps section .exceptions [00009820 -> 000099c7] collect2: ld returned 1 exit status make: *** [test_project.elf] Error 1 Build completed in 13.921 seconds Похоже что ему мало памяти... Изменено 13 мая, 2010 пользователем Omen_13 Оформление кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyF 0 19 апреля, 2010 Опубликовано 19 апреля, 2010 · Жалоба Я немного не понял, что Вы делаете Когда при запуске он пытается загрузить программу и пишет: Downloading 00004000 ( 0%) Downloading 00009820 (96%) Downloaded 13KB in 0.2s (65.0KB/s), он грузит ее как бы в ОЗУ и неудивительно, что при попытке верификации EPCS он выдает ошибки. Для программирования EPCS надо использовать Flash Programmer. По сути, область памяти от 0x9800, выделенная на EPCS контроллер - это загрузчик, который перекачивает из EPCS в ОЗУ содержимое, зашитое Flash Programmer'ом в EPCS. Тогда при включении системы загрузчик сам перекачает код из EPCS в те секции памяти, которые надо инициализировать (т.е., секции, которые лежат во встроенном ОЗУ, внешнем ОЗУ и т.д.). Поэтому и код, и exception вектор в настройках ядра процессора кладите в ram_memory, а reset - на EPCS контроллер. Тогда при reset код из EPCS будет загружаться загрузчиком, а при загрузке с кабеля при Run - загружаться в ram_memory через JTAG. P.S. Это вроде как в теории, сам с системами на кристалле, использующими EPCS не работал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 19 апреля, 2010 Опубликовано 19 апреля, 2010 · Жалоба Если это важно: в свойствах системной библиотеки параметры Program Memory и ReadOnly Memory установлены на On-Chip память. Еще одно уточнение - процессор по сбросу и исключению уходит в память EPCS. Но в системной библиотеке, как я уже писал выше память программ и ROM-память указывают на OnChip-память. на EPCS должен указывать только вектор сброса. как уже писал Sergey'F, по этому адресу живет начальный загрузчик(там маленькое ОЗУ в компонент встроено+контроллер SPI), все остальное (и системная библиотека) должно располагаться в RAM. собственно запуск программы из ниос-иде не затрагивает загрузчик. а по памяти - вроде хватает, еще 3к свободно. хотя для того, что вы привели 13к как-то многовато. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
barabek 0 19 апреля, 2010 Опубликовано 19 апреля, 2010 · Жалоба кроме всего вышесказанного предыдущими, при использовании прерываний подключайте файл sys/alt_irq.h Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
porty 0 30 апреля, 2010 Опубликовано 30 апреля, 2010 · Жалоба Добрый день, возникла проблема с средой Eclipse: Стал изучать NIOSII и начал с этих уроков (на которые ссылается сама альтера) http://www.nioswiki.com/Embedded_Systems_Lab благо плата CII starter kit была в наличии выполнил согласно их даташиту все шаги но на последнем возникла проблема в том что непонял как залить програму в процессор и запустить, т.е. не смог выполнить: In the previous module you already downloaded the .SOF, so the FPGA is primed and ready to run the software application. Keeping the USB cable still plugged in to the DE1 board, you will download the application via the USB-JTAG link. To run the software project on the Nios II processor: • Right click on the software project directory and choose Run As and Nios II Hardware. • If the Run Configurations window appears: Under the Project Tab: Verify Project and elf file name. Under the Target Connection Tab: Select Refresh Connections Select Run т.к. фактически нет в Run Configurations пунктов отвечающих за JTAG програматор и отладчик. Как его включить так чтоб он в среде програмирования появился? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 30 апреля, 2010 Опубликовано 30 апреля, 2010 · Жалоба Как его включить так чтоб он в среде програмирования появился? зашейте из квартус-программера sof, потом в ниос-иде жмите Run. при включенном jtag`е и правильном sof эклипс увидит циклон и ниос в нем (все настройки в авто). чтобы создать конфигурацию, ткните в пункт Nios II Hardware Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
porty 0 4 мая, 2010 Опубликовано 4 мая, 2010 · Жалоба спасибо, запустил, но почему во время отладки при попытке прохода по шагам текущая выполняемая строка по F6 или F5 скачет достаточно странно (то всё линейно исполняется то назад проскакивает и тд)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 4 мая, 2010 Опубликовано 4 мая, 2010 · Жалоба спасибо, запустил, но почему во время отладки при попытке прохода по шагам текущая выполняемая строка по F6 или F5 скачет достаточно странно (то всё линейно исполняется то назад проскакивает и тд)? включена оптимизация кода по размеру (-Os)? для отладки лучше оставить debug (-Og) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
porty 0 6 мая, 2010 Опубликовано 6 мая, 2010 (изменено) · Жалоба спасибо, ещё вопрос: как освободить усб бластер занятый в среде ниойса для квартуса не выгружая самой среды ниойс еклипс? пробовал нажимать на красный квадрат остановки отладки/запуска не помогает. Т.е. заливаеш в начале по джитагу прошивку из квартуса через байт бластер, потом запускаеш ниойс эклипс, заливаеш через него программу, останавливаеш выполнение, возврощаешся в квартус и пробуеш перезалить иную версию а он выдаёт: Info: Started Programmer operation at Thu May 06 10:27:01 2010 Error: Application Nios2 on 192.168.1.14 is using the target device Error: Operation failed Info: Ended Programmer operation at Thu May 06 10:27:01 2010 и пока среду разработки для ниойса вообще не закроеш квартус будет выдавать такую ошибку. Изменено 13 мая, 2010 пользователем Omen_13 Оформление цитаты. Omen_13 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 6 мая, 2010 Опубликовано 6 мая, 2010 · Жалоба как освободить усб бластер занятый в среде ниойса для квартуса не выгружая самой среды ниойс еклипс? должен освобождаться, если отладчиком не занят. похоже баг. а отладчик что пишет в окне, где процессы висят (там типа ""thread gdb running")? если нажать красную кнопку, там должно писаться "terminated". что за операционка? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
porty 0 6 мая, 2010 Опубликовано 6 мая, 2010 · Жалоба win7 64bit Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться