Description
Source
Call Graph
Start Line: 367
unsigned char SkipBlockNandFlash_WriteBlock(const struct SkipBlockNandFlash *skipBlock, unsigned short block, void *data)
{
// Number of pages per block
unsigned int numPagesPerBlock;
// Page size
unsigned int pageSize;
// Page index
unsigned short i;
// Error returned by SkipBlockNandFlash_WritePage
unsigned char error = 0;
// Retrieve model information
pageSize = NandFlashModel_GetPageDataSize(MODEL(skipBlock));
numPagesPerBlock = NandFlashModel_GetBlockSizeInPages(MODEL(skipBlock));
// Check that the block is LIVE
if (CheckBlock(skipBlock, block) != GOODBLOCK) {
TRACE_ERROR("SkipBlockNandFlash_WriteBlock: Block is BAD.\n\r");
return NandCommon_ERROR_BADBLOCK;
}
for (i = 0; i < numPagesPerBlock; i++) {
error = EccNandFlash_WritePage(ECC(skipBlock), block, i, data, 0);
if (error) {
TRACE_ERROR("SkipBlockNandFlash_WriteBlock: Cannot write page %d of block %d.\n\r", i, block);
return NandCommon_ERROR_CANNOTWRITE;
}
data = (void *) ((unsigned char *) data + pageSize);
}
return 0;
}