Thanks again!
wat i can see don´t this prog reed Spansion S29GLxxxN memory.
Mine bricked Tvix 7000A need prog that can reed Spansion S29GLxxxN becuse
that all tvix prog is in that memory.
I think tvix block some thing in that memory so i can´t reflash mine Spansion.
Can you make this prog to reed Spansion S29GLxxxN ?
Many shode be happy if you do this.
I have found some thing that i don´t now if it is some help to change youre prog.
//---------------------------------------------------------
// Spansion S29GLxxxN MirrorBit Flash: XJEase device file
// S29GLxxxN.xje Revision: 1.20
// (c)2001-2008 XJTAG Limited
//
// Disclaimer: XJTAG makes no guarantees whatsoever
// about this code. You use it at your own risk ...
// This code requires XJTAG version 1.4 or later.
//
// This file tests Non-JTAG Flash using TestNonDestructive()(INT result)
// TestDestructive()(INT result)
//---------------------------------------------------------
// This file covers the whole S29GLxxxN family of Flash
// devices. Select all the appropriate package options
// for your device before running the code.
//---------------------------------------------------------
DEVICE NAME := "S29GLxxxN"
PINS
// 56-pin TSOP
// word mode
ADDR := 56, 1, 2, 15, 12, 11, 18, 19, 54, 3, 4, 5, 6, 7, 8, 9, 10, 20, 21, 22, 23, 24, 25, 26, 31;
DATA := 51, 49, 47, 45, 42, 40, 38, 36, 50, 48, 46, 44, 41, 39, 37, 35;
// byte mode : remember to set NYBTE low and change to byte mode commands.
//ADDR := 56, 1, 2, 15, 12, 11, 18, 19, 54, 3, 4, 5, 6, 7, 8, 9, 10, 20, 21, 22, 23, 24, 25, 26, 31, 51;
//DATA := 50, 48, 46, 44, 41, 39, 37, 35;
NWE := 13;
NCE := 32;
NOE := 34;
RDY := 17;
NRESET := 14;
BYTE := 53;
/*
// 56-pin reverse TSOP
// word mode
ADDR := 1, 56, 55, 42, 45, 46, 39, 38, 3, 54, 53, 52, 51, 50, 49, 48, 47, 37, 36, 35, 34, 33, 32, 31, 26;
DATA := 6, 8, 10, 12, 15, 17, 19, 21, 7, 9, 11, 13, 16, 18, 20, 22;
// byte mode : remember to set NYBTE low and change to byte mode commands.
//ADDR := 1, 56, 55, 42, 45, 46, 39, 38, 3, 54, 53, 52, 51, 50, 49, 48, 47, 37, 36, 35, 34, 33, 32, 31, 26, 6;
//DATA := 7, 9, 11, 13, 16, 18, 20, 22;
NWE := 44;
NCE := 25;
NOE := 23;
RDY := 40;
NRESET := 43;
BYTE := 4;
// 64-ball fortified BGA
// word mode
ADDR := F8, C8, B8, C5, D4, D5, C4, B3, E7, D7, C7, A7, B7, D6, C6, A6, B6, A3, C3, D3, B2, A2, C2, D2, E2;
DATA := G7, F6, G6, F5, G4, F4, G3, F3, E6, H6, E5, H5, H4, E4, H3, E3;
// byte mode : remember to set NYBTE low and change to byte mode commands.
//ADDR := F8, C8, B8, C5, D4, D5, C4, B3, E7, D7, C7, A7, B7, D6, C6, A6, B6, A3, C3, D3, B2, A2, C2, D2, E2, G7;
//DATA := E6, H6, E5, H5, H4, E4, H3, E3;
NWE := A5;
NCE := F2;
NOE := G2;
RDY := A4;
NRESET := B5;
BYTE := F7;
*/
END;
DISABLE DEVICE
NCE := 1;
NOE := 1;
END;
TEST COVERAGE
ADDR := SHORTS OPEN HI LO;
DATA := SHORTS OPEN HI LO;
NCE := OPEN HI LO;
NOE := OPEN HI LO;
NWE := OPEN HI LO;
END;
FILES
"memtestFlash.xje";
//"DataReader.xje";
END;
END;
/*
// Commands: x8
INT ADDR_UNLOCK_1 := 0xAAA;
INT ADDR_UNLOCK_2 := 0x555;
INT ADDR_AUTOSELECT := 0xAAA;
INT ADDR_PROGRAM := 0xAAA;
INT ADDR_ERASE_SETUP := 0xAAA;
INT ADDR_ERASE := 0xAAA;
INT ADDR_ABORT_PROG := 0xAAA;
INT ADDR_DEV_ID0 := 0x02;
INT ADDR_DEV_ID1 := 0x1C;
INT ADDR_DEV_ID2 := 0x1E;
*/
// Commands: x16
INT ADDR_UNLOCK_1 := 0x555;
INT ADDR_UNLOCK_2 := 0x2AA;
INT ADDR_AUTOSELECT := 0x555;
INT ADDR_PROGRAM := 0x555;
INT ADDR_ERASE_SETUP := 0x555;
INT ADDR_ERASE := 0x555;
INT ADDR_ABORT_PROG := 0x555;
INT ADDR_DEV_ID0 := 0x01;
INT ADDR_DEV_ID1 := 0x0E;
INT ADDR_DEV_ID2 := 0x0F;
// Commands: x8 and x16
INT DATA_UNLOCK_1 := 0xAA;
INT DATA_UNLOCK_2 := 0x55;
INT DATA_AUTOSELECT := 0x90;
INT DATA_PROGRAM := 0xA0;
INT DATA_ERASE_SETUP := 0x80;
INT DATA_ERASE_ALL := 0x10;
INT DATA_ERASE_SEC := 0x30;
INT ADDR_MAN_ID := 0x00;
INT ADDR_DEV_ID := 0x01;
INT DATA_WRITETOBUF := 0x25;
INT DATA_PROGBUF := 0x29;
INT ABORT_PROGBUF := 0xF0;
INT MANUFACTURER_ID := 0x0001; //Intel
// S29GLxxxN IDs: x16
INT DEVICE_ID := 0x227E22212201; // S29GL128N
//INT DEVICE_ID := 0x227E22222201; // S29GL256N
//INT DEVICE_ID := 0x227E22232201; // S29GL512N
//INT DEVICE_ID := 0x227E22132201; // S29GL064N model 06/07/V6/V7
//INT DEVICE_ID := 0x227E220C2201; // S29GL064N model 01/02/V1/V2
//INT DEVICE_ID := 0x227E22102200; // S29GL064N model 04 (bottom boot)
//INT DEVICE_ID := 0x227E22102201; // S29GL064N model 03 (top boot)
//INT DEVICE_ID := 0x227E221D2200; // S29GL032N model 01/02/V1/V2
//INT DEVICE_ID := 0x227E221A2200; // S29GL032N model 04 (bottom boot)
//INT DEVICE_ID := 0x227E221A2201; // S29GL032N model 03 (top boot)
// S29GLxxxN IDs: x8
//INT DEVICE_ID := 0x7E2101; // S29GL128N
//INT DEVICE_ID := 0x7E2201; // S29GL256N
//INT DEVICE_ID := 0x7E2301; // S29GL512N
//INT DEVICE_ID := 0x7E1301; // S29GL064N model 06/07/V6/V7
//INT DEVICE_ID := 0x7E0C01; // S29GL064N model 01/02/V1/V2
//INT DEVICE_ID := 0x7E1000; // S29GL064N model 04 (bottom boot)
//INT DEVICE_ID := 0x7E1001; // S29GL064N model 03 (top boot)
//INT DEVICE_ID := 0x7E1D00; // S29GL032N model 01/02/V1/V2
//INT DEVICE_ID := 0x7E1A00; // S29GL032N model 04 (bottom boot)
//INT DEVICE_ID := 0x7E1A01; // S29GL032N model 03 (top boot)
/*
INT MANUFACTURER_ID := 0x0020; //Numonyx/ST
// M29W128
INT DEVICE_ID := 0x227E22212201; //GH *16
//INT DEVICE_ID := 0x227E22212200; //GL *16
//INT DEVICE_ID := 0x7E2101; //GH *8
//INT DEVICE_ID := 0x7E2100; //GL *8
//INT DEVICE_ID := 0x227E2212228A; //FH *16
//INT DEVICE_ID := 0x227E2212228B; //FL *16
//INT DEVICE_ID := 0x7E128A; //GH *8
//INT DEVICE_ID := 0x7E128B; //GL *8
*/
CONST INT BUFFER_LENGTH := 0x10; // double if 8 bit wide data bus ?
CONST INT ADDR_BUS_WIDTH := WIDTHOF(ADDR);
CONST INT DATA_BUS_WIDTH := WIDTHOF(DATA);
CONST INT FLASH_SIZE := (1<<ADDR_BUS_WIDTH)*DATA_BUS_WIDTH;
CONST INT BLOCK_LENGTH := (0x10000/DATA_BUS_WIDTH)*8; // For boot sector devices, use larger block size
CONST INT FLASH_PROG_LEVEL_NONE := 0; // Flash erased everywhere
CONST INT FLASH_PROG_LEVEL_SOME := 1; // Flash programmed enough to verify data/addr bus for opens/stucks and data bus
// for shorts. Ie. Data written to a single block, or small number of blocks.
CONST INT FLASH_PROG_LEVEL_LOTS := 2; // Flash programmed enough to data/addr bus for opens/stucks and shorts.
// Ie. Data written to a large number of blocks.
//------------------------------------------------------------------------
// The higher this level is set, the more test coverage will be attained.
// The aim is to set the highest level possible with the test still passing.
// If the flash is totally erased, the test will only pass if this variable
// is set to FLASH_PROG_LEVEL_NONE.
//------------------------------------------------------------------------
CONST INT FLASH_PROG_LEVEL := FLASH_PROG_LEVEL_NONE;
CONST INT RESULT_PASS := FALSE;
CONST INT RESULT_FAIL := TRUE;
// Globals
INT DEBUG := FALSE;
INT ALL_ONES WIDTH FLASH_SIZE := ~0[(FLASH_SIZE-1)..0];
INT dataSet WIDTH FLASH_SIZE;
//------------------------------------------------------------------------
// Includes Read ID test and optional Readonly Data and Address bus tests.
// The optional test only be used if the flash has been sufficiently
// programmed (by setting FlASH_PROGRAMMED to TRUE).
// Much quicker alternative to Destructive test.
//------------------------------------------------------------------------
TestNonDestructive()(INT result)
INT tempResult;
result := RESULT_PASS;
IF (WRITEABLE(BYTE)) THEN
SET BYTE := 1;
END;
IF (WRITEABLE(NRESET)) THEN
SET NRESET := 0;
SET NRESET := 1;
END;
PRINT("\n\nStarting Read ID test...\n");
ReadIDtest()(result);
IF (FLASH_PROG_LEVEL > FLASH_PROG_LEVEL_NONE) THEN
PRINT("\nStarting Non-Destructive memory test\n");
MemTestNonDestructive()(tempResult);
IF tempResult = RESULT_FAIL THEN
result := RESULT_FAIL;
END;
ELSE
PRINT("FLASH_PROG_LEVEL currently set to FLASH_PROG_LEVEL_NONE\nAlthough the ReadID test excersises the data/addr bus and control lines,\na more comprehensive test can be done by changing FLASH_PROG_LEVEL\nThis can only be done if the flash is progammed (see device file for more information).\n\n");
END;
IF result = RESULT_FAIL THEN
PRINT("Non Destructive Memory Test FAILED...\n\n");
ELSE
PRINT("Non Destructive Memory Test PASSED...\n\n");
END;
END;
Okey it is not all code, i can´t insert all ore sent the file.
//eiza