/*FUNCTION*------------------------------------------------------------------- * * Function Name : ftfl_flash_init * Returned Value : TRUE if successful, FALSE otherwise * Comments : * Initialize flash specific information. * *END*-----------------------------------------------------------------------*/ bool ftfl_flash_init ( /* [IN] Device instance */ IO_FLASHX_STRUCT_PTR dev_ptr ) { FTFL_FLASH_INTERNAL_STRUCT_PTR dev_spec_ptr; FTFL_MemMapPtr ftfl_ptr; if (_bsp_ftfx_io_init(0)) { /* Cannot initialize FTF module */ return FALSE; } /* allocate internal structure */ dev_spec_ptr = _mem_alloc(sizeof(FTFL_FLASH_INTERNAL_STRUCT)); #if MQX_CHECK_MEMORY_ALLOCATION_ERRORS if (dev_spec_ptr == NULL) { return FALSE; } #endif dev_ptr->DEVICE_SPECIFIC_DATA = dev_spec_ptr; /* get the pointer to ftfl registers structure */ ftfl_ptr = (FTFL_MemMapPtr)_bsp_get_ftfl_address(); dev_spec_ptr->ftfl_ptr = (volatile char *)ftfl_ptr; /* save pointer to function in ram */ dev_spec_ptr->flash_execute_code_ptr = ftfl_init_ram_function((char *)ftfl_ram_function, (char *)ftfl_ram_function_end); #if PSP_MQX_CPU_IS_KINETIS dev_spec_ptr->flash_invalidate_code_ptr = ftfl_init_ram_function((char *)kinetis_flash_invalidate_cache, (char *)kinetis_flash_invalidate_cache_end); #endif #if MQX_CHECK_MEMORY_ALLOCATION_ERRORS if (dev_spec_ptr->flash_execute_code_ptr == NULL) { return FALSE; } #if PSP_MQX_CPU_IS_KINETIS if (dev_spec_ptr->flash_invalidate_code_ptr == NULL) { return FALSE; } #endif #endif #if BSPCFG_FLASHX_USE_PA_RAM && BSP_INTERNAL_FLEXRAM_BASE /* Make sure Programing Acceleration RAM was enabled */ flexnvm_set_flexram(dev_ptr, (unsigned char)FLEXNVM_FLEXRAM_RAM); #endif return TRUE; }
/*FUNCTION*------------------------------------------------------------------- * * Function Name : ftfl_flash_init * Returned Value : TRUE if successful, FALSE otherwise * Comments : * Initialize flash specific information. * *END*-----------------------------------------------------------------------*/ boolean ftfl_flash_init ( /* [IN] Device instance */ IO_FLASHX_STRUCT_PTR dev_ptr ) { FTFL_FLASH_INTERNAL_STRUCT_PTR dev_spec_ptr; FTFL_MemMapPtr ftfl_ptr; if (_bsp_ftfx_io_init(0)) { /* Cannot initialize FTF module */ return FALSE; } /* allocate internal structure */ dev_spec_ptr = _mem_alloc(sizeof(FTFL_FLASH_INTERNAL_STRUCT)); #if MQX_CHECK_MEMORY_ALLOCATION_ERRORS if( dev_spec_ptr == NULL) { return FALSE; } #endif dev_ptr->DEVICE_SPECIFIC_DATA = dev_spec_ptr; /* get the pointer to ftfl registers structure */ ftfl_ptr = (FTFL_MemMapPtr)_bsp_get_ftfl_address(); dev_spec_ptr->ftfl_ptr = (vchar_ptr)ftfl_ptr; /* save pointer to function in ram */ dev_spec_ptr->flash_execute_code_ptr = ftfl_init_ram_function (); return TRUE; }