UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
677 Views
Registered: ‎08-29-2018

Program Zynq device without JTAG

Jump to solution

Hello,

 

I'm currently upgrading an existing device to use the Zynq platform for improved performance. The older electronics used some simpler microcontrollers that were bootloaded over UART remotely (updates etc.). From what I know so far about Zynq devices, they can be fully configured from any QSPI flash on board. 

 

My problem is that I only have the UART lines currently running to this portion of the electronics. I am thinking I will have some sort of branched bootloader on the Zynq device (depending on say an IO) that reads in UART data and pipes it to the QSPI for "program mode" and just loads from it when in "run mode". Does this sound feasible? Is there some work that's already done in this area that I could build off of? 

 

My other option is to have a dedicated microcontroller sitting inline that programs the QSPI or sends the UART data over to the Zynq depending on the mode. 

 

I am mostly looking for some ideas / suggestions / feedback on these thoughts. Trying to narrow down hardware decisions before we commit to a platform so I need to at least make sure things like this are feasible. I'm thinking yes because the Zynq platform seems very flexible but just want to make sure.

 

Thanks,

Aditya

0 Kudos
1 Solution

Accepted Solutions
Moderator
Moderator
621 Views
Registered: ‎03-19-2014

Re: Program Zynq device without JTAG

Jump to solution

uBoot will program the QSPI device programmatically with a new image which is typically on the same SD card.  If you want to move your image over the UART, I think the flow would be to DMA your image into DDR, then you can use uBoot to program that image from the DDR location into the QSPI.  You can find the instructions for how to this in uBoot here

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

View solution in original post

4 Replies
Moderator
Moderator
659 Views
Registered: ‎03-19-2014

Re: Program Zynq device without JTAG

Jump to solution

You can program the QSPI from uBoot running on the Zynq 

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
Moderator
Moderator
641 Views
Registered: ‎02-07-2018

Re: Program Zynq device without JTAG

Jump to solution

HI you can program QSPI from u-boot. 

Please follow below steps to flash

 

  1. Boot from SD/JTAG and stop at u-boot.
  2. Load the boot images to DDR & flash to QSPI.
  3. Then power off the board and change the jumper settings as per this link: http://www.wiki.xilinx.com/Prepare+Boot+Medium (Boot mode set for QSPI boot on a zc706) then restart the board. It will boot from QSPI.

Zynq>
Zynq> dhcp
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 10.175.32.129 (627 ms)
Zynq> setenv serverip 10.175.33.67
Zynq> sf probe 0 0 0
SF: Detected n25q128a with page size 256 Bytes, erase size 64 KiB, total 16 MiB
Zynq> tftpb 0x10000000 BOOT.BIN
Using ethernet@e000b000 device
TFTP from server 10.175.33.67; our IP address is 10.175.32.129
Filename 'BOOT.BIN'.
Load address: 0x10000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
######
1.3 MiB/s
done
Bytes transferred = 4685552 (477ef0 hex)
Zynq> sf erase 0 0x500000      
SF: 5242880 bytes @ 0x0 Erased: OK
Zynq> sf write 0x10000000 0 0x477ef0  -→ (ex:sf write DDR_load_address  offset  image_size)
device 0 offset 0x0, size 0x477ef0
SF: 4685552 bytes @ 0x0 Written: OK
Zynq> sf erase 0x520000 0xa80000
SF: 11010048 bytes @ 0x520000 Erased: OK
Zynq> tftpb 0x10000000 image.ub
Using ethernet@e000b000 device
TFTP from server 10.175.33.67; our IP address is 10.175.32.129
Filename 'image.ub'.
Load address: 0x10000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
1.2 MiB/s
done
Bytes transferred = 10001224 (989b48 hex)
Zynq> sf write 0x10000000 0x520000 0x989b48
device 0 offset 0x520000, size 0x989b48
SF: 10001224 bytes @ 0x520000 Written: OK
Zynq>

 

 

 

Thanks & regards

Aravind

 

----------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.
Give Kudos to a post which you think is helpful and reply oriented.
----------------------------------------------------------------------------------------------

628 Views
Registered: ‎08-29-2018

Re: Program Zynq device without JTAG

Jump to solution

Hello. 

 

Thanks for the replies so far. I'm a little confused. Uboot seems to depend on an SD card holding images. I have no physical access to these electronics. I want to be able to transfer new images (including the PL configuration) to the Zynq device (or the flash) remotely only using the UART lines. Am I missing something in how U-boot can be used for this? 

 

Thanks,

Aditya

0 Kudos
Moderator
Moderator
622 Views
Registered: ‎03-19-2014

Re: Program Zynq device without JTAG

Jump to solution

uBoot will program the QSPI device programmatically with a new image which is typically on the same SD card.  If you want to move your image over the UART, I think the flow would be to DMA your image into DDR, then you can use uBoot to program that image from the DDR location into the QSPI.  You can find the instructions for how to this in uBoot here

-------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

View solution in original post