JLINK-Commander, loadbin, ext CFI flash, EN29lv800b, LPC2220

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • JLINK-Commander, loadbin, ext CFI flash, EN29lv800b, LPC2220

    Dear forum,

    I have a HW-platform using the LPC2220(flashless) with connected ext.flash "EN29lv800b" on the external memory controller on CS0. (16-bit)

    I tried to use the JLINK-Commander Tool to flash the above flash-memory with a .bin file.(with an appropriate script)

    The script included the ext.CFI definition AND the workarea-RAM definition.

    The following error is returned after trying to flash the device:
    >>>

    ****** Error: Could not find CFI compliant flash device

    Target system has not enough RAM.
    <<<

    my question is, does the "JLINK Commander" utility support flashing of ext.CFI devices ?
    if yes, is the EN29lv800b recognized as a CFI?

    Who else has experience in using JLINK.exe as a one-time flasher?

    Is there a CFI probe command to use?

    (In addition, i am using the same arrangement as well in the IAR Workbench, but not work as well)

    I am able to supply the related script/log-files on request.

    Thank you for inputs... :P
  • AddOn Info:

    I now tried the J-Flash utility with correct init for CS0. This program supports a CFI probe command.
    Again, could not read the DeviceIDs correct value and complained.

    I then went ahead to write a little program to try to read the flash chips deviceid as specified in the datasheet:

    >>>>>
    //enable CS0 on the CPU
    BCFG0 = 0x10000420; //BCFG0: 16bit, rble, 2wst - 30 mhz : Betty: FLASH 0 @ 0x80000000

    #define FLASH1_BASE 0x80000000

    //NOTE: the Offset is added to a WORD-pointer, so actually its (Offset * 2) to give effective address!!

    unsigned short w;

    //read manufacturer ID, works
    *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0xAA; //effective address(as to disassembler-debugger) = 0x80000AAA
    *((volatile unsigned short *) FLASH1_BASE + 0x2AA) = 0x55; //effective address = 0x80000554
    *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0x90; //effective address = 0x80000AAA
    w = *((volatile unsigned short *) FLASH1_BASE + 0x100); //effective address = 0x80000200; reads 0x001C, the correct manufacturer-id
    //read deviceid , works
    (*((volatile unsigned short *) FLASH1_BASE)) = 0xF0; //reset flash chip

    *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0xAA; //effective address = 0x80000AAA
    *((volatile unsigned short *) FLASH1_BASE + 0x2AA) = 0x55; //effective address = 0x80000554
    *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0x90; //effective address = 0x80000AAA
    w = *((volatile unsigned short *) FLASH1_BASE + 0x01); //effective address = 0x80000002; reads 0x225B, the correct deviceid!
    (*((volatile unsigned short *) FLASH1_BASE)) = 0xF0; //reset flash chip
    <<<<<<<

    This did indeed work to read the flash IDs. So i assume there is no Hardware fault on the target.