static int mcsdl_erase_flash(void) { int i; UINT8 readBuffer[32]; //---------------------------------------- // Do erase //---------------------------------------- mcsdl_select_isp_mode(ISP_MODE_ERASE_FLASH); mcsdl_unselect_isp_mode(); //---------------------------------------- // Check 'erased well' //---------------------------------------- mcsdl_read_flash_from( readBuffer , 0x0000, 16 ); mcsdl_read_flash_from( &readBuffer[16], 0x7FF0, 16 ); // Compare with '0xFF' for(i=0; i<32; i++){ if( readBuffer[i] != 0xFF ) return MCSDL_RET_ERASE_FLASH_VERIFY_FAILED; } return MCSDL_RET_SUCCESS; }
static int mcsdl_erase_flash(INT8 IdxNum) { int i; UINT8 readBuffer[32]; //---------------------------------------- // Do erase //---------------------------------------- if (IdxNum > 0) mcsdl_select_isp_mode(ISP_MODE_NEXT_CHIP_BYPASS); mcsdl_select_isp_mode(ISP_MODE_ERASE_FLASH); mcsdl_unselect_isp_mode(); //---------------------------------------- // Check 'erased well' //---------------------------------------- //start ADD DELAY mcsdl_read_flash_from(readBuffer, 0x0000, 16, IdxNum); mcsdl_read_flash_from(&readBuffer[16], 0x7FF0, 16, IdxNum); //end ADD DELAY // Compare with '0xFF' for (i = 0; i < 32; i++) { if (readBuffer[i] != 0xFF) return MCSDL_RET_ERASE_FLASH_VERIFY_FAILED; } return MCSDL_RET_SUCCESS; }
/*------------------------------------------------------------------ // // Sub functions // //------------------------------------------------------------------*/ static int mcsdl_erase_flash(INT8 IdxNum) { int i; UINT8 readBuffer[32]; int eraseCompareValue = 0xFF; /*---------------------------------------- // Do erase //----------------------------------------*/ if (IdxNum > 0) { mcsdl_select_isp_mode(ISP_MODE_NEXT_CHIP_BYPASS); mcsdl_delay(MCSDL_DELAY_3US); } mcsdl_select_isp_mode(ISP_MODE_ERASE_FLASH); mcsdl_unselect_isp_mode(); /*---------------------------------------- // Check 'erased well' //----------------------------------------*/ mcsdl_read_flash_from(readBuffer, 0x0000, 16, IdxNum); mcsdl_read_flash_from(&readBuffer[16], 0x7FF0, 16, IdxNum); if (IdxNum > 0) { eraseCompareValue = 0x00; } for (i = 0; i < 32; i++) { if (readBuffer[i] != eraseCompareValue) return MCSDL_RET_ERASE_FLASH_VERIFY_FAILED; } return MCSDL_RET_SUCCESS; }