prussta
Участник-
Постов
28 -
Зарегистрирован
-
Посещение
Весь контент prussta
-
Попробовали с en-valb на простом проекте, все отлично заработало. Внесли аналогичные изменения в основной проект, пока не работает, что то slave как то не корректно загружается, то ли bootloader, то ли qsys, завтра продолжим разбираться.
-
Добрый день! Делаю все как по шпаргалке от juvf http://juvf.narod.ru/, но у меня получается, что загрузчик загружается (в nios2-terminal я вижу заветную надпись "Now attempting to load and jump to the application"), но моя программа не стартует(( в чем дело может быть? Смотрю в дебаге код бутлоадера , там findImage() возвращает ноль, то есть entry_point = 0; А код моего приложения лежит в sdram с SDRAM_BASE 0x800000. Я так понимаю, что entry_point в этом случае никак не может быть рана 0 (( В чем дело? И еще, не могу найти в NIOSII EDS v.13.1 в настройки дебаггера "break at program entry". где эта галка находиться? или она как-то по другому стала называется? Ткните носом, пожалуйста))
-
Dmitriyspb, да Вы правы, что-то разрабатывать на ПЛИС приходится впервые, поэтому много темных мест)) и спаисбо за советы! да, знаю, я только обзорно знакома с аппаратными языками, поэтому и возникают "новичковые" вопросы) программировать fpga сама не буду(если что). А здесь же хотелось получить альтернативные идеи по общей организации системы, потому что мои идеи не удались. Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм...
-
Да, подобное и нужно)) контроллер этот как реализовать? написать на аппаратном языке?
-
Dmitriyspb, а как вы предлагаете с порта SPI1 заполнять FIFO2? Есть варианты его заполнения без участия процессора? Даже если использовать DMA, то получается, что надо при приходе данных в регистр SPI1 нужно вызывать ф-ию alt_dma_rxchan_prepare(...), чтобы DMA передал эти данные в FIFO2 . Можно ли как-нибудь это обойти? В идеале хотелось бы так настроить передачу, чтобы данные приходя в SPI1 сразу бы записывались в FIFO2, и проц при этом не беспокоить.
-
Да, иногда приходится и этим заниматься))
-
Ах, вот оно что! Спасибо, Дмитрий, за разъяснения. Я просто не пишу на аппаратных языках, поэтому и забыла про этот вариант и рассматривала стандартные компоненты, которые уже есть. Но теперь все стало понятно. Будем обдумывать этот вариант. :)
-
Так я и так реализую на fpga, использую софтпроцессор NiosII для управления всей подключенной переферией - SPI, FIFO, DMA и т.д. Делаю на Cyclone III. Или я не так понимаю? Поясните, пожалуйста
-
я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?
-
Передача данных из SPI в SPI
prussta опубликовал тема в Работаем с ПЛИС, области применения, выбор
Всем доброго времени суток! Подскажите, как лучше организовать систему. Система в целом выглядит так: Есть софт процессор NiosII - он выполняет основные задачи: отвечает на запросы пользователя, принимает какие-то данные, обрабатывает их, выдает ответы и прочее. Также есть два SPI: SPI1 - он принимает данные из вне как только вся система запустилась и SPI2 в который мне нужно эти данные (определенное количество) выплюнуть (этот SPI от Ethernet платки). Получается, что мне нужно постоянно гнать данные из SPI1 в SPI2. Причем, иногда мне нужно в этот поток данных добавлять еще байт своих данных. Как это можно организовать с минимальным участием проца? Чтобы он успевал делать свою основную работу и меньше отвлекался на эту передачу? Может есть какая-то переферия для таких задач? Подскажите куда посмотреть? Частота работа Niosa 100MГц, а данные на SPI1 приходят с частотой 24Мгц. Пока у меня рисуется стандартный вариант: по прерыванию на прием по SPI1 я через DMA записываю поступившие данные в память, как только пришло необходимое кол-во байт, выставляю флаг. И в основном цикле программы по этому флагу отправляю эти данные в SPI2. -
DMA+SPI
prussta опубликовал тема в Работаем с ПЛИС, области применения, выбор
Добрый день, уважаемые!Помогите советом, пожалуйста! Хочу добиться чтобы данные из он-чип мемори через DMA поступали в spi. В Qsys подключаю read master DMA на control port on-chip memory, а write master на control port spi, также оба контрольных порта идут на NiosII. SPI - в режиме master. Функция передачи следующая volatile alt_32 transmitdone=0; void transmit_done() { transmitdone=1; } /* ************************************************** *********************** */ /* The following routines is for memory-to-Peripheral processing. */ /* ************************************************** *********************** */ void copy_mem_to_p(const char* dma_name, void* start_addr, //Here,start_addr is the "Memory" void* desti_addr, //and desti_addr is the "Peripheral" alt_32 transfer_count, alt_32 transfer_mode) { alt_32 flag; alt_dma_txchan txchan; if((txchan=alt_dma_txchan_open(dma_name))==NULL) { printf("\n Failed to open transmit channel(range-to-1)!\n"); exit(1); } alt_dma_txchan_ioctl(txchan,transfer_mode,NULL); alt_dma_txchan_ioctl(txchan,ALT_DMA_TX_ONLY_ON,desti_addr); if((flag=alt_dma_txchan_send(txchan,start_addr,transfer_count,transmit_done,NULL))<0) { printf("\n Failed to post transmit request(range-to-1)!\n"); exit(1); } while(!transmitdone); transmitdone=0; alt_dma_txchan_ioctl(txchan,ALT_DMA_TX_ONLY_OFF, NULL); alt_dma_txchan_close(txchan); } //---------------- int main(void) { //в память записываю данные, которые хочу отправить по SPI //.... //...... copy_mem_to_p(DMA_MEM2SPI_NAME, (void*)DMA_DSP_MEMORY_BASE, //Here,start_addr is the "Memory" (void*)SPI_FINISH_BASE, //and desti_addr is the "Peripheral" 4, ALT_DMA_SET_MODE_32); } Проблема в том, что в transmit_done() захожу -флаг выставляю, а в окне памяти смотрю адрес SPI_FINISH_BASE - пусто. Я правильно понимаю, что как только в tx_registr spi приходят данные он их сразу отправляет сам, не нужно больше никаких стимуляций? )) Из spi в память через DMA у меня получилось передать - все хорошо, а тут не понимаю, что не так... -
ethernet
prussta ответил NSergeevich тема в Работаем с ПЛИС, области применения, выбор
Предварительно, работать буду с сообщениями UDP. То есть я правильно понимаю, что мне достаточно работать с UDP пакетами, а прикладной уровень вообще не задействовать? Я еще не углублялась в даташит на Wiznetовскую микросхему, поэтому представляю обмен пакетами следующим образом (прошу, поправить, если не так)) ): например я хочу отправить команду ХХ12345, для этого : пишу ip адрес получателя, порт получателя и подсчитываю кол-во байт моей команды - записываю и пишу саму команду. Этот пакет и отправляю. Правильно? -
ethernet
prussta ответил NSergeevich тема в Работаем с ПЛИС, области применения, выбор
Уважаемые, подскажите! Есть задача управлять с компа устройством на плис при помощи Ethernet. Соотвественно, есть определенный набор команд, которые должно понимать устройство и давать определенные ответы на них. Выход в интернет не нужен. Для реализации хочу использовать стек TCP/IP. Причем канальный, сетевой и транспортный уровень будет организован аппаратно при промощи ethernet модуля Wiznet. Внимание вопрос! Что использовать в качестве прикладного уровня для управление устройством? Должна ли я использовать уже стандартные протоколы (есть возможност использовать SNMP) или я могу назначить свой порт и отправлять необходимые мне команды "как есть"? Или это не так просто, как я представляю? -
Спасибо! Буду пробовать!
-
То есть я правильно понимаю, что для одной кнопки у меня должно быть две картинки: 1ая - это когда кнопка в нормальном положении, и 2ая - когда в нажатом (ну там затемненная или с тенью) ?
-
Ага, значит так тоже делают! У меня были мысли о подобном, но, закрались сомнения, что это как-то "непрофессионально")) Спасибо, Golikov A., за конкретный пример. Что-то подобное и хотелось услышать))) Дело в том, что когда триал установишь, для запуска он просит триальный ключ, который нужно попросить, послав им свой регистрационный номер программы. Я написала им, но ответа не получила. В итоге даже триальную версию не могу посмотреть). Вот с Portable Embedded GUI Toolkit (PEG) дело обстоит также, но мне ответили и выслали ключик пробный, сейчас еще и пытаются со мной переписываться, спрашивают как дела)))
-
Да, конечно. Но, там. как уже было сказано, большая часть платная, часть не подходит по параметрам. больше всех пока симпатизирует Visual TFT как построитель, но он не поддерживает моего расширения 600x480. Я так понимаю, что найти вещь, которая будет подходить по всем требованиям (мк/расширение/бесплатность/красивость и т.д) очень трудно и все равно придется, как говориться, "допиливать" под себя. Спасибо, Дмитрий, обращу более пристальное внимание на Microchip - сразу как-то отбросила, т.к. искала для nios )
-
GUI для TFT на niosII
prussta опубликовал тема в Системы на ПЛИС - System on a Programmable Chip (SoPC)
Добрый день, всем форумчанам! Прошу помочь советом и своим опытом!) Дело в том, что мне нужно нарисовать пользовательский графический интерфейс на TFT индикаторе. Использую niosII. Среда разработки NiosII SBT for Eclips. Просмотрев все доступные материалы по разным GUI посторителям и библиотекам, хочу спросить у опытных в этом деле людей. Как все же нарисовать свой интерфейс: кнопочки, картинки, графики и т.п? Операционки использоваться не будет. Все известные программки - платные. Есть какой-то графический построитель, в котором можно накидать кнопочки на форму и т.д. или все ручками делать придется? Например, есть uCGUIBulider, но с китайского сайта и там все на китайском). Графическая библиотека uc/GUI от segger (она же emWin) тоже встречалась (и такое ощущуение, что она самая ходовая) но постоитель то к ней есть? Как современные разработчики делают ГУЙ на свои гаджеты? Поделитесь опытом! Подобная тема была ранее http://electronix.ru/forum/index.php?showtopic=101694 ,но она так и осталась плохо освещена. -
Добрый день! Хочу запустить SGDMA в режиме mem to srteam. Работаю с отладочной платой DE0 от терасик в Quartus II v.11.1, использую Nios II /e. Было решено запустить альтеровский пример с SGDMA и SSRAM( SSRAM(MM) --> (MM)SGDMA(ST) --> (ST)SGDMA(MM) --> SSRAM(MM)) . Я вместо SSRAM использую SDRAM. Пример запускается, прохожу все шаги до while(tx_done == 0) успешно, но здесь все и заканчивается. То есть я не захожу на свой callback function, где меняю значение tx_done. Почему? ДМА не запускается? или м.б. ошибки при сборки в Qsys? Не могу разобраться. Скриншоты и файлы программы прилагаю. SGDMA.rar
-
Спасибо! Почитаю. Подскажите ещe, как можно в Qsys подключить dma controler-> fifo ->pixel converter. Там разные шины. в стандартных компонентах не могу найти подходящего моста. Что посоветуете?
-
Добрый день! Подскажите, где можно почитать про настрйку проекта в Eclips. (и файлов проекта и bsp). Конкретно меня интересуют Properties. Многоие рекомендуют ставить оптимизацию Os, но не могу найти, где это делать. (я вижу только что можно поставить O0, O1,O2 и т.д ). Также в BSP Editor интересует вкладка Linker Script. Что обозначают там .rodata, .rwdata, .bss, .text, с остальными понятно. И при использовании, например, sdram как распределять что в какой памяти будет находиться? Но даже если я использую sdram, на сколько мне известно, во вкладке main в hal.linker для exeption и interrupt нужно выставить onchip memory. Про жизненоважные настройки проекта хочется узнать подробнее. Как настрить все правильно?
-
Добрый день! Я еще новичок в освоении ПЛИС. Поэтому прошу помощи у более опытных товарищей) Хочу запустить SGDMA. Работаю с отладочной платой DE0 от терасик в Quartus II v.11.1, использую Nios II /e. Было решено запустить альтеровский пример с SGDMA и SSRAM( SSRAM(MM) --> (MM)SGDMA(ST) --> (ST)SGDMA(MM) --> SSRAM(MM)) . Я вместо SSRAM использую SDRAM. Пример запускается, прохожу все шаги до while(tx_done == 0) успешно, но здесь все и заканчивается. То есть я не захожу на свой callback function, где меняю значение tx_done. Почему? ДМА не запускается? или м.б. ошибки при сборки в Qsys? Не могу разобраться. Скриншоты и файлы программы прилагаю. SGDMA.rar
-
Не генерируются прерывания в STR912
prussta ответил artur_off тема в ARM, 32bit
Здравствуйте! У меня возникла подобная проблема с STR912. Есть рабочий проект (был создан в старой версии keil v.3.53) Там прерывания работают. А если собрать новый проект в новом кейле (пробовала в keil v.4.13 и v.4.53) с этими же файлами проекта, файлами библиотеки, и с тем же стартапом, то прерывания не отрабатываются. Выполняется один раз и все. Прерывания глобально разрешены, настроены, но программа в прерывания больше не заходит. Хитрость с __irq не работает. Не могу понять в чем причина. У кого-нибудь было подобное? Помогите разобраться. Спасибо. -
Lotor, Skripach спасибо за помощь! Заработало!)) Объявление памяти (см. листинг) вставила в get_fileinfo (DIR *dj, FILINFO *fno), что в ff.c. И потом все запархало))) #if _USE_LFN static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1]; fno.lfname = lfn; fno.lfsize = sizeof(lfn); #endif
-
skripach, с памятью ясно, а как показать где эта память? )Можно, по подробнее.