
Yusuf Ibrahim Ozkok wrote:
Hi all,
I'm in trouble with cfi_flash driver. Can you please help me?
We have ported u-boot to our custom MPC8245 board, except the flash driver. Now I'm trying to use cfi_flash driver of u-boot. But until now (with more then a week of work) I couldn't succedded. So I need some help!!!
We have an Intel 28F640C3T flash on our custom MPC8245 board. Four flash chips are connected to 64 bit address bus.
In my experience, when the hardware engineers have given me a 64 data (not address - I assume that is a typo) bus, they _REQUIRE_ writes to be 64 bits at a time. In other words, you CANNOT write 8/16/32 bits (less than a full databus width) at a time. It saves them a gate or two, for some reason they think that is a big deal (it is, but not beneficial for software).
In my experience, I've always had to write 64 bits at a time. Writing 32 bits at a time (which is probably what you are currently doing) doesn't work because only half of your chips are going into write mode and everybody gets massively confused.
The solution is to load a floating point register (which is 64 bits) with the flash-destined data and write _that_, which does a single transaction 64 bit write (as opposed to two 32 bit writes). This is a pain to write initially, but once you get the technique working it really isn't a big deal.
Notes: * Check your processor documentation fine print: IIRC, you can do floating point loads and stores with the floating point unit "disabled" (which it probably is). Otherwise, you need to enable the FPU (no big deal).
* Reads work fine 8/16/32/64 bits at a time. Don't worry about reads, only writes.
* On the PowerPC, you cannot move data to/from integer registers to a FP register. You need to store it to RAM and load it in the FP register (or load constants directly).
* I don't know if the u-boot cfi driver knows how to do the 64 bit write trick. IIRC, other people have had this hardware limitation and have made u-boot work with it. Brows or use grep on the various boards and see what others have done.
[snip]
After this brief describtion of my problem I want to list below, what I have done, and clues I obtained;
I want to state out that this board is also being used with vxworks. And vxworks flash driver works well. So there shouldn't be any hardware problem.
How does the vxworks code do the flash writing? You need to do it in a _very_ similar way.
[snip]
Thank you very much.
Yusuf.
Software Eng. - Aselsan Inc.
Hope this helps. You're welcome. gvb