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