M58LT256JST, M58LT256JSB
Flowcharts and pseudocodes
Figure 27. Buffer enhanced factory program flowchart and pseudocode
Start
Write 80h to
Address WA1
SETUP PHASE
Buffer_Enhanced_Factory_Program_Command
(start_address, DataFlow[]) {
writeToFlash (start_address, 0x80) ;
Write D0h to
Address WA1
writeToFlash (start_address, 0xD0) ;
do {
do {
status_register = readFlash (start_address);
Read Status
Register
NO
SR7 = 0
YES
NO
SR4 = 1
Initialize count
X=0
Write PDX
Address WA1
if (status_register.SR4==1) { /*error*/
if (status_register.SR3==1) error_handler ( ) ;/*VPP error */
if (status_register.SR1==1) error_handler ( ) ;/* Protected Block */
PROGRAM AND
}
VERIFY PHASE
while (status_register.SR7==1)
x=0; /* initialize count */
do {
writeToFlash (start_address, DataFlow[x]);
Read Status Register
SR3 and SR1for errors
Exit
Increment Count
X=X+1
x++;
NO
X = 32
YES
Read Status
Register
}while (x<32)
do {
status_register = readFlash (start_address);
NO
SR0 = 0
YES
}while (status_register.SR0==1)
NO
Last data?
YES
Write FFFFh to
Address = NOT WA1
} while (not last data)
writeToFlash (another_block_address, FFFFh)
EXIT PHASE
Read Status
Register
do {
status_register = readFlash (start_address)
NO
SR7 = 1
}while (status_register.SR7==0)
YES
Full Status Register
Check
End
full_status_register_check();
}
AI12898
97/108