alexPec 6 April 7 Posted April 7 · Report post Всем доброго дня! Требуется поднять USB host на процессоре T113S, в bare-metal, без операционки. Что нужно: -Инициализация -Настройка прерываний -Пустые функции (заготовки) на события attach, detach. В эти функции процессор должен переходить по соответствующим событиям -Заполнение стандартного запроса (например чтение дескриптора устройства) и получение ответа. Проверка с моей стороны будет такая: вставляю флешку и хочу видеть в терминале (например COM порт) прочитанные дескрипторы. Нужны исходники и инструментарий для сборки готового bin для заливки во флешь (QSPI). По цене - не знаю даже примерно сколько это стоит, поэтому буду благодарен, если вышлите свое предложение в личку. Думаю, договоримся. Заранее благодарен всем откликнувшимся! Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 (edited) · Report post Есть просто способ... поднять tinyusb в дебаге - оно печатает дескрипторы. Зы: что за устроство? Компорт куда выведен? Edited April 7 by GenaSPB Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 April 7 Posted April 7 · Report post Есть кастомный USB-device, надо к нему цепляться процессором T113S3 и гонять данные туда-сюда. Протокол полностью известен. Если будет заготовка, то думаю остальное допилю.Нужна именнозаготовка под это - инициализация проца, хоста, и тестовый трансфер. С армами много работал, но ксайлинксовыми - А7 и А53. C нуля же поднять T113S будет долго - поэтому и прошу помочь. Если можете такое сделать - скиньте пожалуйста Ваше предложение в личку. Спасибо! Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 (edited) · Report post Я не хочу в личку... есть гитхаб с исходниками открытый... Всего-то хотел от вас названия двух пинов компорта. https://github.com/ua1arn/hftrx/tree/develop Edited April 7 by GenaSPB 1 1 Quote Share this post Link to post Share on other sites More sharing options...
mantech 139 April 7 Posted April 7 · Report post 45 минут назад, alexPec сказал: А7 и А53. C нуля же поднять T113S будет долго - поэтому и прошу помочь. Если вы действительно плотно с ними работали, то долго, это день работы примерно. У Генадия из проекта берете инит usb-phy, и дальше работа с усб хостом ничем не отличается от любого МК кортекс А7 с OHCI\EHCI контроллером и весь верхний уровень... Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 April 7 Posted April 7 · Report post 54 минуты назад, mantech сказал: Если вы действительно плотно с ними работали, то долго, это день работы примерно. У Генадия из проекта берете инит usb-phy, и дальше работа с усб хостом ничем не отличается от любого МК кортекс А7 с OHCI\EHCI контроллером и весь верхний уровень... В том то и дело, что с USB только с девайсом работал, а как я понял, хост- там все по-другому. Даже большинство регистров девайса не используются, вместо них другие, хостовые (по крайней мере у A53 так было). А вся эта инициализация и DDR, и всего остального - страшно подумать как в это все зарываюсь. Охота именно рабочую заготовку под свой проект, чтоб залил - взлетело, а дальше пилить под свои задачи. 1 час назад, GenaSPB сказал: Всего-то хотел от вас названия двух пинов компорта. любые, плата еще не сделана, буду на отладке тестить, подпаяюсь куда угодно Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 · Report post 14 minutes ago, alexPec said: буду на отладке тестить Отладки обычно предопределяют пины отладочного порта... Или за нас - например PE2/PE3 Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 April 7 Posted April 7 · Report post Да, так и есть. PE2/PE3. Хотя если и другие были бы - порезать дорожки да перепаять. Это не проблема. Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 (edited) · Report post Вышеупомянутый репо, бранч develop. Spoiler $CPU0: VBAR=0x40084540, TTBR0=0x400f004a, cpsr=200001DF, SCTLR=20C5187D, ACTLR=00006040, sp=47FFF388, MPIDR=80000000 $CPU1: VBAR=0x40084540, TTBR0=0x400f004a, cpsr=2000011F, SCTLR=20C5187D, ACTLR=00006040, sp=414FF420, MPIDR=80000001 Version Apr 7 2026 16:58:35 1 debug session starts. hardware_channels_initialize: audiocodechw-hwblock-duplex-master allwnr_t113_get_audio1pll_div2_freq()=1081343994 Hz need pllfreq=2162688000 Hz AudioCodec: needDiv=44, prei=1, value=21, lrckf=24576000, (clk=1081343994) AudioCodec: allwnr_t113_get_audio_codec_adc_freq()=24575 kHz AudioCodec: allwnr_t113_get_audio_codec_dac_freq()=24575 kHz AudioCodec: sample rate=47999 Hz ADCINPUTS_COUNT=7: 14,15,10,7,2,1,0 USB device: 6 endpoints, IN/OUT EP5..EP1 and EP0 USB device DMA: 8 channels (USB_DMA_INTE=000000FF) USBH init on controller 1 sizeof(usbh_device_t) = 86 sizeof(hcd_event_t) = 12 sizeof(_ctrl_xfer) = 24 sizeof(tuh_xfer_t) = 24 sizeof(tu_fifo_t) = 12 sizeof(tu_edpt_stream_t) = 24 CDC init sizeof(cdch_interface_t) = 324 MSC init sizeof(msch_interface_t) = 104 HID init sizeof(hidh_interface_t) = 144 HUB init BTH init Most of hardware initialized. initialize2() started. rtmixid=1: vilast=1, uilast=1 KBD ok initialize2: finished. board_tsc_initialize: allwnr_t113_get_tpadc_freq()=24000000 Hz TPADC->TP_CTRL_REG0=0F800000 TPADC->TP_CTRL_REG0=0F800FFF dsp_initialize: ARMI2SRATE=48000, ARMI2SRATE100=48000.00 hardware_channels_enable: audiocodechw-hwblock-duplex-master af codec type = 'audiocodechw' audiocodechw_setvolume: gain=24/24, mute=0, mutespk=0 if codec type = 'FPGA_V1' __GNUC__=14, __GNUC_MINOR__=2 audiocodechw_setvolume: gain=24/24, mute=0, mutespk=0 [0:] USBH DEVICE ATTACH Full Speed [0:0] Open EP0 with Size = 8 Get 8 byte of Device Descriptor [0:0] Get Descriptor: 80 06 00 01 00 00 08 00 on EP 00 with 8 bytes: OK on EP 80 with 8 bytes: OK [0:0] Control data: 0000: 12 01 00 02 00 00 00 40 |.......@| on EP 00 with 0 bytes: OK Set Address = 1 [0:0] Set Address: 00 05 01 00 00 00 00 00 on EP 00 with 8 bytes: OK on EP 80 with 0 bytes: OK [0:1] Open EP0 with Size = 64 Get Device Descriptor [0:1] Get Descriptor: 80 06 00 01 00 00 12 00 on EP 00 with 8 bytes: OK on EP 80 with 18 bytes: OK [0:1] Control data: 0000: 12 01 00 02 00 00 00 40 0C 09 00 10 00 11 01 02 |.......@........| 0010: 03 01 |..| on EP 00 with 0 bytes: OK Get Configuration[0] Descriptor (9 bytes) [0:1] Get Descriptor: 80 06 00 02 00 00 09 00 on EP 00 with 8 bytes: OK on EP 80 with 9 bytes: OK [0:1] Control data: 0000: 09 02 20 00 01 01 00 80 FA |.. ......| on EP 00 with 0 bytes: OK Get Configuration[0] Descriptor [0:1] Get Descriptor: 80 06 00 02 00 00 20 00 on EP 00 with 8 bytes: OK on EP 80 with 32 bytes: OK [0:1] Control data: 0000: 09 02 20 00 01 01 00 80 FA 09 04 00 00 02 08 06 |.. .............| 0010: 50 00 07 05 81 02 40 00 FF 07 05 02 02 40 00 FF |P.....@......@..| on EP 00 with 0 bytes: OK Set Configuration = 1 [0:1] Set Configuration: 00 09 01 00 00 00 00 00 on EP 00 with 8 bytes: OK on EP 80 with 0 bytes: OK [1] Aborted transfer on EP 01 [1] Aborted transfer on EP 81 [1] Aborted transfer on EP 02 [1] Aborted transfer on EP 82 [1] Aborted transfer on EP 03 [1] Aborted transfer on EP 83 [1] Aborted transfer on EP 04 [1] Aborted transfer on EP 84 [1] Aborted transfer on EP 05 [1] Aborted transfer on EP 85 [1] Aborted transfer on EP 06 [1] Aborted transfer on EP 86 [1] Aborted transfer on EP 07 [1] Aborted transfer on EP 87 [1] Aborted transfer on EP 08 [1] Aborted transfer on EP 88 [1] Aborted transfer on EP 09 [1] Aborted transfer on EP 89 [1] Aborted transfer on EP 0A [1] Aborted transfer on EP 8A [1] Aborted transfer on EP 0B [1] Aborted transfer on EP 8B [1] Aborted transfer on EP 0C [1] Aborted transfer on EP 8C [1] Aborted transfer on EP 0D [1] Aborted transfer on EP 8D [1] Aborted transfer on EP 0E [1] Aborted transfer on EP 8E [1] Aborted transfer on EP 0F [1] Aborted transfer on EP 8F Device configured Parsing Configuration descriptor (wTotalLength = 32) Open EP 81 with Size = 64 Open EP 02 with Size = 64 MSC opened Bind EP 81 to driver id 1 Bind EP 02 to driver id 1 MSC set config: itf = 0 MSC Get Max Lun [0:1] Class Request: A1 FE 00 00 00 00 01 00 on EP 00 with 8 bytes: OK on EP 80 with 1 bytes: OK [0:1] Control data: 0000: 00 |.| on EP 00 with 0 bytes: OK Max LUN = 1 SCSI Test Unit Ready [1] Claimed EP 0x02 Queue EP 02 with 31 bytes ... OK on EP 02 with 31 bytes: OK MSC xfer callback Queue EP 81 with 13 bytes ... OK on EP 81 with 13 bytes: OK MSC xfer callback SCSI Read Capacity [1] Claimed EP 0x02 Queue EP 02 with 31 bytes ... OK on EP 02 with 31 bytes: OK MSC xfer callback Queue EP 81 with 8 bytes ... OK on EP 81 with 8 bytes: OK MSC xfer callback Queue EP 81 with 13 bytes ... OK on EP 81 with 13 bytes: OK MSC xfer callback A MassStorage device is mounted, dev_addr=1 [1] Claimed EP 0x02 Queue EP 02 with 31 bytes ... OK on EP 02 with 31 bytes: OK MSC xfer callback Queue EP 81 with 36 bytes ... OK on EP 81 with 36 bytes: OK MSC xfer callback Queue EP 81 with 13 bytes ... OK on EP 81 with 13 bytes: OK MSC xfer callback [0:0:0] USBH DEVICE REMOVED [0:0:0] unplugged address = 1 MSCh close addr = 1 A MassStorage device is unmounted [0:] USBH DEVICE ATTACH Full Speed [0:0] Open EP0 with Size = 8 Get 8 byte of Device Descriptor [0:0] Get Descriptor: 80 06 00 01 00 00 08 00 on EP 00 with 0 bytes: FAILED [0:0] Control FAILED, xferred_bytes = 0 80 06 00 01 00 00 08 00 Enumeration attempt 1 [0:0] Get Descriptor: 80 06 00 01 00 00 08 00 on EP 00 with 0 bytes: FAILED [0:0] Control FAILED, xferred_bytes = 0 80 06 00 01 00 00 08 00 Enumeration attempt 2 [0:0] Get Descriptor: 80 06 00 01 00 00 08 00 on EP 00 with 0 bytes: FAILED [0:0] Control FAILED, xferred_bytes = 0 80 06 00 01 00 00 08 00 Enumeration attempt 3 [0:0] Get Descriptor: 80 06 00 01 00 00 08 00 on EP 00 with 0 bytes: FAILED [0:0] Control FAILED, xferred_bytes = 0 80 06 00 01 00 00 08 00 [0:0:0] USBH DEVICE REMOVED Конфиг #elif (CPUSTYLE_T113 || CPUSTYLE_F133) && CTLSTYLE_STORCH_V7 && 1 #include "boards/arm_allwt113s3_ctlstyle_mango_pi_sdboot.h" #include "paramdepend.h" /* проверка зависимостей параметров конфигурации */ #include "boards/arm_allwt113s3_cpustyle_mango_pi_sdboot.h" .img мне не выложить, доступно только 32 килобайта... Это OHCI. В tinyusb автоматический переход между OHCI и EHCI не сделан, да и EHCI драйвер падает при удалении устройства - неправильно удаляются периодичечкие запросы (кстати, решается вечно присутствующим HUB). Вот... https://drive.google.com/file/d/1kpb1p_mQoh868Yz5m6TH-TZpzc8LEKBD/view?usp=drivesdk Edited April 7 by GenaSPB Quote Share this post Link to post Share on other sites More sharing options...
mantech 139 April 7 Posted April 7 (edited) · Report post 3 часа назад, alexPec сказал: А вся эта инициализация и DDR, и всего остального - страшно подумать как в это все зарываюсь. Чет как-то не сходится, т.е. "по крайней мере у A53 так было" это было просто, а с А7 засада?? Инит ДДР тут уже был выложен неоднократно, там как раз все просто, если сложно в дебрях Генадия разобраться, часик поискать... T113-S(3)4_DDR.zip Ну а усб вот прямь под вас вряд-ли кто-то сделает, все-равно придется ручками [censored] и поразбираться... T113_Init.zip Edited April 7 by mantech Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 · Report post Весь ddr init тут https://github.com/ua1arn/hftrx/tree/develop/src/sdram/aw_t113s3_f133 Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 April 7 Posted April 7 · Report post Большое спасибо, GenaSPB! Попробую повторить. Кстати, не оценивали максимальную скорость по USB, что из него можно выжать? 37 минут назад, mantech сказал: Чет как-то не сходится, т.е. " С USB работал только на ultrascale+ (A53), на Cyclone 5 и zynq7000 (A7) c USB вообще не приходилось работать. Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 · Report post Годов пять назад я с stm32mp157 тестил ehci. Но там ьыл мой собственный драйвер. Выбирал всю скорость hdd что ща ним висел (проценоов на 10 быстрее чем винда) - но это был baremetal. Tinyusb не рекордсмен в этом виде спортаа... Результаты где-то на этом форуме. Quote Share this post Link to post Share on other sites More sharing options...
GenaSPB 34 April 7 Posted April 7 (edited) · Report post Это направление прибил вот почему: Драйвер встраивался в usb host стек от ST. Делался на основе того что в tinyusb и linux. Но вас стек не даввл нормал мнотмнржество hub-ов поддержать. И вообще жто был макет, без нормальных повторов транзакций и т.д. Edited April 7 by GenaSPB Quote Share this post Link to post Share on other sites More sharing options...
mantech 139 April 7 Posted April 7 · Report post 1 час назад, GenaSPB сказал: Но вас стек не даввл нормал мнотмнржество hub-ов поддержать. Думаю вопрошающему хабы не нужны, у него всего одно устройство... Quote Share this post Link to post Share on other sites More sharing options...