[U-Boot-Users] CFI flash driver problem

Jeff Mann MannJ at embeddedplanet.com
Mon Feb 26 23:31:01 CET 2007


U-Boot users:
 
I am having a problem using the CFI flash drivers on a new board and
would appreciate any suggestions to find my mistakes. (Wolfgang: this is
the AMCC Acadia board that is on its way to you). The processor is a
PPC405ez. 

When writing or erasing the flash, the processor has an Program Check
Exception. Below you can see the exeption handling data I receive when
trying to erase a sector on flash:
 
NIP: 00000700 XER: 00000000 LR: 03FDC27C REGS: 03f6a9a0 TRAP: 0700 DAR:
03FD0014
MSR: 00000000 EE: 0 PR: 0 FP: 0 ME: 0 IR/DR: 00
 
GPR00: 00000000 03F6AA90 FFFFFFFF 03FFD1A8 00000030 03F6AAA0 00000030
BE59D81C
GPR08: 00000000 FF000000 03F6AAA5 00000005 574FBDE6 FFFFFFFF 03FF9800
0400D000
GPR16: FFFFFFFF FFFFFFFF DFFFFFFD 03F6ABAA 00000001 00000000 00000000
00000000
GPR24: 00000000 0000007F 03FFD9F4 03FFD1A8 03FFD1A8 03F6AF4C 03FF9E9C
00000040
** Illegal Instruction **
Call backtrace:
Program Check Exception

I have debugged the error, and when stepping through code in "human
time," I do not get this exeption. So, I put in in some basic debugging
printouts and I can see that the problem occuring some place in the
flash_write_cmd() function when calling it with "flash_write_cmd (info,
sect, 0, AMD_CMD_ERASE_SECTOR);" at around line 490 in flash_erase(). 

I've added wait states to the flash chip select with no change. Because
the flash shares the EBC bus with memory through a bus transiever, I
thought that possibly there were problems with the transiever's timing.
But after adding the maximum number of wait states, I do not think this
is the case. 

Thanks for you help,
JM







More information about the U-Boot mailing list