i.mx21 ads nor flash

Cristiano De Alti cristiano_dealti at hotmail.com
Mon Jan 27 18:46:12 EST 2014


Hi,
  I'm trying to revive an old i.mx21 ads board.
I've flashed barebox-2014.01.0 and the board boots.
Ethernet works and I'm able to boot Linux via tftp.
Adding CONFIG_NAND=y in the .config enables the 64MB NAND flash (why is it
not set in the board defconfig?) and I can erase it.
Nice work, Barebox!
My question is about the NOR flash. The board has two banks of 8Mx16bit NOR
flash paralleled. So the data bus width is 32 bit and the capacity is 32MB.
The NOR is detected by Barebox:

cfi_flash cfi_flash0: found cfi flash at c8000000, size 33554432

and I can see the /dev/nor0 device:

crw-------   33554432 /dev/nor0

I can erase it but only up to 16M. For example, this works:

erase /dev/nor0 10M+6M

Anyway if I try to erase an area above 16M, e.g.:

erase /dev/nor0 16M+1k

or the whole device, e.g.:

erase /dev/nor0

the command fails with:

erase: Invalid argument

I've added printouts and the area I want to delete is past the last eraseregion.

So I wonder how the units of the erase command are meant. If the unit is
byte, the command:

erase /dev/nor0 0+16M

should obviously mean "erase the first half of the whole flash".
But then the above commands shouldn't fail.

Alternatively, given that there are 2 16MB banks in parallel it could also
mean "erase 16MB in each bank" i.e. the whole flash.

I'm not sure what's happening.

Ciao,
  Cristiano




More information about the barebox mailing list