mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-01-15 06:59:22 +08:00
ea6d73f140
1. Upgrade Cortex driver library (CMSIS -> CMSIS & Device): version 2.3.2 -> 3.0.1 & 3.0.0 - Remove "bsp/efm32/Libraries/CMSIS/Lib/ARM", "bsp/efm32/Libraries/CMSIS/Lib/G++" and "bsp/efm32/Libraries/CMSIS/SVD" to save space 2. Upgrade EFM32 driver libraries (efm32lib -> emlib): version 2.3.2 -> 3.0.0 - Remove "bsp/efm32/Libraries/Device/EnergyMicro/EFM32LG" and "bsp/efm32/Libraries/Device/EnergyMicro/EFM32TG" to save space 3. Upgrade EFM32GG_DK3750 development kit driver library: version 1.2.2 -> 2.0.1 4. Upgrade EFM32_Gxxx_DK development kit driver library: version 1.7.3 -> 2.0.1 5. Add energy management unit driver and test code 6. Modify linker script and related code to compatible with new version of libraries 7. Change EFM32 branch version number to 1.0 8. Add photo frame demo application git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2122 bbd45198-f89e-11dd-88c7-29a3b14d5316
176 lines
5.0 KiB
C
176 lines
5.0 KiB
C
/***************************************************************************//**
|
|
* @file startup.c
|
|
* @brief This file is part of RT-Thread RTOS
|
|
* COPYRIGHT (C) 2012, RT-Thread Development Team
|
|
* @author Bernard, onelife
|
|
* @version 1.0
|
|
*******************************************************************************
|
|
* @section License
|
|
* The license and distribution terms for this file may be found in the file
|
|
* LICENSE in this distribution or at http://www.rt-thread.org/license/LICENSE
|
|
*******************************************************************************
|
|
* @section Change Logs
|
|
* Date Author Notes
|
|
* 2006-08-31 Bernard first implementation
|
|
* 2010-12-29 onelife Modify for EFM32
|
|
* 2011-12-20 onelife Add RTGUI initialization routine
|
|
* 2012-02-21 onelife Add energy management initialization routine
|
|
* 2012-05-15 onelife Modified to compatible with CMSIS v3
|
|
******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
* @addtogroup efm32
|
|
* @{
|
|
******************************************************************************/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "board.h"
|
|
|
|
/* Private typedef -----------------------------------------------------------*/
|
|
/* Private define ------------------------------------------------------------*/
|
|
/* Private macro -------------------------------------------------------------*/
|
|
/* External variables --------------------------------------------------------*/
|
|
#ifdef __CC_ARM
|
|
extern int Image$$RW_IRAM1$$ZI$$Limit;
|
|
#elif __ICCARM__
|
|
#pragma section="HEAP"
|
|
#else
|
|
extern int __bss_end__;
|
|
#endif
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
/* External function prototypes ----------------------------------------------*/
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
/* Private functions ---------------------------------------------------------*/
|
|
#ifdef RT_DEBUG
|
|
/***************************************************************************//**
|
|
* @brief
|
|
* Reports the name of the source file and the source line number where the
|
|
* assert error has occurred.
|
|
*
|
|
* @details
|
|
*
|
|
* @note
|
|
*
|
|
* @param[in] file
|
|
* Pointer to the source file name
|
|
*
|
|
* @param[in] line
|
|
* Assert error line source number
|
|
******************************************************************************/
|
|
void assert_failed(uint8_t * file, uint32_t line)
|
|
{
|
|
rt_kprintf("\n\r Wrong parameter value detected on\r\n");
|
|
rt_kprintf(" file %s\r\n", file);
|
|
rt_kprintf(" line %d\r\n", line);
|
|
|
|
while (1) ;
|
|
}
|
|
#endif
|
|
|
|
/***************************************************************************//**
|
|
* @brief
|
|
* Startup RT-Thread
|
|
*
|
|
* @details
|
|
*
|
|
* @note
|
|
*
|
|
******************************************************************************/
|
|
void rtthread_startup(void)
|
|
{
|
|
/* init board */
|
|
rt_hw_board_init();
|
|
|
|
#ifdef RT_USING_HEAP
|
|
#ifdef __CC_ARM
|
|
rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)EFM32_SRAM_END);
|
|
#elif __ICCARM__
|
|
rt_system_heap_init(__segment_end("HEAP"), (void*)EFM32_SRAM_END);
|
|
#else
|
|
/* init memory system */
|
|
rt_system_heap_init((void*)&__bss_end__, (void*)EFM32_SRAM_END);
|
|
#endif
|
|
#endif
|
|
|
|
/* enable interrupt */
|
|
rt_hw_interrupt_enable(0x0UL);
|
|
|
|
/* init drivers */
|
|
rt_hw_driver_init();
|
|
|
|
/* show version */
|
|
rt_show_version();
|
|
|
|
/* init tick */
|
|
rt_system_tick_init();
|
|
|
|
/* init kernel object */
|
|
rt_system_object_init();
|
|
|
|
/* init timer system */
|
|
rt_system_timer_init();
|
|
|
|
/* init scheduler system */
|
|
rt_system_scheduler_init();
|
|
|
|
/* init all devices */
|
|
rt_device_init_all();
|
|
|
|
/* init finsh */
|
|
#ifdef RT_USING_FINSH
|
|
finsh_system_init();
|
|
finsh_set_device(CONSOLE_DEVICE);
|
|
#endif
|
|
|
|
/* Initialize gui server */
|
|
#ifdef RT_USING_RTGUI
|
|
rtgui_system_server_init();
|
|
#endif
|
|
|
|
/* init timer thread */
|
|
rt_system_timer_thread_init();
|
|
|
|
/* init idle thread */
|
|
rt_thread_idle_init();
|
|
|
|
/* init energy mode thread */
|
|
efm32_emu_init();
|
|
|
|
/* init application */
|
|
rt_application_init();
|
|
|
|
/* start scheduler */
|
|
rt_system_scheduler_start();
|
|
|
|
/* never reach here */
|
|
return ;
|
|
}
|
|
|
|
/***************************************************************************//**
|
|
* @brief
|
|
* Program entry point
|
|
*
|
|
* @details
|
|
*
|
|
* @note
|
|
*
|
|
******************************************************************************/
|
|
int main(void)
|
|
{
|
|
/* disable interrupt first */
|
|
rt_hw_interrupt_disable();
|
|
|
|
/* init system setting */
|
|
SystemInit();
|
|
|
|
/* startup RT-Thread RTOS */
|
|
rtthread_startup();
|
|
|
|
return 0;
|
|
}
|
|
|
|
/***************************************************************************//**
|
|
* @}
|
|
******************************************************************************/
|