Forum Discussion

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

MAX10 and Flash Update module

I created Flash Update module with Qsys


    onchip_flash_0 : component altera_onchip_flash
        generic map (
            INIT_FILENAME                       => "",
            INIT_FILENAME_SIM                   => "",
            DEVICE_FAMILY                       => "MAX 10",
            PART_NAME                           => "10M50DAF484C7G",
            DEVICE_ID                           => "50",
            SECTOR1_START_ADDR                  => 0,
            SECTOR1_END_ADDR                    => 8191,
            SECTOR2_START_ADDR                  => 8192,
            SECTOR2_END_ADDR                    => 16383,
            SECTOR3_START_ADDR                  => 16384,
            SECTOR3_END_ADDR                    => 114687,
            SECTOR4_START_ADDR                  => 114688,
            SECTOR4_END_ADDR                    => 188415,
            SECTOR5_START_ADDR                  => 188416,
            SECTOR5_END_ADDR                    => 360447,
            MIN_VALID_ADDR                      => 0,
            MAX_VALID_ADDR                      => 360447,
            MIN_UFM_VALID_ADDR                  => 0,
            MAX_UFM_VALID_ADDR                  => 16383,
            SECTOR1_MAP                         => 1,
            SECTOR2_MAP                         => 2,
            SECTOR3_MAP                         => 3,
            SECTOR4_MAP                         => 4,
            SECTOR5_MAP                         => 5,
            ADDR_RANGE1_END_ADDR                => 360447,
            ADDR_RANGE1_OFFSET                  => 2048,
            ADDR_RANGE2_OFFSET                  => 0,
            AVMM_DATA_ADDR_WIDTH                => 19,
            AVMM_DATA_DATA_WIDTH                => 32,
            AVMM_DATA_BURSTCOUNT_WIDTH          => 4,
            SECTOR_READ_PROTECTION_MODE         => 0,
            FLASH_SEQ_READ_DATA_COUNT           => 4,
            FLASH_ADDR_ALIGNMENT_BITS           => 2,
            FLASH_READ_CYCLE_MAX_INDEX          => 5,
            FLASH_RESET_CYCLE_MAX_INDEX         => 7,
            FLASH_BUSY_TIMEOUT_CYCLE_MAX_INDEX  => 36,
            FLASH_ERASE_TIMEOUT_CYCLE_MAX_INDEX => 10500000,
            FLASH_WRITE_TIMEOUT_CYCLE_MAX_INDEX => 9150,
            PARALLEL_MODE                       => true,
            READ_AND_WRITE_MODE                 => true,
            WRAPPING_BURST_MODE                 => false,
            IS_DUAL_BOOT                        => "False",
            IS_ERAM_SKIP                        => "True",
            IS_COMPRESSED_IMAGE                 => "True"
        )
        port map (
            clock                   => clock,                   --    clk.clk
            reset_n                 => reset_n,                 -- nreset.reset_n
            avmm_data_addr          => avmm_data_addr,          --   data.address
            avmm_data_read          => avmm_data_read,          --       .read
            avmm_data_writedata     => avmm_data_writedata,     --       .writedata
            avmm_data_write         => avmm_data_write,         --       .write
            avmm_data_readdata      => avmm_data_readdata,      --       .readdata
            avmm_data_waitrequest   => avmm_data_waitrequest,   --       .waitrequest
            avmm_data_readdatavalid => avmm_data_readdatavalid, --       .readdatavalid
            avmm_data_burstcount    => avmm_data_burstcount,    --       .burstcount
            avmm_csr_addr           => avmm_csr_addr,           --    csr.address
            avmm_csr_read           => avmm_csr_read,           --       .read
            avmm_csr_writedata      => avmm_csr_writedata,      --       .writedata
            avmm_csr_write          => avmm_csr_write,          --       .write
            avmm_csr_readdata       => avmm_csr_readdata        --       .readdata
        );

In oreder to have two images - bootloader(CFM0) and main program(CFM1-CFM2) - I need Dual Compressed Images.

So I set - Assignments -> Device -> Devise and Pin Options -> Configuration -> Dual Compressed Images

And generics in Flash Update module I set


IS_DUAL_BOOT        => "True",
IS_ERAM_SKIP        => "True",
IS_COMPRESSED_IMAGE => "True"

When I compile I get an error

--- Quote Start ---

Error (169130): Configuration mode specified as Remote but remote update block is not found in design

--- Quote End ---

If I set Assignments -> Device -> Devise and Pin Options -> Configuration -> Single Compressed Image

And generics


IS_DUAL_BOOT        => "False",
IS_ERAM_SKIP        => "True",
IS_COMPRESSED_IMAGE => "True"

It compiles without error.

If I set Assignments -> Device -> Devise and Pin Options -> Configuration -> Single Compressed Image

And generics


IS_DUAL_BOOT        => "True",
IS_ERAM_SKIP        => "True",
IS_COMPRESSED_IMAGE => "True"

I get an error

--- Quote Start ---

Error (14740): Configuration mode on atom "bootloader:U_BOOTLOADER|flash_update:U_FLASH_UPDATE|altera_onchip_flash : nchip_flash_0|altera_onchip_flash_block:altera_onchip_flash_block|ufm_block" does not match the project setting. Update and regenerate the Qsys system to match the project setting.

--- Quote End ---

How can I compile for Dual Compressed Images?

14 Replies