aboutsummaryrefslogtreecommitdiffstats
path: root/testhal/STM32/STM32F4xx/FSMC_NAND/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'testhal/STM32/STM32F4xx/FSMC_NAND/main.c')
-rw-r--r--testhal/STM32/STM32F4xx/FSMC_NAND/main.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/testhal/STM32/STM32F4xx/FSMC_NAND/main.c b/testhal/STM32/STM32F4xx/FSMC_NAND/main.c
index 29b2dfb..e75a937 100644
--- a/testhal/STM32/STM32F4xx/FSMC_NAND/main.c
+++ b/testhal/STM32/STM32F4xx/FSMC_NAND/main.c
@@ -124,7 +124,7 @@ static time_measurement_t tmu_driver_start;
/*
*
*/
-static bitmap_word_t badblock_map_array[BAD_MAP_LEN];
+static bitmap_word_t badblock_map_array[BAD_MAP_LEN];
static bitmap_t badblock_map = {
badblock_map_array,
BAD_MAP_LEN
@@ -429,6 +429,26 @@ static void general_test (NANDDriver *nandp, size_t first,
}
}
+ /* check fail status */
+ for (block=first; block<last; block++){
+ if (!nandIsBad(nandp, block)){
+ if (!is_erased(nandp, block)){
+ op_status = nandErase(nandp, block);
+ osalDbgCheck(0 == (op_status & 1)); /* operation failed */
+ }
+ pattern_fill();
+ op_status = nandWritePageData(nandp, block, 0,
+ nand_buf, nandp->config->page_data_size, &wecc);
+ osalDbgCheck(0 == (op_status & 1));
+
+ pattern_fill();
+ op_status = nandWritePageData(nandp, block, 0,
+ nand_buf, nandp->config->page_data_size, &wecc);
+ /* operation must failed here because of write in unerased space */
+ osalDbgCheck(1 == (op_status & 1));
+ }
+ }
+
/* write block with pattern, read it back and compare */
for (block=first; block<last; block++){
red_led_toggle();