NCS USB CDC fault when CONFIG_NO_OPTIMIZATIONS=y

When using USB with CONFIG_NO_OPTIMIZATIONS=y I'm getting a usage fault and Zephyr gives the reason K_ERR_STACK_CHK_FAIL.  The fault looks like it occurs in the unnamed thread created near the bottom of usb_dc_nrfx.c.

If CONFIG_NO_OPTIMIZATIONS=n then I do not see the hard faults.

I previously reported this same issue and changing the stack size to 4096 seemed to resolve it then.  However, even if I increase the stack size to 8192 now I'm still seeing the fault.

CONFIG_NO_OPTIMIZATIONS=y
CONFIG_EXTRA_EXCEPTION_INFO=y
CONFIG_RESET_ON_FATAL_ERROR=n
CONFIG_MAIN_STACK_SIZE=8192
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192
CONFIG_USB=y
CONFIG_USB_DEVICE_PRODUCT="Itamar Loop CDC & MSD"
CONFIG_USB_CDC_ACM=y
CONFIG_USB_WORKQUEUE_STACK_SIZE=8192
CONFIG_USB_NRFX_WORK_QUEUE_STACK_SIZE=8192
 
Any ideas on what might be going on here?
Parents Reply Children
  • I added CONFIG_ISR_STACK_SIZE=8192 and it seems to be working again.  My complete prj.conf is now:
    CONFIG_NO_OPTIMIZATIONS=y
    CONFIG_EXTRA_EXCEPTION_INFO=y
    CONFIG_RESET_ON_FATAL_ERROR=n
    CONFIG_MAIN_STACK_SIZE=8192
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=8192
    CONFIG_IDLE_STACK_SIZE=8192
    CONFIG_ISR_STACK_SIZE=8192
    CONFIG_DEBUG_THREAD_INFO=y

    CONFIG_LOG=n
    CONFIG_CONSOLE=n
    CONFIG_UART_CONSOLE=n
    CONFIG_PRINTK=n

    CONFIG_SERIAL=y
    CONFIG_UART_ASYNC_API=y
    CONFIG_UART_0_INTERRUPT_DRIVEN=n
    CONFIG_UART_0_ASYNC=y
    CONFIG_UART_0_NRF_HW_ASYNC=y
    CONFIG_UART_0_NRF_HW_ASYNC_TIMER=0
    CONFIG_UART_1_INTERRUPT_DRIVEN=n
    CONFIG_UART_1_ASYNC=y
    CONFIG_UART_1_NRF_HW_ASYNC=y
    CONFIG_UART_1_NRF_HW_ASYNC_TIMER=1
    CONFIG_UART_3_INTERRUPT_DRIVEN=n
    CONFIG_UART_3_ASYNC=y
    CONFIG_UART_3_NRF_HW_ASYNC=y
    CONFIG_UART_3_NRF_HW_ASYNC_TIMER=2

    CONFIG_NEWLIB_LIBC=y

    CONFIG_NFCT_PINS_AS_GPIOS=y

    CONFIG_USB=y
    CONFIG_USB_DEVICE_PRODUCT="Itamar Loop CDC & MSD"
    CONFIG_USB_CDC_ACM=y
    CONFIG_USB_WORKQUEUE_STACK_SIZE=8192
    CONFIG_USB_NRFX_WORK_QUEUE_STACK_SIZE=8192
    CONFIG_USB_MASS_STORAGE=y
    CONFIG_MASS_STORAGE_STACK_SIZE=8192
    CONFIG_MASS_STORAGE_DISK_NAME="NAND"
    CONFIG_DISK_DRIVER_FLASH=y
    CONFIG_FILE_SYSTEM=y
    CONFIG_FAT_FILESYSTEM_ELM=y
    CONFIG_FLASH_MAP=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_DISK_FLASH_START=0x0
    CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
    CONFIG_DISK_FLASH_DEV_NAME="MT25QU512"
    CONFIG_DISK_VOLUME_SIZE=0x20000
    CONFIG_DISK_FLASH_MAX_RW_SIZE=4096
    CONFIG_DISK_FLASH_ERASE_ALIGNMENT=0x1000
    CONFIG_DISK_ERASE_BLOCK_SIZE=0x1000
    CONFIG_NORDIC_QSPI_NOR=y
    CONFIG_FLASH_JESD216_API=y
  • Nice, I'm happy you found a solution! Sorry for my slowness in this case.

Related