Ejemplo n.º 1
0
__externC void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
hal_system_init( void )
{
#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_SRAM)
    hal_wdog_disable();
    hal_gpio_init();
    hal_start_clocks();
#endif
#if defined(CYG_HAL_STARTUP_SRAM) && !defined(CYGHWR_HAL_CORTEXM_KINETIS_SRAM_UNIFIED)
    // Note: For CYG_HAL_STARTUP_SRAM, the SRAM_L bank simulates ROM
    // Relocate data from ROM to RAM
    {
        register cyg_uint32 *ram_p, *rom_p;
        for( ram_p = &__ram_data_start, rom_p = &__rom_data_start;
             ram_p < &__ram_data_end;
             ram_p++, rom_p++ )
            *ram_p = *rom_p;
    }

    // Relocate data from ROM to SRAM
    {
        register cyg_uint32 *ram_p, *sram_p;
        for( ram_p = &__sram_data_start, sram_p = &__srom_data_start;
             ram_p < &__sram_data_end;
             ram_p++, sram_p++ )
            *ram_p = *sram_p;
    }
#endif
}
__externC void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
hal_system_init( void )
{
#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_SRAM)
    hal_wdog_disable();
    hal_misc_init();
# ifdef CYGPKG_HAL_CORTEXM_KINETIS_FLEXBUS
    {
        // This delay is needed for Micron RAM wake-up.
        cyg_uint32 busy_delay;
        for(busy_delay = 0x100000; busy_delay; busy_delay--)
            __asm__ volatile ("nop\n");

        hal_flexbus_init_initial();

        hal_start_clocks();

        for(busy_delay = 0x100000; busy_delay; busy_delay--)
            __asm__ volatile ("nop\n");

        hal_flexbus_init_final();
    }
# else
        hal_start_clocks();
# endif
#endif
}