pesoshin
Участник-
Постов
51 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о pesoshin
-
Звание
Участник
- День рождения 14.05.1988
Контакты
-
Сайт
Array
-
ICQ
Array
-
ПК и GPIO-интерфейс
pesoshin ответил pesoshin тема в Интерфейсы
_pv спасибо за действительно интересный подход kovigor необходимости нет, да и об управлении объектом речь не идет. Внешний объект - два концевых выключателя, которые в процессе эксперимента то включают, то выключают. Интерфейс на ПК - 2 линии, чтобы их "входы" запитать, 2 линии, чтобы посмотреть, есть ли сигналы с "выходов", вся остальная логика - графика, логика эксперимента на ПК. Если интересно, могу в личку скинуть о чем идет речь :-) Мне кажется, что ответ на свой вопрос я уже более чем получил, спасибо всем :-) -
ПК и GPIO-интерфейс
pesoshin ответил pesoshin тема в Интерфейсы
Про скорости - входной сигнал опрашивается не чаще раза в 1 мс (f <= 1000 Гц), при этом первый фронт на одной из линий хотелось бы поймать максимально быстро. А разве можно управлять линиями последовательного порта ПК на манер GPIO (а как?)? Это что-то вроде bitbang mode у FT232RL? -
ПК и GPIO-интерфейс
pesoshin ответил pesoshin тема в Интерфейсы
спасибо за ответ! Видимо, действительно, штатной возможности у ПК нет (на electronics.stackexchange.com ответили то же самое). Наверно остановлюсь на МК или покупном чем-нибудь вроде http://www.mccdaq.com/pci-data-acquisition...O24-Series.aspx -
ПК и GPIO-интерфейс
pesoshin опубликовал тема в Интерфейсы
Доброго времени суток! Возможно ли использовать стандартный персональный компьютер в качестве GPIO-контроллера? Хочу подключить к нему всего 4 линии, на 2 из них подать высокий логический уровень, и 2 другие в программе опрашивать на наличие сигнала. Нужен ли в данном случае нестандартный контроллер (покупной, разрабатываемый) или он уже есть в составе ПК (если да, как к нему подключиться)? -
Так я уже и насторожился, посмотрите, об этом в ссылке приведенной написано http://www.xilinx.com/support/answers/30878.htm
-
Это так и есть. Только я поясню еще раз - при включении питания схемы - код с malloc/free выполняется нормально, а после сброса - тот же самый код - запускается сначала и уже падает в местах вызова malloc (возвращает NULL). Linker-скриптом сегменты кода, стека и кучи распределяются по блочной памяти ПЛИС и внешней оперативной. Следовательно это проблема не в коде, а где-то выше - на уровне bsp или драйверов Xilinx'а. Xilinx вроде бы знает об этой проблеме http://www.xilinx.com/support/answers/30878.htm, только оба описанных метода выглядят как страшнейшие хаки. Потому и спрашиваю, можно ли это сделать как-то лучше. AVR Да, это очень похоже на правду. Как посмотреть, не подскажите?
-
malloc в Xilinx SDK
pesoshin опубликовал тема в Системы на ПЛИС - System on a Programmable Chip (SoPC)
EDK-проект для Xilinx Spartan 6. В C++ коде часть классов/структур размещается в куче динамически через malloc(). Куча и стек лежат во внешней DDR2, код - в брамах (можно вынести тоже в оперативку). Проблема в следующем: После сброса системы (или нескольких) код выполняется с начала, однако вызовы malloc возвращают NULL. Как вы это обычно лечите? -
никто не сталкивался? :(
-
Возможно. При создании МПС в EDK - вы создаете элемент system верхнего уровня. Порты этого элемента мапите на ноги ПЛИС и на основе его создаете прошивку. Этот же элемент можно использовать в другом ISE-проекте, в котором верхним уровнем будет другой модуль, написанный, например, на VHDL. В этом случае в EDK-проект добавляются некоторые настройки, которые диктуют Xilinx-инструментам синтезировать МПС уже под управлением ISE proj nav, а не XPS. (это ограничение можно снять в дальнейшем руками правкой xmp-файла). Тут уже, на мой взгляд, больше вопрос проектировщика из разряда про "курицу и яйцо" и вопрос комфортности разработки. Инструментарий в ISE более развит - можно прямо из него вызвать timing analyzer, planahead и т.д., однако по части интеграции sw+hw в ISE-проекте верхнего уровня у меня возникали проблемы - не получалось без полной перегенерации прошивки обновить sw-часть системы.
-
AVR Давайте я вам скриншоты покажу как elf выбирается у меня в XPS. Контекстное меню может не работать, если Xilinx ISE криво установлен. Я когда на убунту запускал EDK - постоянно смотрел в консоль - он по многим шагам выдавал неадекватные ошибки, вроде вручную установить в скрипте запуска EDK локаль, пару глобальных переменных и т.д. 3 проекта - это экспортированный hw, BSP и сам application. Это нормально. Для тестирования Вы можете и из SDK код hw+sw в плату загружать - там есть кнопка Program FPGA, там выбираете какой sw код прописать в BRAMы. По умолчанию - это bootloop.
-
AVR 1) Есть некоторая интеграция между XPS и EDK - состоит в экспорте файлов "железа" в EDK. То есть запускать EDK отдельно можно, только обновленные файлы железа, соответствующие системе, все равно придется экспортировать каждый раз через XPS. Я лично предпочитаю открыть XPS, нажать на Export to SDK, и уже быть уверенным, что system.bit, с которым работает SDK, у меня всегда актуальный. 2) Там где вы видите вкладку Elf files - можно через контекстное меню, вызываемое правой кнопкой мыши, назначить elf-файлы, которые загружаются в BRAM (для реализации и для симуляции). После этого нажимаете кнопку Init BRAMs (или Update Bitstream в 13.3) и вуаля - появляется файл implementation/download.bit - состоящий из аппаратной прошивки с BRAM'ами, заполненными программным кодом. 3) Мое мнение в том, что Xilinx считает многие моменты очевидными и не дает на все прямые руководства к действию :) 4) Скорее всего все установлено
-
Проект для Microblaze, к шине PLB подключен контроллер прерываний - XIntc. Код приложения - на C++, BSP - standalone. Не могу понять, чем вызвано следующее поведение: РАБОТАЕТ: 1. В коде main.cpp создаю объект XIntc, делаю XIntc_Initialize, затем XIntc_Start(XIN_REAL_MODE). Обе операции отрабатывают со статусом XST_SUCCESS. 2. Кнопкой делаю сброс системы. В начале кода main.cpp сделан хак, описанный в http://www.xilinx.com/support/answers/30878.htm по способу 2. Вместе с хаком обе операции из п.1 отрабатывают с XST_SUCCESS. НЕ РАБОТАЕТ: 1. Рефакторю код - выношу XIntc как член нового класса Application (application.h/application.cpp). 2. Добавляю операции из п.1 "РАБОТАЕТ" в файл application.cpp. При выполнении - XIntc_Initialize (или XIntc_Start) первый раз выполняются нормально, а после сброса - падают со статусом XST_DEVICE_IS_STARTED. 3. Добавление хака из п.2 "РАБОТАЕТ" - не влияет на поведение предыдущего пункта. В чем проблема? XIntc нельзя безболезненно использовать, если хранить объект где-то кроме стека?
-
Zwerg_nase То, что нужно. Благодарю
-
а вы это через coregen делали? Если да, то подобных проблем (в т.ч. описанных Grumbler_2002) не должно быть
-
Работа с EDID/DDC на ПЛИС
pesoshin опубликовал тема в Работаем с ПЛИС, области применения, выбор
Проект для Spartan 6 на отладочнике Digilent Atlys ( http://www.digilentinc.com/Products/Detail...&Prod=ATLYS ), выводит изображение на монитор через HDMI-порт. Пины SCL/SDA подключены к ПЛИС через TMDS-буффер. Не могу найти информацию, как происходит коммуникация по EDID/DDC стандарту (в какой момент начинается передача, периодична ли она, как ей можно управлять). При этом сам формат пакетов доступен на сайте VESA. Буду признателен за толковое разъяснение принципов или ссылки на примеры подобных проектов. Заранее спасибо!