flashcp
Tobias Simon
tobias.simon at sp-ss.de
Thu Jul 19 17:08:21 EDT 2007
Hello Jörn,
> 1. You're off-by-one when (filestat.st_size % mtd.erasesize) yields
> zero.
Oops, you're right!
> 2. In principle the "patch" looks fine. Except that it should be a
> patch and probably follow kernel coding style or something similar.
--- mtd-utils-1.0.0/flashcp.c 2006-04-30 22:59:15.000000000 +0200
+++ mtd-utils-1.0.0_new/flashcp.c 2007-07-19 22:57:25.000000000 +0200
@@ -258,7 +258,14 @@
#warning "Check for smaller erase regions"
erase.start = 0;
- erase.length = filestat.st_size & ~(mtd.erasesize - 1);
+
+ if (filestat.st_size % mtd.erasesize) {
+ erase.length = filestat.st_size + mtd.erasesize - (filestat.st_size %
mtd.erasesize);
+ }
+ else {
+ erase.length = filestat.st_size;
+ }
+
if (filestat.st_size % mtd.erasesize) erase.length += mtd.erasesize;
if (flags & FLAG_VERBOSE)
{
> 3. I keep wondering whether the oddball erasesize of dataflash makes
> sense. Why did they pick 1056, the exact size of two 512 Byte nand
> pages with the standard 16 Bytes of OOB each? Could they need ECC as
> well and should the "spare" 32 bytes be used for that instead?
The standard page/erase-size of the AT45DB642x Dataflash we use
(http://www.atmel.com/dyn/resources/prod_documents/doc3542.pdf) is 1056.
Although it is configurable to 1024 by software, the atmel_mtd.c driver
(linux-2.6.21) uses 1056 as the erase size. The driver itself is full of odd
erase-sizes:
/*
* Detect and initialize DataFlash device:
*
* Device Density ID code #Pages PageSize Offset
* AT45DB011B 1Mbit (128K) xx0011xx (0x0c) 512 264 9
* AT45DB021B 2Mbit (256K) xx0101xx (0x14) 1025 264 9
* AT45DB041B 4Mbit (512K) xx0111xx (0x1c) 2048 264 9
* AT45DB081B 8Mbit (1M) xx1001xx (0x24) 4096 264 9
* AT45DB0161B 16Mbit (2M) xx1011xx (0x2c) 4096 528 10
* AT45DB0321B 32Mbit (4M) xx1101xx (0x34) 8192 528 10
* AT45DB0642 64Mbit (8M) xx111xxx (0x3c) 8192 1056 11
* AT45DB1282 128Mbit (16M) xx0100xx (0x10) 16384 1056 11
*/
--
Mit freundlichem Gruß / Kind regards
Tobias Simon
- Entwickler -
Simon + Puschmann Software-Systeme GbR
Tobias Simon, Andre Puschmann
Bergrat-Voigt-Straße 13
98693 Ilmenau
Tel.: 0173/2752144
E-Mail: tobias.simon at sp-ss.de
Internet: http://www.sp-ss.de
------------------------------------------------------------------------
Important Note: This e-mail and any attachments are confidential, may contain
trade secrets and may well also be legally privileged or otherwise protected
from disclosure. If you have received it in error, you are on notice of its
status. Please notify us immediately by reply e-mail and then delete this
e-mail and any attachment from your system. If you are not the intended
recipient please understand that you must not copy this e-mail or any
attachments or disclose the contents to any other person. Thank you.
More information about the linux-mtd
mailing list