Skip to content
This repository was archived by the owner on Jul 6, 2019. It is now read-only.

Commit baf43fb

Browse files
committed
k20: Split up interrupt vector tables
It seems there are multiple variants of the K20. Duplicate and correct iomem and isr to reflect this.
1 parent 7397ea5 commit baf43fb

File tree

7 files changed

+435
-81
lines changed

7 files changed

+435
-81
lines changed

src/zinc/hal/isr.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ extern crate core;
2929
#[path="lpc17xx/isr.rs"] pub mod isr_lpc17xx;
3030

3131
#[cfg(mcu_k20)]
32-
#[path="k20/isr.rs"] pub mod isr_k20;
32+
#[path="k20/isr/mod.rs"] pub mod isr_k20;
3333

3434
#[path="../util/lang_items.rs"] mod lang_items;

src/zinc/hal/k20/iomem.ld

+4-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ PROVIDE(isr_port_d = isr_default_fault);
7070
PROVIDE(isr_port_e = isr_default_fault);
7171
PROVIDE(isr_soft = isr_default_fault);
7272

73-
# This originated from the Freescale K20 Sub-Family Reference Manual
74-
# Document number K20P48M50SF0RM, Rev. 2
73+
/*
74+
* This originated from the Freescale K20 Sub-Family Reference Manual
75+
* Document number K20P48M50SF0RM, Rev. 2
76+
*/
7577

7678
k20_iomem_PERIPH0 = 0x40000000;
7779

