mbed.h library with any bug fixes AV finds.

Dependents:   micromouse4_encoder_testing PID_Test Lab1_Test WorkingPID ... more

Committer:
aravindsv
Date:
Mon Nov 02 03:07:12 2015 +0000
Revision:
1:ebce2ad32f95
Parent:
0:ba7650f404af
Changed the RCC timeout value to 500 ms, so total code startup time before program starts running is ~1s. Hopefully no side-effects from lower startup timeouts

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aravindsv 0:ba7650f404af 1 /* mbed Microcontroller Library
aravindsv 0:ba7650f404af 2 * Copyright (c) 2006-2013 ARM Limited
aravindsv 0:ba7650f404af 3 *
aravindsv 0:ba7650f404af 4 * Licensed under the Apache License, Version 2.0 (the "License");
aravindsv 0:ba7650f404af 5 * you may not use this file except in compliance with the License.
aravindsv 0:ba7650f404af 6 * You may obtain a copy of the License at
aravindsv 0:ba7650f404af 7 *
aravindsv 0:ba7650f404af 8 * http://www.apache.org/licenses/LICENSE-2.0
aravindsv 0:ba7650f404af 9 *
aravindsv 0:ba7650f404af 10 * Unless required by applicable law or agreed to in writing, software
aravindsv 0:ba7650f404af 11 * distributed under the License is distributed on an "AS IS" BASIS,
aravindsv 0:ba7650f404af 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
aravindsv 0:ba7650f404af 13 * See the License for the specific language governing permissions and
aravindsv 0:ba7650f404af 14 * limitations under the License.
aravindsv 0:ba7650f404af 15 */
aravindsv 0:ba7650f404af 16 #ifndef MBED_SEMIHOST_H
aravindsv 0:ba7650f404af 17 #define MBED_SEMIHOST_H
aravindsv 0:ba7650f404af 18
aravindsv 0:ba7650f404af 19 #include "device.h"
aravindsv 0:ba7650f404af 20 #include "toolchain.h"
aravindsv 0:ba7650f404af 21
aravindsv 0:ba7650f404af 22 #ifdef __cplusplus
aravindsv 0:ba7650f404af 23 extern "C" {
aravindsv 0:ba7650f404af 24 #endif
aravindsv 0:ba7650f404af 25
aravindsv 0:ba7650f404af 26 #if DEVICE_SEMIHOST
aravindsv 0:ba7650f404af 27
aravindsv 0:ba7650f404af 28 #ifndef __CC_ARM
aravindsv 0:ba7650f404af 29
aravindsv 0:ba7650f404af 30 #if defined(__ICCARM__)
aravindsv 0:ba7650f404af 31 inline int __semihost(int reason, const void *arg) {
aravindsv 0:ba7650f404af 32 return __semihosting(reason, (void*)arg);
aravindsv 0:ba7650f404af 33 }
aravindsv 0:ba7650f404af 34 #else
aravindsv 0:ba7650f404af 35
aravindsv 0:ba7650f404af 36 #ifdef __thumb__
aravindsv 0:ba7650f404af 37 # define AngelSWI 0xAB
aravindsv 0:ba7650f404af 38 # define AngelSWIInsn "bkpt"
aravindsv 0:ba7650f404af 39 # define AngelSWIAsm bkpt
aravindsv 0:ba7650f404af 40 #else
aravindsv 0:ba7650f404af 41 # define AngelSWI 0x123456
aravindsv 0:ba7650f404af 42 # define AngelSWIInsn "swi"
aravindsv 0:ba7650f404af 43 # define AngelSWIAsm swi
aravindsv 0:ba7650f404af 44 #endif
aravindsv 0:ba7650f404af 45
aravindsv 0:ba7650f404af 46 static inline int __semihost(int reason, const void *arg) {
aravindsv 0:ba7650f404af 47 int value;
aravindsv 0:ba7650f404af 48
aravindsv 0:ba7650f404af 49 asm volatile (
aravindsv 0:ba7650f404af 50 "mov r0, %1" "\n\t"
aravindsv 0:ba7650f404af 51 "mov r1, %2" "\n\t"
aravindsv 0:ba7650f404af 52 AngelSWIInsn " %a3" "\n\t"
aravindsv 0:ba7650f404af 53 "mov %0, r0"
aravindsv 0:ba7650f404af 54 : "=r" (value) /* output operands */
aravindsv 0:ba7650f404af 55 : "r" (reason), "r" (arg), "i" (AngelSWI) /* input operands */
aravindsv 0:ba7650f404af 56 : "r0", "r1", "r2", "r3", "ip", "lr", "memory", "cc" /* list of clobbered registers */
aravindsv 0:ba7650f404af 57 );
aravindsv 0:ba7650f404af 58
aravindsv 0:ba7650f404af 59 return value;
aravindsv 0:ba7650f404af 60 }
aravindsv 0:ba7650f404af 61 #endif
aravindsv 0:ba7650f404af 62 #endif
aravindsv 0:ba7650f404af 63
aravindsv 0:ba7650f404af 64 #if DEVICE_LOCALFILESYSTEM
aravindsv 0:ba7650f404af 65 FILEHANDLE semihost_open(const char* name, int openmode);
aravindsv 0:ba7650f404af 66 int semihost_close (FILEHANDLE fh);
aravindsv 0:ba7650f404af 67 int semihost_read (FILEHANDLE fh, unsigned char* buffer, unsigned int length, int mode);
aravindsv 0:ba7650f404af 68 int semihost_write (FILEHANDLE fh, const unsigned char* buffer, unsigned int length, int mode);
aravindsv 0:ba7650f404af 69 int semihost_ensure(FILEHANDLE fh);
aravindsv 0:ba7650f404af 70 long semihost_flen (FILEHANDLE fh);
aravindsv 0:ba7650f404af 71 int semihost_seek (FILEHANDLE fh, long position);
aravindsv 0:ba7650f404af 72 int semihost_istty (FILEHANDLE fh);
aravindsv 0:ba7650f404af 73
aravindsv 0:ba7650f404af 74 int semihost_remove(const char *name);
aravindsv 0:ba7650f404af 75 int semihost_rename(const char *old_name, const char *new_name);
aravindsv 0:ba7650f404af 76 #endif
aravindsv 0:ba7650f404af 77
aravindsv 0:ba7650f404af 78 int semihost_uid(char *uid);
aravindsv 0:ba7650f404af 79 int semihost_reset(void);
aravindsv 0:ba7650f404af 80 int semihost_vbus(void);
aravindsv 0:ba7650f404af 81 int semihost_powerdown(void);
aravindsv 0:ba7650f404af 82 int semihost_exit(void);
aravindsv 0:ba7650f404af 83
aravindsv 0:ba7650f404af 84 int semihost_connected(void);
aravindsv 0:ba7650f404af 85 int semihost_disabledebug(void);
aravindsv 0:ba7650f404af 86
aravindsv 0:ba7650f404af 87 #endif
aravindsv 0:ba7650f404af 88
aravindsv 0:ba7650f404af 89 #ifdef __cplusplus
aravindsv 0:ba7650f404af 90 }
aravindsv 0:ba7650f404af 91 #endif
aravindsv 0:ba7650f404af 92
aravindsv 0:ba7650f404af 93 #endif