Forum Discussion

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

How to implement Reboot for StratixIIs60ES ?

I have tried to implement Redboot for StratixIIs60ES environment. but it doesn't work well.

My question is how to config AM29LV128 Flash ROM with eCos configuration tool.

Does anybody try it ? please let me know.

2 Replies

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

    aqura:

    Ran into this myself today.

    I am using the Cyclone II 2C35 Dev board. The documantation states that the flash_byte_n line is tied low. This puts the flash in eight bit mode. So, in altera_avalone_am29lv065d_flash.c I added:

    # define CYGNUM_FLASH_16AS8 (1)

    You need to add a device descriptor in the following file ( ignore my project path):

    c:\projects\pmod\software\ecos\romram_install\include\cyg\io\flash_amxxxxx_parts.inl

    # if CYGNUM_FLASH_WIDTH == 8

    .

    .

    .# ifdef CYGHWR_DEVS_FLASH_AMD_AM29LV128

    { // AM29LV128

    long_device_id: true,

    device_id : FLASHWORD(0x7e),

    device_id2 : FLASHWORD(0x12),

    device_id3 : FLASHWORD(0x00),

    block_size : 0x10000 * CYGNUM_FLASH_INTERLEAVE,

    block_count: 256,

    device_size: 0x1000000 * CYGNUM_FLASH_INTERLEAVE,

    base_mask : ~(0x1000000 * CYGNUM_FLASH_INTERLEAVE - 1),

    bootblock : false,

    banked : false,

    bufsiz : 16

    }# endif

    Within the configuration tool under AMD AM29XXXXX FLASH memory support:

    check AMD AM29LV128 flash memory

    note that AMD AM29LV065D should remain checked.

    Just for grins within:

    c:\project\pmon\software\ecos\romram_install\include\cyg\io\flash\flash_amxxxxx.inl

    in the function: flash_query(void* data)

    I added the following dia_print

    // Manufacturers' code

    id[0] = *(FLASH_P2V(ROM+FLASH_VendorID_Addr));

    // Part number

    id[1] = *(FLASH_P2V(ROM+FLASH_DeviceID_Addr));

    id[2] = *(FLASH_P2V(ROM+FLASH_DeviceID_Addr2));

    id[3] = *(FLASH_P2V(ROM+FLASH_DeviceID_Addr3));

    diag_printf("ID = %x %x %x %x", id[0], id[1], id[2], id[3]);

    If all goes well it should print ID = 01 7e 12 0

    Hope this helps
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    gramham,

    I follow the steps you write and successfully read "01 7e 12 0" back. However,

    the following message shows it still can not init flash. Do you have any idea about this? Please help me, thanks.

    ----------------------------------------------------------------------------

    ID = 1 7e 12 0

    FLASH: driver init failed: Driver does not support device

    Sorry, FLASH config exceeds available space in FIS directory

    Ethernet eth: MAC address 00:07:ed:0f:61:cf

    IP: 0.0.0.0/255.255.255.0, Gateway: 0.0.0.0

    Default server: 0.0.0.0

    RedBoot™ bootstrap and debug environment [ROMRAM]

    Non-certified release, version UNKNOWN - built 16:57:59, Sep 27 2006

    Copyright © 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

    RAM: 0x04000020-0x06000000, [0x0402c7e8-0x05ffc000] available

    FLASH: 0x00000000 - 0x00000001, 0 blocks of 0x00000000 bytes each.

    RedBoot>

    -----------------------------------------------------------------------------

    --- Quote Start ---

    originally posted by graham615@Jun 14 2005, 05:00 PM

    aqura:

    ran into this myself today.

    i am using the cyclone ii 2c35 dev board. the documantation states that the flash_byte_n line is tied low. this puts the flash in eight bit mode. so, in altera_avalone_am29lv065d_flash.c i added:

    # define cygnum_flash_16as8 (1)

    you need to add a device descriptor in the following file ( ignore my project path):

    c:\projects\pmod\software\ecos\romram_install\include\cyg\io\flash_amxxxxx_parts.inl

    # if cygnum_flash_width == 8

    .

    .

    .# ifdef cyghwr_devs_flash_amd_am29lv128

    { // am29lv128

    long_device_id: true,

    device_id : flashword(0x7e),

    device_id2 : flashword(0x12),

    device_id3 : flashword(0x00),

    block_size : 0x10000 * cygnum_flash_interleave,

    block_count: 256,

    device_size: 0x1000000 * cygnum_flash_interleave,

    base_mask : ~(0x1000000 * cygnum_flash_interleave - 1),

    bootblock : false,

    banked : false,

    bufsiz : 16

    }# endif

    within the configuration tool under amd am29xxxxx flash memory support:

    check amd am29lv128 flash memory

    note that amd am29lv065d should remain checked.

    just for grins within:

    c:\project\pmon\software\ecos\romram_install\include\cyg\io\flash\flash_amxxxxx.inl

    in the function: flash_query(void* data)

    i added the following dia_print

    // manufacturers' code

    id[0] = *(flash_p2v(rom+flash_vendorid_addr));

    // part number

    id[1] = *(flash_p2v(rom+flash_deviceid_addr));

    id[2] = *(flash_p2v(rom+flash_deviceid_addr2));

    id[3] = *(flash_p2v(rom+flash_deviceid_addr3));

    diag_printf("id = %x %x %x %x", id[0], id[1], id[2], id[3]);

    if all goes well it should print id = 01 7e 12 0

    hope this helps

    <div align='right'><{post_snapback}> (index.php?act=findpost&pid=7622)

    --- quote end ---

    --- Quote End ---