src/zinc/hal/k20/iomem_50.ld

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
INCLUDE ./src/zinc/hal/cortex_m3/armmem.ld
2+
3+
PROVIDE(isr_dma_0 = isr_default_fault);
4+
PROVIDE(isr_dma_1 = isr_default_fault);
5+
PROVIDE(isr_dma_2 = isr_default_fault);
6+
PROVIDE(isr_dma_3 = isr_default_fault);
7+
PROVIDE(isr_dma_err = isr_default_fault);
8+
PROVIDE(isr_flash_complete = isr_default_fault);
9+
PROVIDE(isr_flash_collision = isr_default_fault);
10+
PROVIDE(isr_low_volt = isr_default_fault);
11+
PROVIDE(isr_llwu = isr_default_fault);
12+
PROVIDE(isr_wdt = isr_default_fault);
13+
PROVIDE(isr_i2c_0 = isr_default_fault);
14+
PROVIDE(isr_spi_0 = isr_default_fault);
15+
PROVIDE(isr_i2s_0 = isr_default_fault);
16+
PROVIDE(isr_i2s_1 = isr_default_fault);
17+
PROVIDE(isr_uart_0_lon = isr_default_fault);
18+
PROVIDE(isr_uart_0_stat = isr_default_fault);
19+
PROVIDE(isr_uart_0_err = isr_default_fault);
20+
PROVIDE(isr_uart_1_stat = isr_default_fault);
21+
PROVIDE(isr_uart_1_err = isr_default_fault);
22+
PROVIDE(isr_uart_2_stat = isr_default_fault);
23+
PROVIDE(isr_uart_2_err = isr_default_fault);
24+
PROVIDE(isr_adc_0 = isr_default_fault);
25+
PROVIDE(isr_cmp_0 = isr_default_fault);
26+
PROVIDE(isr_cmp_1 = isr_default_fault);
27+
PROVIDE(isr_ftm_0 = isr_default_fault);
28+
PROVIDE(isr_ftm_1 = isr_default_fault);
29+
PROVIDE(ist_cmt = isr_default_fault);
30+
PROVIDE(isr_rtc_alarm = isr_default_fault);
31+
PROVIDE(isr_rtc_tick = isr_default_fault);
32+
PROVIDE(isr_pit_0 = isr_default_fault);
33+
PROVIDE(isr_pit_1 = isr_default_fault);
34+
PROVIDE(isr_pit_2 = isr_default_fault);
35+
PROVIDE(isr_pit_3 = isr_default_fault);
36+
PROVIDE(isr_pdb = isr_default_fault);
37+
PROVIDE(isr_usb = isr_default_fault);
38+
PROVIDE(isr_usb_dcd = isr_default_fault);
39+
PROVIDE(isr_tsi = isr_default_fault);
40+
PROVIDE(isr_mcg = isr_default_fault);
41+
PROVIDE(isr_lptimer = isr_default_fault);
42+
PROVIDE(isr_port_a = isr_default_fault);
43+
PROVIDE(isr_port_b = isr_default_fault);
44+
PROVIDE(isr_port_c = isr_default_fault);
45+
PROVIDE(isr_port_d = isr_default_fault);
46+
PROVIDE(isr_port_e = isr_default_fault);
47+
PROVIDE(isr_soft = isr_default_fault);
48+
49+
# This originated from the Freescale K20 Sub-Family Reference Manual
50+
# Document number K20P48M50SF0RM, Rev. 2
51+
52+
k20_iomem_PERIPH0 = 0x40000000;
53+
54+
k20_iomem_CROSSBAR = 0x40004000;
55+
56+
k20_iomem_DMACON = 0x40008000;
57+
k20_iomem_DMATCD = 0x40009000;
58+
59+
k20_iomem_FLASHCON = 0x4001F000;
60+
k20_iomem_FLASH = 0x40020000;
61+
k20_iomem_DMAMUX0 = 0x40021000;
62+
63+
k20_iomem_CAN0 = 0x40024000;
64+
65+
k20_iomem_SPI0 = 0x4002C000;
66+
k20_iomem_SPI1 = 0x4002D000;
67+
k20_iomem_I2S0 = 0x4002F000;
68+
69+
k20_iomem_CRC = 0x40032000;
70+
71+
k20_iomem_USBDCD = 0x40035000;
72+
k20_iomem_PDB = 0x40036000;
73+
k20_iomem_PIT = 0x40037000;
74+
k20_iomem_FTM0 = 0x40038000;
75+
k20_iomem_FTM1 = 0x40039000;
76+
77+
k20_iomem_ADC0 = 0x4003B000;
78+
79+
k20_iomem_RTC = 0x4003D000;
80+
k20_iomem_VBAT = 0x4003E000;
81+
82+
k20_iomem_LPTMR = 0x40040000;
83+
k20_iomem_SYSREG = 0x40041000;
84+
85+
k20_iomem_TSI = 0x40045000;
86+
87+
k20_iomem_SIM = 0x40047000;
88+
k20_iomem_PORTA = 0x40049000;
89+
k20_iomem_PORTB = 0x4004A000;
90+
k20_iomem_PORTC = 0x4004B000;
91+
k20_iomem_PORTD = 0x4004C000;
92+
k20_iomem_PORTE = 0x4004D000;
93+
94+
k20_iomem_WDINT = 0x40052000;
95+
96+
k20_iomem_WDEXT = 0x40061000;
97+
k20_iomem_CMT = 0x40062000;
98+
99+
k20_iomem_MCG = 0x40064000;
100+
k20_iomem_OSC = 0x40065000;
101+
k20_iomem_I2C0 = 0x40066000;
102+
k20_iomem_I2C1 = 0x40067000;
103+
104+
k20_iomem_UART0 = 0x4006A000;
105+
k20_iomem_UART1 = 0x4006B000;
106+
k20_iomem_UART2 = 0x4006C000;
107+
108+
k20_iomem_USB = 0x40072000;
109+
k20_iomem_CMP = 0x40073000;
110+
k20_iomem_VREF = 0x40074000;
111+
112+
k20_iomem_LLWU = 0x4007C000;
113+
k20_iomem_PMC = 0x4007D000;
114+
k20_iomem_SMC = 0x4007E000;
115+
k20_iomem_RCM = 0x4007F000;
116+
117+
118+
k20_iomem_PERIPH1 = 0x40080000;
119+
120+
k20_iomem_FTM2 = 0x400B8000;
121+
122+
k20_iomem_ADC1 = 0x400BB000;
123+
124+
k20_iomem_DAC0 = 0x400CC000;
125+
126+
k20_iomem_GPIOA = 0x400ff000;
127+
k20_iomem_GPIOB = 0x400ff040;
128+
k20_iomem_GPIOC = 0x400ff080;
129+
k20_iomem_GPIOD = 0x400ff0C0;
130+
k20_iomem_GPIOE = 0x400ff100;
131+
132+
k20_iomem_WDOG = 0x40052000;

src/zinc/hal/k20/iomem_72.ld

