Перейти к содержанию
    

prussta

Участник
  • Постов

    28
  • Зарегистрирован

  • Посещение

Весь контент prussta


  1. Попробовали с en-valb на простом проекте, все отлично заработало. Внесли аналогичные изменения в основной проект, пока не работает, что то slave как то не корректно загружается, то ли bootloader, то ли qsys, завтра продолжим разбираться.
  2. Добрый день! Делаю все как по шпаргалке от 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". где эта галка находиться? или она как-то по другому стала называется? Ткните носом, пожалуйста))
  3. Dmitriyspb, да Вы правы, что-то разрабатывать на ПЛИС приходится впервые, поэтому много темных мест)) и спаисбо за советы! да, знаю, я только обзорно знакома с аппаратными языками, поэтому и возникают "новичковые" вопросы) программировать fpga сама не буду(если что). А здесь же хотелось получить альтернативные идеи по общей организации системы, потому что мои идеи не удались. Я так понимаю, что без блока на fpga, организующего прием данных с SPI1 не обойтись, потому что если данные идут постоянно, то программа все время "висит" в обработчике прерывания по приему SPI1 и даже не выходит в основной цикл. ( Это я попробовала при помощи Niosа принимать) Хотя не совсем мне понятно почему так, ведь данные идут с частотой 30 Мгц, а процессор работает на 157МГц. Почему он не успевает выходить в основной цикл? В прерывании только считываю пришедшие данные. Неужели так много занимает это времени....хмм...
  4. Да, подобное и нужно)) контроллер этот как реализовать? написать на аппаратном языке?
  5. Dmitriyspb, а как вы предлагаете с порта SPI1 заполнять FIFO2? Есть варианты его заполнения без участия процессора? Даже если использовать DMA, то получается, что надо при приходе данных в регистр SPI1 нужно вызывать ф-ию alt_dma_rxchan_prepare(...), чтобы DMA передал эти данные в FIFO2 . Можно ли как-нибудь это обойти? В идеале хотелось бы так настроить передачу, чтобы данные приходя в SPI1 сразу бы записывались в FIFO2, и проц при этом не беспокоить.
  6. Ах, вот оно что! Спасибо, Дмитрий, за разъяснения. Я просто не пишу на аппаратных языках, поэтому и забыла про этот вариант и рассматривала стандартные компоненты, которые уже есть. Но теперь все стало понятно. Будем обдумывать этот вариант. :)
  7. Так я и так реализую на fpga, использую софтпроцессор NiosII для управления всей подключенной переферией - SPI, FIFO, DMA и т.д. Делаю на Cyclone III. Или я не так понимаю? Поясните, пожалуйста
  8. я правильно понимаю, что этот блочек это просто небольшая функция, которую будет выполнять тот же NiosII в основном цикле?
  9. Всем доброго времени суток! Подскажите, как лучше организовать систему. Система в целом выглядит так: Есть софт процессор NiosII - он выполняет основные задачи: отвечает на запросы пользователя, принимает какие-то данные, обрабатывает их, выдает ответы и прочее. Также есть два SPI: SPI1 - он принимает данные из вне как только вся система запустилась и SPI2 в который мне нужно эти данные (определенное количество) выплюнуть (этот SPI от Ethernet платки). Получается, что мне нужно постоянно гнать данные из SPI1 в SPI2. Причем, иногда мне нужно в этот поток данных добавлять еще байт своих данных. Как это можно организовать с минимальным участием проца? Чтобы он успевал делать свою основную работу и меньше отвлекался на эту передачу? Может есть какая-то переферия для таких задач? Подскажите куда посмотреть? Частота работа Niosa 100MГц, а данные на SPI1 приходят с частотой 24Мгц. Пока у меня рисуется стандартный вариант: по прерыванию на прием по SPI1 я через DMA записываю поступившие данные в память, как только пришло необходимое кол-во байт, выставляю флаг. И в основном цикле программы по этому флагу отправляю эти данные в SPI2.
  10. Добрый день, уважаемые!Помогите советом, пожалуйста! Хочу добиться чтобы данные из он-чип мемори через 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 у меня получилось передать - все хорошо, а тут не понимаю, что не так...
  11. Предварительно, работать буду с сообщениями UDP. То есть я правильно понимаю, что мне достаточно работать с UDP пакетами, а прикладной уровень вообще не задействовать? Я еще не углублялась в даташит на Wiznetовскую микросхему, поэтому представляю обмен пакетами следующим образом (прошу, поправить, если не так)) ): например я хочу отправить команду ХХ12345, для этого : пишу ip адрес получателя, порт получателя и подсчитываю кол-во байт моей команды - записываю и пишу саму команду. Этот пакет и отправляю. Правильно?
  12. Уважаемые, подскажите! Есть задача управлять с компа устройством на плис при помощи Ethernet. Соотвественно, есть определенный набор команд, которые должно понимать устройство и давать определенные ответы на них. Выход в интернет не нужен. Для реализации хочу использовать стек TCP/IP. Причем канальный, сетевой и транспортный уровень будет организован аппаратно при промощи ethernet модуля Wiznet. Внимание вопрос! Что использовать в качестве прикладного уровня для управление устройством? Должна ли я использовать уже стандартные протоколы (есть возможност использовать SNMP) или я могу назначить свой порт и отправлять необходимые мне команды "как есть"? Или это не так просто, как я представляю?
  13. То есть я правильно понимаю, что для одной кнопки у меня должно быть две картинки: 1ая - это когда кнопка в нормальном положении, и 2ая - когда в нажатом (ну там затемненная или с тенью) ?
  14. Ага, значит так тоже делают! У меня были мысли о подобном, но, закрались сомнения, что это как-то "непрофессионально")) Спасибо, Golikov A., за конкретный пример. Что-то подобное и хотелось услышать))) Дело в том, что когда триал установишь, для запуска он просит триальный ключ, который нужно попросить, послав им свой регистрационный номер программы. Я написала им, но ответа не получила. В итоге даже триальную версию не могу посмотреть). Вот с Portable Embedded GUI Toolkit (PEG) дело обстоит также, но мне ответили и выслали ключик пробный, сейчас еще и пытаются со мной переписываться, спрашивают как дела)))
  15. Да, конечно. Но, там. как уже было сказано, большая часть платная, часть не подходит по параметрам. больше всех пока симпатизирует Visual TFT как построитель, но он не поддерживает моего расширения 600x480. Я так понимаю, что найти вещь, которая будет подходить по всем требованиям (мк/расширение/бесплатность/красивость и т.д) очень трудно и все равно придется, как говориться, "допиливать" под себя. Спасибо, Дмитрий, обращу более пристальное внимание на Microchip - сразу как-то отбросила, т.к. искала для nios )
  16. Добрый день, всем форумчанам! Прошу помочь советом и своим опытом!) Дело в том, что мне нужно нарисовать пользовательский графический интерфейс на TFT индикаторе. Использую niosII. Среда разработки NiosII SBT for Eclips. Просмотрев все доступные материалы по разным GUI посторителям и библиотекам, хочу спросить у опытных в этом деле людей. Как все же нарисовать свой интерфейс: кнопочки, картинки, графики и т.п? Операционки использоваться не будет. Все известные программки - платные. Есть какой-то графический построитель, в котором можно накидать кнопочки на форму и т.д. или все ручками делать придется? Например, есть uCGUIBulider, но с китайского сайта и там все на китайском). Графическая библиотека uc/GUI от segger (она же emWin) тоже встречалась (и такое ощущуение, что она самая ходовая) но постоитель то к ней есть? Как современные разработчики делают ГУЙ на свои гаджеты? Поделитесь опытом! Подобная тема была ранее http://electronix.ru/forum/index.php?showtopic=101694 ,но она так и осталась плохо освещена.
  17. Добрый день! Хочу запустить 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
  18. Спасибо! Почитаю. Подскажите ещe, как можно в Qsys подключить dma controler-> fifo ->pixel converter. Там разные шины. в стандартных компонентах не могу найти подходящего моста. Что посоветуете?
  19. Добрый день! Подскажите, где можно почитать про настрйку проекта в Eclips. (и файлов проекта и bsp). Конкретно меня интересуют Properties. Многоие рекомендуют ставить оптимизацию Os, но не могу найти, где это делать. (я вижу только что можно поставить O0, O1,O2 и т.д ). Также в BSP Editor интересует вкладка Linker Script. Что обозначают там .rodata, .rwdata, .bss, .text, с остальными понятно. И при использовании, например, sdram как распределять что в какой памяти будет находиться? Но даже если я использую sdram, на сколько мне известно, во вкладке main в hal.linker для exeption и interrupt нужно выставить onchip memory. Про жизненоважные настройки проекта хочется узнать подробнее. Как настрить все правильно?
  20. Добрый день! Я еще новичок в освоении ПЛИС. Поэтому прошу помощи у более опытных товарищей) Хочу запустить 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
  21. Здравствуйте! У меня возникла подобная проблема с STR912. Есть рабочий проект (был создан в старой версии keil v.3.53) Там прерывания работают. А если собрать новый проект в новом кейле (пробовала в keil v.4.13 и v.4.53) с этими же файлами проекта, файлами библиотеки, и с тем же стартапом, то прерывания не отрабатываются. Выполняется один раз и все. Прерывания глобально разрешены, настроены, но программа в прерывания больше не заходит. Хитрость с __irq не работает. Не могу понять в чем причина. У кого-нибудь было подобное? Помогите разобраться. Спасибо.
  22. 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
  23. skripach, с памятью ясно, а как показать где эта память? )Можно, по подробнее.
×
×
  • Создать...