Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++
12603 Discussions

How to implement Reboot for StratixIIs60ES ?

Altera_Forum
Honored Contributor II
905 Views

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.
0 Kudos
2 Replies
Altera_Forum
Honored Contributor II
270 Views

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
0 Kudos
Altera_Forum
Honored Contributor II
270 Views

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 ---  

0 Kudos
Reply