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