12-23-2018 01:50 PM
I must begin planning for how my FreeRTOS-based application and some associated data areas will be programmed into QSPI flash at "the factory". I have not spoken yet with the manufacturing engineers at the factory about this, as I would like to get some hands-on experience first and be better prepared for those discussions.
My system is Zynq-7000 with 16 Mbyte QSPI flash and 1 GB DDR. I use SDK 2018.2 and Digilent HS2 JTAG cable. I understand about creating boot images (boot image headers, FSBL, etc.). And I can do the programming using the SDK. I am not currently using encryption.
I am open to other work flows, but this is what I imagine will happen:
For a newly-manufactured board:
1. Use command-line Windows utility (TBD) to communicate via the HS2 and load/run a "production loader" application into RAM, and bitstream if necessary (is it necessary?). With my data areas, this is much more than the 256 KB OCM, so I guess the DDR would be necessary.
2. The prod loader app will contain the data and images to be programmed into flash. After it runs and completes its duties, a reset (and jumper change) will launch the real application from QSPI flash.
Question 1: Can SDK be run from command-line to perform "Program FPGA" and load/run application? If so, where is documentation for such command-line usage?
Question 2: Are there utilities other than SDK which are standalone and can run from command-line to perform these actions? I've seen references to iMPACT, but not sure if it's appropriate. What about from other vendors, such as Digilent?
Question 3: What amount of programming is commonly done for manufacturing test prior to loading the final application image and data? My flash needs a few OTP values programmed before any other erase or programming steps; I want to be sure flash is not changed without those OTP first being programmed.
If anyone can shed light on any of the above, all insights are appreciated!
12-27-2018 10:16 AM
12-27-2018 10:08 AM
You can use platform_flash utility from the XSCT (Xilinx software command line tool) command line (delivered with SDK). You can use the help for assidtance here.
The platform_flash uses uboot under the hood. This (uboot) runs from ddr, Hence the need for the fsbl ( used to program the ps).
So since the platform flash is just a uboot binary. You could use uboot utilities directly to program the QSPI. However, you would need to boot uboot over jtag using XSCT too. You can create a simple TCL script to do this.
12-27-2018 10:16 AM