11-19-2020 10:12 AM
I'm running embedded linux on a Zynq 7030 device. It been working perfect for a couple years now. No issues at all. My current programming/boot flow is:
- Generate .bin file with FSBL, bitstream, u-boot ELF and program to flash
- Zynq boots from flash
- FSBL runs, programs bitstream, and hands off to u-boot
- U-boot performs its steps to launch linux
All of the above works well.
However, I recently made one very minor change to move the (only) UART port in the design off of MIO14-15 and over to EMIO pins. This one (and only) change has now prevented u-boot from executing and I don't understand why.
I have enabled FSBL debug output and it reports that the handoff was successful.
Handoff Address: 0x40000000 In FsblHookBeforeHandoff function SUCCESSFUL_HANDOFF FSBL Status = 0x1
But right after this there is nothing. No u-boot output whatsoever. It just kind of hangs. I have tried enabling u-boot debug output as well but nothing is output at all. I have run XSDB and read the PC and the PC seems to just get stuck at one address in the 0x4000XXX range of the u-boot program and then never changes again.
Is there some other required change that I'm missing in order to allow u-boot to work properly when the UART interface is on EMIO instead of MIO? Or possibly is this type of setup/configuration not supported (i.e. does the UART console _have_ to be on fixed MIO in order to function properly with u-boot)?
11-19-2020 10:55 AM
I would expect the EMIOs to behave just as the MIOs but haven't tested that same case. You may want to test the UART by itself using a baremetal app, just to have the assurance it's all well hardware-wise.
Give kudos if helpful. Accept as solution if it solves your problem.
11-19-2020 11:09 AM
You may want to test the UART by itself using a baremetal app, just to have the assurance it's all well hardware-wise.
Since the FSBL debug output is working over the EMIO UART we already know that all is well hardware-wise.