mbed library sources: Modified to operate FRDM-KL25Z at 48MHz from internal 32kHz oscillator (nothing else changed).

Fork of mbed-src by mbed official

The only file that changed is: mbed-src-FLL48/targets/cmsis/TARGET_Freescale/TARGET_KL25Z/system_MKL25Z4.h

Committer:
bogdanm
Date:
Tue Sep 10 15:14:19 2013 +0300
Revision:
20:4263a77256ae
Sync with git revision 171dda705c947bf910926a0b73d6a4797802554d

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 20:4263a77256ae 1 #include "cmsis.h"
bogdanm 20:4263a77256ae 2 #include <sys/types.h>
bogdanm 20:4263a77256ae 3 #include <errno.h>
bogdanm 20:4263a77256ae 4
bogdanm 20:4263a77256ae 5 extern "C" {
bogdanm 20:4263a77256ae 6
bogdanm 20:4263a77256ae 7 struct SCS3Regions {
bogdanm 20:4263a77256ae 8 unsigned long Dummy;
bogdanm 20:4263a77256ae 9 unsigned long* InitRam;
bogdanm 20:4263a77256ae 10 unsigned long* StartRam;
bogdanm 20:4263a77256ae 11 unsigned long InitSizeRam;
bogdanm 20:4263a77256ae 12 unsigned long ZeroSizeRam;
bogdanm 20:4263a77256ae 13 };
bogdanm 20:4263a77256ae 14
bogdanm 20:4263a77256ae 15 extern unsigned long __cs3_regions;
bogdanm 20:4263a77256ae 16 extern unsigned long __cs3_heap_start;
bogdanm 20:4263a77256ae 17
bogdanm 20:4263a77256ae 18 int main(void);
bogdanm 20:4263a77256ae 19 void __libc_init_array(void);
bogdanm 20:4263a77256ae 20 void exit(int ErrorCode);
bogdanm 20:4263a77256ae 21
bogdanm 20:4263a77256ae 22 static void *heap_pointer = NULL;
bogdanm 20:4263a77256ae 23
bogdanm 20:4263a77256ae 24 void __cs3_start_c(void) {
bogdanm 20:4263a77256ae 25 static SCS3Regions* pCS3Regions = (SCS3Regions*)&__cs3_regions;
bogdanm 20:4263a77256ae 26 unsigned long* pulDest;
bogdanm 20:4263a77256ae 27 unsigned long* pulSrc;
bogdanm 20:4263a77256ae 28 unsigned long ByteCount;
bogdanm 20:4263a77256ae 29 unsigned long i;
bogdanm 20:4263a77256ae 30
bogdanm 20:4263a77256ae 31 pulSrc = pCS3Regions->InitRam;
bogdanm 20:4263a77256ae 32 pulDest = pCS3Regions->StartRam;
bogdanm 20:4263a77256ae 33 ByteCount = pCS3Regions->InitSizeRam;
bogdanm 20:4263a77256ae 34 if (pulSrc != pulDest) {
bogdanm 20:4263a77256ae 35 for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) {
bogdanm 20:4263a77256ae 36 *(pulDest++) = *(pulSrc++);
bogdanm 20:4263a77256ae 37 }
bogdanm 20:4263a77256ae 38 } else {
bogdanm 20:4263a77256ae 39 pulDest = (unsigned long*)(void*)((char*)pulDest + ByteCount);
bogdanm 20:4263a77256ae 40 }
bogdanm 20:4263a77256ae 41
bogdanm 20:4263a77256ae 42 ByteCount = pCS3Regions->ZeroSizeRam;
bogdanm 20:4263a77256ae 43 for(i = 0 ; i < ByteCount ; i += sizeof(unsigned long)) {
bogdanm 20:4263a77256ae 44 *(pulDest++) = 0;
bogdanm 20:4263a77256ae 45 }
bogdanm 20:4263a77256ae 46
bogdanm 20:4263a77256ae 47 heap_pointer = &__cs3_heap_start;
bogdanm 20:4263a77256ae 48 __libc_init_array();
bogdanm 20:4263a77256ae 49 exit(main());
bogdanm 20:4263a77256ae 50 }
bogdanm 20:4263a77256ae 51
bogdanm 20:4263a77256ae 52 int _kill(int pid, int sig) {
bogdanm 20:4263a77256ae 53 errno = EINVAL;
bogdanm 20:4263a77256ae 54 return -1;
bogdanm 20:4263a77256ae 55 }
bogdanm 20:4263a77256ae 56
bogdanm 20:4263a77256ae 57 void _exit(int status) {
bogdanm 20:4263a77256ae 58 exit(status);
bogdanm 20:4263a77256ae 59 }
bogdanm 20:4263a77256ae 60
bogdanm 20:4263a77256ae 61 int _getpid(void) {
bogdanm 20:4263a77256ae 62 return 1;
bogdanm 20:4263a77256ae 63 }
bogdanm 20:4263a77256ae 64
bogdanm 20:4263a77256ae 65 void *_sbrk(unsigned int incr) {
bogdanm 20:4263a77256ae 66 void *mem;
bogdanm 20:4263a77256ae 67
bogdanm 20:4263a77256ae 68 unsigned int next = ((((unsigned int)heap_pointer + incr) + 7) & ~7);
bogdanm 20:4263a77256ae 69 if (next > __get_MSP()) {
bogdanm 20:4263a77256ae 70 mem = NULL;
bogdanm 20:4263a77256ae 71 } else {
bogdanm 20:4263a77256ae 72 mem = (void *)heap_pointer;
bogdanm 20:4263a77256ae 73 }
bogdanm 20:4263a77256ae 74 heap_pointer = (void *)next;
bogdanm 20:4263a77256ae 75
bogdanm 20:4263a77256ae 76 return mem;
bogdanm 20:4263a77256ae 77 }
bogdanm 20:4263a77256ae 78
bogdanm 20:4263a77256ae 79 }