当前位置: 首页 > 工具软件 > kboot > 使用案例 >

KBOOT memory init

拓拔德馨
2023-12-01
//! @brief Bootloader global context data.
//!
//! @ingroup context
bootloader_context_t g_bootloaderContext = {.memoryInterface = &g_memoryInterface,
                                            .memoryMap = g_memoryMap,
#if BL_FEATURE_EXPAND_MEMORY
                                            .externalMemoryMap = g_externalMemoryMap,
#endif // BL_FEATURE_EXPAND_MEMORY
                                            .allPeripherals = g_peripherals,
                                            .activePeripheral = NULL, // Filled in at run time.
                                            .propertyInterface = &g_propertyInterface,
                                            .commandInterface = &g_commandInterface,
#if !BL_FEATURE_HAS_NO_INTERNAL_FLASH
                                            .flashDriverInterface = &g_flashDriverInterface,
#if !BL_DEVICE_IS_LPC_SERIES
                                            .allFlashState = &g_flashState,
                                            .allFlashCacheState = &g_flashcacheState,
#if BL_FEATURE_SUPPORT_DFLASH
                                            .dflashDriverInterface = &g_dflashDriverInterface,
                                            .dFlashState = &g_dflashState,
#endif // BL_FEATURE_SUPPORT_DFLASH
                                            
#else
                                            .allFlashState = g_flashiapState,
#endif // !BL_DEVICE_IS_LPC_SERIES
#endif // #if !BL_FEATURE_HAS_NO_INTERNAL_FLASH
#if AES_SECURITY_SUPPORTED
                                            .aesInterface = &g_aesInterface,
#endif

};
//! @brief Interface to generic memory operations.
const memory_interface_t g_memoryInterface = {
    mem_init,     mem_read, mem_write,
#if !BL_FEATURE_MIN_PROFILE || BL_FEATURE_FILL_MEMORY
    mem_fill,
#else
    NULL,
#endif // !BL_FEATURE_MIN_PROFILE
    mem_flush,
#if BL_FEATURE_EXPAND_MEMORY
    mem_finalize,
#else
    NULL,
#endif // BL_FEATURE_EXPAND_MEMORY
    mem_erase,
};
// See memory.h for documentation on this function.
status_t mem_init(void)
{
    status_t status = kStatus_Success;

    const memory_map_entry_t *map = &g_bootloaderContext.memoryMap[0];

    while (map->memoryInterface)
    {
        if (map->memoryInterface->init)
        {
            map->memoryInterface->init();
        }
        ++map;
    }

#if BL_FEATURE_EXPAND_MEMORY
    external_memory_map_entry_t *extMap = (external_memory_map_entry_t *)&g_bootloaderContext.externalMemoryMap[0];
    while (extMap->memoryInterface)
    {
        if (extMap->memoryInterface->init)
        {
            status = extMap->memoryInterface->init();
        }
        ++extMap;
    }
#endif // BL_FEATURE_EXPAND_MEMORY
    return status;
}

 

 类似资料:

相关阅读

相关文章

相关问答