#include <fcntl.h>
#include <string.h>
-#define FILE_SIZE_IN_MEG 2
+#define FILE_SIZE_IN_MEG 32
#define BLOCK_SIZE (32 * 528)
#define BLOCKS_PER_MEG ((1024*1024)/(32 * 512))
static int h;
static __u8 ffChunk[528];
+static int eraseDisplayEnabled;
+
+static int markedBadBlocks[] = { 1, 4, -1};
+
+static int IsAMarkedBadBlock(int blk)
+{
+ int *m = markedBadBlocks;
+
+ while(*m >= 0)
+ {
+ if(*m == blk) return 1;
+ m++;
+ }
+ return 0;
+}
static void CheckInit(yaffs_Device *dev)
for(i = 0; i < FILE_SIZE_IN_BLOCKS; i++)
{
yaffs_FEEraseBlockInNAND(dev,i);
+
+ if(IsAMarkedBadBlock(i))
+ {
+ yaffs_Spare spare;
+ memset(&spare,0xff,sizeof(spare));
+ spare.blockStatus = 1;
+
+ yaffs_FEWriteChunkToNAND(dev, i * 32,NULL,&spare);
+ }
}
}
+ eraseDisplayEnabled = 1;
}
}
CheckInit(dev);
- printf("Erasing block %d\n",blockInNAND);
+ if(eraseDisplayEnabled)
+ {
+ printf("Erasing block %d\n",blockInNAND);
+ }
lseek(h,blockInNAND * BLOCK_SIZE,SEEK_SET);
for(i = 0; i < 32; i++)