Skip to content

Commit 99538c2

Browse files
committed
Implement pin claiming, pin reset, and pin protections
1 parent 241ef52 commit 99538c2

File tree

19 files changed

+735
-428
lines changed

19 files changed

+735
-428
lines changed

ports/mimxrt10xx/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ ifeq ($(DEBUG), 1)
8888
# You may want to enable these flags to make setting breakpoints easier.
8989
CFLAGS += -fno-inline -fno-ipa-sra
9090
else
91+
CFLAGS += -ggdb
9192
#CFLAGS += -flto -flto-partition=none
9293
endif
9394

ports/mimxrt10xx/boards/feather_m7_1011/board.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,26 @@
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+
38+
// FLEX flash
39+
common_hal_never_reset_pin(&pin_GPIO_SD_12);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_11);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_10);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_09);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_08);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_07);
45+
common_hal_never_reset_pin(&pin_GPIO_SD_06);
46+
47+
// USB Pins
48+
common_hal_never_reset_pin(&pin_GPIO_12);
49+
common_hal_never_reset_pin(&pin_GPIO_13);
3250
}
3351

3452
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/feather_mimxrt1011/board.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,26 @@
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+
38+
// FLEX flash
39+
common_hal_never_reset_pin(&pin_GPIO_SD_12);
40+
common_hal_never_reset_pin(&pin_GPIO_SD_11);
41+
common_hal_never_reset_pin(&pin_GPIO_SD_10);
42+
common_hal_never_reset_pin(&pin_GPIO_SD_09);
43+
common_hal_never_reset_pin(&pin_GPIO_SD_08);
44+
common_hal_never_reset_pin(&pin_GPIO_SD_07);
45+
common_hal_never_reset_pin(&pin_GPIO_SD_06);
46+
47+
// USB Pins
48+
common_hal_never_reset_pin(&pin_GPIO_12);
49+
common_hal_never_reset_pin(&pin_GPIO_13);
3250
}
3351

3452
bool board_requests_safe_mode(void) {

ports/mimxrt10xx/boards/feather_mimxrt1062/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/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+
never_reset_pin_number(self->pin->port, self->pin->number);
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)