Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
8 years ago

sof2flash output different than quartus_cpf

Hi everybody,

I try to convert my project sof file into an srec file to store it into a CFI memory. On my board, I have a PFL onto a Max device to boot the bitstream from CFI memory address 0x01F0_0000.

1: memory file generation with quartus_cpf

I use the "Convert Programming File" tool to create a "cof" file, which will help me to create a "pof" file to download into the memory.

The "cof" file is describded below :

<?xml version="1.0" encoding="US-ASCII" standalone="yes"?><cof>
    <eprom_name>CFI_1GB</eprom_name>
    <output_filename>bitstream.pof</output_filename>
    <n_pages>1</n_pages>
    <width>1</width>
    <mode>0</mode>
    <sof_data>
        <start_address>01F10000</start_address>
        <user_name>Page_0</user_name>
        <page_flags>1</page_flags>
        <bit0>
            <sof_filename>bitstream.sof</sof_filename>
        </bit0>
    </sof_data>
    <version>5</version>
    <create_cvp_file>0</create_cvp_file>
    <options>
        <map_file>1</map_file>
        <option_start_address>1f00000</option_start_address>
        <dynamic_compression>0</dynamic_compression>
    </options>
</cof>

I create the pof file with the command :

quartus_cpf -c bitstream.cof

I download this "bitstream.pof" file into the memory using Quartus Programmer.

Then, the FPGA boots fine at board power up !

2: memory file generation with sof2flash

Let's say the FPGA is already running and a Nios2 is running on it. I can then use the nios2-flash-programmer to overwrite the flash contents.

I create the srec file with the following commands :

sof2flash --input=bitstream.sof --offset=0x1F10000 --output=bitstream.flash --pfl --programmingmode=PS --optionbit=0x1F00000

It creates two files : bitstream.flash and bitstream.map.flash.

I download these two files into the memory with the following command :

nios2-flash-programmer --base=0x0 -g bitstream.map.flash bitstream.flash

Then, the FPGA doesn't start and CONF_DONE is stuck at '0' at power up !

3: differences :

I have dumped the memory for both configuration. There is only one difference located after the option area:

(option area is the four first lines, the difference is in the fifth one)

quartus_cpf configuration :
S32501F00000101FE41FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
S32501F00020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
S32501F00040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
S32501F00060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
S32501F0008003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85

sof2flash configuration :
S32501F00000101FE41FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3
S32501F00020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
S32501F00040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9
S32501F00060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9
S32501F00080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89

I cannot explain this. Does anyone have a clue ?

I'm using Quartus 12.1sp1.

Thanks

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I've manage to create my srec file by using quartus_cpf with a cof file to create a pof (as in solution n°1 in my post). Then convert back the pof file into ihex also with quartus_cpf and then into an srec with nios2-elf-objcopy.

    
    quartus_cpf -c bitstream.pof bitstream.hexout
    mv bitstream.hexout bitstream.hex
    nios2-elf-objcopy -I ihex -O srec bitstream.hex bitstream.flash

    I have checked and the byte 0x03 is still there and every thing works fine.

    It's still a strange behavior and I'd like to know if this is a 12.1sp1 bug.