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

prussta

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

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

  • Посещение

Репутация

0 Обычный

Информация о prussta

  • Звание
    Участник
    Участник
  • День рождения 05.12.1986

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  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ая - когда в нажатом (ну там затемненная или с тенью) ?
×
×
  • Создать...