/*
* Copyright (c) 2013 - 2015, Freescale Semiconductor, Inc.
* Copyright 2016-2017 NXP
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "board.h"
#include "pin_mux.h"
#include "clock_config.h"
/*******************************************************************************
* Definitions
******************************************************************************/
#define SVC_0 0
#define SVC_1 1
void SVC_Executed_Handler( char* svc_args )
{
PRINTF(svc_args);
}
void SVC_Handler_main( unsigned int * svc_args ) // R0 = ( PSP or MSP )
{
/*
* Stack contains:
* r0, r1, r2, r3, r12, r14, the return address and xPSR
* First argument (r0) is svc_args[0]
*/
unsigned int svc_number;
svc_number = ((char *)svc_args[6])[-2];
// ( SVC #0 ) 00 DF : XX XX XX XX
// ( SVC #1 ) 01 DF : \______________ PC : (char *)svc_args[6])
switch(svc_number)
{
case SVC_0:
SVC_Executed_Handler("SVC_0 is triggered \r\n" );
break;
case SVC_1:
SVC_Executed_Handler("SVC_1 is triggered \r\n" );
break;
default:
break;
}
}
/*******************************************************************************
* Prototypes
******************************************************************************/
/*******************************************************************************
* Code
******************************************************************************/
/*!
* @brief Main function
*/
int main(void)
{
char ch;
/* Init board hardware. */
BOARD_ConfigMPU();
BOARD_InitPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
PRINTF("hello world.\r\n");
asm("SVC #0");
while (1)
{
ch = GETCHAR();
PUTCHAR(ch);
}
}