I’m working on a custom board based on the nRF54L15. I’m using MCUboot Serial Recovery over UART and I’m seeing a repeatable issue I can’t reconcile with the docs.
SDK/Tools: NCS v3.1.0
UART setup (bootloader Serial Recovery):
• Controller: UARTE21
• TX: P2.08
• RX: P2.07
Observed behavior:
When the device is in MCUboot Serial Recovery, the UART port does not respond to mcumgr commands unless I first open a SEGGER RTT Viewer session. Nothing is printed to RTT; it just needs the RTT connection to be opened.
What I’ve found so far:
From forum posts, I think enabling the TAD (Trace & Debug) domain might solve this, but I’m not sure how or whether it’s possible to do that inside the bootloader. I’ve enabled TAD in the application on another board and the port works fine there, but I haven’t figured out how to achieve the same in MCUboot.
Current overlay:
&{/} {
aliases {
mcuboot-button0 = &dfu_btn; /* hold low during reset to enter recovery */
mcuboot-led0 = &boot_led0; /* optional LED hooks */
};
chosen {
zephyr,console = &uart21; /* serial_adapter uses this device hint */
zephyr,shell-uart = &uart21; /* keep to avoid dangling refs in this tree */
zephyr,uart-mcumgr = &uart21; /* some NCS 3.1 paths check this explicitly */
zephyr,bt-mon-uart = &uart21;
zephyr,bt-c2h-uart = &uart21;
};
keys {
compatible = "gpio-keys";
dfu_btn: dfu_btn {
gpios = <&gpio1 3 (GPIO_ACTIVE_LOW)>;
label = "MCUBOOT_DFU_BTN";
};
};
leds: leds {
compatible = "gpio-leds";
boot_led0: led0 {
gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
label = "MCUBOOT_LED0";
};
};
};
/* UARTE21 pinmux */
&pinctrl {
uart21_default: uart21_default {
group1 {
psels = <NRF_PSEL(UART_TX, 2, 8)>, /* TXD = P2.08 */
<NRF_PSEL(UART_RX, 2, 7)>; /* RXD = P2.07 */
};
};
uart21_sleep: uart21_sleep {
group1 {
psels = <NRF_PSEL(UART_TX, 2, 8)>,
<NRF_PSEL(UART_RX, 2, 7)>;
low-power-enable;
};
};
};
&uart21 {
status = "okay";
current-speed = <115200>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart21_default>;
pinctrl-1 = <&uart21_sleep>;
};
&uicr {nfct-pins-as-gpios; };
&led2 {status = "disabled"; };
&lfxo {load-capacitors = "internal"; load-capacitance-femtofarad = <8000>; };
&hfxo {load-capacitors = "internal"; load-capacitance-femtofarad = <15000>; };
The ultimate goal of course is to be able to update the firmware using this uart with this hardware. I am also not sure if the problem solution will be enabling the TAD. this is at least what I currenty think
Thanks in advance