[U-Boot-Users] Flash write problem on CSB226

Hi,
we have installed U-boot on a CSB226 board with a PXA255 CPU and a bank of 2 Intel 28F128J3 flash chips (8M x 16bit each). There appeared to be a problem with the flash write function. It would stop after a few words, claiming "flash not erased". Closer inspection revealed, only one of the flashes was in read mode, the other was still in status mode. So I suspected the write_buff function in boards/csb226/flash.c (which wrote the two chips sequentially as two 16-bit words) and modified it to access both chips in parallel as 32 bit (the flash_erase function already works this way). The flash write problem seems to be gone now. Did anyone else experience such problems, or is just our board equipped with particularly unequal or pernickety flash chips? In the attached patch, the old functions are just #ifdef'd out and could be easily reactivated.
There's one more thing I'm unsure about: Which is the right place to set the CPU clock? In boards/csb226/memsetup.S it is set to a default value. In cpu/pxa/start.S it is set to the configured CFG_CPUSPEED value, but memsetup is called after this.
Regards, Rolf

On Wed, Jan 28, 2004 at 11:40:00AM +0100, Rolf Peukert wrote:
we have installed U-boot on a CSB226 board with a PXA255 CPU and a bank of 2 Intel 28F128J3 flash chips (8M x 16bit each). There appeared to be a problem with the flash write function. It would stop after a few words, claiming "flash not erased". Closer inspection revealed, only one of the flashes was in read mode, the other was still in status mode.
Hmm, I havn't tested the CSB stuff for some time and I have only used it with the old board containing the PXA250. As there was no real customer project behind the board and I used it mainly for testing the network chip I didn't investigate the flash stuff too deeply.
There's one more thing I'm unsure about: Which is the right place to set the CPU clock? In boards/csb226/memsetup.S it is set to a default value. In cpu/pxa/start.S it is set to the configured CFG_CPUSPEED value, but memsetup is called after this.
Having just a short look into it it looks like a bug which didn't turn up because I didn't have a faster processor at that time.
Robert

Hello,
in message 40179180.7070608@imms.de you wrote:
So I suspected the write_buff function in boards/csb226/flash.c (which wrote the two chips sequentially as two 16-bit words) and modified it to access both chips in parallel as 32 bit (the flash_erase function already works this way). The flash write problem seems to be gone now. Did anyone else experience such problems, or is just our board equipped with particularly unequal or pernickety flash chips?
If the erase function was already working that way it should be probably OK to use this for writes, too.
In the attached patch, the old functions are just #ifdef'd out and could be easily reactivated.
I removed the old code; if anybody should really need it it's in the CVS history.
Thanks for the patch, added.
There's one more thing I'm unsure about: Which is the right place to set the CPU clock? In boards/csb226/memsetup.S it is set to a default value. In cpu/pxa/start.S it is set to the configured CFG_CPUSPEED value, but memsetup is called after this.
I didn't care about the PXA yet, but "memsetup.S" should set up the memory controller; clocks should probably be set up in some cpu/pxa/ file.
Best regards, Viele Grüße,
Wolfgang Denk

On Mon, Feb 09, 2004 at 09:42:51PM +0100, Wolfgang Denk wrote:
I didn't care about the PXA yet, but "memsetup.S" should set up the memory controller; clocks should probably be set up in some cpu/pxa/ file.
I'll look at this during the week - I need the board for the Embedded World anyway...
Robert
participants (3)
-
Robert Schwebel
-
Rolf Peukert
-
Wolfgang Denk