pepl 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Добрый день. Прошу сразу сильно не пинать. Понимаю тема скорее всего пережована и выплюнута. Проект ГОРИТ. перед сдачей вылез баг но где не найду программирую плис циклон второй. Сиситема с процом. Программирую - После перезапуска работает не корректно - заливаю поверх sof на все встает как надо. Голову сломал. То есть сам проц и система запускается но работают не правильно. Quartus 12.0. в чем может быть причина? спасибо. p.s. в какой то момент пошел косяк. до этого все было нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба 2 artem79 надо бы побольше деталей... Кстати, пересборку с нуля всего пробовали ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pepl 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба 2 artem79 надо бы побольше деталей... Кстати, пересборку с нуля всего пробовали ? все что нужно могу выложить. Да пробовал. Добавлю. Первоначально проект делался под 9.1 потом был перенесен на 12.0 тот же соф что и при прошивке заливаешь и все как часы .... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Может где-то нет сброса на регистрах при штатной загрузке? А когда заливается sof, то эти регистры становятся нулями и все ок. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба все что нужно могу выложить. Ну, "все" может быть и не надо :) Из какой памяти процессор стартует? Где находится сегмент кода? Куда указывают вектора сброса и исключения? Каковы настройки bsp (alt_load и т.п.)? Для начала... Добавлю. Первоначально проект делался под 9.1 потом был перенесен на 12.0 Т.е. из SOPC Builder'a в Qsys? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pepl 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Ну, "все" может быть и не надо :) Из какой памяти процессор стартует? Где находится сегмент кода? Куда указывают вектора сброса и исключения? Каковы настройки bsp (alt_load и т.п.)? Для начала... прикладываю скрины прикладываю скрины нет не переводил. SOPC остался Прошивка на флеш. Работает из on_chip. Покрайней мере так было... в 9-ке вкладка драйверов. нет драйвера для on_chip_memr ??? Так понимаю что проблема довольно глубоко... Может где-то нет сброса на регистрах при штатной загрузке? А когда заливается sof, то эти регистры становятся нулями и все ок. Думал об этом. Проверял. Не нашел. Фишка в том что все рабочее было... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба прикладываю скрины Сдается мне, что у Вас сегменты .rodata и .rwdata стартапом не инициализируются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pepl 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Сдается мне, что у Вас сегменты .rodata и .rwdata стартапом не инициализируются... Что с этим делать?.. может быть проблема в железе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StewartLittle 41 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Что с этим делать?.. Изучать матчасть! :laughing: В зависимости от того, как написан Ваш сишный код, в настройках BSP Editor взведите "enable alt_load", "enable alt_load_copy_rodata", "enable alt_load_copy_rwdata". может быть проблема в железе? Если при закрузке исполняемого кода из эклипса все работает, то причем тут железо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pepl 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Изучать матчасть! :laughing: В зависимости от того, как написан Ваш сишный код, в настройках BSP Editor взведите "enable alt_load", "enable alt_load_copy_rodata", "enable alt_load_copy_rwdata". Если при закрузке исполняемого кода из эклипса все работает, то причем тут железо? Спасибо большое. Обязательно пройдусь по настройкам, особенно которые ранее на трогал. Но проблема все таки была в железе. На втором девайсе все работает. кристал инициализируется неправильно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pepl 0 16 декабря, 2014 Опубликовано 16 декабря, 2014 · Жалоба Спасибо большое. Обязательно пройдусь по настройкам, особенно которые ранее на трогал. Но проблема все таки была в железе. На втором девайсе все работает. кристал инициализируется неправильно причина пока не выянена. Буду дальше смотреть. На одном кристале пошло на 2 других нет((( кусок кода с в ниосе. делал на базе тестового примера. #include "system.h" #include "altera_avalon_pio_regs.h" #include "altera_avalon_uart_regs.h" #include "altera_avalon_timer_regs.h" #include "altera_avalon_uart.h" #include "altera_avalon_timer.h" #include <stdio.h> #include <stdlib.h> void send_proc(); void save_proc(); void reset_proc(); void send_uart(unsigned int data_send); volatile unsigned long send, time_int, kadr, count_kadr; volatile unsigned int temp; volatile unsigned char count_uart, buf_uart[9]; void ISR_timer_0( void * context, alt_u32 id ) { IOWR_ALTERA_AVALON_TIMER_CONTROL (TIMER_0_BASE, 8); IOWR_ALTERA_AVALON_TIMER_STATUS (TIMER_0_BASE, 0); // count_uart = 0; /// reset_proc(); } void timerinit_int( void ) { IOWR_ALTERA_AVALON_TIMER_CONTROL (TIMER_0_BASE,8); IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_BASE, 0xD4C0); IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE, 0x02); alt_irq_register (TIMER_0_IRQ, (void*)TIMER_0_BASE, ISR_timer_0); } static void handle_uart_rx_interrupt(void* context, alt_u32 id) { count_uart++; if (count_uart == 1) { IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_BASE, 0xD4C0); IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE, 0x02); IOWR_ALTERA_AVALON_TIMER_CONTROL (TIMER_0_BASE, 7); IOWR_ALTERA_AVALON_TIMER_STATUS (TIMER_0_BASE, 0); } volatile int* edge_capture_ptr = (volatile int*) context; buf_uart[count_uart-1] = IORD_ALTERA_AVALON_UART_RXDATA(UART_BASE); IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE, 0x80); if (count_uart == 9) { IOWR_ALTERA_AVALON_TIMER_CONTROL (TIMER_0_BASE, 8); IOWR_ALTERA_AVALON_TIMER_STATUS (TIMER_0_BASE, 0); count_uart = 0; count_kadr = 0; time_int = 16777216*buf_uart[3] + 65536*buf_uart[2] + 256*buf_uart[1] + buf_uart[0]; kadr = 16777216*buf_uart[7] + 65536*buf_uart[6] + 256*buf_uart[5] + buf_uart[4]; if (kadr == 0xFFEEFFCC) { reset_proc(); return; } else { save_proc(); send_proc(); } } } static void init_uart_interrupts() { void* edge_capture_ptr = (void*) UART_BASE; IOWR_ALTERA_AVALON_UART_CONTROL(UART_BASE, 0x80); alt_irq_register( 0, edge_capture_ptr, handle_uart_rx_interrupt ); } int main(void) //int main(void) { volatile long divisor = ((ALT_CPU_FREQ/2048000)-1); IOWR_ALTERA_AVALON_UART_DIVISOR(UART_BASE,divisor); volatile unsigned int i, h; send = 0; count_uart = 0; count_kadr = 0; for(i=0;i<9;i++) {buf_uart = 0;} init_uart_interrupts(); // timerinit_int(); IOWR_ALTERA_AVALON_PIO_DATA(READY_PIO_BASE, 0x00); IOWR_ALTERA_AVALON_PIO_DATA(STR_PIO_BASE, 0x00); IOWR_ALTERA_AVALON_PIO_DATA(ADC_ADDR_PIO_BASE, 0); IOWR_ALTERA_AVALON_PIO_DATA(DATA_CLK_PIO_BASE, 0x00); IOWR_ALTERA_AVALON_PIO_DATA(RESET_PIO_BASE, 0x00); while(1) { Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pepl 0 17 декабря, 2014 Опубликовано 17 декабря, 2014 · Жалоба что может быть по коду? не скажите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться