Exemple #1
0
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;
}