
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