Skip to content

Commit 0af5dd5

Browse files
authored
Merge pull request #2898 from hierophect/mimxrt-claiming
MIMXRT: Implement pin claiming, pin reset, and pin protections
2 parents 916ca9f + 38fd9c2 commit 0af5dd5

File tree

20 files changed

+488
-464
lines changed

20 files changed

+488
-464
lines changed

ports/mimxrt10xx/Makefile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_MIMXRT10XX -DCFG_TUD_MIDI_RX_BUFSIZE=128 -DCFG_
8282

8383
#Debugging/Optimization
8484
ifeq ($(DEBUG), 1)
85-
CFLAGS += -ggdb
8685
# You may want to disable -flto if it interferes with debugging.
8786
# CFLAGS += -flto -flto-partition=none
8887
# You may want to enable these flags to make setting breakpoints easier.
@@ -91,7 +90,7 @@ else
9190
#CFLAGS += -flto -flto-partition=none
9291
endif
9392

94-
CFLAGS += $(INC) -Wall -Wno-cast-align -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
93+
CFLAGS += $(INC) -ggdb -Wall -Wno-cast-align -std=gnu11 -nostdlib $(BASE_CFLAGS) $(CFLAGS_MOD) $(COPT)
9594

9695
# TODO: add these when -Werror is applied
9796
# Disable some warnings, as do most ports. NXP SDK causes undef, tinyusb causes cast-align

ports/mimxrt10xx/boards/feather_m7_1011/board.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,21 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_13);//SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_12);//SWCLK
36+
37+
// FLEX flash
38+
common_hal_never_reset_pin(&pin_GPIO_SD_12);
39+
common_hal_never_reset_pin(&pin_GPIO_SD_11);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_10);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_09);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_08);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_07);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_06);
3245
}
3346

3447
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/feather_mimxrt1011/board.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,21 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_13);//SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_12);//SWCLK
36+
37+
// FLEX flash
38+
common_hal_never_reset_pin(&pin_GPIO_SD_12);
39+
common_hal_never_reset_pin(&pin_GPIO_SD_11);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_10);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_09);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_08);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_07);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_06);
3245
}
3346

3447
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/feather_mimxrt1062/board.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,20 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_06);//SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_07);//SWCLK
36+
37+
// FLEX flash
38+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_06);
39+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_07);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_08);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_09);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_10);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_11);
3244
}
3345

3446
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/imxrt1010_evk/board.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,24 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_13); //SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_12); //SWCLK
36+
common_hal_never_reset_pin(&pin_GPIO_AD_09); //SWO
37+
// FLEX flash
38+
common_hal_never_reset_pin(&pin_GPIO_SD_12);
39+
common_hal_never_reset_pin(&pin_GPIO_SD_11);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_10);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_09);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_08);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_07);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_06);
45+
// USB Pins
46+
common_hal_never_reset_pin(&pin_GPIO_12);
47+
common_hal_never_reset_pin(&pin_GPIO_13);
3248
}
3349

3450
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/imxrt1020_evk/board.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,25 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_00);//SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_01);//SWCLK
36+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_04);//SWO
37+
38+
// FLEX flash
39+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_06);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_07);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_08);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_09);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_10);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_11);
45+
46+
// USB Pins
47+
common_hal_never_reset_pin(&pin_GPIO_AD_B1_11);
48+
common_hal_never_reset_pin(&pin_GPIO_AD_B1_12);
3249
}
3350

3451
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/imxrt1060_evk/board.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,31 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_06);//SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_07);//SWCLK
36+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_10);//SWO
37+
38+
// FLEX flash
39+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_00);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_01);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_02);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_03);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_04);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_05);
45+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_06);
46+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_07);
47+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_08);
48+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_09);
49+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_10);
50+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_11);
51+
52+
// USB Pins
53+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_01);
54+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_03);
3255
}
3356

3457
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/teensy40/board.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,25 @@
2727

2828
#include "boards/board.h"
2929
#include "mpconfigboard.h"
30+
#include "shared-bindings/microcontroller/Pin.h"
3031

3132
void board_init(void) {
33+
// SWD Pins
34+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_06);//SWDIO
35+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_07);//SWCLK
36+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_10);//SWO
37+
38+
// FLEX flash
39+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_06);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_07);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_08);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_09);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_10);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_B1_11);
45+
46+
// USB Pins
47+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_01);
48+
common_hal_never_reset_pin(&pin_GPIO_AD_B0_03);
3249
}
3350

3451
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/common-hal/analogio/AnalogIn.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
*/
2727

2828
#include "common-hal/analogio/AnalogIn.h"
29+
#include "shared-bindings/microcontroller/Pin.h"
2930

3031
#include <string.h>
3132

@@ -65,7 +66,7 @@ void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
6566
if (common_hal_analogio_analogin_deinited(self)) {
6667
return;
6768
}
68-
reset_pin_number(self->pin->number);
69+
common_hal_reset_pin(self->pin);
6970
self->pin = NULL;
7071
}
7172

ports/mimxrt10xx/common-hal/digitalio/DigitalInOut.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
#include "fsl_gpio.h"
3636

37-
#include "common-hal/microcontroller/Pin.h"
37+
#include "shared-bindings/microcontroller/Pin.h"
3838
#include "shared-bindings/digitalio/DigitalInOut.h"
3939
#include "supervisor/shared/translate.h"
4040

@@ -74,7 +74,7 @@ digitalinout_result_t common_hal_digitalio_digitalinout_construct(
7474

7575
void common_hal_digitalio_digitalinout_never_reset(
7676
digitalio_digitalinout_obj_t *self) {
77-
never_reset_pin_number(self->pin->number);
77+
common_hal_never_reset_pin(self->pin);
7878
}
7979

8080
bool common_hal_digitalio_digitalinout_deinited(digitalio_digitalinout_obj_t* self) {
@@ -85,7 +85,7 @@ void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t* self
8585
if (common_hal_digitalio_digitalinout_deinited(self)) {
8686
return;
8787
}
88-
reset_pin_number(self->pin->number);
88+
common_hal_reset_pin(self->pin);
8989
self->pin = NULL;
9090
}
9191

0 commit comments

Comments
 (0)