blob: 66f0ffabafb0e7e2d8b3d884d46119cc4870216b [file] [log] [blame]
/** @file sys_startup.c
* @brief Startup Source File
* @date 05.November.2010
* @version 1.01.001
*
* This file contains:
* - Include Files
* - Type Definitions
* - External Functions
* - VIM RAM Setup
* - Startup Routine
* .
* which are relevant for the Starup.
*/
/* (c) Texas Instruments 2010, All rights reserved. */
/* Include Files */
#include "sys_types.h"
#include "sys_common.h"
#include "sys_system.h"
#include "sys_vim.h"
#include "sys_core.h"
#include "sys_memory.h"
#include "FreeRTOS.h"
/* External Functions */
extern void __TI_auto_init(void);
extern void main(void);
extern void exit(int);
/* Vim Ram Definition */
/** @struct vimRam
* @brief Vim Ram Definition
*
* This type is used to access the Vim Ram.
*/
static const t_isrFuncPTR s_vim_init[] =
{
phantomInterrupt,
esmHighLevelInterrupt,
phantomInterrupt,
#if configUSE_PREEMPTION == 0
vPortNonPreemptiveTick, /* RTI */
#else
vPortPreemptiveTick, /* RTI */
#endif
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
vPortYeildWithinAPI, /* software interrupt */
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
phantomInterrupt,
};
/* Startup Routine */
#pragma INTERRUPT(_c_int00, RESET)
void _c_int00()
{
/* Enable VFP Unit */
_coreEnableVfp();
/* Initialize Core Registers */
_coreInitRegisters();
/* Initialize Stack Pointers */
_coreInitStackPointer();
/* Enable IRQ offset via Vic controller */
_coreEnableIrqVicOffset();
/* Initialize System */
systemInit();
/* Initialize VIM table */
{
unsigned i;
for (i = 0; i < 96U; i++)
{
vimRAM->ISR[i] = s_vim_init[i];
}
}
/* set IRQ/FIQ priorities */
vimREG->FIRQPR0 = SYS_FIQ
| (SYS_FIQ << 1U)
| (SYS_IRQ << 2U)
| (SYS_IRQ << 3U)
| (SYS_IRQ << 4U)
| (SYS_IRQ << 5U)
| (SYS_IRQ << 6U)
| (SYS_IRQ << 7U)
| (SYS_IRQ << 8U)
| (SYS_IRQ << 9U)
| (SYS_IRQ << 10U)
| (SYS_IRQ << 11U)
| (SYS_IRQ << 12U)
| (SYS_IRQ << 13U)
| (SYS_IRQ << 14U)
| (SYS_IRQ << 15U)
| (SYS_IRQ << 16U)
| (SYS_IRQ << 17U)
| (SYS_IRQ << 18U)
| (SYS_IRQ << 19U)
| (SYS_IRQ << 20U)
| (SYS_IRQ << 21U)
| (SYS_IRQ << 22U)
| (SYS_IRQ << 23U)
| (SYS_IRQ << 24U)
| (SYS_IRQ << 25U)
| (SYS_IRQ << 26U)
| (SYS_IRQ << 27U)
| (SYS_IRQ << 28U)
| (SYS_IRQ << 29U)
| (SYS_IRQ << 30U)
| (SYS_IRQ << 31U);
vimREG->FIRQPR1 = SYS_IRQ
| (SYS_IRQ << 1U)
| (SYS_IRQ << 2U)
| (SYS_IRQ << 3U)
| (SYS_IRQ << 4U)
| (SYS_IRQ << 5U)
| (SYS_IRQ << 6U)
| (SYS_IRQ << 7U)
| (SYS_IRQ << 8U)
| (SYS_IRQ << 9U)
| (SYS_IRQ << 10U)
| (SYS_IRQ << 11U)
| (SYS_IRQ << 12U)
| (SYS_IRQ << 13U)
| (SYS_IRQ << 14U)
| (SYS_IRQ << 15U)
| (SYS_IRQ << 16U)
| (SYS_IRQ << 17U)
| (SYS_IRQ << 18U)
| (SYS_IRQ << 19U)
| (SYS_IRQ << 20U)
| (SYS_IRQ << 21U)
| (SYS_IRQ << 22U)
| (SYS_IRQ << 23U)
| (SYS_IRQ << 24U)
| (SYS_IRQ << 25U)
| (SYS_IRQ << 26U)
| (SYS_IRQ << 27U)
| (SYS_IRQ << 28U)
| (SYS_IRQ << 29U)
| (SYS_IRQ << 30U);
/* enable interrupts */
vimREG->REQMASKSET0 = 1U
| (0U << 1)
| (1U << 2) /* RTI */
| (0U << 3)
| (0U << 4)
| (0U << 5)
| (0U << 6)
| (0U << 7)
| (0U << 8)
| (0U << 9)
| (0U << 10)
| (0U << 11)
| (0U << 12)
| (0U << 13)
| (0U << 14)
| (0U << 15)
| (0U << 16)
| (0U << 17)
| (0U << 18)
| (0U << 19)
| (0U << 20)
| (1U << 21) /* Software Interrupt */
| (0U << 22)
| (0U << 23)
| (0U << 24)
| (0U << 25)
| (0U << 26)
| (0U << 27)
| (0U << 28)
| (0U << 29)
| (0U << 30)
| (0U << 31);
vimREG->REQMASKSET1 = 0U
| (0U << 1)
| (0U << 2)
| (0U << 3)
| (0U << 4)
| (0U << 5)
| (0U << 6)
| (0U << 7)
| (0U << 8)
| (0U << 9)
| (0U << 10)
| (0U << 11)
| (0U << 12)
| (0U << 13)
| (0U << 14)
| (0U << 15)
| (0U << 16)
| (0U << 17)
| (0U << 18)
| (0U << 19)
| (0U << 20)
| (0U << 21)
| (0U << 22)
| (0U << 23)
| (0U << 24)
| (0U << 25)
| (0U << 26)
| (0U << 27)
| (0U << 28)
| (0U << 29)
| (0U << 30);
/* initalise global variable and constructors */
__TI_auto_init();
/* call the application */
main();
exit(0);
}