среда, 5 августа 2015 г.

Удаленный прошивальщик ПЛИС Xilinx по сети TCP/IP

Разработчику нестандартного железа, так или иначе, не приходится сидеть на месте, отладка на объекте (удаленной АРМ) - де-факто краеугольный камень ввода оборудования в эксплуатацию. По роду своей деятельности, моя работа завязана на стыке аналоговой и цифровой электроники, тут хватает и программерских и АСУ-шных, и чисто инженерных прикладных задач, приходится охватывать буквально все. Вот и на сей раз стендовое испытательное оборудование оказалось не на расстоянии "вытянутой руки", а каждый раз звонить-бегать-просить "человечка на том конце" перепрошить ПЛИС просто стало надоедать. Усугубляется еще все тем, что КИП-овцев еще этому надо сперва обучить-показать, да и утилита-прошивальщик "IMPACT" не поддерживает консольный режим (лицензионное ПО Xilinx специфичное по своей сути и закрытое). В принципе, вопрос решается классически - удаленным контролем типа Радмин, VNC, тим-вьювер и пр., благо есть сеть. Однако и тут "лень-матушка" - телодвижений мышкой многовато: это ж надо запустить утилиту программирования, выбрать файл прошивки, зайти в меню, выбрать вид операции, выполнить действие и закрыть утилиту. А так хочется: скинул модифицированный файл прошивки в сетевую шару, нажал кнопочку в браузере, оно и прошилось и не надо следить за тем закрыто там оно или нет, не надо никого беспокоить и прочие плюшки. Сказано - сделано...
 

Данный TCP-сервер осуществляет удаленное управление JTAG-программатором (LPT or USB) и прошивку CPLD фирмы Xilinx посредством трансляции команд через утилиту _IMPACT. Разработан как методический пример в рамках контроля стендовой аппаратуры.



Cистемные требования и зависимости
  1. Win32/64 (NT/2003/XP/7/8).
  2. Требуется наличие сети между машинами.
  3. JTAG.Xilinx программатор на LPT или USB.
  4. Установленный пакет Xilinx Foundation 3.1 или 4.1 (выше не проверялось, да и в ISE другая утилита).
  5. Cобственно, сама CPLD с выведенным JTAG и поданным питанием для измывательств.
Приложение построено по двухуровневой архитектуре. Предпосылкой разработки послужил удаленный WEB-сервер (верхний уровень) для контроля и управления COM-портом, виртуальным или физическим, так что мне осталось лишь повесить второй поток на следующий порт (в данном случае 5002) и создать обертку (нижний уровень) по контролю за прошивальщиком в виде DLL-ки (в приложенном архиве 'remote_impact.dll'). Данная DLL эмулирует действия пользователя в гуевой оболочке прошивальщика (запускает процесс с ожиданием подгрузки файла прошивки, выводит окно прошивальщика на передний план, определяет координаты окна, тыкает мышой в центр графического отображения файла прошивки для активации менюшки и шлет последовательные нажатия клавиатурных клавиш для перехода и выбора нужного пункта меню), в общем, ничего из ряда вон выходящего. Перед каждым запуском новой операции процесс 'прошивальщика' убивается, дабы исключить разного рода конфликты и автоматизировать весь процесс. Таким образом, процессы стирания, коннекта, прошивки, верификации и закрытия окна сводятся к одной команде верхнего уровня.

ВОЗМОЖНОСТИ
  1. Указание пути и имени файла для прошивки через браузер.
  2. Операции записи, верификации, очистки ПЛИС.
  3. Операции автоконнекта к кабелю, сброса кабеля.
  4. Принудительное удаленное закрытие 'прошивальщика'.
ПОРЯДОК ИСПОЛЬЗОВАНИЯ
  1. Подключите кабель программирования (JTAG.Xilinx программатор) к ПЛИС.
  2. Подайте питание.
  3. Убедитесь в корректной инсталляции пакета Xilinx на удаленной машине и наличия расшаренной папки для скидывания прошивок.
  4. Запустите WEB-сервер удаленного прошивальщика (на возможный запрос брандмауэра ОС о разблокировании приложения ответьте утвердительно).
  5. Запустите браузер на вашем рабочем месте и введите в адресную строку "IP удаленной машины:5002".
  6. Укажите полный абсолютный путь к файлу прошивки, включая сам файл, если они находятся не в каталоге прошивальщика 'remote_impact'.
  7. Выберите одну из 7-ти доступных операций (жмакните по кнопке).
cкачать

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.