Description
Source
Call Graph
Start Line: 138
unsigned char SkipBlockNandFlash_Initialize(struct SkipBlockNandFlash *skipBlock, const struct NandFlashModel *model, unsigned int commandAddress, unsigned int addressAddress, unsigned int dataAddress, const Pin pinChipEnable, const Pin pinReadyBusy)
{
unsigned char error;
#if !defined(OP_BOOTSTRAP_on)
unsigned int numBlocks;
unsigned int block;
#endif
TRACE_DEBUG("SkipBlockNandFlash_Initialize()\n\r");
// Initialize SkipBlockNandFlash
#if !defined(OP_BOOTSTRAP_on)
error = EccNandFlash_Initialize(ECC(skipBlock),
model,
commandAddress,
addressAddress,
dataAddress,
pinChipEnable,
pinReadyBusy);
#else
error = RawNandFlash_Initialize(RAW(skipBlock),
model,
commandAddress,
addressAddress,
dataAddress,
pinChipEnable,
pinReadyBusy);
#endif
#if !defined(OP_BOOTSTRAP_on)
if (error) {
return error;
}
// Retrieve model information
numBlocks = NandFlashModel_GetDeviceSizeInBlocks(MODEL(skipBlock));
// Initialize block statuses
TRACE_DEBUG("Retrieving bad block information ...\n\r");
// Retrieve block status from their first page spare area
for (block = 0; block < numBlocks; block++) {
// Read spare of first page
error = CheckBlock(skipBlock, block);
if (error != GOODBLOCK) {
if (error == BADBLOCK) {
TRACE_DEBUG("Block #%d is bad\n\r", block);
}
else {
TRACE_ERROR(
"SkipBlockNandFlash_Initialize: Cannot retrieve info from block #%u\n\r", block);
}
}
}
#endif
return 0;
}