prussta
-
Постов
28 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные prussta
-
-
Добрый день! Делаю все как по шпаргалке от 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 сама не буду(если что). А здесь же хотелось получить альтернативные идеи по общей организации системы, потому что мои идеи не удались.
Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм...
-
Да, подобное и нужно)) контроллер этот как реализовать? написать на аппаратном языке?
-
У вас есть допустим 2 FIFO. 1-ая (FIFO1) заполняется процессором в режиме DMA, а вторая с порта SPI1 (FIFO2).
Dmitriyspb, а как вы предлагаете с порта SPI1 заполнять FIFO2? Есть варианты его заполнения без участия процессора? Даже если использовать DMA, то получается, что надо при приходе данных в регистр SPI1 нужно вызывать ф-ию alt_dma_rxchan_prepare(...), чтобы DMA передал эти данные в FIFO2 . Можно ли как-нибудь это обойти? В идеале хотелось бы так настроить передачу, чтобы данные приходя в SPI1 сразу бы записывались в FIFO2, и проц при этом не беспокоить.
-
Схемотехническом редакторе? рисуете схемки?
Да, иногда приходится и этим заниматься))
-
Ах, вот оно что! Спасибо, Дмитрий, за разъяснения. Я просто не пишу на аппаратных языках, поэтому и забыла про этот вариант и рассматривала стандартные компоненты, которые уже есть. Но теперь все стало понятно. Будем обдумывать этот вариант. :)
-
Можно и процессором, но мне кажется fpga здесь разумней выбрать.
Все что я описал я предполагал реализовать на fpga
Если не ясно как его реализовать, тогда спрашивайте...поясню
Так я и так реализую на fpga, использую софтпроцессор NiosII для управления всей подключенной переферией - SPI, FIFO, DMA и т.д. Делаю на Cyclone III. Или я не так понимаю?
Если не ясно как его реализовать, тогда спрашивайте...пояснюПоясните, пожалуйста
-
2) простенький блочек, который соберет в кучу данные с разных FIFO в соответствии с протоколом;
я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?
-
Всем доброго времени суток! Подскажите, как лучше организовать систему. Система в целом выглядит так: Есть софт процессор NiosII - он выполняет основные задачи: отвечает на запросы пользователя, принимает какие-то данные, обрабатывает их, выдает ответы и прочее. Также есть два SPI: SPI1 - он принимает данные из вне как только вся система запустилась и SPI2 в который мне нужно эти данные (определенное количество) выплюнуть (этот SPI от Ethernet платки). Получается, что мне нужно постоянно гнать данные из SPI1 в SPI2. Причем, иногда мне нужно в этот поток данных добавлять еще байт своих данных. Как это можно организовать с минимальным участием проца? Чтобы он успевал делать свою основную работу и меньше отвлекался на эту передачу? Может есть какая-то переферия для таких задач? Подскажите куда посмотреть? Частота работа Niosa 100MГц, а данные на SPI1 приходят с частотой 24Мгц.
Пока у меня рисуется стандартный вариант: по прерыванию на прием по SPI1 я через DMA записываю поступившие данные в память, как только пришло необходимое кол-во байт, выставляю флаг. И в основном цикле программы по этому флагу отправляю эти данные в SPI2.
-
Добрый день, уважаемые!Помогите советом, пожалуйста! Хочу добиться чтобы данные из он-чип мемори через 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 у меня получилось передать - все хорошо, а тут не понимаю, что не так...
-
Что имеется в виду под "как есть"? С помощью Wiznet-а, да и вообще, можно работать с тремя основными типами сообщений - RAW, TCP и UDP. Для небольшого канала управления лучше всего подходит TCP, - назначаете порт, пишите структуру пакета с нужными битовыми полями и можно работать.
Предварительно, работать буду с сообщениями UDP. То есть я правильно понимаю, что мне достаточно работать с UDP пакетами, а прикладной уровень вообще не задействовать? Я еще не углублялась в даташит на Wiznetовскую микросхему, поэтому представляю обмен пакетами следующим образом (прошу, поправить, если не так)) ): например я хочу отправить команду ХХ12345, для этого : пишу ip адрес получателя, порт получателя и подсчитываю кол-во байт моей команды - записываю и пишу саму команду. Этот пакет и отправляю. Правильно?
-
Уважаемые, подскажите! Есть задача управлять с компа устройством на плис при помощи Ethernet. Соотвественно, есть определенный набор команд, которые должно понимать устройство и давать определенные ответы на них. Выход в интернет не нужен. Для реализации хочу использовать стек TCP/IP. Причем канальный, сетевой и транспортный уровень будет организован аппаратно при промощи ethernet модуля Wiznet. Внимание вопрос! Что использовать в качестве прикладного уровня для управление устройством? Должна ли я использовать уже стандартные протоколы (есть возможност использовать SNMP) или я могу назначить свой порт и отправлять необходимые мне команды "как есть"? Или это не так просто, как я представляю?
-
строго говоря 3
нажата
не нажата
выбрана
на самом деле зависит от вида вашего курсора, если кнопки - стрелки, или стрелочка с внешним управлением как у мышки, строго нужно состояние выбрано, если это точь скрин, то можно обойтись. Строго говоря в нем тоже есть это состояние. Когда вы палец опустили, но не двигаете, кнопка в выбранном состояние, если вы уведете палец - выбор снимается, возвращаете опять выбирается, отпускаете на кнопке она нажимается и отпускается. Но часто выбранное состояние на нажатое меняют, а клик вообще не анемируют.
Возьмите эклипс для приложений на андроиде, он бесплатный, и в нем можно для заданного разрешения нарисовать интерфейс, а также поглядеть как отрабатываются(отрисовываются) нажатия и прочее, незачем весь велосипед изобретать, надо делать только самое интересное - красивые педальки:)
Спасибо! Буду пробовать!
-
То есть я правильно понимаю, что для одной кнопки у меня должно быть две картинки: 1ая - это когда кнопка в нормальном положении, и 2ая - когда в нажатом (ну там затемненная или с тенью) ?
-
интерфейс из готовых кнопок все равно выглядит ушлепочно... Нормальный все равно рисовать придется, и лучше в каком-то хорошем редакторе и кем то, кто в этом разбирающемся. Я для андроида делал форму в 3D - max, нарисовал, разместил, порезал на элементы, прописал действия на нажатия и всех делов...
Из бесплатностей он вроде на сколько то дней бесплатный)... А можно взять студию или еще чего-то виндовое, да хоть те же стандартные ее формы, и их интерфейс содрать, он всего лишь картинка, с реакциями на нажатия
Ага, значит так тоже делают! У меня были мысли о подобном, но, закрались сомнения, что это как-то "непрофессионально")) Спасибо, Golikov A., за конкретный пример. Что-то подобное и хотелось услышать)))
Посмотрите uC/GUI от Micrium: http://micrium.com/rtos/ucgui/overview/SpectraWorks смотрели? В своих ниосовских китах Altera использовала именно это. Можно скачать триальную версию : http://www.monotypeimaging.com/ProductsSer...ectraworks.aspx, ну а из триала есть вероятность сделать "не триал" :)
Дело в том, что когда триал установишь, для запуска он просит триальный ключ, который нужно попросить, послав им свой регистрационный номер программы. Я написала им, но ответа не получила. В итоге даже триальную версию не могу посмотреть). Вот с Portable Embedded GUI Toolkit (PEG) дело обстоит также, но мне ответили и выслали ключик пробный, сейчас еще и пытаются со мной переписываться, спрашивают как дела)))
-
Этот обзор смотрели : http://makesystem.net/?p=457 ?
Да, конечно. Но, там. как уже было сказано, большая часть платная, часть не подходит по параметрам. больше всех пока симпатизирует Visual TFT как построитель, но он не поддерживает моего расширения 600x480. Я так понимаю, что найти вещь, которая
будет подходить по всем требованиям (мк/расширение/бесплатность/красивость и т.д) очень трудно и все равно придется, как говориться, "допиливать" под себя.
Спасибо, Дмитрий, обращу более пристальное внимание на Microchip - сразу как-то отбросила, т.к. искала для nios )
-
Добрый день, всем форумчанам! Прошу помочь советом и своим опытом!) Дело в том, что мне нужно нарисовать пользовательский графический интерфейс на 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? Не могу разобраться. Скриншоты и файлы программы прилагаю.
-
Спасибо! Почитаю. Подскажите ещ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? Не могу разобраться. Скриншоты и файлы программы прилагаю.
-
Здравствуйте! У меня возникла подобная проблема с 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
-
Память выделить под длинное имя и показать fatfs где эта память.
skripach, с памятью ясно, а как показать где эта память? )Можно, по подробнее.
Два NIOSa с разными шинами
в Системы на ПЛИС - System on a Programmable Chip (SoPC)
Опубликовано · Изменено пользователем prussta · Пожаловаться
Попробовали с en-valb на простом проекте, все отлично заработало. Внесли аналогичные изменения в основной проект, пока не работает, что то slave как то не корректно загружается, то ли bootloader, то ли qsys, завтра продолжим разбираться.