OSStatus platform_flash_erase( const platform_flash_t *peripheral, uint32_t start_address, uint32_t end_address ) { OSStatus err = kNoErr; require_action_quiet( peripheral != NULL, exit, err = kParamErr); require_action( start_address >= peripheral->flash_start_addr && end_address <= peripheral->flash_start_addr + peripheral->flash_length - 1, exit, err = kParamErr); if( peripheral->flash_type == FLASH_TYPE_EMBEDDED ){ err = internalFlashErase( start_address, end_address ); require_noerr(err, exit); } #ifdef USE_MICO_SPI_FLASH else if( peripheral->flash_type == FLASH_TYPE_SPI ){ err = spiFlashErase( start_address, end_address ); require_noerr(err, exit); } #endif else{ err = kTypeErr; goto exit; } exit: return err; }
OSStatus platform_flash_erase( platform_flash_driver_t *driver, uint32_t StartAddress, uint32_t EndAddress ) { OSStatus err = kNoErr; require_action_quiet( driver != NULL, exit, err = kParamErr); require_action_quiet( driver->initialized != false, exit, err = kNotInitializedErr); require_action( StartAddress >= driver->peripheral->flash_start_addr && EndAddress <= driver->peripheral->flash_start_addr + driver->peripheral->flash_length - 1, exit, err = kParamErr); #ifndef NO_MICO_RTOS mico_rtos_lock_mutex( &driver->flash_mutex ); #endif if( driver->peripheral->flash_type == FLASH_TYPE_INTERNAL ){ err = internalFlashErase(StartAddress, EndAddress); require_noerr(err, exit_with_mutex); } #ifdef USE_MICO_SPI_FLASH else if( driver->peripheral->flash_type == FLASH_TYPE_SPI ){ err = spiFlashErase(StartAddress, EndAddress); require_noerr(err, exit_with_mutex); } #endif else{ err = kTypeErr; goto exit_with_mutex; } exit_with_mutex: #ifndef NO_MICO_RTOS mico_rtos_unlock_mutex( &driver->flash_mutex ); #endif exit: return err; }