Skip to content

Commit 514063c

Browse files
authored
Merge pull request #11 from arduino/nicla_vision
Add support for Nicla Vision
2 parents e029207 + f3c3720 commit 514063c

11 files changed

+257
-121
lines changed

README.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ MCUboot bootloader porting for Arduino [Mbed OS](https://os.mbed.com/docs/mbed-o
77
The following boards are supported:
88
* [Portenta H7](https://store.arduino.cc/products/portenta-h7)
99
* [Portenta H7 Lite](https://store.arduino.cc/products/portenta-h7-lite)
10-
* [Portenta H7 Lite Connected]((https://store.arduino.cc/products/portenta-h7-lite))
10+
* [Portenta H7 Lite Connected](https://store.arduino.cc/products/portenta-h7-lite)
11+
* [Nicla Vision](https://store.arduino.cc/products/nicla-vision)
1112

1213
## :grey_question: What
1314
MCUboot provides secure boot for 32-bit microcontrollers. For a detailed description on what MCUboot does and how it works please read the [official documentaion](https://docs.mcuboot.com/).
@@ -112,7 +113,7 @@ The following command will setup the mbed environment and clone the needed repos
112113
mbed config root . && mbed deploy
113114
mbed compile -m PORTENTA_H7_M7 -t GCC_ARM --profile=release --profile mbed-os/tools/profiles/extensions/lto.json
114115
```
115-
Additional flags are needed for [Lite](generate_rel.sh#L24) and [Lite Connected](generate_rel.sh#L35) boards.
116+
Additional flags are needed for [Lite](generate_rel.sh#L24), [Lite Connected](generate_rel.sh#L35) and [Nicla Vision](generate_rel.sh#L46) boards.
116117

117118
### Debug
118119

@@ -121,7 +122,7 @@ Additional flags are needed for [Lite](generate_rel.sh#L24) and [Lite Connected]
121122
- MCUboot idle: The board green LED will fade-in fade-out
122123

123124
2. Serial
124-
- MCUboot debug prints are disabled by default. They can be enabled putting `BT_SEL` (`PI8`) pin `HIGH` or calling `MCUboot::bootDebug(1);` in your Sketch.
125+
- MCUboot debug prints are disabled by default. They can be enabled putting `BT_SEL` (`PI8`) pin `HIGH` if available or calling `MCUboot::bootDebug(1);` in your Sketch.
125126

126127
## :mag_right: Other resources
127128

app/board.h

+140-68
Original file line numberDiff line numberDiff line change
@@ -63,76 +63,148 @@
6363
#define BOARD_EXTCLOCK 25
6464
#endif
6565

66-
#define BOARD_GREEN_LED PK_6
67-
#define BOARD_RED_LED PK_5
68-
#define BOARD_BLUE_LED PK_7
66+
#if BOARD_HAS_VIDEO
67+
#define BOARD_VIDEO_ENABLE PJ_2
68+
#define BOARD_VIDEO_RESET PJ_3
69+
#endif
6970

70-
#define BOARD_BOOT_SEL PI_8
71-
#define BOARD_USB_RESET PJ_4
71+
#if defined TARGET_PORTENTA_H7_M7
72+
#define BOARD_GREEN_LED PK_6
73+
#define BOARD_RED_LED PK_5
74+
#define BOARD_BLUE_LED PK_7
75+
76+
#define BOARD_USB_RESET PJ_4
77+
#define BOARD_BOOT_SEL PI_8
78+
79+
#define BOARD_I2C_SCL PB_6
80+
#define BOARD_I2C_SDA PB_7
81+
82+
#define BOARD_USBD_VID 0x2341
83+
#define BOARD_USBD_PID 0x035B
84+
85+
#define BOARD_USBD_STRING "Portenta H7 MCUboot"
86+
87+
#define BOARD_QSPI_SO0 PD_11
88+
#define BOARD_QSPI_SO1 PD_12
89+
#define BOARD_QSPI_SO2 PF_7
90+
#define BOARD_QSPI_SO3 PD_13
91+
#define BOARD_QSPI_SCK PF_10
92+
#define BOARD_QSPI_CS PG_6
93+
94+
#define BOARD_USB_OTG_FS_DM_DP_PIN (GPIO_PIN_11 | GPIO_PIN_12)
95+
#define BOARD_USB_OTG_FS_DM_DP_MODE (GPIO_MODE_AF_PP)
96+
#define BOARD_USB_OTG_FS_DM_DP_PULL (GPIO_NOPULL)
97+
#define BOARD_USB_OTG_FS_DM_DP_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
98+
#define BOARD_USB_OTG_FS_DM_DP_ALTERNATE (GPIO_AF10_OTG1_FS)
99+
#define BOARD_USB_OTG_FS_DM_DP_GPIO (GPIOA)
100+
101+
#define BOARD_USB_OTG_HS_CLK_PIN (GPIO_PIN_5)
102+
#define BOARD_USB_OTG_HS_CLK_MODE (GPIO_MODE_AF_PP)
103+
#define BOARD_USB_OTG_HS_CLK_PULL (GPIO_NOPULL)
104+
#define BOARD_USB_OTG_HS_CLK_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
105+
#define BOARD_USB_OTG_HS_CLK_ALTERNATE (GPIO_AF10_OTG2_HS)
106+
#define BOARD_USB_OTG_HS_CLK_GPIO (GPIOA)
107+
108+
#define BOARD_USB_OTG_HS_D0_PIN (GPIO_PIN_3)
109+
#define BOARD_USB_OTG_HS_D0_MODE (GPIO_MODE_AF_PP)
110+
#define BOARD_USB_OTG_HS_D0_PULL (GPIO_NOPULL)
111+
#define BOARD_USB_OTG_HS_D0_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
112+
#define BOARD_USB_OTG_HS_D0_ALTERNATE (GPIO_AF10_OTG2_HS)
113+
#define BOARD_USB_OTG_HS_D0_GPIO (GPIOA)
114+
115+
#define BOARD_USB_OTG_HS_D1_D7_PIN (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_5 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13)
116+
#define BOARD_USB_OTG_HS_D1_D7_MODE (GPIO_MODE_AF_PP)
117+
#define BOARD_USB_OTG_HS_D1_D7_PULL (GPIO_NOPULL)
118+
#define BOARD_USB_OTG_HS_D1_D7_ALTERNATE (GPIO_AF10_OTG2_HS)
119+
#define BOARD_USB_OTG_HS_D1_D7_GPIO (GPIOB)
120+
121+
#define BOARD_USB_OTG_HS_STP_PIN (GPIO_PIN_0)
122+
#define BOARD_USB_OTG_HS_STP_MODE (GPIO_MODE_AF_PP)
123+
#define BOARD_USB_OTG_HS_STP_PULL (GPIO_NOPULL)
124+
#define BOARD_USB_OTG_HS_STP_ALTERNATE (GPIO_AF10_OTG2_HS)
125+
#define BOARD_USB_OTG_HS_STP_GPIO (GPIOC)
126+
127+
#define BOARD_USB_OTG_HS_NXT_PIN (GPIO_PIN_4)
128+
#define BOARD_USB_OTG_HS_NXT_MODE (GPIO_MODE_AF_PP)
129+
#define BOARD_USB_OTG_HS_NXT_PULL (GPIO_NOPULL)
130+
#define BOARD_USB_OTG_HS_NXT_ALTERNATE (GPIO_AF10_OTG2_HS)
131+
#define BOARD_USB_OTG_HS_NXT_GPIO (GPIOH)
132+
133+
#define BOARD_USB_OTG_HS_DIR_PIN (GPIO_PIN_11)
134+
#define BOARD_USB_OTG_HS_DIR_MODE (GPIO_MODE_AF_PP)
135+
#define BOARD_USB_OTG_HS_DIR_PULL (GPIO_NOPULL)
136+
#define BOARD_USB_OTG_HS_DIR_ALTERNATE (GPIO_AF10_OTG2_HS)
137+
#define BOARD_USB_OTG_HS_DIR_GPIO (GPIOI)
138+
139+
#elif defined TARGET_NICLA_VISION
140+
#define BOARD_GREEN_LED PC_13
141+
#define BOARD_RED_LED PE_3
142+
#define BOARD_BLUE_LED PF_4
143+
144+
#define BOARD_USB_RESET PA_2
145+
146+
#define BOARD_I2C_SCL PF_1
147+
#define BOARD_I2C_SDA PF_0
148+
149+
#define BOARD_USBD_VID 0x2341
150+
#define BOARD_USBD_PID 0x035F
151+
152+
#define BOARD_USBD_STRING "Nicla Vision MCUboot"
153+
154+
#define BOARD_QSPI_SO0 PD_11
155+
#define BOARD_QSPI_SO1 PF_9
156+
#define BOARD_QSPI_SO2 PE_2
157+
#define BOARD_QSPI_SO3 PD_13
158+
#define BOARD_QSPI_SCK PF_10
159+
#define BOARD_QSPI_CS PG_6
160+
161+
#define BOARD_USB_OTG_FS_DM_DP_PIN (GPIO_PIN_11 | GPIO_PIN_12)
162+
#define BOARD_USB_OTG_FS_DM_DP_MODE (GPIO_MODE_AF_PP)
163+
#define BOARD_USB_OTG_FS_DM_DP_PULL (GPIO_PULLUP)
164+
#define BOARD_USB_OTG_FS_DM_DP_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
165+
#define BOARD_USB_OTG_FS_DM_DP_ALTERNATE (GPIO_AF10_OTG1_FS)
166+
#define BOARD_USB_OTG_FS_DM_DP_GPIO (GPIOA)
167+
168+
#define BOARD_USB_OTG_HS_CLK_PIN (GPIO_PIN_5)
169+
#define BOARD_USB_OTG_HS_CLK_MODE (GPIO_MODE_AF_PP)
170+
#define BOARD_USB_OTG_HS_CLK_PULL (GPIO_NOPULL)
171+
#define BOARD_USB_OTG_HS_CLK_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
172+
#define BOARD_USB_OTG_HS_CLK_ALTERNATE (GPIO_AF10_OTG2_HS)
173+
#define BOARD_USB_OTG_HS_CLK_GPIO (GPIOA)
174+
175+
#define BOARD_USB_OTG_HS_D0_PIN (GPIO_PIN_3)
176+
#define BOARD_USB_OTG_HS_D0_MODE (GPIO_MODE_AF_PP)
177+
#define BOARD_USB_OTG_HS_D0_PULL (GPIO_NOPULL)
178+
#define BOARD_USB_OTG_HS_D0_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
179+
#define BOARD_USB_OTG_HS_D0_ALTERNATE (GPIO_AF10_OTG2_HS)
180+
#define BOARD_USB_OTG_HS_D0_GPIO (GPIOA)
181+
182+
#define BOARD_USB_OTG_HS_D1_D7_PIN (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_5 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13)
183+
#define BOARD_USB_OTG_HS_D1_D7_MODE (GPIO_MODE_AF_PP)
184+
#define BOARD_USB_OTG_HS_D1_D7_PULL (GPIO_NOPULL)
185+
#define BOARD_USB_OTG_HS_D1_D7_ALTERNATE (GPIO_AF10_OTG2_HS)
186+
#define BOARD_USB_OTG_HS_D1_D7_GPIO (GPIOB)
187+
188+
#define BOARD_USB_OTG_HS_STP_PIN (GPIO_PIN_0)
189+
#define BOARD_USB_OTG_HS_STP_MODE (GPIO_MODE_AF_PP)
190+
#define BOARD_USB_OTG_HS_STP_PULL (GPIO_NOPULL)
191+
#define BOARD_USB_OTG_HS_STP_ALTERNATE (GPIO_AF10_OTG2_HS)
192+
#define BOARD_USB_OTG_HS_STP_GPIO (GPIOC)
193+
194+
#define BOARD_USB_OTG_HS_NXT_PIN (GPIO_PIN_3)
195+
#define BOARD_USB_OTG_HS_NXT_MODE (GPIO_MODE_AF_PP)
196+
#define BOARD_USB_OTG_HS_NXT_PULL (GPIO_NOPULL)
197+
#define BOARD_USB_OTG_HS_NXT_ALTERNATE (GPIO_AF10_OTG2_HS)
198+
#define BOARD_USB_OTG_HS_NXT_GPIO (GPIOC)
199+
200+
#define BOARD_USB_OTG_HS_DIR_PIN (GPIO_PIN_2)
201+
#define BOARD_USB_OTG_HS_DIR_MODE (GPIO_MODE_AF_PP)
202+
#define BOARD_USB_OTG_HS_DIR_PULL (GPIO_NOPULL)
203+
#define BOARD_USB_OTG_HS_DIR_ALTERNATE (GPIO_AF10_OTG2_HS)
204+
#define BOARD_USB_OTG_HS_DIR_GPIO (GPIOC)
72205

73-
#ifdef BOARD_HAS_VIDEO
74-
#define BOARD_VIDEO_ENABLE PJ_2
75-
#define BOARD_VIDEO_RESET PJ_3
76-
#endif
206+
#else
77207

78-
#define BOARD_I2C_SCL PB_6
79-
#define BOARD_I2C_SDA PB_7
80-
81-
#define BOARD_USBD_VID 0x2341
82-
#define BOARD_USBD_PID 0x035B
83-
84-
#define BOARD_USBD_STRING "Portenta H7 MCUboot"
85-
86-
#define BOARD_QSPI_SO0 PD_11
87-
#define BOARD_QSPI_SO1 PD_12
88-
#define BOARD_QSPI_SO2 PF_7
89-
#define BOARD_QSPI_SO3 PD_13
90-
#define BOARD_QSPI_SCK PF_10
91-
#define BOARD_QSPI_CS PG_6
92-
93-
#define BOARD_USB_OTG_FS_DM_DP_PIN (GPIO_PIN_11 | GPIO_PIN_12)
94-
#define BOARD_USB_OTG_FS_DM_DP_MODE (GPIO_MODE_AF_PP)
95-
#define BOARD_USB_OTG_FS_DM_DP_PULL (GPIO_NOPULL)
96-
#define BOARD_USB_OTG_FS_DM_DP_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
97-
#define BOARD_USB_OTG_FS_DM_DP_ALTERNATE (GPIO_AF10_OTG1_FS)
98-
#define BOARD_USB_OTG_FS_DM_DP_GPIO (GPIOA)
99-
100-
#define BOARD_USB_OTG_HS_CLK_PIN (GPIO_PIN_5)
101-
#define BOARD_USB_OTG_HS_CLK_MODE (GPIO_MODE_AF_PP)
102-
#define BOARD_USB_OTG_HS_CLK_PULL (GPIO_NOPULL)
103-
#define BOARD_USB_OTG_HS_CLK_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
104-
#define BOARD_USB_OTG_HS_CLK_ALTERNATE (GPIO_AF10_OTG2_HS)
105-
#define BOARD_USB_OTG_HS_CLK_GPIO (GPIOA)
106-
107-
#define BOARD_USB_OTG_HS_D0_PIN (GPIO_PIN_3)
108-
#define BOARD_USB_OTG_HS_D0_MODE (GPIO_MODE_AF_PP)
109-
#define BOARD_USB_OTG_HS_D0_PULL (GPIO_NOPULL)
110-
#define BOARD_USB_OTG_HS_D0_SPEED (GPIO_SPEED_FREQ_VERY_HIGH)
111-
#define BOARD_USB_OTG_HS_D0_ALTERNATE (GPIO_AF10_OTG2_HS)
112-
#define BOARD_USB_OTG_HS_D0_GPIO (GPIOA)
113-
114-
#define BOARD_USB_OTG_HS_D1_D7_PIN (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_5 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13)
115-
#define BOARD_USB_OTG_HS_D1_D7_MODE (GPIO_MODE_AF_PP)
116-
#define BOARD_USB_OTG_HS_D1_D7_PULL (GPIO_NOPULL)
117-
#define BOARD_USB_OTG_HS_D1_D7_ALTERNATE (GPIO_AF10_OTG2_HS)
118-
#define BOARD_USB_OTG_HS_D1_D7_GPIO (GPIOB)
119-
120-
#define BOARD_USB_OTG_HS_STP_PIN (GPIO_PIN_0)
121-
#define BOARD_USB_OTG_HS_STP_MODE (GPIO_MODE_AF_PP)
122-
#define BOARD_USB_OTG_HS_STP_PULL (GPIO_NOPULL)
123-
#define BOARD_USB_OTG_HS_STP_ALTERNATE (GPIO_AF10_OTG2_HS)
124-
#define BOARD_USB_OTG_HS_STP_GPIO (GPIOC)
125-
126-
#define BOARD_USB_OTG_HS_NXT_PIN (GPIO_PIN_4)
127-
#define BOARD_USB_OTG_HS_NXT_MODE (GPIO_MODE_AF_PP)
128-
#define BOARD_USB_OTG_HS_NXT_PULL (GPIO_NOPULL)
129-
#define BOARD_USB_OTG_HS_NXT_ALTERNATE (GPIO_AF10_OTG2_HS)
130-
#define BOARD_USB_OTG_HS_NXT_GPIO (GPIOH)
131-
132-
#define BOARD_USB_OTG_HS_DIR_PIN (GPIO_PIN_11)
133-
#define BOARD_USB_OTG_HS_DIR_MODE (GPIO_MODE_AF_PP)
134-
#define BOARD_USB_OTG_HS_DIR_PULL (GPIO_NOPULL)
135-
#define BOARD_USB_OTG_HS_DIR_ALTERNATE (GPIO_AF10_OTG2_HS)
136-
#define BOARD_USB_OTG_HS_DIR_GPIO (GPIOI)
208+
#endif
137209

138210
#endif /* __BOARD_H */

app/default_bd.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ static void initBlockTable(void) {
148148
BOOT_LOG_ERR("SDMMC");
149149
#endif
150150
} else if (block_info[SECONDARY_BLOCK_DEVICE].raw_type & QSPI_FLASH_FLAG) {
151-
block_info[SECONDARY_BLOCK_DEVICE].raw_bd = new QSPIFBlockDevice(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000);
151+
block_info[SECONDARY_BLOCK_DEVICE].raw_bd = mbed::BlockDevice::get_default_instance();
152152
block_info[SCRATCH_BLOCK_DEVICE].raw_bd = block_info[SECONDARY_BLOCK_DEVICE].raw_bd;
153153
} else {
154154
BOOT_LOG_ERR("Config");
@@ -236,7 +236,7 @@ static void initBlockTable(void) {
236236
BOOT_LOG_ERR("SDMMC");
237237
#endif
238238
} else if (block_info[SECONDARY_BLOCK_DEVICE].raw_type & QSPI_FLASH_FLAG) {
239-
block_info[SECONDARY_BLOCK_DEVICE].raw_bd = new QSPIFBlockDevice(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000);
239+
block_info[SECONDARY_BLOCK_DEVICE].raw_bd = mbed::BlockDevice::get_default_instance();
240240
} else {
241241
BOOT_LOG_ERR("U config");
242242
}
@@ -250,7 +250,7 @@ static void initBlockTable(void) {
250250
BOOT_LOG_ERR("SDMMC");
251251
#endif
252252
} else if (block_info[SCRATCH_BLOCK_DEVICE].raw_type & QSPI_FLASH_FLAG) {
253-
block_info[SCRATCH_BLOCK_DEVICE].raw_bd = new QSPIFBlockDevice(PD_11, PD_12, PF_7, PD_13, PF_10, PG_6, QSPIF_POLARITY_MODE_1, 40000000);
253+
block_info[SCRATCH_BLOCK_DEVICE].raw_bd = mbed::BlockDevice::get_default_instance();
254254
} else {
255255
BOOT_LOG_ERR("S config");
256256
}
@@ -395,11 +395,13 @@ mbed::BlockDevice* get_scratch_bd(void) {
395395
return nullptr;
396396
}
397397

398+
#if !defined(BOOTUTIL_LIBARY_BUILD)
398399
mbed::BlockDevice* BlockDevice::get_default_instance()
399400
{
400401
static QSPIFBlockDevice default_bd(BOARD_QSPI_SO0, BOARD_QSPI_SO1, BOARD_QSPI_SO2, BOARD_QSPI_SO3, BOARD_QSPI_SCK, BOARD_QSPI_CS, QSPIF_POLARITY_MODE_1, 40000000);
401402
return &default_bd;
402403
}
404+
#endif
403405

404406
FlashIAP flash;
405407

app/main.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ USBD_HandleTypeDef USBD_Device;
6666
DigitalOut red(BOARD_RED_LED, 1);
6767
DigitalOut green(BOARD_GREEN_LED, 1);
6868
DigitalOut blue(BOARD_BLUE_LED, 1);
69+
#if defined(TARGET_NICLA_VISION)
70+
bool boot_sel = false;
71+
#else
6972
DigitalIn boot_sel(BOARD_BOOT_SEL,PullDown);
73+
#endif
7074

7175
Ticker swap_ticker;
7276
bool debug_enabled = false;

app/power/power.cpp

+40-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "board.h"
2121
#include "mbed.h"
2222

23+
#if defined TARGET_PORTENTA_H7_M7
2324
static void portenta_power_init() {
2425
I2C i2c(BOARD_I2C_SDA, BOARD_I2C_SCL);
2526

@@ -85,8 +86,46 @@ static void portenta_power_init() {
8586
data[1]=0xF;
8687
i2c.write(8 << 1, data, sizeof(data));
8788
}
89+
#endif
8890

91+
#if defined TARGET_NICLA_VISION
92+
static void nicla_vision_power_init() {
93+
I2C i2c(BOARD_I2C_SDA, BOARD_I2C_SCL);
94+
95+
char data[2];
96+
97+
data[0]=0x9C;
98+
data[1]=(1 << 7);
99+
i2c.write(8 << 1, data, sizeof(data));
100+
101+
// Disable charger led
102+
data[0]=0x9E;
103+
data[1]=(1 << 5);
104+
i2c.write(8 << 1, data, sizeof(data));
105+
106+
HAL_Delay(10);
107+
108+
// SW3: set 2A as current limit
109+
// Helps keeping the rail up at wifi startup
110+
data[0]=0x42;
111+
data[1]=(2);
112+
i2c.write(8 << 1, data, sizeof(data));
113+
114+
HAL_Delay(10);
115+
116+
// Change VBUS INPUT CURRENT LIMIT to 1.5A
117+
data[0]=0x94;
118+
data[1]=(20 << 3);
119+
i2c.write(8 << 1, data, sizeof(data));
120+
}
121+
#endif
89122

90123
void power_init() {
124+
#if defined TARGET_PORTENTA_H7_M7
91125
portenta_power_init();
92-
}
126+
#elif defined TARGET_NICLA_VISION
127+
nicla_vision_power_init();
128+
#else
129+
130+
#endif
131+
}

app/power/power.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@
2121

2222
void power_init();
2323

24-
#endif //__POWER_H
24+
#endif //__POWER_H

app/sdcard/BSP.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ __weak void BSP_SD_ReadCpltCallback(void)
454454

455455
}
456456

457-
void SDMMC2_IRQHandler(void)
457+
__weak void SDMMC2_IRQHandler(void)
458458
{
459459
BSP_SD_IRQHandler();
460460
}

generate_lib.sh

-8
This file was deleted.

0 commit comments

Comments
 (0)