annotate Lib/mk20dx.c @ 345:2bcf6800b851

Fixing order of layer debug stack display - Adding NL's for fault messages
author Jacob Alexander <haata@kiibohd.com>
date Tue, 23 Jun 2015 07:58:31 -0700
parents e8841d3c6db5
children 06a54d582bf8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
1 /* Teensyduino Core Library
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
2 * http://www.pjrc.com/teensy/
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
3 * Copyright (c) 2013 PJRC.COM, LLC.
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
4 * Modifications by Jacob Alexander 2014-2015
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
5 *
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
6 * Permission is hereby granted, free of charge, to any person obtaining
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
7 * a copy of this software and associated documentation files (the
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
8 * "Software"), to deal in the Software without restriction, including
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
9 * without limitation the rights to use, copy, modify, merge, publish,
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
10 * distribute, sublicense, and/or sell copies of the Software, and to
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
11 * permit persons to whom the Software is furnished to do so, subject to
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
12 * the following conditions:
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
13 *
169
7962a42dbda0 Initial work for McHCK mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
14 * 1. The above copyright notice and this permission notice shall be
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
15 * included in all copies or substantial portions of the Software.
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
16 *
169
7962a42dbda0 Initial work for McHCK mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
17 * 2. If the Software is incorporated into a build system that allows
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
18 * selection among a list of target devices, then similar target
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
19 * devices manufactured by PJRC.COM must be included in the list of
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
20 * target devices and selectable in the same manner.
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
21 *
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
25 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
26 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
27 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
29 * SOFTWARE.
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
30 */
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
31
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
32 // ----- Includes -----
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
33
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
34 // Debug Includes
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
35 #if defined(_bootloader_)
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
36 #include <inttypes.h>
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
37 #include <debug.h>
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
38 #else
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
39 #include <print.h>
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
40 #endif
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
41
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
42 // Local Includes
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
43 #include "mk20dx.h"
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
44
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
45
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
46
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
47 // ----- Variables -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
48
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
49 extern unsigned long _stext;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
50 extern unsigned long _etext;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
51 extern unsigned long _sdata;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
52 extern unsigned long _edata;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
53 extern unsigned long _sbss;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
54 extern unsigned long _ebss;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
55 extern unsigned long _estack;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
56
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
57 const uint8_t sys_reset_to_loader_magic[22] = "\xff\x00\x7fRESET TO LOADER\x7f\x00\xff";
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
58
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
59
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
60
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
61 // ----- Function Declarations -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
62
177
3420e018ffbc Adding McHCK flash reload function and some cleanup.
Jacob Alexander <haata@kiibohd.com>
parents: 175
diff changeset
63 extern int main();
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
64 void ResetHandler();
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
65
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
66
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
67
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
68 // ----- Interrupts -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
69
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
70 // NVIC - Default ISR
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
71 void fault_isr()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
72 {
345
2bcf6800b851 Fixing order of layer debug stack display
Jacob Alexander <haata@kiibohd.com>
parents: 340
diff changeset
73 print("Fault!" NL );
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
74 while ( 1 )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
75 {
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
76 // keep polling some communication while in fault
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
77 // mode, so we don't completely die.
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
78 if ( SIM_SCGC4 & SIM_SCGC4_USBOTG ) usb_isr();
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
79 if ( SIM_SCGC4 & SIM_SCGC4_UART0 ) uart0_status_isr();
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
80 if ( SIM_SCGC4 & SIM_SCGC4_UART1 ) uart1_status_isr();
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
81 if ( SIM_SCGC4 & SIM_SCGC4_UART2 ) uart2_status_isr();
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
82 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
84
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
85 void unused_isr()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
86 {
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
87 fault_isr();
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
88 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
89
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
90
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
91 // NVIC - SysTick ISR
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
92 extern volatile uint32_t systick_millis_count;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
93 void systick_default_isr()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
94 {
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
95 systick_millis_count++;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
96 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
97
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
98
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
99 // NVIC - Non-Maskable Interrupt ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
100 void nmi_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
101 {
345
2bcf6800b851 Fixing order of layer debug stack display
Jacob Alexander <haata@kiibohd.com>
parents: 340
diff changeset
102 print("NMI!" NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
103 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
104
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
105
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
106 // NVIC - Hard Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
107 void hard_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
108 {
345
2bcf6800b851 Fixing order of layer debug stack display
Jacob Alexander <haata@kiibohd.com>
parents: 340
diff changeset
109 print("Hard Fault!" NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
110 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
111
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
112
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
113 // NVIC - Memory Manager Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
114 void memmanage_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
115 {
345
2bcf6800b851 Fixing order of layer debug stack display
Jacob Alexander <haata@kiibohd.com>
parents: 340
diff changeset
116 print("Memory Manager Fault!" NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
117 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
118
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
119
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
120 // NVIC - Bus Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
121 void bus_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
122 {
345
2bcf6800b851 Fixing order of layer debug stack display
Jacob Alexander <haata@kiibohd.com>
parents: 340
diff changeset
123 print("Bus Fault!" NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
124 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
125
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
126
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
127 // NVIC - Usage Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
128 void usage_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
129 {
345
2bcf6800b851 Fixing order of layer debug stack display
Jacob Alexander <haata@kiibohd.com>
parents: 340
diff changeset
130 print("Usage Fault!" NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
131 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
132
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
133
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
134 // NVIC - Default ISR/Vector Linking
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
135 void nmi_isr() __attribute__ ((weak, alias("nmi_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
136 void hard_fault_isr() __attribute__ ((weak, alias("hard_fault_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
137 void memmanage_fault_isr() __attribute__ ((weak, alias("memmanage_fault_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
138 void bus_fault_isr() __attribute__ ((weak, alias("bus_fault_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
139 void usage_fault_isr() __attribute__ ((weak, alias("usage_fault_default_isr")));
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
140 void svcall_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
141 void debugmonitor_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
142 void pendablesrvreq_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
143 void systick_isr() __attribute__ ((weak, alias("systick_default_isr")));
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
144
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
145 void dma_ch0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
146 void dma_ch1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
147 void dma_ch2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
148 void dma_ch3_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
149 void dma_ch4_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
150 void dma_ch5_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
151 void dma_ch6_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
152 void dma_ch7_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
153 void dma_ch8_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
154 void dma_ch9_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
155 void dma_ch10_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
156 void dma_ch11_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
157 void dma_ch12_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
158 void dma_ch13_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
159 void dma_ch14_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
160 void dma_ch15_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
161 void dma_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
162 void mcm_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
163 void flash_cmd_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
164 void flash_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
165 void low_voltage_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
166 void wakeup_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
167 void watchdog_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
168 void i2c0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
169 void i2c1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
170 void i2c2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
171 void spi0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
172 void spi1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
173 void spi2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
174 void sdhc_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
175 void can0_message_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
176 void can0_bus_off_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
177 void can0_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
178 void can0_tx_warn_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
179 void can0_rx_warn_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
180 void can0_wakeup_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
181 void i2s0_tx_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
182 void i2s0_rx_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
183 void uart0_lon_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
184 void uart0_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
185 void uart0_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
186 void uart1_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
187 void uart1_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
188 void uart2_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
189 void uart2_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
190 void uart3_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
191 void uart3_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
192 void uart4_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
193 void uart4_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
194 void uart5_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
195 void uart5_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
196 void adc0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
197 void adc1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
198 void cmp0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
199 void cmp1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
200 void cmp2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
201 void ftm0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
202 void ftm1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
203 void ftm2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
204 void ftm3_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
205 void cmt_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
206 void rtc_alarm_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
207 void rtc_seconds_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
208 void pit0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
209 void pit1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
210 void pit2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
211 void pit3_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
212 void pdb_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
213 void usb_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
214 void usb_charge_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
215 void dac0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
216 void dac1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
217 void tsi0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
218 void mcg_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
219 void lptmr_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
220 void porta_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
221 void portb_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
222 void portc_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
223 void portd_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
224 void porte_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
225 void software_isr() __attribute__ ((weak, alias("unused_isr")));
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
226
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
227
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
228 // NVIC - Interrupt Vector Table
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
229 __attribute__ ((section(".vectors"), used))
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
230 void (* const gVectors[])() =
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
231 {
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
232 (void (*)(void))((unsigned long)&_estack), // 0 ARM: Initial Stack Pointer
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
233 ResetHandler, // 1 ARM: Initial Program Counter
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
234 nmi_isr, // 2 ARM: Non-maskable Interrupt (NMI)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
235 hard_fault_isr, // 3 ARM: Hard Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
236 memmanage_fault_isr, // 4 ARM: MemManage Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
237 bus_fault_isr, // 5 ARM: Bus Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
238 usage_fault_isr, // 6 ARM: Usage Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
239 fault_isr, // 7 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
240 fault_isr, // 8 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
241 fault_isr, // 9 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
242 fault_isr, // 10 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
243 svcall_isr, // 11 ARM: Supervisor call (SVCall)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
244 debugmonitor_isr, // 12 ARM: Debug Monitor
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
245 fault_isr, // 13 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
246 pendablesrvreq_isr, // 14 ARM: Pendable req serv(PendableSrvReq)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
247 systick_isr, // 15 ARM: System tick timer (SysTick)
169
7962a42dbda0 Initial work for McHCK mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
248 #if defined(_mk20dx128_) || defined(_mk20dx128vlf5_)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
249 dma_ch0_isr, // 16 DMA channel 0 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
250 dma_ch1_isr, // 17 DMA channel 1 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
251 dma_ch2_isr, // 18 DMA channel 2 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
252 dma_ch3_isr, // 19 DMA channel 3 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
253 dma_error_isr, // 20 DMA error interrupt channel
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
254 unused_isr, // 21 DMA --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
255 flash_cmd_isr, // 22 Flash Memory Command complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
256 flash_error_isr, // 23 Flash Read collision
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
257 low_voltage_isr, // 24 Low-voltage detect/warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
258 wakeup_isr, // 25 Low Leakage Wakeup
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
259 watchdog_isr, // 26 Both EWM and WDOG interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
260 i2c0_isr, // 27 I2C0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
261 spi0_isr, // 28 SPI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
262 i2s0_tx_isr, // 29 I2S0 Transmit
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
263 i2s0_rx_isr, // 30 I2S0 Receive
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
264 uart0_lon_isr, // 31 UART0 CEA709.1-B (LON) status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
265 uart0_status_isr, // 32 UART0 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
266 uart0_error_isr, // 33 UART0 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
267 uart1_status_isr, // 34 UART1 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
268 uart1_error_isr, // 35 UART1 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
269 uart2_status_isr, // 36 UART2 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
270 uart2_error_isr, // 37 UART2 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
271 adc0_isr, // 38 ADC0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
272 cmp0_isr, // 39 CMP0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
273 cmp1_isr, // 40 CMP1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
274 ftm0_isr, // 41 FTM0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
275 ftm1_isr, // 42 FTM1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
276 cmt_isr, // 43 CMT
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
277 rtc_alarm_isr, // 44 RTC Alarm interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
278 rtc_seconds_isr, // 45 RTC Seconds interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
279 pit0_isr, // 46 PIT Channel 0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
280 pit1_isr, // 47 PIT Channel 1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
281 pit2_isr, // 48 PIT Channel 2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
282 pit3_isr, // 49 PIT Channel 3
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
283 pdb_isr, // 50 PDB Programmable Delay Block
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
284 usb_isr, // 51 USB OTG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
285 usb_charge_isr, // 52 USB Charger Detect
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
286 tsi0_isr, // 53 TSI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
287 mcg_isr, // 54 MCG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
288 lptmr_isr, // 55 Low Power Timer
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
289 porta_isr, // 56 Pin detect (Port A)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
290 portb_isr, // 57 Pin detect (Port B)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
291 portc_isr, // 58 Pin detect (Port C)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
292 portd_isr, // 59 Pin detect (Port D)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
293 porte_isr, // 60 Pin detect (Port E)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
294 software_isr, // 61 Software interrupt
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
295 #elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
296 dma_ch0_isr, // 16 DMA channel 0 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
297 dma_ch1_isr, // 17 DMA channel 1 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
298 dma_ch2_isr, // 18 DMA channel 2 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
299 dma_ch3_isr, // 19 DMA channel 3 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
300 dma_ch4_isr, // 20 DMA channel 4 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
301 dma_ch5_isr, // 21 DMA channel 5 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
302 dma_ch6_isr, // 22 DMA channel 6 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
303 dma_ch7_isr, // 23 DMA channel 7 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
304 dma_ch8_isr, // 24 DMA channel 8 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
305 dma_ch9_isr, // 25 DMA channel 9 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
306 dma_ch10_isr, // 26 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
307 dma_ch11_isr, // 27 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
308 dma_ch12_isr, // 28 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
309 dma_ch13_isr, // 29 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
310 dma_ch14_isr, // 30 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
311 dma_ch15_isr, // 31 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
312 dma_error_isr, // 32 DMA error interrupt channel
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
313 unused_isr, // 33 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
314 flash_cmd_isr, // 34 Flash Memory Command complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
315 flash_error_isr, // 35 Flash Read collision
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
316 low_voltage_isr, // 36 Low-voltage detect/warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
317 wakeup_isr, // 37 Low Leakage Wakeup
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
318 watchdog_isr, // 38 Both EWM and WDOG interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
319 unused_isr, // 39 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
320 i2c0_isr, // 40 I2C0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
321 i2c1_isr, // 41 I2C1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
322 spi0_isr, // 42 SPI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
323 spi1_isr, // 43 SPI1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
324 unused_isr, // 44 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
325 can0_message_isr, // 45 CAN OR'ed Message buffer (0-15)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
326 can0_bus_off_isr, // 46 CAN Bus Off
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
327 can0_error_isr, // 47 CAN Error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
328 can0_tx_warn_isr, // 48 CAN Transmit Warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
329 can0_rx_warn_isr, // 49 CAN Receive Warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
330 can0_wakeup_isr, // 50 CAN Wake Up
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
331 i2s0_tx_isr, // 51 I2S0 Transmit
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
332 i2s0_rx_isr, // 52 I2S0 Receive
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
333 unused_isr, // 53 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
334 unused_isr, // 54 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
335 unused_isr, // 55 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
336 unused_isr, // 56 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
337 unused_isr, // 57 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
338 unused_isr, // 58 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
339 unused_isr, // 59 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
340 uart0_lon_isr, // 60 UART0 CEA709.1-B (LON) status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
341 uart0_status_isr, // 61 UART0 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
342 uart0_error_isr, // 62 UART0 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
343 uart1_status_isr, // 63 UART1 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
344 uart1_error_isr, // 64 UART1 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
345 uart2_status_isr, // 65 UART2 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
346 uart2_error_isr, // 66 UART2 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
347 unused_isr, // 67 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
348 unused_isr, // 68 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
349 unused_isr, // 69 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
350 unused_isr, // 70 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
351 unused_isr, // 71 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
352 unused_isr, // 72 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
353 adc0_isr, // 73 ADC0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
354 adc1_isr, // 74 ADC1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
355 cmp0_isr, // 75 CMP0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
356 cmp1_isr, // 76 CMP1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
357 cmp2_isr, // 77 CMP2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
358 ftm0_isr, // 78 FTM0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
359 ftm1_isr, // 79 FTM1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
360 ftm2_isr, // 80 FTM2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
361 cmt_isr, // 81 CMT
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
362 rtc_alarm_isr, // 82 RTC Alarm interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
363 rtc_seconds_isr, // 83 RTC Seconds interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
364 pit0_isr, // 84 PIT Channel 0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
365 pit1_isr, // 85 PIT Channel 1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
366 pit2_isr, // 86 PIT Channel 2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
367 pit3_isr, // 87 PIT Channel 3
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
368 pdb_isr, // 88 PDB Programmable Delay Block
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
369 usb_isr, // 89 USB OTG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
370 usb_charge_isr, // 90 USB Charger Detect
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
371 unused_isr, // 91 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
372 unused_isr, // 92 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
373 unused_isr, // 93 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
374 unused_isr, // 94 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
375 unused_isr, // 95 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
376 unused_isr, // 96 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
377 dac0_isr, // 97 DAC0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
378 unused_isr, // 98 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
379 tsi0_isr, // 99 TSI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
380 mcg_isr, // 100 MCG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
381 lptmr_isr, // 101 Low Power Timer
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
382 unused_isr, // 102 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
383 porta_isr, // 103 Pin detect (Port A)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
384 portb_isr, // 104 Pin detect (Port B)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
385 portc_isr, // 105 Pin detect (Port C)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
386 portd_isr, // 106 Pin detect (Port D)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
387 porte_isr, // 107 Pin detect (Port E)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
388 unused_isr, // 108 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
389 unused_isr, // 109 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
390 software_isr, // 110 Software interrupt
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
391 #endif
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
392 };
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
393
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
394
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
395 // ----- Flash Configuration -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
396
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
397 // Only necessary for Teensy 3s, MCHCK uses the Bootloader to handle this
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
398 #if defined(_mk20dx128_) || defined(_mk20dx256_)
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
399 __attribute__ ((section(".flashconfig"), used))
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
400 const uint8_t flashconfigbytes[16] = {
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
401 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
402 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
403 };
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
404 #elif defined(_mk20dx128vlf5_) && defined(_bootloader_)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
405 // XXX Byte labels may be in incorrect positions, double check before modifying
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
406 // FSEC is in correct location -Jacob
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
407 __attribute__ ((section(".flashconfig"), used))
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
408 const uint8_t flashconfigbytes[16] = {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
409 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // Backdoor Verif Key 28.3.1
247
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
410
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
411 //
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
412 // Protecting the first 4k of Flash memory from being over-written while running (bootloader protection)
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
413 // Still possible to overwrite the bootloader using an external flashing device
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
414 // For more details see:
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
415 // http://cache.freescale.com/files/training/doc/dwf/AMF_ENT_T1031_Boston.pdf (page 8)
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
416 // http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4507.pdf
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
417 // http://cache.freescale.com/files/32bit/doc/ref_manual/K20P48M50SF0RM.pdf (28.34.6)
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
418 //
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
419 0xFF, 0xFF, 0xFF, 0xFE, // Program Flash Protection Bytes FPROT0-3
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
420
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
421 0xBE, // Flash security byte FSEC
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
422 0x03, // Flash nonvolatile option byte FOPT
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
423 0xFF, // EEPROM Protection Byte FEPROT
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
424 0xFF, // Data Flash Protection Byte FDPROT
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
425 };
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
426 #elif defined(_mk20dx256vlh7_) && defined(_bootloader_)
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
427 // XXX Byte labels may be in incorrect positions, double check before modifying
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
428 // FSEC is in correct location -Jacob
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
429 __attribute__ ((section(".flashconfig"), used))
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
430 const uint8_t flashconfigbytes[16] = {
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
431 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // Backdoor Verif Key 28.3.1
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
432
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
433 //
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
434 // Protecting the first 8k of Flash memory from being over-written while running (bootloader protection)
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
435 // Still possible to overwrite the bootloader using an external flashing device
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
436 // For more details see:
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
437 // http://cache.freescale.com/files/training/doc/dwf/AMF_ENT_T1031_Boston.pdf (page 8)
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
438 // http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4507.pdf
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
439 // http://cache.freescale.com/files/32bit/doc/ref_manual/K20P64M72SF1RM.pdf (28.34.6)
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
440 //
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
441 0xFF, 0xFF, 0xFF, 0xFE, // Program Flash Protection Bytes FPROT0-3
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
442
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
443 0xBE, // Flash security byte FSEC
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
444 0x03, // Flash nonvolatile option byte FOPT
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
445 0xFF, // EEPROM Protection Byte FEPROT
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
446 0xFF, // Data Flash Protection Byte FDPROT
314
8325f8c91663 Fixing bugs in mk20dx256vlh7 Bootloader support.
Jacob Alexander <haata@kiibohd.com>
parents: 308
diff changeset
447 };
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
448 #endif
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
449
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
450
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
451
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
452 // ----- Functions -----
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
453
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
454 #if ( defined(_mk20dx128vlf5_) || defined(_mk20dx256vlh7_) ) && defined(_bootloader_) // Bootloader Section
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
455 __attribute__((noreturn))
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
456 static inline void jump_to_app( uintptr_t addr )
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
457 {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
458 // addr is in r0
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
459 __asm__("ldr sp, [%[addr], #0]\n"
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
460 "ldr pc, [%[addr], #4]"
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
461 :: [addr] "r" (addr));
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
462 // NOTREACHED
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
463 __builtin_unreachable();
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
464 }
265
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
465 #endif
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
466
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
467 void *memset( void *addr, int val, unsigned int len )
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
468 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
469 char *buf = addr;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
470
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
471 for (; len > 0; --len, ++buf)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
472 *buf = val;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
473 return (addr);
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
474 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
475
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
476 int memcmp( const void *a, const void *b, unsigned int len )
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
477 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
478 const uint8_t *ap = a, *bp = b;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
479 int val = 0;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
480
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
481 for (; len > 0 && (val = *ap - *bp) == 0; --len, ++ap, ++bp)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
482 /* NOTHING */;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
483 return (val);
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
484 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
485
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
486 void *memcpy( void *dst, const void *src, unsigned int len )
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
487 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
488 char *dstbuf = dst;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
489 const char *srcbuf = src;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
490
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
491 for (; len > 0; --len, ++dstbuf, ++srcbuf)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
492 *dstbuf = *srcbuf;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
493 return (dst);
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
494 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
495
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
496
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
497
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
498 // ----- Chip Entry Point -----
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
499
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
500 __attribute__ ((section(".startup")))
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
501 void ResetHandler()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
502 {
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
503 #if ( defined(_mk20dx128vlf5_) || defined(_mk20dx256vlh7_) ) && defined(_bootloader_) // Bootloader Section
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
504 extern uint32_t _app_rom;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
505
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
506 // We treat _app_rom as pointer to directly read the stack
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
507 // pointer and check for valid app code. This is no fool
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
508 // proof method, but it should help for the first flash.
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
509 //
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
510 // Purposefully disabling the watchdog *after* the reset check this way
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
511 // if the chip goes into an odd state we'll reset to the bootloader (invalid firmware image)
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
512 // RCM_SRS0 & 0x20
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
513 //
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
514 // Also checking for ARM lock-up signal (invalid firmware image)
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
515 // RCM_SRS1 & 0x02
330
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
516 if ( // PIN (External Reset Pin/Switch)
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
517 RCM_SRS0 & 0x40
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
518 // WDOG (Watchdog timeout)
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
519 || RCM_SRS0 & 0x20
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
520 // LOCKUP (ARM Core LOCKUP event)
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
521 || RCM_SRS1 & 0x02
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
522 // Blank flash check
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
523 || _app_rom == 0xffffffff
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
524 // Software reset
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
525 || memcmp( (uint8_t*)&VBAT, sys_reset_to_loader_magic, sizeof(sys_reset_to_loader_magic) ) == 0
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
526 )
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
527 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
528 memset( (uint8_t*)&VBAT, 0, sizeof(VBAT) );
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
529 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
530 else
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
531 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
532 uint32_t addr = (uintptr_t)&_app_rom;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
533 SCB_VTOR = addr; // relocate vector table
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
534 jump_to_app( addr );
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
535 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
536 #endif
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
537 // Disable Watchdog
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
538 WDOG_UNLOCK = WDOG_UNLOCK_SEQ1;
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
539 WDOG_UNLOCK = WDOG_UNLOCK_SEQ2;
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
540 WDOG_STCTRLH = WDOG_STCTRLH_ALLOWUPDATE;
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
541
265
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
542 uint32_t *src = (uint32_t*)&_etext;
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
543 uint32_t *dest = (uint32_t*)&_sdata;
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
544
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
545 // Enable clocks to always-used peripherals
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
546 SIM_SCGC5 = 0x00043F82; // Clocks active to all GPIO
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
547 SIM_SCGC6 = SIM_SCGC6_FTM0 | SIM_SCGC6_FTM1 | SIM_SCGC6_ADC0 | SIM_SCGC6_FTFL;
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
548 #if defined(_mk20dx128_)
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
549 SIM_SCGC6 |= SIM_SCGC6_RTC;
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
550 #elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
551 SIM_SCGC3 = SIM_SCGC3_ADC1 | SIM_SCGC3_FTM2;
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
552 SIM_SCGC6 |= SIM_SCGC6_RTC;
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
553 #endif
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
554
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
555 #if defined(_mk20dx128_) || defined(_mk20dx256_) // Teensy 3s
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
556 // if the RTC oscillator isn't enabled, get it started early
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
557 if ( !(RTC_CR & RTC_CR_OSCE) )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
558 {
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
559 RTC_SR = 0;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
560 RTC_CR = RTC_CR_SC16P | RTC_CR_SC4P | RTC_CR_OSCE;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
561 }
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
562 #endif
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
563
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
564 // release I/O pins hold, if we woke up from VLLS mode
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
565 if ( PMC_REGSC & PMC_REGSC_ACKISO )
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
566 {
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
567 PMC_REGSC |= PMC_REGSC_ACKISO;
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
568 }
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
569
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
570 // Prepare RAM
265
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
571 while ( dest < (uint32_t*)&_edata ) *dest++ = *src++;
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
572 dest = (uint32_t*)&_sbss;
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
573 while ( dest < (uint32_t*)&_ebss ) *dest++ = 0;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
574
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
575 // MCHCK / Kiibohd-dfu
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
576 #if defined(_mk20dx128vlf5_)
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
577 // Default all interrupts to medium priority level
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
578 for ( unsigned int i = 0; i < NVIC_NUM_INTERRUPTS; i++ )
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
579 {
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
580 NVIC_SET_PRIORITY( i, 128 );
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
581 }
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
582
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
583 // FLL at 48MHz
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
584 MCG_C4 = MCG_C4_DMX32 | MCG_C4_DRST_DRS( 1 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
585
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
586 // USB Clock and FLL select
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
587 SIM_SOPT2 = SIM_SOPT2_USBSRC | SIM_SOPT2_TRACECLKSEL;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
588
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
589 // Teensy 3.0 and 3.1 and Kiibohd-dfu (mk20dx256vlh7)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
590 #else
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
591 #if defined(_mk20dx128_) || defined(_mk20dx256_)
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
592 // use vector table in flash
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
593 SCB_VTOR = 0;
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
594 #endif
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
595
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
596 // default all interrupts to medium priority level
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
597 for ( unsigned int i = 0; i < NVIC_NUM_INTERRUPTS; i++ )
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
598 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
599 NVIC_SET_PRIORITY( i, 128 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
600 }
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
601
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
602 // start in FEI mode
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
603 // enable capacitors for crystal
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
604 OSC0_CR = OSC_SC8P | OSC_SC2P;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
605
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
606 // enable osc, 8-32 MHz range, low power mode
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
607 MCG_C2 = MCG_C2_RANGE0( 2 ) | MCG_C2_EREFS;
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
608
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
609 // switch to crystal as clock source, FLL input = 16 MHz / 512
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
610 MCG_C1 = MCG_C1_CLKS( 2 ) | MCG_C1_FRDIV( 4 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
611
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
612 // wait for crystal oscillator to begin
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
613 while ( (MCG_S & MCG_S_OSCINIT0) == 0 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
614
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
615 // wait for FLL to use oscillator
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
616 while ( (MCG_S & MCG_S_IREFST) != 0 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
617
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
618 // wait for MCGOUT to use oscillator
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
619 while ( (MCG_S & MCG_S_CLKST_MASK) != MCG_S_CLKST( 2 ) );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
620
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
621 // now we're in FBE mode
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
622 #if F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
623 // config PLL input for 16 MHz Crystal / 8 = 2 MHz
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
624 MCG_C5 = MCG_C5_PRDIV0( 7 );
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
625 #else
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
626 // config PLL input for 16 MHz Crystal / 4 = 4 MHz
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
627 MCG_C5 = MCG_C5_PRDIV0( 3 );
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
628 #endif
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
629
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
630 #if F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
631 // config PLL for 72 MHz output (36 * 2 MHz Ext PLL)
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
632 MCG_C6 = MCG_C6_PLLS | MCG_C6_VDIV0( 12 );
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
633 #else
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
634 // config PLL for 96 MHz output
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
635 MCG_C6 = MCG_C6_PLLS | MCG_C6_VDIV0( 0 );
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
636 #endif
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
637
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
638 // wait for PLL to start using xtal as its input
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
639 while ( !(MCG_S & MCG_S_PLLST) );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
640
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
641 // wait for PLL to lock
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
642 while ( !(MCG_S & MCG_S_LOCK0) );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
643
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
644 // now we're in PBE mode
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
645 #if F_CPU == 96000000
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
646 // config divisors: 96 MHz core, 48 MHz bus, 24 MHz flash
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
647 SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1( 0 ) | SIM_CLKDIV1_OUTDIV2( 1 ) | SIM_CLKDIV1_OUTDIV4( 3 );
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
648 #elif F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
649 // config divisors: 72 MHz core, 36 MHz bus, 24 MHz flash
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
650 SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1( 0 ) | SIM_CLKDIV1_OUTDIV2( 1 ) | SIM_CLKDIV1_OUTDIV4( 2 );
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
651 #elif F_CPU == 48000000
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
652 // config divisors: 48 MHz core, 48 MHz bus, 24 MHz flash
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
653 SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1( 1 ) | SIM_CLKDIV1_OUTDIV2( 1 ) | SIM_CLKDIV1_OUTDIV4( 3 );
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
654 #elif F_CPU == 24000000
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
655 // config divisors: 24 MHz core, 24 MHz bus, 24 MHz flash
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
656 SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1( 3 ) | SIM_CLKDIV1_OUTDIV2( 3 ) | SIM_CLKDIV1_OUTDIV4( 3 );
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
657 #else
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
658 #error "Error, F_CPU must be 96000000, 72000000, 48000000, or 24000000"
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
659 #endif
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
660 // switch to PLL as clock source, FLL input = 16 MHz / 512
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
661 MCG_C1 = MCG_C1_CLKS( 0 ) | MCG_C1_FRDIV( 4 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
662
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
663 // wait for PLL clock to be used
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
664 while ( (MCG_S & MCG_S_CLKST_MASK) != MCG_S_CLKST( 3 ) );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
665
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
666 // now we're in PEE mode
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
667 #if F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
668 // configure USB for 48 MHz clock
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
669 SIM_CLKDIV2 = SIM_CLKDIV2_USBDIV( 2 ) | SIM_CLKDIV2_USBFRAC; // USB = 72 MHz PLL / 1.5
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
670 #else
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
671 // configure USB for 48 MHz clock
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
672 SIM_CLKDIV2 = SIM_CLKDIV2_USBDIV( 1 ); // USB = 96 MHz PLL / 2
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
673 #endif
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
674
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
675 // USB uses PLL clock, trace is CPU clock, CLKOUT=OSCERCLK0
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
676 SIM_SOPT2 = SIM_SOPT2_USBSRC | SIM_SOPT2_PLLFLLSEL | SIM_SOPT2_TRACECLKSEL | SIM_SOPT2_CLKOUTSEL( 6 );
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
677
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
678 #endif
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
679
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
680 #if !defined(_bootloader_)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
681 // Initialize the SysTick counter
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
682 SYST_RVR = (F_CPU / 1000) - 1;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
683 SYST_CSR = SYST_CSR_CLKSOURCE | SYST_CSR_TICKINT | SYST_CSR_ENABLE;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
684
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
685 __enable_irq();
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
686 #else
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
687 // Disable Watchdog for bootloader
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
688 WDOG_STCTRLH &= ~WDOG_STCTRLH_WDOGEN;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
689 #endif
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
690
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
691 main();
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
692 while ( 1 ); // Shouldn't get here...
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
693 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
694
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
695
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
696
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
697 // ----- RAM Setup -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
698
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
699 char *__brkval = (char *)&_ebss;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
700
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
701 void * _sbrk( int incr )
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
702 {
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
703 char *prev = __brkval;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
704 __brkval += incr;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
705 return prev;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
706 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
707
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
708
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
709
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
710 // ----- Interrupt Execution Priority -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
711
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
712 int nvic_execution_priority()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
713 {
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
714 int priority = 256;
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
715 uint32_t primask, faultmask, basepri, ipsr;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
716
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
717 // full algorithm in ARM DDI0403D, page B1-639
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
718 // this isn't quite complete, but hopefully good enough
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
719 asm volatile( "mrs %0, faultmask\n" : "=r" (faultmask):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
720 if ( faultmask )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
721 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
722 return -1;
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
723 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
724
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
725 asm volatile( "mrs %0, primask\n" : "=r" (primask):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
726 if ( primask )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
727 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
728 return 0;
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
729 }
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
730
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
731 asm volatile( "mrs %0, ipsr\n" : "=r" (ipsr):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
732 if ( ipsr )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
733 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
734 if ( ipsr < 16)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
735 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
736 priority = 0; // could be non-zero
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
737 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
738 else
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
739 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
740 priority = NVIC_GET_PRIORITY( ipsr - 16 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
741 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
742 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
743
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
744 asm volatile( "mrs %0, basepri\n" : "=r" (basepri):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
745 if ( basepri > 0 && basepri < priority )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
746 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
747 priority = basepri;
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
748 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
749
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
750 return priority;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
751 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
752