cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Advisor
Advisor
1,329 Views
Registered: ‎10-10-2014

update microblaze firmware on the fly from Zynq

Jump to solution

I'd like to design a system with Zynq, and one or multiple microblaze cores.

 

so far I've only found info that the .elf files for the microblaze(s) needs to be merged with the main bitstream, i.e. UG898 says 'a single device with one or more embedded processors as wel as programmable logic, needs a single boot image, must contain the merged CU software and FPGA bitstream images.

 

I'd like to download the firmware for these microblaze cpu's from the Zynq,, on-the-fly, so I can reconfigure my applications on the microblazes from the Zynq. 

 

Q1 : is this possible

Q2 : if so, is there any tutorial / info / guidance available on such architecture?

 

 

** kudo if the answer was helpful. Accept as solution if your question is answered **
0 Kudos
Reply
1 Solution

Accepted Solutions
Moderator
Moderator
2,003 Views
Registered: ‎09-12-2007
You can use the ps ddr to execute your elf from. You will need a way of controlling the mb reset.

I created a wiki for a flow that will help you here:

http://www.wiki.xilinx.com/Execute+Microblaze+Application+from+PS+DDR

View solution in original post

4 Replies
Moderator
Moderator
2,004 Views
Registered: ‎09-12-2007
You can use the ps ddr to execute your elf from. You will need a way of controlling the mb reset.

I created a wiki for a flow that will help you here:

http://www.wiki.xilinx.com/Execute+Microblaze+Application+from+PS+DDR

View solution in original post

Advisor
Advisor
1,285 Views
Registered: ‎10-10-2014

Thanks @stephenm, I didn't know Microblaze could share memory with the DDR of the ARM cores, that's nice...

 

Does it have a lot of performance impact compared to a Microblaze with local memory?

 

Is there another way, i.e. like using a dual-port ram as local (program and data) memory for the microblaze? The arm cores could then write to the dual port memory, and the microblaze would execute from these. This will also need the reset mode and EMIO reset line as described on your wiki. Or is it common to use a shared piece of DDR memory?

** kudo if the answer was helpful. Accept as solution if your question is answered **
0 Kudos
Reply
Moderator
Moderator
1,279 Views
Registered: ‎09-12-2007

Yes, there would be a latency cost of using the PS DDR. 

 

There are tons of ways you can do this. You could have a bootloader running on ARM that will copy this over while the MB is held in reset. Or, you could use  DMA to do this if you dont want to waste CPU cycles. You can use the dma done to wake the MB back again.

Advisor
Advisor
1,276 Views
Registered: ‎10-10-2014

@stephenm sounds good -

 

instead of sharing the DDR with the PS, can it be done with a dual port ram (the using block memory generator IP) as program & data memory for the microblaze?

** kudo if the answer was helpful. Accept as solution if your question is answered **
0 Kudos
Reply