[U-Boot-Users] CFI conformant flash: REDUX
joseph_sacco at comcast.net
joseph_sacco at comcast.net
Fri Oct 26 22:41:45 CEST 2007
In a recent post I described a problem getting the common CFI flash driver in
u-boot-1.2.0 to work with a pair of Spansion S29JL064H memory devices connected
on parallel. After plodding through the CFI flash driver source code and
conducting some experiments, the root cause of the problem was found to be an
Endian problem. The flash on this particular board is wired little Endian. The
processor on the board, an MPC8270, is big Endian.
The CFI flash driver source, drivers/cfi_flash.c, supports little ENDIAN when a
preprocessor macro, __LITTLE_ENDIAN, is defined. As quick an dirty hack I
uncommented the CFLAGS line in the drivers Makefile to enable debugging and
added '-D__LITTLE_ENDIAN' to the CFLAGS list. This hack actually worked:
[from flinfo]
Bank # 1: CFI conformant FLASH (32 x 16) Size: 16 MB in 142 Sectors
AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x7E0201
Erase timeout: 8192 ms, write timeout: 1 ms
The driver makefile hack far is too encompassing, which leads to a question:
"Where is the right place to define this preprocessor macro definition?"
The board configuration header file is the obvious place. However, defining
__LITTLE_ENDIAN in a the board configuration header file for a board with a big
ENDIAN processor causes all sorts of michief. Changing the name of the
__LITTLE_ENDIAN macro in drivers/cfi_flash.c to something less generic would
also be a bad idea.
The following might be a workable approach. I have validated that it works on
this particular board.
* in the board configuration header file
#define CFG_FLASH_LITTLE_ENDIAN
* in drivers/cfi_flash.c
--- u-boot-1.2.0/drivers/cfi_flash.c.orig 2007-10-26 14:36:00.060179333
-0400
+++ u-boot-1.2.0/drivers/cfi_flash.c 2007-10-26 15:18:01.485629019 -0400
@@ -56,6 +56,10 @@
*
*/
+#ifdef CFG_FLASH_LITTLE_ENDIAN
+#define __LITTLE_ENDIAN
+#endif
+
#ifndef CFG_FLASH_BANKS_LIST
#define CFG_FLASH_BANKS_LIST { CFG_FLASH_BASE }
#endif
Thoughts?
-Joseph
--
joseph_sacco [at] comcast [dot] net
More information about the U-Boot
mailing list