FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
5234 Discussions

Why does alt_bridge_init hang?

Dzar
New Contributor I
855 Views

I have a Cyclone V design using FPGA and HPS resources. I want the FPGA to have access to the SDRAM on the HPS. So I'm using

 

alt_bridge_init(ALT_BRIDGE_F2S, NULL, NULL);

 

to initialize this as I understand I need to. (I'm doing bare metal, not Linux on the HPS). Occasionally, this works, but more often it hangs the CPU when I run this. It looks like this function is supplied by Intel and does all of the things the documentation says need to be done before enabling the SDRAM interface from the FPGA. Before I run this, I do see that the register ALT_SDR_CTL_FPGAPORTRST_ADDR has all zeros in it (meaning the interface is all reset). After a successful enabling of this, it's 0x3ff as expected. But most often, my processor hangs when executing this function.

 

What is 100% reliable, so far, is setting a breakpoint at the top of this function and stepping, line by line, through it. That's never failed work. But if I run it straight from my QSPI or even the debugger without the breakpoint, it most often hangs.

 

Thoughts?

 

0 Kudos
1 Solution
Dzar
New Contributor I
214 Views

It seems that using the supplied boot loader (uboot-based SPL) it will initialize this interface for us. That's not clear in anything I read/saw, but seems to be the case so I have removed the initialization from my code and it seems to be working, now.

View solution in original post

1 Reply
Dzar
New Contributor I
215 Views

It seems that using the supplied boot loader (uboot-based SPL) it will initialize this interface for us. That's not clear in anything I read/saw, but seems to be the case so I have removed the initialization from my code and it seems to be working, now.

Reply