Forum Discussion

AFies's avatar
AFies
Icon for New Contributor rankNew Contributor
5 years ago

Writing the CFI flash of the Arria 10GX Dev Kit via JTAG.

2 Convert bts_config.sof to bts_config.flash intended for updating user hardware1 portion at 0x02D00000.
sof2flash --input=bts_config.sof --output=bts_config.flash --offset=0x02D00000 --pfl --optionbit=0x00180000 --programmingmode=PS
 
3 Convert bts_config.sof to bts_config.flash intended for updating user hardware2 portion at 0x05800000.
sof2flash --input=bts_config.sof --output=bts_config.flash --offset=0x05800000 --pfl --optionbit=0x00180000 --programmingmode=PS

I'm having trouble writing to the 2x1Gb flash of the Arria 10GX Development Kit (PRD) via JTAG. The goal is having multiple sofs in the flash, but my attempts fail even for just one.

First of all, there is a readme (build_factory_example) that tells you these cmd line parameters. While the first one works, the second one fails due to size exceeded. Feels great having bought a 5k board where even the basic manufacturer examples are false...

My next attempts were creating a pof via Quartus GUI "convert programming files".

I chose CFI_2Gb, passive parallel x32 and added option bits and 2 sofs at the address offset given in the user guide.

Question here: which page should I use? I tried 0/1 and 1/2 so far.

When I open the programmer and scan the chain, the CFI flash shows up as "2*CFI_1Gb". When I add the just created .pof, this changes to "CFI_2Gb".

I can then start programming, and see the flash is erased. As soon as it tries to start writing, it just fails with "Operation Failed" and no further output.

How can I write the flash?

It is really annoying to see such a basic feature not properly documented in the user guide :|

Thanks in advance!

3 Replies

  • AFies's avatar
    AFies
    Icon for New Contributor rankNew Contributor

    Hi,

    thanks for the answer. For writing to the flash, I was following exactly the steps given by the Dev Kit user guide for writing the CFI via the MAXV.

    As it seems, the pof I generated was actually correct.

    I was able to successfully write the flash after I lowered the USB JTAG frequency in the programmer to 2MHz. By default, Quartus sets 24MHz for the USB JTAG which does work for direct sof config, but not for flash.

    With 12MHz, it usually fails somewhere in between, which tells me this is really a clock related issue.

    I did not find any note on the JTAG frequency in the user guide, however. Can anyone confirm this?

    The other questions remains: the sof2flash example from the user guide does not work when I execute the given command.

  • YuanLi_S_Intel's avatar
    YuanLi_S_Intel
    Icon for Regular Contributor rankRegular Contributor

    Hi,

    Yes, the TCK frequency has to be lowered in order to work perfectly. Usually, we will recommend to lower to 6MHz.

    Meanwhile for the sof2flash, may i know which user guide and example are you following?

    Thank You.

    Bruce