xxxmatrixxx 0 8 мая, 2021 Опубликовано 8 мая, 2021 · Жалоба Здравствуйте, уважаемые форумчане Возникла такая задача, чтобы 2е Плис Cyclone4, которые разнесены по 2м модулям, объединить в JTAG цепочку и программировать их как с внешнего разъема, так и с микросхемы FT4232HL к этой микросхеме будут в сумме подключены: 1. шина ADBUS - JTAG 2х ПЛИС Сyclone4 2. шина BDBUS - JTAG от STM32, переключаемый с UART от спутника 3. шина СDBUS - UART от STM32 4. шина DDBUS - UART от IMX6 схему структурную я прилагаю вопросы следующие: 1. так как я с этой микросхемой FT4232HL не работал раньше, предполагается, что при подключении и конфигурации ее через FtProg я буду видеть 4 интерфейса на компе - 2а jtag, на которые я могу ставить свои отдельные дрова, и 2а виртуальных uart, так ли это? 2. могу ли я управлять gpioL на adbus и bdbus, когда они сконфигурированы как jtag, при этом, если я сконфигурирую порт, как uart они мне будут не доступны? 3. пробовал ли кто-нибудь объединять ПЛИС и STM32 в JTAG цепочку, какие были проблемы с таким подключением, в частности интересует вопрос с драйверами, т.к. на одном jtag висят и плис и stm32, которые требуют своих драйверов, будут ли они работать одновременно, либо хотя бы по раздельности(поставил драйвер для usb-blaster, то работаешь с Плис, поставил драйвер jlink, то работаешь с stm32? 4. так как у меня стоят и стандартные внешние разъемы для отдельной возможности программирования и Плис и Stm32, при этом сигналы Jtag у меня завязаны с FT4232HL, то не подсадит ли мне эта микросхема сигналы JTAG, если к ней со стороны Usb ничего подключено не будет, а я буду прошивать только через внешний соединитель выкладываю структурную схему, чтобы было понятнее о чем я говорю.. спасибо, буду рад любой помощи KOMPAS - JTAG_UART_BMS2.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 31 8 мая, 2021 Опубликовано 8 мая, 2021 · Жалоба 7 часов назад, xxxmatrixxx сказал: 1. так как я с этой микросхемой FT4232HL не работал раньше, предполагается, что при подключении и конфигурации ее через FtProg я буду видеть 4 интерфейса на компе - 2а jtag, на которые я могу ставить свои отдельные дрова, и 2а виртуальных uart, так ли это? Да, при соответствующих настройках и программировании EEPROM подключенной к FT4232 через FT_Prog. 7 часов назад, xxxmatrixxx сказал: 2. могу ли я управлять gpioL на adbus и bdbus, когда они сконфигурированы как jtag Сможете. Но только из своего софта. Стандартным - маловероятно... 7 часов назад, xxxmatrixxx сказал: если я сконфигурирую порт, как uart они мне будут не доступны? Не доступны. Как GPIO они доступны только в режиме MPSSE. В режиме UART это DTR, DSR, DCD и RI. 7 часов назад, xxxmatrixxx сказал: 3. пробовал ли кто-нибудь объединять ПЛИС и STM32 в JTAG цепочку, какие были проблемы с таким подключением, в частности интересует вопрос с драйверами, т.к. на одном jtag висят и плис и stm32, которые требуют своих драйверов, будут ли они работать одновременно, либо хотя бы по раздельности(поставил драйвер для usb-blaster, то работаешь с Плис, поставил драйвер jlink, то работаешь с stm32? STM32 в общую с ПЛИС цепочку не подключал. Только Xilinx и AVR32. В ПО Xilinx и Atmel Studio можно задать сколько JTAG устройств в цепочке до программируемой микросхемы и сколько после. Если такое в Ква и Кубе задается, то проблем быть не должно, но нужно пробовать... Но это справедливо только про общий JTAG разъем к которому подключались по очереди кабель Xilinx и Atmel. С FT оба ПО должны поддерживать работу через него. Не уверен, что такое возможно без постоянной перешивки EEPROM у FT. И еще у FT4232 два JTAG. Стандартные драйвера Xilinx (Digilent) есть только для FT2232H и они работают только с первым JTAG. Со вторым, кажется, можно заставить работать только запретив первый порт или переключив его в UART. 6 часов назад, xxxmatrixxx сказал: 4. так как у меня стоят и стандартные внешние разъемы для отдельной возможности программирования и Плис и Stm32, при этом сигналы Jtag у меня завязаны с FT4232HL, то не подсадит ли мне эта микросхема сигналы JTAG, если к ней со стороны Usb ничего подключено не будет, а я буду прошивать только через внешний соединитель Если вы подключите Reset FT через делитель к VBUS USB разъема так, чтобы FT была в сбросе при отключенном кабеле, то согласно AN_184 FTDI Device Input Output Pin States выводы JTAG у FT будут в TriSt-PU. Но лучше поставить мультиплексор типа SN74LVC257A. Одна группа входов от разъема, другая от FT. Он заодно буферизиует сигналы с разъема (защитит ваши ПЛИС от статики). И еще. Сигналы TCK и TMS для каждого потребителя лучше пропустить через свой буфер с последовательным резистором для согласования. Особенно при передаче на другую плату. Управление мультиплексором можно от VBUS USB разъема, а лучше переключаться на разъем программирования при подключении программатора. У Xilinx Platform Cable USB II кабеля есть специальный сигнал, который становится нулем при обращении к JTAG и единицей в Idle режиме. Не знаю есть ли что подобное у Altera. Если нет, то можно на плате один из земляных контактов JTAG разъема подключить к PullUp и на вход управления мультиплексора. При подключенном программаторе этот сигнал заземлится через программатор и подключит разъем к JTAG цепочке, а при отключенном к FT. Вместо мультиплексора можно использовать TriState буфер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 8 мая, 2021 Опубликовано 8 мая, 2021 · Жалоба 7 minutes ago, Zig said: Да, при соответствующих настройках и программировании EEPROM подключенной к FT4232 через FT_Prog. Сможете. Но только из своего софта. Стандартным - маловероятно... Не доступны. Как GPIO они доступны только в режиме MPSSE. В режиме UART это DTR, DSR, DCD и RI. STM32 в общую с ПЛИС цепочку не подключал. Только Xilinx и AVR32. В ПО Xilinx и Atmel Studio можно задать сколько JTAG устройств в цепочке до программируемой микросхемы и сколько после. Если такое в Ква и Кубе задается, то проблем быть не должно, но нужно пробовать... Но это справедливо только про общий JTAG разъем к которому подключались по очереди кабель Xilinx и Atmel. С FT оба ПО должны поддерживать работу через него. Не уверен, что такое возможно без постоянной перешивки EEPROM у FT. И еще у FT4232 два JTAG. Стандартные драйвера Xilinx (Digilent) есть только для FT2232H и они работают только с первым JTAG. Со вторым, кажется, можно заставить работать только запретив первый порт или переключив его в UART. Если вы подключите Reset FT через делитель к VBUS USB разъема так, чтобы FT была в сбросе при отключенном кабеле, то согласно AN_184 FTDI Device Input Output Pin States выводы JTAG у FT будут в TriSt-PU. Но лучше поставить мультиплексор типа SN74LVC257A. Одна группа входов от разъема, другая от FT. Он заодно буферизиует сигналы с разъема (защитит ваши ПЛИС от статики). И еще. Сигналы TCK и TMS для каждого потребителя лучше пропустить через свой буфер с последовательным резистором для согласования. Особенно при передаче на другую плату. Управление мультиплексором можно от VBUS USB разъема, а лучше переключаться на разъем программирования при подключении программатора. У Xilinx Platform Cable USB II кабеля есть специальный сигнал, который становится нулем при обращении к JTAG и единицей в Idle режиме. Не знаю есть ли что подобное у Altera. Если нет, то можно на плате один из земляных контактов JTAG разъема подключить к PullUp и на вход управления мультиплексора. При подключенном программаторе этот сигнал заземлится через программатор и подключит разъем к JTAG цепочке, а при отключенном к FT. Вместо мультиплексора можно использовать TriState буфер. Огромное спасибо за подробный ответ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 31 8 мая, 2021 Опубликовано 8 мая, 2021 · Жалоба Bypass по JTAG неподключенного ПВИ (по вышей схеме) удобно делать как рекомендуют в FMC. Поставить буфер с TriState выходом, например SN74LVC1G126. На вход A - TDO от FPGA модуля ПВВ, выход - к входу TDO FT и TDO разъема. Управление OE к PullUp заземляемое в модуле ПВИ при подключении модуля (PRSNT_L). Тогда не нужно будет управление ADBUS_IO0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба сейчас пришел ft4232h mini module, запустил программу FT_Prog, но я не увидел там возможность переключение портов A и В в режим MPSE(JTAG), да и конфигурацию каждого порта и его пинов в зависимости от режимов Как все таки возможно сконфигурировать отдельные порты FT4232 через FT_Prog, либо это невозможно? Какие пути есть для конфигурации портов A и B в JTAG, портов C и D в UART? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 31 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба Driver D2XX это и есть MPSSE. Каждый из двух MPSSE (порт A и B) может быть из программы пользователя сконфигурирован как JTAG, I2C или SPI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба 13 minutes ago, Zig said: Driver D2XX это и есть MPSSE. Каждый из двух MPSSE (порт A и B) может быть из программы пользователя сконфигурирован как JTAG, I2C или SPI. после конфигурации данных портов через программу, взаимодействующую с библиотекой D2xx, на JTAG, у меня порт А и В сконфигурируются и определятся через Диспетчер устройств, как устройства, к которым я смогу подключить драйвер USB-Blaster, я правильно понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 31 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба Почти так. В диспетчере устройств в пункте "Контроллеры последовательной универсальной шины USB" у вас так и останется четыре "USB Serial Converter A, B, C, D" (если вы какой либо из них не отключили в Windows). В диспетчере устройств в пункте "Порты COM и LPT" порты C и D сконфигурируются как "USB Serial Port (COMnn)". В диспетчере устройств порты A и B нигде не будут видны, но при включении у вас попросятся установиться драйвера в том числе и на них. И да. После того как вы напишите свою программу по примеру https://ftdichip.com/software-examples/mpsse-projects/ftcjtag-examples/ у вас будут из этой программы доступны два JTAG. Насчет подключения USB-Blaster я не уверен. Вроде в параллельных темах про Digilent и универсальный программатор на FT232 упоминалась поддержка Altera, но поддерживается ли FT4232 я не знаю. Вот темы: Digilent программатор Xilinx Xilinx JTAG на базе FTDI USB программатор на ft2232h "Digilent JTAG-HS2" для Xilinx и программатор "MBFTDI" для Altera Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 31 мая, 2021 Опубликовано 31 мая, 2021 · Жалоба огромное спасибо, буду читать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 1 июня, 2021 Опубликовано 1 июня, 2021 · Жалоба On 5/31/2021 at 8:56 PM, xxxmatrixxx said: огромное спасибо, буду читать Здесь многое определяется тем, какие программные инструменты вы планируете использовать для работы с FPGA и STM32. Для FPGA понятно - это Quartus, а для STM32 какой тулчейн планируете использовать? Quartus умеет работать через USB-Blaster, а он построен на базе FT245 (никак не FT4232). Для STM32 вариантов больше, и среди них есть подключения через канал FT232H/FT2232 (и, наверное, FT4232), но и тут нужно вначале проверить, поддерживает ли ваша среда разработки такой способ. В общем, если для вас критично все вышеописанное подключать через FT4232, то не избежать написания собственного прослоечного софта (драйвер + DLL), как минимум, для подключения программы разработки FPGA (Quartus) к их JTAG. Это сложный и долгий путь. Почему-то мне кажется, что это не входит в ваши планы. Чтобы избежать этих проблем, я бы вывел все JTAG-сигналы на 1 или 2 разъема (цепочка FPGA_1-FPGA_2-STM32, или цепочка FPGA_1-FPGA_2 и отдельно разъем для STM32). Чтобы подостлать соломки, можно сделать состав этих цепочек конфигурируемым и перестраиваемым (переключателями или джамперами). К этим разъемам можно будет подключать те внешние JTAG-адаптеры, с которыми умеют работать ваши программные инструменты FPGA/STM32. 2x UART можно подключить к FT2232 - здесь все достаточно стандартно. P.S. Если все-таки очень нужно иметь JTAG-адаптер, интегрированный на плату, то придется реализовать свой USB-Blaster. Это вполне реально, т.к. алгоритм его работы полностью известен на сегодняшний день. Типовые схемы реализации такие: 1) классическая - {FT245 + CPLD(EPM3064)}; 2) микроконтроллерная - на PIC'е или AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 5 июня, 2021 Опубликовано 5 июня, 2021 · Жалоба для конфигурации порта А Ft4232 Mini Module я использовал драйвер марсохода, но долго парился с ним из-за того, что у меня установленно 2 Quartus- 18.1 и 13.1, причем последнюю установил именно 13.1, в итоге драйвер скинул в папку 18.1, а jtag server был запущен от 13.1 - поэтому не находился устройство mfbti 2.0, пока не положил в 13.1 папку этот драйвер кстати, через этот драйвер получилось прошить Плис, сигналтаб запустить, но вот tcl console не работает, виснет при посылке 1й команды я хотел порт B настроить и использовать для прошивки STM32F103 через JTAG с использованием JLINK под Eclipse, но пока нашел что-то ясное по описанию только для openocd вторая проблема у меня еще в том, что мне необходимо управлять оставшимися портами ввода/вывода порта А и В, т.е. переключать их во время, например, работы драйвера марсохода mfbti 2.0 (вообще в моем случае допустимо изменять конфигурацию этих портов ввода/вывода до начала работы драйвера) пока с конфигурацией портов ввода/вывода и реализацией драйвера для работы через JTAG(либо определения его через существующие средства) по JLINK не разобрался Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 6 июня, 2021 Опубликовано 6 июня, 2021 · Жалоба Похоже, простых путей мы не ищем.... 16 hours ago, xxxmatrixxx said: для конфигурации порта А Ft4232 Mini Module я использовал драйвер марсохода, но долго парился с ним из-за того, что у меня установленно 2 Quartus- 18.1 и 13.1, причем последнюю установил именно 13.1, в итоге драйвер скинул в папку 18.1, а jtag server был запущен от 13.1 - поэтому не находился устройство mfbti 2.0, пока не положил в 13.1 папку этот драйвер кстати, через этот драйвер получилось прошить Плис, сигналтаб запустить, но вот tcl console не работает, виснет при посылке 1й команды Marsohod mfbti - это и есть пример того прослоечного софта, о котором я говорил. О его свойствах можете судить сами. Я не говорю уже, что это решение только под Windows. 16 hours ago, xxxmatrixxx said: я хотел порт B настроить и использовать для прошивки STM32F103 через JTAG с использованием JLINK под Eclipse, но пока нашел что-то ясное по описанию только для openocd Что-то я не понял - зачем здесь кузнец JLINK? Ведь канал B FTDI-ки и будет играть роль JTAG-адаптера (т.е., то же, что делает JLINK). OpenOCD умеет подключаться к FTDI устройствам, там есть примеры конфигурирования. Не помню насчет FT4232, но касательно всего более младшего - точно есть. А Eclipse работает через OpenOCD. 16 hours ago, xxxmatrixxx said: вторая проблема у меня еще в том, что мне необходимо управлять оставшимися портами ввода/вывода порта А и В, т.е. переключать их во время, например, работы драйвера марсохода mfbti 2.0 (вообще в моем случае допустимо изменять конфигурацию этих портов ввода/вывода до начала работы драйвера) Порт А у вас занимает mfbti, и если он ничего такого не позволяет, то дополнительно ничем поуправлять на этом порту не выйдет. Выход только такой - написать свой аналог mfdti, но с нужным вам функционалом. Порт B будет занят OpenOCD, и здесь ситуация похожая, с той лишь разницей, что исходники последнего открытые и прикрутить свое легче. 16 hours ago, xxxmatrixxx said: пока с конфигурацией портов ввода/вывода и реализацией драйвера для работы через JTAG(либо определения его через существующие средства) по JLINK не разобрался См. выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xxxmatrixxx 0 17 июня, 2021 Опубликовано 17 июня, 2021 (изменено) · Жалоба сделал в итоге, как я хотел, опишу, чтобы у других не вызывало трудностей настройка FT4232H: 1. порт A настроил для работы по JTAG с использованием драйвера от Марсохода(https://marsohod.org/prodmbftdi/mbftdiq2drv), сделал именно так, как описано, программатор нашелся в Quartus Но так как у меня стояли 2е версии Quartus(18.1.1 и 13.1, причем последнюю ставил 13.1), то не учел, что Jtag Server запускается той версии Quartus, которая была поставлена последней, т.е. драйвер надо переносить в папки Quartus 13.1, тогда все увидится, у меня же был закинут в папку только 18.1.1, что по понятным причинам не обнаруживался... 2. настроил 2й порт для работы через OpenOCD с STM32F103 через JTAG, делал, как описано вот здесь https://marsohod.org/projects/proekty-dlya-platy-marsokhod3/mipsfpga/365-m3-mipsfpga-gdb и http://microsin.net/programming/arm/getting-started-openocd-with-ft2232h-for-swd-debugging.html скачал новую скомпилированную версию OpenOCD, написал скрипт ft4232h-jtag-portb.cfg: # # FTDI MiniModule # # http://www.ftdichip.com/Support/Documents/DataSheets/Modules/DS_FT4232H_Mini_Module.pdf # # -f \interface\jlink.cfg -f \target\stm32f1x.cfg # -f \interface\ftdi\ft4232h-jtag-portb.cfg -f \target\stm32f1x.cfg adapter driver ftdi transport select jtag ftdi_vid_pid 0x0403 0x6011 ftdi_channel 1 adapter speed 1000 #Config Command: ftdi_layout_init data direction #Specifies the initial values of the FTDI GPIO data and direction registers. #Each value is a 16-bit number corresponding to the concatenation of the high and low FTDI GPIO registers. #The values should be selected based on the schematics of the adapter, such that all signals are set to safe levels with minimal impact on the target system. #Avoid floating inputs, conflicting outputs and initially asserted reset signals. # Bit MPSSE FT4232 JTAG Type Description # Bit0 TCK BDBUS0 TCK Out Clock Signal Output # Bit1 TDI BDBUS1 TDI Out Serial Data Out # Bit2 TDO BDBUS2 TDO In Serial Data In # Bit3 TMS BDBUS3 TMS Out Select Signal Out # Bit4 GPIOL0 BDBUS4 nTRST In/Out General Purpose I/O # Bit5 GPIOL1 BDBUS5 SW_PORTA In/Out General Purpose I/O # Bit6 GPIOL2 BDBUS6 SW_PORTB In/Out General Purpose I/O # data MSB..LSB direction (1:out) MSB..LSB( 0 - input, 1 - output) # 0000'0000'0XX1'0000 0000'0000'0111'1011 ftdi_layout_init 0x0038 0x007b ftdi_layout_signal nTRST -ndata 0x0010 #SW_PORTA=0 => Jtag 2е ПЛИС #SW_PORTA=1 => Jtag 1 ПЛИС(ПВВ) #SW_PORTB=0 => Jtag STM32 #SW_PORTB=1 => не допустимо, т.к. подключен будет UART Спутника и разместил его в папке \interface\ftdi\ в данном пакете. для старта его из Eclipse необходимо в настройках запуска отладки через OpenOCD вбить: -f \interface\ftdi\ft4232h-jtag-portb.cfg -f \target\stm32f1x.cfg 3. остальные порты не менял, они у меня как UART задействованы Отладил все на FT4232H MiniModule, пока все заработало, перенес порты, определяющие конфигурацию переключателей, с порта А на порт В, т.к. там они мне доступны будут через OpenOCD, а вот через драйвер от Марсохода нет... еще раз всем спасибо за помощь, надеюсь кому-нибудь эта информация пригодится Изменено 17 июня, 2021 пользователем xxxmatrixxx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться