mirror of
https://github.com/jialexd/sdk-ameba-v4.0c_180328.git
synced 2024-11-28 09:10:28 +00:00
168 lines
3.7 KiB
C
168 lines
3.7 KiB
C
|
/*
|
||
|
* Routines to access hardware
|
||
|
*
|
||
|
* Copyright (c) 2013 Realtek Semiconductor Corp.
|
||
|
*
|
||
|
* This module is a confidential and proprietary property of RealTek and
|
||
|
* possession or use of this module requires written permission of RealTek.
|
||
|
*/
|
||
|
|
||
|
#include "ameba_soc.h"
|
||
|
#include "build_info.h"
|
||
|
|
||
|
#if (defined(CONFIG_POST_SIM))
|
||
|
void Simulation_Init(void);
|
||
|
#endif
|
||
|
|
||
|
#if defined(CONFIG_WIFI_NORMAL) && defined(CONFIG_NETWORK)
|
||
|
extern void init_rom_wlan_ram_map(void);
|
||
|
extern VOID wlan_network(VOID);
|
||
|
#endif
|
||
|
|
||
|
#ifdef CONFIG_MBED_ENABLED
|
||
|
extern void __libc_fini_array (void);
|
||
|
extern void __libc_init_array (void);
|
||
|
extern void SVC_Handler (void);
|
||
|
extern void PendSV_Handler (void);
|
||
|
extern void SysTick_Handler (void);
|
||
|
|
||
|
void APP_StartMbed(void)
|
||
|
{
|
||
|
InterruptForOSInit((VOID*)SVC_Handler,
|
||
|
(VOID*)PendSV_Handler,
|
||
|
(VOID*)SysTick_Handler);
|
||
|
__asm (
|
||
|
"ldr r0, =SystemInit\n"
|
||
|
"blx r0\n"
|
||
|
"ldr r0, =_start\n"
|
||
|
"bx r0\n"
|
||
|
);
|
||
|
|
||
|
for(;;);
|
||
|
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
void APP_InitTrace(void)
|
||
|
{
|
||
|
u32 debug[4];
|
||
|
|
||
|
#if (defined(CONFIG_POST_SIM) || defined(CONFIG_CP))
|
||
|
return;
|
||
|
#endif
|
||
|
|
||
|
debug[LEVEL_ERROR] = BIT(MODULE_BOOT);
|
||
|
debug[LEVEL_WARN] = 0x0;
|
||
|
debug[LEVEL_INFO] = BIT(MODULE_BOOT);
|
||
|
debug[LEVEL_TRACE] = 0x0;
|
||
|
|
||
|
#ifdef CONFIG_DEBUG_ERR_MSG
|
||
|
debug[LEVEL_ERROR] = 0xFFFFFFFF;
|
||
|
#endif
|
||
|
#ifdef CONFIG_DEBUG_WARN_MSG
|
||
|
debug[LEVEL_WARN] = 0xFFFFFFFF;
|
||
|
#endif
|
||
|
#ifdef CONFIG_DEBUG_INFO_MSG
|
||
|
debug[LEVEL_INFO] = 0xFFFFFFFF;
|
||
|
#endif
|
||
|
|
||
|
LOG_MASK(debug);
|
||
|
|
||
|
DBG_PRINTF(MODULE_BOOT, LEVEL_INFO, "APP_InitTrace: %x:%x:%x:%x\n",debug[0], debug[1], debug[2], debug[3]);
|
||
|
DBG_PRINTF(MODULE_BOOT, LEVEL_ERROR, "APP_InitTrace: %x:%x:%x:%x\n",debug[0], debug[1], debug[2], debug[3]);
|
||
|
|
||
|
}
|
||
|
|
||
|
//default main
|
||
|
_WEAK void main(void)
|
||
|
{
|
||
|
#if CONFIG_SOC_PS_MODULE
|
||
|
pmu_sysactive_timer_init();
|
||
|
#endif
|
||
|
|
||
|
#if (defined(CONFIG_POST_SIM))
|
||
|
Simulation_Init();
|
||
|
#endif
|
||
|
|
||
|
APP_InitTrace();
|
||
|
|
||
|
PMAP_Init();
|
||
|
|
||
|
#ifndef CONFIG_WITHOUT_MONITOR
|
||
|
ReRegisterPlatformLogUart();
|
||
|
#endif
|
||
|
|
||
|
#ifdef CONFIG_USB_DONGLE_NIC_EN
|
||
|
if(xTaskCreate(USOC_Dongle_InitThread, ((const char*)"usb_dongle"), 1024, NULL, tskIDLE_PRIORITY + 3 + PRIORITIE_OFFSET, NULL) != pdPASS)
|
||
|
DBG_8195A("\n\r%s xTaskCreate(usb_dongle_thread) failed", __FUNCTION__);
|
||
|
goto end;
|
||
|
#endif
|
||
|
|
||
|
#if defined(CONFIG_WIFI_NORMAL) && defined(CONFIG_NETWORK)
|
||
|
#if (!defined(CONFIG_POST_SIM) && !defined(CONFIG_RTL_SIM) && !defined(CONFIG_FT) && !defined(CONFIG_CP))
|
||
|
wlan_network();
|
||
|
#endif
|
||
|
#else
|
||
|
|
||
|
#endif // end of else of "#if defined(CONFIG_WIFI_NORMAL) && defined(CONFIG_NETWORK)"
|
||
|
|
||
|
#if CONFIG_INIC_EN
|
||
|
#if SUPPORT_LOG_SERVICE
|
||
|
|
||
|
log_service_init();
|
||
|
#endif
|
||
|
|
||
|
inic_interface_init();
|
||
|
#endif
|
||
|
|
||
|
end:
|
||
|
//3 4)Enable Schedule
|
||
|
#if defined(CONFIG_KERNEL) && !TASK_SCHEDULER_DISABLED
|
||
|
#ifdef PLATFORM_FREERTOS
|
||
|
vTaskStartScheduler();
|
||
|
#endif
|
||
|
#else
|
||
|
RtlConsolTaskRom(NULL);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
// The Main App entry point
|
||
|
void APP_Start(void)
|
||
|
{
|
||
|
#if CONFIG_SOC_PS_MODULE
|
||
|
SOCPS_InitSYSIRQ();
|
||
|
#endif
|
||
|
|
||
|
#ifdef CONFIG_KERNEL
|
||
|
#ifdef PLATFORM_FREERTOS
|
||
|
InterruptForOSInit((VOID*)vPortSVCHandler,
|
||
|
(VOID*)xPortPendSVHandler,
|
||
|
(VOID*)xPortSysTickHandler);
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef CONFIG_MBED_ENABLED
|
||
|
APP_StartMbed();
|
||
|
#else
|
||
|
|
||
|
#if 0//def CONFIG_APP_DEMO
|
||
|
#ifdef PLATFORM_FREERTOS
|
||
|
xTaskCreate( (TaskFunction_t)main, "MAIN_APP__TASK", (2048 /4), (void *)NULL, (tskIDLE_PRIORITY + 1), NULL);
|
||
|
vTaskStartScheduler();
|
||
|
#endif
|
||
|
#else
|
||
|
#if defined ( __ICCARM__ )
|
||
|
__iar_cstart_call_ctors(NULL);
|
||
|
#endif
|
||
|
// force SP align to 8 byte not 4 byte (initial SP is 4 byte align)
|
||
|
__asm(
|
||
|
"mov r0, sp\n"
|
||
|
"bic r0, r0, #7\n"
|
||
|
"mov sp, r0\n"
|
||
|
);
|
||
|
|
||
|
main();
|
||
|
#endif // end of #if CONFIG_APP_DEMO
|
||
|
#endif // end of else of "#ifdef CONFIG_MBED_ENABLED"
|
||
|
}
|