annotate Lib/mk20dx.c @ 368:06a54d582bf8

FIxing Media Keys and general USB compatibilty - Media keys tested working on Linux/Windows/Mac (use Consumer control) - Fixed enumeration delays - Fixed virtual serial port configuration issues - Fixed GET_REPORT and SET_REPORT - Added intial descriptors and endpoints for Mouse and Joystick devices - Split out the consumer and system control endpoint - Added more fault debugging messages - Added interface names to endpoints (visible in Windows Device Manager) - Added KLL define for keyboard locale
author Jacob Alexander <haata@kiibohd.com>
date Wed, 19 Aug 2015 00:01:15 -0700
parents 2bcf6800b851
children
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 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
109 print("Hard Fault! SCB_HFSR: ");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
110 printHex32( SCB_HFSR );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
111 print( NL );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
112 SOFTWARE_RESET();
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
113 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
114
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
115
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
116 // NVIC - Memory Manager Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
117 void memmanage_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
118 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
119 print("Memory Manager Fault! SCB_CFSR: ");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
120 printHex32( SCB_CFSR );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
121 print(" SCB_MMAR: ");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
122 printHex32( SCB_MMAR );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
123 print( 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 - Bus Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
128 void bus_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
129 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
130 print("Bus Fault! SCB_CFSR: ");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
131 printHex32( SCB_CFSR );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
132 print(" SCB_BFAR: ");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
133 printHex32( SCB_BFAR );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
134 print( NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
135 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
136
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
137
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
138 // NVIC - Usage Fault ISR
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
139 void usage_fault_default_isr()
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
140 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
141 print("Usage Fault! SCB_CFSR: ");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
142 printHex32( SCB_CFSR );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 345
diff changeset
143 print( NL );
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
144 }
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
145
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
146
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
147 // NVIC - Default ISR/Vector Linking
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
148 void nmi_isr() __attribute__ ((weak, alias("nmi_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
149 void hard_fault_isr() __attribute__ ((weak, alias("hard_fault_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
150 void memmanage_fault_isr() __attribute__ ((weak, alias("memmanage_fault_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
151 void bus_fault_isr() __attribute__ ((weak, alias("bus_fault_default_isr")));
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
152 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
153 void svcall_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
154 void debugmonitor_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
155 void pendablesrvreq_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
156 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
157
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
158 void dma_ch0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
159 void dma_ch1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
160 void dma_ch2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
161 void dma_ch3_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
162 void dma_ch4_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
163 void dma_ch5_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
164 void dma_ch6_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
165 void dma_ch7_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
166 void dma_ch8_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
167 void dma_ch9_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
168 void dma_ch10_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
169 void dma_ch11_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
170 void dma_ch12_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
171 void dma_ch13_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
172 void dma_ch14_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
173 void dma_ch15_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
174 void dma_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
175 void mcm_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
176 void flash_cmd_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
177 void flash_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
178 void low_voltage_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
179 void wakeup_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
180 void watchdog_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
181 void i2c0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
182 void i2c1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
183 void i2c2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
184 void spi0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
185 void spi1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
186 void spi2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
187 void sdhc_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
188 void can0_message_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
189 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
190 void can0_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
191 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
192 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
193 void can0_wakeup_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
194 void i2s0_tx_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
195 void i2s0_rx_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
196 void uart0_lon_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
197 void uart0_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
198 void uart0_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
199 void uart1_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
200 void uart1_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
201 void uart2_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
202 void uart2_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
203 void uart3_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
204 void uart3_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
205 void uart4_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
206 void uart4_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
207 void uart5_status_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
208 void uart5_error_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
209 void adc0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
210 void adc1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
211 void cmp0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
212 void cmp1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
213 void cmp2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
214 void ftm0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
215 void ftm1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
216 void ftm2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
217 void ftm3_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
218 void cmt_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
219 void rtc_alarm_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
220 void rtc_seconds_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
221 void pit0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
222 void pit1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
223 void pit2_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
224 void pit3_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
225 void pdb_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
226 void usb_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
227 void usb_charge_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
228 void dac0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
229 void dac1_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
230 void tsi0_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
231 void mcg_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
232 void lptmr_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
233 void porta_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
234 void portb_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
235 void portc_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
236 void portd_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
237 void porte_isr() __attribute__ ((weak, alias("unused_isr")));
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
238 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
239
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
240
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
241 // NVIC - Interrupt Vector Table
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
242 __attribute__ ((section(".vectors"), used))
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
243 void (* const gVectors[])() =
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
244 {
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
245 (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
246 ResetHandler, // 1 ARM: Initial Program Counter
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
247 nmi_isr, // 2 ARM: Non-maskable Interrupt (NMI)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
248 hard_fault_isr, // 3 ARM: Hard Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
249 memmanage_fault_isr, // 4 ARM: MemManage Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
250 bus_fault_isr, // 5 ARM: Bus Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
251 usage_fault_isr, // 6 ARM: Usage Fault
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
252 fault_isr, // 7 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
253 fault_isr, // 8 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
254 fault_isr, // 9 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
255 fault_isr, // 10 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
256 svcall_isr, // 11 ARM: Supervisor call (SVCall)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
257 debugmonitor_isr, // 12 ARM: Debug Monitor
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
258 fault_isr, // 13 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
259 pendablesrvreq_isr, // 14 ARM: Pendable req serv(PendableSrvReq)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
260 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
261 #if defined(_mk20dx128_) || defined(_mk20dx128vlf5_)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
262 dma_ch0_isr, // 16 DMA channel 0 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
263 dma_ch1_isr, // 17 DMA channel 1 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
264 dma_ch2_isr, // 18 DMA channel 2 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
265 dma_ch3_isr, // 19 DMA channel 3 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
266 dma_error_isr, // 20 DMA error interrupt channel
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
267 unused_isr, // 21 DMA --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
268 flash_cmd_isr, // 22 Flash Memory Command complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
269 flash_error_isr, // 23 Flash Read collision
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
270 low_voltage_isr, // 24 Low-voltage detect/warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
271 wakeup_isr, // 25 Low Leakage Wakeup
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
272 watchdog_isr, // 26 Both EWM and WDOG interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
273 i2c0_isr, // 27 I2C0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
274 spi0_isr, // 28 SPI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
275 i2s0_tx_isr, // 29 I2S0 Transmit
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
276 i2s0_rx_isr, // 30 I2S0 Receive
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
277 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
278 uart0_status_isr, // 32 UART0 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
279 uart0_error_isr, // 33 UART0 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
280 uart1_status_isr, // 34 UART1 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
281 uart1_error_isr, // 35 UART1 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
282 uart2_status_isr, // 36 UART2 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
283 uart2_error_isr, // 37 UART2 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
284 adc0_isr, // 38 ADC0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
285 cmp0_isr, // 39 CMP0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
286 cmp1_isr, // 40 CMP1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
287 ftm0_isr, // 41 FTM0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
288 ftm1_isr, // 42 FTM1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
289 cmt_isr, // 43 CMT
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
290 rtc_alarm_isr, // 44 RTC Alarm interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
291 rtc_seconds_isr, // 45 RTC Seconds interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
292 pit0_isr, // 46 PIT Channel 0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
293 pit1_isr, // 47 PIT Channel 1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
294 pit2_isr, // 48 PIT Channel 2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
295 pit3_isr, // 49 PIT Channel 3
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
296 pdb_isr, // 50 PDB Programmable Delay Block
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
297 usb_isr, // 51 USB OTG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
298 usb_charge_isr, // 52 USB Charger Detect
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
299 tsi0_isr, // 53 TSI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
300 mcg_isr, // 54 MCG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
301 lptmr_isr, // 55 Low Power Timer
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
302 porta_isr, // 56 Pin detect (Port A)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
303 portb_isr, // 57 Pin detect (Port B)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
304 portc_isr, // 58 Pin detect (Port C)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
305 portd_isr, // 59 Pin detect (Port D)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
306 porte_isr, // 60 Pin detect (Port E)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
307 software_isr, // 61 Software interrupt
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
308 #elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
309 dma_ch0_isr, // 16 DMA channel 0 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
310 dma_ch1_isr, // 17 DMA channel 1 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
311 dma_ch2_isr, // 18 DMA channel 2 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
312 dma_ch3_isr, // 19 DMA channel 3 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
313 dma_ch4_isr, // 20 DMA channel 4 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
314 dma_ch5_isr, // 21 DMA channel 5 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
315 dma_ch6_isr, // 22 DMA channel 6 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
316 dma_ch7_isr, // 23 DMA channel 7 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
317 dma_ch8_isr, // 24 DMA channel 8 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
318 dma_ch9_isr, // 25 DMA channel 9 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
319 dma_ch10_isr, // 26 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
320 dma_ch11_isr, // 27 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
321 dma_ch12_isr, // 28 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
322 dma_ch13_isr, // 29 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
323 dma_ch14_isr, // 30 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
324 dma_ch15_isr, // 31 DMA channel 10 transfer complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
325 dma_error_isr, // 32 DMA error interrupt channel
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
326 unused_isr, // 33 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
327 flash_cmd_isr, // 34 Flash Memory Command complete
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
328 flash_error_isr, // 35 Flash Read collision
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
329 low_voltage_isr, // 36 Low-voltage detect/warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
330 wakeup_isr, // 37 Low Leakage Wakeup
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
331 watchdog_isr, // 38 Both EWM and WDOG interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
332 unused_isr, // 39 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
333 i2c0_isr, // 40 I2C0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
334 i2c1_isr, // 41 I2C1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
335 spi0_isr, // 42 SPI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
336 spi1_isr, // 43 SPI1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
337 unused_isr, // 44 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
338 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
339 can0_bus_off_isr, // 46 CAN Bus Off
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
340 can0_error_isr, // 47 CAN Error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
341 can0_tx_warn_isr, // 48 CAN Transmit Warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
342 can0_rx_warn_isr, // 49 CAN Receive Warning
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
343 can0_wakeup_isr, // 50 CAN Wake Up
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
344 i2s0_tx_isr, // 51 I2S0 Transmit
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
345 i2s0_rx_isr, // 52 I2S0 Receive
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
346 unused_isr, // 53 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
347 unused_isr, // 54 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
348 unused_isr, // 55 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
349 unused_isr, // 56 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
350 unused_isr, // 57 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
351 unused_isr, // 58 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
352 unused_isr, // 59 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
353 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
354 uart0_status_isr, // 61 UART0 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
355 uart0_error_isr, // 62 UART0 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
356 uart1_status_isr, // 63 UART1 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
357 uart1_error_isr, // 64 UART1 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
358 uart2_status_isr, // 65 UART2 status
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
359 uart2_error_isr, // 66 UART2 error
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
360 unused_isr, // 67 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
361 unused_isr, // 68 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
362 unused_isr, // 69 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
363 unused_isr, // 70 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
364 unused_isr, // 71 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
365 unused_isr, // 72 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
366 adc0_isr, // 73 ADC0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
367 adc1_isr, // 74 ADC1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
368 cmp0_isr, // 75 CMP0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
369 cmp1_isr, // 76 CMP1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
370 cmp2_isr, // 77 CMP2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
371 ftm0_isr, // 78 FTM0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
372 ftm1_isr, // 79 FTM1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
373 ftm2_isr, // 80 FTM2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
374 cmt_isr, // 81 CMT
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
375 rtc_alarm_isr, // 82 RTC Alarm interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
376 rtc_seconds_isr, // 83 RTC Seconds interrupt
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
377 pit0_isr, // 84 PIT Channel 0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
378 pit1_isr, // 85 PIT Channel 1
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
379 pit2_isr, // 86 PIT Channel 2
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
380 pit3_isr, // 87 PIT Channel 3
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
381 pdb_isr, // 88 PDB Programmable Delay Block
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
382 usb_isr, // 89 USB OTG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
383 usb_charge_isr, // 90 USB Charger Detect
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
384 unused_isr, // 91 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
385 unused_isr, // 92 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
386 unused_isr, // 93 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
387 unused_isr, // 94 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
388 unused_isr, // 95 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
389 unused_isr, // 96 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
390 dac0_isr, // 97 DAC0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
391 unused_isr, // 98 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
392 tsi0_isr, // 99 TSI0
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
393 mcg_isr, // 100 MCG
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
394 lptmr_isr, // 101 Low Power Timer
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
395 unused_isr, // 102 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
396 porta_isr, // 103 Pin detect (Port A)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
397 portb_isr, // 104 Pin detect (Port B)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
398 portc_isr, // 105 Pin detect (Port C)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
399 portd_isr, // 106 Pin detect (Port D)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
400 porte_isr, // 107 Pin detect (Port E)
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
401 unused_isr, // 108 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
402 unused_isr, // 109 --
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
403 software_isr, // 110 Software interrupt
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
404 #endif
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
405 };
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
406
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
407
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
408 // ----- Flash Configuration -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
409
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
410 // 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
411 #if defined(_mk20dx128_) || defined(_mk20dx256_)
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
412 __attribute__ ((section(".flashconfig"), used))
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
413 const uint8_t flashconfigbytes[16] = {
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
414 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
415 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
416 };
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
417 #elif defined(_mk20dx128vlf5_) && defined(_bootloader_)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
418 // 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
419 // FSEC is in correct location -Jacob
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
420 __attribute__ ((section(".flashconfig"), used))
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
421 const uint8_t flashconfigbytes[16] = {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
422 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
423
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
424 //
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
425 // 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
426 // 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
427 // 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
428 // 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
429 // 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
430 // 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
431 //
2ddb7c0a4f51 Adding FPROT flash protection bit for 4k Bootloader on the mk20dx128vlf5
Jacob Alexander <haata@kiibohd.com>
parents: 192
diff changeset
432 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
433
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
434 0xBE, // Flash security byte FSEC
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
435 0x03, // Flash nonvolatile option byte FOPT
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
436 0xFF, // EEPROM Protection Byte FEPROT
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
437 0xFF, // Data Flash Protection Byte FDPROT
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
438 };
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
439 #elif defined(_mk20dx256vlh7_) && defined(_bootloader_)
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
440 // 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
441 // FSEC is in correct location -Jacob
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
442 __attribute__ ((section(".flashconfig"), used))
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
443 const uint8_t flashconfigbytes[16] = {
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
444 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
445
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
446 //
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
447 // 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
448 // Still possible to overwrite the bootloader using an external flashing device
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
449 // For more details see:
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
450 // 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
451 // http://cache.freescale.com/files/microcontrollers/doc/app_note/AN4507.pdf
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
452 // 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
453 //
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
454 0xFF, 0xFF, 0xFF, 0xFE, // Program Flash Protection Bytes FPROT0-3
263
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
455
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
456 0xBE, // Flash security byte FSEC
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
457 0x03, // Flash nonvolatile option byte FOPT
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
458 0xFF, // EEPROM Protection Byte FEPROT
9afed592bcb5 Preparing for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 247
diff changeset
459 0xFF, // Data Flash Protection Byte FDPROT
314
8325f8c91663 Fixing bugs in mk20dx256vlh7 Bootloader support.
Jacob Alexander <haata@kiibohd.com>
parents: 308
diff changeset
460 };
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
461 #endif
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
462
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
463
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
464
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
465 // ----- Functions -----
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
466
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
467 #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
468 __attribute__((noreturn))
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
469 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
470 {
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
471 // addr is in r0
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
472 __asm__("ldr sp, [%[addr], #0]\n"
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
473 "ldr pc, [%[addr], #4]"
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
474 :: [addr] "r" (addr));
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
475 // NOTREACHED
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
476 __builtin_unreachable();
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
477 }
265
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
478 #endif
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
479
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
480 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
481 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
482 char *buf = addr;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
483
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
484 for (; len > 0; --len, ++buf)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
485 *buf = val;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
486 return (addr);
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
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
489 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
490 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
491 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
492 int val = 0;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
493
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
494 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
495 /* NOTHING */;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
496 return (val);
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
497 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
498
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
499 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
500 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
501 char *dstbuf = dst;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
502 const char *srcbuf = src;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
503
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
504 for (; len > 0; --len, ++dstbuf, ++srcbuf)
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
505 *dstbuf = *srcbuf;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
506 return (dst);
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
507 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
508
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
509
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
510
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
511 // ----- Chip Entry Point -----
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
512
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
513 __attribute__ ((section(".startup")))
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
514 void ResetHandler()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
515 {
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
516 #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
517 extern uint32_t _app_rom;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
518
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
519 // 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
520 // 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
521 // 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
522 //
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
523 // Purposefully disabling the watchdog *after* the reset check this way
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
524 // 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
525 // RCM_SRS0 & 0x20
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
526 //
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
527 // Also checking for ARM lock-up signal (invalid firmware image)
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
528 // RCM_SRS1 & 0x02
330
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
529 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
530 RCM_SRS0 & 0x40
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
531 // WDOG (Watchdog timeout)
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
532 || RCM_SRS0 & 0x20
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
533 // 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
534 || RCM_SRS1 & 0x02
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
535 // Blank flash check
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
536 || _app_rom == 0xffffffff
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
537 // Software reset
f4d4cad283c6 Some initial bringup of the dfu bootloader on the mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 314
diff changeset
538 || 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
539 )
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
540 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
541 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
542 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
543 else
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
544 {
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
545 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
546 SCB_VTOR = addr; // relocate vector table
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
547 jump_to_app( addr );
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
548 }
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
549 #endif
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
550 // Disable Watchdog
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
551 WDOG_UNLOCK = WDOG_UNLOCK_SEQ1;
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
552 WDOG_UNLOCK = WDOG_UNLOCK_SEQ2;
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
553 WDOG_STCTRLH = WDOG_STCTRLH_ALLOWUPDATE;
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
554
265
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
555 uint32_t *src = (uint32_t*)&_etext;
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
556 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
557
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
558 // Enable clocks to always-used peripherals
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
559 SIM_SCGC5 = 0x00043F82; // Clocks active to all GPIO
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
560 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
561 #if defined(_mk20dx128_)
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
562 SIM_SCGC6 |= SIM_SCGC6_RTC;
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
563 #elif defined(_mk20dx256_) || defined(_mk20dx256vlh7_)
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
564 SIM_SCGC3 = SIM_SCGC3_ADC1 | SIM_SCGC3_FTM2;
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
565 SIM_SCGC6 |= SIM_SCGC6_RTC;
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
566 #endif
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
567
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
568 #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
569 // 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
570 if ( !(RTC_CR & RTC_CR_OSCE) )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
571 {
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
572 RTC_SR = 0;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
573 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
574 }
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
575 #endif
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
576
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
577 // 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
578 if ( PMC_REGSC & PMC_REGSC_ACKISO )
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 PMC_REGSC |= PMC_REGSC_ACKISO;
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
581 }
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
582
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
583 // Prepare RAM
265
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
584 while ( dest < (uint32_t*)&_edata ) *dest++ = *src++;
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
585 dest = (uint32_t*)&_sbss;
708af1b9bc55 Fixing warning messages found using clang.
Jacob Alexander <haata@kiibohd.com>
parents: 263
diff changeset
586 while ( dest < (uint32_t*)&_ebss ) *dest++ = 0;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
587
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
588 // MCHCK / Kiibohd-dfu
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
589 #if defined(_mk20dx128vlf5_)
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
590 // Default all interrupts to medium priority level
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
591 for ( unsigned int i = 0; i < NVIC_NUM_INTERRUPTS; i++ )
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
592 {
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
593 NVIC_SET_PRIORITY( i, 128 );
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
594 }
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
595
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 266
diff changeset
596 // FLL at 48MHz
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
597 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
598
175
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
599 // USB Clock and FLL select
c70f641581b5 McHCK USB WORKS!!
Jacob Alexander <haata@kiibohd.com>
parents: 174
diff changeset
600 SIM_SOPT2 = SIM_SOPT2_USBSRC | SIM_SOPT2_TRACECLKSEL;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
601
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
602 // 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
603 #else
340
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
604 #if defined(_mk20dx128_) || defined(_mk20dx256_)
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
605 // use vector table in flash
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
606 SCB_VTOR = 0;
e8841d3c6db5 mk20dx256vlh7 working!
Jacob Alexander <haata@kiibohd.com>
parents: 333
diff changeset
607 #endif
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
608
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
609 // default all interrupts to medium priority level
266
596d8e300a37 Fixing device bricking bug
Jacob Alexander <haata@kiibohd.com>
parents: 265
diff changeset
610 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
611 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
612 NVIC_SET_PRIORITY( i, 128 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
613 }
170
85d74e5e1a95 More work on mk20dx128vlf5 port.
Jacob Alexander <haata@kiibohd.com>
parents: 169
diff changeset
614
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
615 // start in FEI mode
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
616 // enable capacitors for crystal
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
617 OSC0_CR = OSC_SC8P | OSC_SC2P;
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
618
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
619 // 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
620 MCG_C2 = MCG_C2_RANGE0( 2 ) | MCG_C2_EREFS;
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
621
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
622 // 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
623 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
624
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
625 // wait for crystal oscillator to begin
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
626 while ( (MCG_S & MCG_S_OSCINIT0) == 0 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
627
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
628 // wait for FLL to use oscillator
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
629 while ( (MCG_S & MCG_S_IREFST) != 0 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
630
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
631 // wait for MCGOUT to use oscillator
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
632 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
633
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
634 // now we're in FBE mode
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
635 #if F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
636 // 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
637 MCG_C5 = MCG_C5_PRDIV0( 7 );
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
638 #else
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
639 // 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
640 MCG_C5 = MCG_C5_PRDIV0( 3 );
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
641 #endif
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
642
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
643 #if F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
644 // 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
645 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
646 #else
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
647 // config PLL for 96 MHz output
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
648 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
649 #endif
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
650
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
651 // 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
652 while ( !(MCG_S & MCG_S_PLLST) );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
653
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
654 // wait for PLL to lock
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
655 while ( !(MCG_S & MCG_S_LOCK0) );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
656
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
657 // now we're in PBE mode
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
658 #if F_CPU == 96000000
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
659 // 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
660 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
661 #elif F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
662 // 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
663 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
664 #elif F_CPU == 48000000
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
665 // 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
666 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
667 #elif F_CPU == 24000000
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
668 // 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
669 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
670 #else
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
671 #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
672 #endif
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
673 // 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
674 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
675
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
676 // wait for PLL clock to be used
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
677 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
678
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
679 // now we're in PEE mode
333
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
680 #if F_CPU == 72000000
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
681 // configure USB for 48 MHz clock
772f9bea482b Adding 72 MHz clock support for mk20dx256vlh7
Jacob Alexander <haata@kiibohd.com>
parents: 330
diff changeset
682 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
683 #else
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
684 // configure USB for 48 MHz clock
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
685 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
686 #endif
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
687
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
688 // 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
689 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
690
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
691 #endif
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
692
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
693 #if !defined(_bootloader_)
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
694 // Initialize the SysTick counter
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
695 SYST_RVR = (F_CPU / 1000) - 1;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
696 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
697
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
698 __enable_irq();
192
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
699 #else
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
700 // Disable Watchdog for bootloader
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
701 WDOG_STCTRLH &= ~WDOG_STCTRLH_WDOGEN;
6ac92b8614c0 Fixing RAM calculator and reduced actual SRAM usage
Jacob Alexander <haata@kiibohd.com>
parents: 177
diff changeset
702 #endif
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
703
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
704 main();
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
705 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
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 // ----- RAM Setup -----
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
711
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
712 char *__brkval = (char *)&_ebss;
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 void * _sbrk( int incr )
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
715 {
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
716 char *prev = __brkval;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
717 __brkval += incr;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
718 return prev;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
719 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
720
174
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
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
723 // ----- Interrupt Execution Priority -----
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 int nvic_execution_priority()
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
726 {
174
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
727 int priority = 256;
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
728 uint32_t primask, faultmask, basepri, ipsr;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
729
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
730 // 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
731 // 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
732 asm volatile( "mrs %0, faultmask\n" : "=r" (faultmask):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
733 if ( faultmask )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
734 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
735 return -1;
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
736 }
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 asm volatile( "mrs %0, primask\n" : "=r" (primask):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
739 if ( primask )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
740 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
741 return 0;
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
742 }
174
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, ipsr\n" : "=r" (ipsr):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
745 if ( ipsr )
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 if ( ipsr < 16)
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 priority = 0; // could be non-zero
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
750 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
751 else
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
752 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
753 priority = NVIC_GET_PRIORITY( ipsr - 16 );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
754 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
755 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
756
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
757 asm volatile( "mrs %0, basepri\n" : "=r" (basepri):: );
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
758 if ( basepri > 0 && basepri < priority )
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
759 {
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
760 priority = basepri;
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
761 }
848e1ef8966c McHCK now working with UART.
Jacob Alexander <haata@kiibohd.com>
parents: 170
diff changeset
762
118
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
763 return priority;
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
764 }
b61ca96b7c24 File and macro modifications for supporting Teensy 3.1
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
765