Hello,
I am working with a nRF5340 and need to use both CDC and mass storage on SD Card. I started my application based on the CDC example and it has worked fine.
Now I need to implement the SD Card. Using the mass storage example from zephyr, it has kind of worked. The file system is started OK and the card is detected and read. But when the USB is started, an Stack Overflow occurs.
Nevertheless, I merged the SD Card functions into my app. It has performed better, as the USB can start and the removable disk can be accessed in windows. But, in order to have it working, it is necessary to disable the CDC initialization, otherwise it will also genarate an Stack overflow. My questions are:
- Why does the CDC API utilizes a physical UART port? I found that the UARTE0 is being initialized when CDC is enabled and some of the chosen pins are the ones I use in my SPI interface with the SD Card.
- Wasn't the mass storage example supposed to work without problems in the nRF5340?
- What could be the cause for the Stack Overflow? I have incresed the reserved stack (CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE and CONFIG_MAIN_STACK_SIZE) up to 256kB and didn't had any improvements.
- Is there any known example on zephyr runnig both CDC and SD Card?
I have attached my overlay file and a log of the error.
My environment is:
Windows 11, VSCode and NCS v1.9.
Any help would be really appreciated.
Thanks in advance,
Eduardo Carletti
00> *** Booting Zephyr OS build v2.7.99-ncs1 *** 00> 00> [00:00:00.562,103] <inf> sdmmc_spi: Found a ~3781 MiB SDHC card. 00> [00:00:00.563,446] <inf> sdmmc_spi: Manufacturer ID=3 OEM='SD' Name='SS04G' Revision=0x80 Serial=0x2183f89f 00> [00:00:00.563,537] <inf> BATTERY: Setup AIN2 got 0 00> [00:00:00.563,537] <inf> BATTERY: Battery setup: 0 1 00> [00:00:36.035,095] <inf> bt_hci_core: HW Platform: Nordic Semiconductor (0x0002) 00> [00:00:36.035,125] <inf> bt_hci_core: HW Variant: nRF53x (0x0003) 00> [00:00:36.035,125] <inf> bt_hci_core: Firmware: Standard Bluetooth controller (0x00) Version 14.50663 Build 1008232294 00> [00:00:36.038,940] <inf> bt_hci_core: Identity: C1:89:0C:B2:C3:A8 (random) 00> [00:00:36.038,970] <inf> bt_hci_core: HCI: version 5.2 (0x0b) revision 0x22fe, manufacturer 0x0059 00> [00:00:36.038,970] <inf> bt_hci_core: LMP: version 5.2 (0x0b) subver 0x22fe 00> Set up button at GPIO_1 pin 1 00> 00> Set up button at GPIO_0 pin 24 00> 00> Set up button at GPIO_0 pin 25 00> 00> Set up button at GPIO_0 pin 5 00> 00> [00:00:36.107,177] <inf> sdmmc_spi: Found a ~3781 MiB SDHC card. 00> [00:00:36.108,551] <inf> sdmmc_spi: Manufacturer ID=3 OEM='SD' Name='SS04G' Revision=0x80 Serial=0x2183f89f 00> D 0 SYSTEM~1 00> 00> --- 3 messages dropped --- 00> D 0 FOLDER~1 00> 00> F 3015 MAIN.C 00> 00> F 5976390 MAPA_LPC.RAR 00> 00> End of files 00> 00> [00:00:36.733,673] <inf> main: Status 2 00> [00:00:36.736,755] <inf> usb_cdc_acm: Device suspended 00> [00:00:36.736,755] <inf> usb_cdc_acm: Device suspended 00> [00:00:36.736,785] <inf> main: Status 5 00> [00:00:36.888,610] <inf> usb_cdc_acm: Device resumed 00> [00:00:36.888,641] <inf> usb_cdc_acm: from suspend 00> [00:00:36.888,641] <inf> usb_cdc_acm: Device resumed 00> [00:00:36.888,641] <inf> usb_cdc_acm: from suspend 00> [00:00:36.888,641] <inf> main: Status 6 00> [00:00:36.888,702] <inf> main: Status 1 00> [00:00:36.990,661] <inf> main: Status 1 00> [00:00:37.076,843] <inf> usb_cdc_acm: Device configured 00> [00:00:37.076,873] <inf> usb_cdc_acm: Device configured 00> [00:00:37.076,904] <inf> main: Status 3 00> 00> [00:00:37.155,090] <err> os: ***** USAGE FAULT ***** 00> [00:00:37.155,090] <err> os: Stack overflow (context area not valid) 00> [00:00:37.155,090] <err> os: r0/a1: 0x00000000 r1/a2: 0x0012ad74 r2/a3: 0x0002d666 00> [00:00:37.155,120] <err> os: r3/a4: 0x81000000 r12/ip: 0x00000000 r14/lr: 0x00000000 00> [00:00:37.155,120] <err> os: xpsr: 0x00000000 00> [00:00:37.155,120] <err> os: Faulting instruction address (r15/pc): 0x00000000 00> [00:00:37.155,120] <err> os: >>> ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0 00> [00:00:37.155,151] <err> os: Current thread: 0x200017f8 (usb_mass) 00> [00:00:37.746,002] <err> fatal_error: Resetting system[0m 00> *** Booting Zephyr OS build v2.7.99-ncs1 ***