alexPec 6 May 13 Posted May 13 · Report post Всем доброго дня! Пытаюсь запустить host usb на US+ в baremetal. Как до этого шел: по совету уважаемого коллеги с форума не пришлось копаться в исходника линукса, взял исходник uboot, сделал с нуля проект под отладку ZCU104, где включил USB в PS (без 3.0), на MIO 52..63. Сгенерировал devicetree, firmware для pmu, fsbl. Долго-долго собирал uboot, собрал таки. При заливке в плату таким скриптом: #Disable Security gates to view PMU MB target targets -set -filter {name =~ "PSU"} #By default, JTAGsecurity gates are enabled #This disables security gates for DAP, PLTAP and PMU. mwr 0xffca0038 0x1ff after 500 #Load and run PMU FW targets -set -filter {name =~ "MicroBlaze PMU"} dow d:/xilinx_prj/uboot_prj/uboot1/pmufw.elf con after 500 #Reset A53, load and run FSBL targets -set -filter {name =~ "Cortex-A53 #0"} rst -processor dow d:/xilinx_prj/uboot_prj/uboot1/fsbl.elf con #Give FSBL time to run after 5000 stop #Other SW... dow d:/xilinx_prj/uboot_prj/uboot1/u-boot.elf dow d:/xilinx_prj/uboot_prj/uboot1/bl31.elf con все успешно запускается, usb инициализируется, воткнутая в usb флешка детектится. Начал вытаскивать куски кода, относящиеся к инициализации USB, в отдельный проект. Проблема появилась сразу. При чтении любых регистров USB (по адресу например 0xFE218220 - revision) своим кодом - получаю 0. В инициализации читаются регистры hwparams по адресам 0xfe23c600,0xfe23c610,0xfe23c620 и т.д. В своем коде чтение возвращает везде 0. Вывел принтом из uboot те же регистры - там все не ноль. Похоже не включено что-то глобальное. USB флешка подключена через 2.0, в проекте не включал 3.0, работает через ULPI USB3320. Когда запускаю свой проект, осциллографом смотрю на CLKOUT USB3320 (нога 1) - там как положено, 60МГц, reset стоит в 1. Т.е. аппаратная часть вроде выдает что надо. Запускаю свой проект из эклипса, вместо скрипта psu_init.tcl подсовываю такой: #Disable Security gates to view PMU MB target targets -set -filter {name =~ "PSU"} #By default, JTAGsecurity gates are enabled #This disables security gates for DAP, PLTAP and PMU. mwr 0xffca0038 0x1ff after 500 #Load and run PMU FW targets -set -filter {name =~ "MicroBlaze PMU"} dow d:/xilinx_prj/uboot_prj/uboot1/pmufw.elf con after 500 #Reset A53, load and run FSBL targets -set -filter {name =~ "Cortex-A53 #0"} rst -processor dow d:/xilinx_prj/uboot_prj/uboot1/fsbl.elf con fsbl и pmufw - те же самые файлы, что и при запуске uboot. При запуске проекта через debug as->launch in hardware выполняется скрипт выше, в консоль вылазит сообщение от fsbl, потом грузится моя программа и останавливается на первой строчке для дебага, как положено. Я уже начал сомневаться, правильно ли я понимаю, что регистры USB читаются через Xil_In32()... Есть идеи, уважаемые гуру, что поправить/ куда посмотреть? Quote Share this post Link to post Share on other sites More sharing options...
mantech 148 May 13 Posted May 13 · Report post 7 часов назад, alexPec сказал: все успешно запускается, usb инициализируется, воткнутая в usb флешка детектится. 7 часов назад, alexPec сказал: При чтении любых регистров USB (по адресу например 0xFE218220 - revision) своим кодом - получаю 0. В инициализации читаются регистры hwparams по адресам 0xfe23c600,0xfe23c610,0xfe23c620 и т.д. В своем коде чтение возвращает везде 0. В режимы ММУ смотрели? Линуксоиды любят всякие виртуальные адреса, и соотв. ставить блоки на обращение к реальным регистрам, убут не копал, как там с этим х.з. но глянуть стоит... Quote Share this post Link to post Share on other sites More sharing options...
alexPec 6 May 13 Posted May 13 · Report post 35 минут назад, mantech сказал: Линуксоиды любят всякие виртуальные адреса, Вот кстати да, мысль. Спасибо! Там ведь при запуске убута bl31 чем-то таким и занимается, какое-то отношение к этим виртуальным адресам имеет. Гляну... Quote Share this post Link to post Share on other sites More sharing options...