+153
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
INCLUDE ./src/zinc/hal/cortex_m3/armmem.ld
2+
3+
PROVIDE(isr_dma_0 = isr_default_fault);
4+
PROVIDE(isr_dma_1 = isr_default_fault);
5+
PROVIDE(isr_dma_2 = isr_default_fault);
6+
PROVIDE(isr_dma_3 = isr_default_fault);
7+
PROVIDE(isr_dma_4 = isr_default_fault);
8+
PROVIDE(isr_dma_5 = isr_default_fault);
9+
PROVIDE(isr_dma_6 = isr_default_fault);
10+
PROVIDE(isr_dma_7 = isr_default_fault);
11+
PROVIDE(isr_dma_8 = isr_default_fault);
12+
PROVIDE(isr_dma_9 = isr_default_fault);
13+
PROVIDE(isr_dma_10 = isr_default_fault);
14+
PROVIDE(isr_dma_11 = isr_default_fault);
15+
PROVIDE(isr_dma_12 = isr_default_fault);
16+
PROVIDE(isr_dma_13 = isr_default_fault);
17+
PROVIDE(isr_dma_14 = isr_default_fault);
18+
PROVIDE(isr_dma_15 = isr_default_fault);
19+
PROVIDE(isr_dma_err = isr_default_fault);
20+
PROVIDE(isr_flash_complete = isr_default_fault);
21+
PROVIDE(isr_flash_collision = isr_default_fault);
22+
PROVIDE(isr_low_volt = isr_default_fault);
23+
PROVIDE(isr_llwu = isr_default_fault);
24+
PROVIDE(isr_wdt = isr_default_fault);
25+
PROVIDE(isr_i2c_0 = isr_default_fault);
26+
PROVIDE(isr_i2c_1 = isr_default_fault);
27+
PROVIDE(isr_spi_0 = isr_default_fault);
28+
PROVIDE(isr_spi_1 = isr_default_fault);
29+
PROVIDE(isr_can_0_msg = isr_default_fault);
30+
PROVIDE(isr_can_0_bus = isr_default_fault);
31+
PROVIDE(isr_can_0_err = isr_default_fault);
32+
PROVIDE(isr_can_0_tx = isr_default_fault);
33+
PROVIDE(isr_can_0_rx = isr_default_fault);
34+
PROVIDE(isr_can_0_wake = isr_default_fault);
35+
PROVIDE(isr_i2s_0_tx = isr_default_fault);
36+
PROVIDE(isr_i2s_0_rx = isr_default_fault);
37+
PROVIDE(isr_uart_0_lon = isr_default_fault);
38+
PROVIDE(isr_uart_0_stat = isr_default_fault);
39+
PROVIDE(isr_uart_0_err = isr_default_fault);
40+
PROVIDE(isr_uart_1_stat = isr_default_fault);
41+
PROVIDE(isr_uart_1_err = isr_default_fault);
42+
PROVIDE(isr_uart_2_stat = isr_default_fault);
43+
PROVIDE(isr_uart_2_err = isr_default_fault);
44+
PROVIDE(isr_adc_0 = isr_default_fault);
45+
PROVIDE(isr_adc_1 = isr_default_fault);
46+
PROVIDE(isr_cmp_0 = isr_default_fault);
47+
PROVIDE(isr_cmp_1 = isr_default_fault);
48+
PROVIDE(isr_cmp_2 = isr_default_fault);
49+
PROVIDE(isr_ftm_0 = isr_default_fault);
50+
PROVIDE(isr_ftm_1 = isr_default_fault);
51+
PROVIDE(isr_ftm_2 = isr_default_fault);
52+
PROVIDE(ist_cmt = isr_default_fault);
53+
PROVIDE(isr_rtc_alarm = isr_default_fault);
54+
PROVIDE(isr_rtc_tick = isr_default_fault);
55+
PROVIDE(isr_pit_0 = isr_default_fault);
56+
PROVIDE(isr_pit_1 = isr_default_fault);
57+
PROVIDE(isr_pit_2 = isr_default_fault);
58+
PROVIDE(isr_pit_3 = isr_default_fault);
59+
PROVIDE(isr_pdb = isr_default_fault);
60+
PROVIDE(isr_usb = isr_default_fault);
61+
PROVIDE(isr_usb_dcd = isr_default_fault);
62+
PROVIDE(isr_dac_0 = isr_default_fault);
63+
PROVIDE(isr_tsi = isr_default_fault);
64+
PROVIDE(isr_mcg = isr_default_fault);
65+
PROVIDE(isr_lptimer = isr_default_fault);
66+
PROVIDE(isr_port_a = isr_default_fault);
67+
PROVIDE(isr_port_b = isr_default_fault);
68+
PROVIDE(isr_port_c = isr_default_fault);
69+
PROVIDE(isr_port_d = isr_default_fault);
70+
PROVIDE(isr_port_e = isr_default_fault);
71+
PROVIDE(isr_soft = isr_default_fault);
72+
73+
k20_iomem_PERIPH0 = 0x40000000;
74+
75+
k20_iomem_CROSSBAR = 0x40004000;
76+
77+
k20_iomem_DMACON = 0x40008000;
78+
k20_iomem_DMATCD = 0x40009000;
79+
80+
k20_iomem_FLASHCON = 0x4001F000;
81+
k20_iomem_FLASH = 0x40020000;
82+
k20_iomem_DMAMUX0 = 0x40021000;
83+
84+
k20_iomem_CAN0 = 0x40024000;
85+
86+
k20_iomem_SPI0 = 0x4002C000;
87+
k20_iomem_SPI1 = 0x4002D000;
88+
k20_iomem_I2S0 = 0x4002F000;
89+
90+
k20_iomem_CRC = 0x40032000;
91+
92+
k20_iomem_USBDCD = 0x40035000;
93+
k20_iomem_PDB = 0x40036000;
94+
k20_iomem_PIT = 0x40037000;
95+
k20_iomem_FTM0 = 0x40038000;
96+
k20_iomem_FTM1 = 0x40039000;
97+
98+
k20_iomem_ADC0 = 0x4003B000;
99+
100+
k20_iomem_RTC = 0x4003D000;
101+
k20_iomem_VBAT = 0x4003E000;
102+
103+
k20_iomem_LPTMR = 0x40040000;
104+
k20_iomem_SYSREG = 0x40041000;
105+
106+
k20_iomem_TSI = 0x40045000;
107+
108+
k20_iomem_SIM = 0x40047000;
109+
k20_iomem_PORTA = 0x40049000;
110+
k20_iomem_PORTB = 0x4004A000;
111+
k20_iomem_PORTC = 0x4004B000;
112+
k20_iomem_PORTD = 0x4004C000;
113+
k20_iomem_PORTE = 0x4004D000;
114+
115+
k20_iomem_WDINT = 0x40052000;
116+
117+
k20_iomem_WDEXT = 0x40061000;
118+
k20_iomem_CMT = 0x40062000;
119+
120+
k20_iomem_MCG = 0x40064000;
121+
k20_iomem_OSC = 0x40065000;
122+
k20_iomem_I2C0 = 0x40066000;
123+
k20_iomem_I2C1 = 0x40067000;
124+
125+
k20_iomem_UART0 = 0x4006A000;
126+
k20_iomem_UART1 = 0x4006B000;
127+
k20_iomem_UART2 = 0x4006C000;
128+
129+
k20_iomem_USB = 0x40072000;
130+
k20_iomem_CMP = 0x40073000;
131+
k20_iomem_VREF = 0x40074000;
132+
133+
k20_iomem_LLWU = 0x4007C000;
134+
k20_iomem_PMC = 0x4007D000;
135+
k20_iomem_SMC = 0x4007E000;
136+
k20_iomem_RCM = 0x4007F000;
137+
138+
139+
k20_iomem_PERIPH1 = 0x40080000;
140+
141+
k20_iomem_FTM2 = 0x400B8000;
142+
143+
k20_iomem_ADC1 = 0x400BB000;
144+
145+
k20_iomem_DAC0 = 0x400CC000;
146+
147+
k20_iomem_GPIOA = 0x400ff000;
148+
k20_iomem_GPIOB = 0x400ff040;
149+
k20_iomem_GPIOC = 0x400ff080;
150+
k20_iomem_GPIOD = 0x400ff0C0;
151+
k20_iomem_GPIOE = 0x400ff100;
152+
153+
k20_iomem_WDOG = 0x40052000;

0 commit comments

Comments
 (0)