Environment: SDK v3.1.1 with a custom board based on the nRF52840.
I wrote a test application that I've been using to verify the hardware on a custom nRF52840 board. I have a DTS overlay and code in place to test the interfaces, GPIO's, etc. that we'll be using on the board. The idea was to use this known-working test app as the basis for a minimal app to which MCUboot and application-level DFU would be added. (There's no need for the Serial Recovery feature in this effort, only application-based dual-slot DFU with a non-UART transport - the app guys will implement that later.) So I left the test app's DTS overlay in place along with all the needed interfaces enabled in prj.conf and just pared down the code to print a "Hello World" to the Console UART. That worked fine on the board when built as a standalone app. I then attempted to follow the DevAcademy Intermediate Lesson 9 Exercise 1 to simply enable MCUboot. Step 1, add a sysbuild.conf:
# Enable MCUboot: SB_CONFIG_BOOTLOADER_MCUBOOT=y # DFU from the application requires two slots: SB_CONFIG_MCUBOOT_MODE_SINGLE_APP=n
Step 2, add a sysbuild/mcuboot.conf:
# Disable Serial Recovery: CONFIG_MCUBOOT_SERIAL=n # Enable UART console for MCUboot: CONFIG_UART_CONSOLE=y CONFIG_SERIAL=y # Enable MCUboot logging: CONFIG_LOG=y CONFIG_MCUBOOT_LOG_LEVEL_INF=y
Just build and run, right? Nope - there's no output on the Console UART as shown in Lesson 9 Exercise 1's startup banners. Now I'm wondering if there's something in the app's prj.conf that's interfering with MCUboot? (Remember the app worked just fine as a standalone image wi/no MCUboot.) Here's the app's prj.conf:
# # This is required because the nRF52840 appears to default to requiring an external low-speed # clock to get going. These settings tell it to use it's internal RC instead (which *should* # be the default!) # CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n CONFIG_GPIO=y CONFIG_SERIAL=y CONFIG_I2C=y CONFIG_SPI=y CONFIG_SPI_NOR=n # TODO FIXME disabled to get past some "compatible" problem with the SPI1 DTS overlay. CONFIG_PWM=y CONFIG_ADC=y # Enable USB HID device support for board test purposes CONFIG_USB_DEVICE_STACK=y CONFIG_USB_DEVICE_HID=y CONFIG_USB_DEVICE_PRODUCT="Zephyr HID mouse sample" CONFIG_USB_DEVICE_PID=0x0007 CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n # Enable mcumgr DFU in the app: # Enable MCUMGR CONFIG_MCUMGR=y # Enable MCUMGR management for both OS and Images CONFIG_MCUMGR_GRP_OS=y CONFIG_MCUMGR_GRP_IMG=y # Configure MCUMGR transport via UART (disable - image transport will be added later) CONFIG_MCUMGR_TRANSPORT_UART=n # Dependencies # Configure dependencies for CONFIG_MCUMGR CONFIG_NET_BUF=y CONFIG_ZCBOR=y CONFIG_CRC=y # Configure dependencies for CONFIG_MCUMGR_GRP_IMG CONFIG_FLASH=y CONFIG_IMG_MANAGER=y # Configure dependencies for CONFIG_IMG_MANAGER CONFIG_STREAM_FLASH=y CONFIG_FLASH_MAP=y # Configure dependencies for CONFIG_MCUMGR_TRANSPORT_UART CONFIG_BASE64=n
Nothing I've tried produces either the MCUboot or the application startup banners shown in Lesson 9 Exercise 1. I can only guess that I've misconfigured something but I can't imagine what. I didn't include the DTS overlay in this query but can certainly add it if it would be helpful.
Thanks very much,
Dave