Jump to content

    

xxxmatrixxx

Участник
  • Content Count

    111
  • Joined

  • Last visited

Community Reputation

0 Обычный

About xxxmatrixxx

  • Rank
    Частый гость
  • Birthday 05/31/1985

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1423 profile views
  1. сделал в итоге, как я хотел, опишу, чтобы у других не вызывало трудностей настройка 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, а вот через драйвер от Марсохода нет... еще раз всем спасибо за помощь, надеюсь кому-нибудь эта информация пригодится
  2. для конфигурации порта А 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 не разобрался
  3. после конфигурации данных портов через программу, взаимодействующую с библиотекой D2xx, на JTAG, у меня порт А и В сконфигурируются и определятся через Диспетчер устройств, как устройства, к которым я смогу подключить драйвер USB-Blaster, я правильно понимаю?
  4. сейчас пришел ft4232h mini module, запустил программу FT_Prog, но я не увидел там возможность переключение портов A и В в режим MPSE(JTAG), да и конфигурацию каждого порта и его пинов в зависимости от режимов Как все таки возможно сконфигурировать отдельные порты FT4232 через FT_Prog, либо это невозможно? Какие пути есть для конфигурации портов A и B в JTAG, портов C и D в UART?
  5. Здравствуйте, уважаемые форумчане Возникла такая задача, чтобы 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
  6. не могли бы выложить часть схемы, где PHY DP83869 соединена с SFP, и насколько хорошо показала себя эта микросхема(DP83869) в работе на разных скоростях, в том числе и на 1Ггбит/с (были ли ошибки при передачи данных, поддерживаемые пакеты и т.д.) скорее всего я перейду на 1Ггбит/с - вот думаю, какую брать PHY, в этом проекте взяли KSZ8041FTLI потому что уже был опыт работы с ней, но вот только не я писал под нее прошивку и использовались отдельные приемники и передатчики фирмы оптроникс(не SFP модули)...
  7. решил проблему с помощью вот такой схемы: все, что стоит справа от кондеров, находится внутри SFP, поэтому поставил только соотвествуюшие подтяжки к +3.3В и земле
  8. Неужели никто PHY не подключал к SFP модулям??? может скините ссылку на стандартную схему подключения, которая является рабочей???
  9. Здравствуйте, уважаемые форумчане сейчас отлаживаю свой проект под ПЛИС для сетевой карты, где осуществлена связка: ПЛИС(5CGXFC5C6F23I7N, использую TSE, Small MAC 100Мбит/с, MII)<->PHY(KSZ8041FTLI)<->SFP(Optronic TRSF13-20-155LC-3c) я замыкаю через кабель SFP модуль сам на себя (RX на TX) одномодовым кабелем, скорость выставляю 100Мбит/с затем через tcl скрипт в System Console Quartus вкл передатчик SFP, настраиваю PHY и МАС, генерирую пакет(записываю его во внутреннюю память, а затем через MSGDMA контроллер передаю пакет через TSE) так вот в итоге получается так: 1. линк устанавливается 2. через Signaltab(стробирование идет по ETH0_TX_CLK) я вижу пакет, уходящий на сторону PHY 3. по приему я вижу кучу ошибок если сделать вкл Loopback на PHY, то видно, что транзакция передача-прием осуществляется абсолютно верно первое мое предположение, что неверно сделано подключение SFP модуля к PHY, т.к. Loopback PHY работает корректно, вот электрика: интересует вопрос, верно ли осуществлено подключение линий port_XS1_SFP_TD_P, port_XS1_SFP_TD_N, port_XS1_SFP_RD_P, port_XS1_SFP_RD_N от PHY(KSZ8041FTLI) к SFP? вот как осуществлено подключение SFP в одном из китов от Micrell: я с оптикой никогда не работал, это первый раз, схема не моя, я пишу только ПО для ПЛИС, но по схеме видно, что не хватает развязывающих кондеров на линиях, а так же подтяжек линий на 49.9 Ом, а также 130 Ом RX на землю... так как дорабатывать будет уже изготовленную плату гемморойно, то хотел сначала убедиться, что буду делать все верно... был ли у кого опыт работы с SFP модулями и как подключали их к PHY? спасибо, буду рад любой помощи...
  10. я смотрю вопрос касался одного, а переключился опять в использование куба или нет... я всегда буду его использовать, т.к. точка входа в программирование STM32, благодаря ему, у меня заняло около 30 мин, я начал практически сразу писать функционал, при этом: 1. мне не надо было лезть в изучение всей периферии контроллера 2. изменение конфигурации и состава периферии при неизменном функциональном коде проходит за 1 мин 3. очень удобно, когда работаешь сразу с несколькими контроллерам STM32 разных семейств(у меня, например, STM32F103, STM32F107, STM32F407,STM32L496) согласен, что надо понимать, что и откуда берется, но лезть туда надо: 1. когда не работает задуманое 2. работает, но с косяками, либо слишком медленно к такому же подходу я стремлюсь при разработке IP Core на ПЛИС, чтобы была универсальность при написании драйвера под ОС для работы с модулями, реализованных на ПЛИС самое главное, что вы экономите время, CUBE имеет косяки, например, пришлось мне обходить косяк с работой по SDMMC, сгенерированный кубом, но я на это убил 2 дня, да пришлось во всем разобраться, но ничего страшного...
  11. Решил проблему следующим образом: #define uart_printf(...) { while(huart1.gState != HAL_UART_STATE_READY); printf(__VA_ARGS__); } int _write (int fd, char *ptr, int len){ HAL_UART_Transmit_DMA(&huart1, (uint8_t*) ptr, len); return len; } вместо printf использую у себя в основной программе uart_printf, причина была в подмене данных printf, т.к. данные передавались в функцию int _write (int fd, char *ptr, int len) по указателю всем спасибо за помощь!!!
  12. STMCube все верно отрабатывает, прерывание возникает по окончании передачи всей пачки, а не одного байта (функция HAL_UART_TxCpltCallback) модифицировал код следующим образом и все заработало: volatile static uint8_t Uart_Tx_Cmpl = 1; int _write (int fd, char *ptr, int len){ Uart_Tx_Cmpl = 0; HAL_UART_Transmit_DMA(&huart1, (uint8_t*) ptr, len); while(Uart_Tx_Cmpl == 0); return len; } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { Uart_Tx_Cmpl = 1; } но я при этом не добиваюсь того, что хотел, а именно освободить на время передачи по UART процессор от ожидания окончания транзакции по UART, как раз именно while(Uart_Tx_Cmpl == 0); когда стоял в самом начале функции int _write() позволял задерживать выполнение, если транзакция еще не завершена(например, идут 2 или 3 printf подряд), а когда этого не требуется, то просто пропускал...
  13. я делал вот так: volatile static uint8_t Uart_Tx_Cmpl = 1; int _write (int fd, char *ptr, int len){ while(Uart_Tx_Cmpl == 0); Uart_Tx_Cmpl = 0; HAL_UART_Transmit_DMA(&huart1, (uint8_t*) ptr, len); return len; } void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { Uart_Tx_Cmpl = 1; } не помогло...