Hi,
I'm trying to use same UART channel on both project-specific purpose and MCUmgr DFU. However, when I enable the option CONFIG_MCUMGR_TRANSPORT_UART, the code reset's at specific thread initialization. This thread handles the project-specific uart handling. Here are the some keypoints about the issue:
- Without CONFIG_MCUMGR_TRANSPORT_UART, all threads being created successfully
- There is another thread creation right before the Uart Thread, which is being created with no problem.
- When the problem occurs, there is no visible error logs, system just reboots.
Here are the logs:
*** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
*** Using Zephyr OS v4.1.99-1612683d4010 ***
[00:00:00.002,008] <inf> app: RMIRA MAIN DEVICE with NRF54L - MAIN APP STARTED
[00:00:00.002,195] <inf> app: peripheral_init return: 0, crypto_init return: 0
Thread analyze:
Peripheral : STACK: unused 1816 usage 232 / 2048 (11 %); CPU: 0 %
: Total CPU cycles used: 24
thread_analyzer : STACK: unused 560 usage 464 / 1024 (45 %); CPU: 1 %
: Total CPU cycles used: 235
mcumgr smp : STACK: unused 1752 usage 296 / 2048 (14 %); CPU: 0 %
: Total CPU cycles used: 22
BT LW WQ : STACK: unused 1808 usage 296 / 2104 (14 %); CPU: 0 %
: Total CPU cycles used: 20
BT GATT DM WQ : STACK: unused 1008 usage 296 / 1304 (22 %); CPU: 0 %
: Total CPU cycles used: 20
sysworkq : STACK: unused 1752 usage 296 / 2048 (14 %); CPU: 0 %
: Total CPU cycles used: 15
MPSL Work : STACK: unused 728 usage 296 / 1024 (28 %); CPU: 0 %
: Total CPU cycles used: 17
logging : STACK: unused 7592 usage 600 / 8192 (7 %); CPU: 86 %
: Total CPU cycles used: 20023
idle : STACK: unused 272 usage 48 / 320 (15 %); CPU: 0 %
: Total CPU cycles used: 0
main : STACK: unused 7856 usage 336 / 8192 (4 %); CPU: 6 %
: Total CPU cycles used: 1558
ISR0 : STACK: unused 1624 usage 424 / 2048 (20 %)
*** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
*** Using Zephyr OS v4.1.99-1612683d4010 ***
[00:00:00.002,008] <inf> app: RMIRA MAIN DEVICE with NRF54L - MAIN APP STARTED
[00:00:00.002,195] <inf> app: peripheral_init return: 0, crypto_init return: 0
Thread analyze:
Peripheral : STACK: unused 1816 usage 232 / 2048 (11 %); CPU: 0 %
: Total CPU cycles used: 25
thread_analyzer : STACK: unused 560 usage 464 / 1024 (45 %); CPU: 1 %
: Total CPU cycles used: 235
mcumgr smp : STACK: unused 1752 usage 296 / 2048 (14 %); CPU: 0 %
: Total CPU cycles used: 22
BT LW WQ : STACK: unused 1808 usage 296 / 2104 (14 %); CPU: 0 %
: Total CPU cycles used: 20
BT GATT DM WQ : STACK: unused 1008 usage 296 / 1304 (22 %); CPU: 0 %
: Total CPU cycles used: 19
sysworkq : STACK: unused 1752 usage 296 / 2048 (14 %); CPU: 0 %
: Total CPU cycles used: 15
MPSL Work : STACK: unused 728 usage 296 / 1024 (28 %); CPU: 0 %
: Total CPU cycles used: 17
logging : STACK: unused 7592 usage 600 / 8192 (7 %); CPU: 86 %
: Total CPU cycles used: 20021
idle : STACK: unused 272 usage 48 / 320 (15 %); CPU: 0 %
: Total CPU cycles used: 0
main : STACK: unused 7856 usage 336 / 8192 (4 %); CPU: 6 %
: Total CPU cycles used: 1560
ISR0 : STACK: unused 1624 usage 424 / 2048 (20 %)
*** Booting nRF Connect SDK v3.1.0-6c6e5b32496e ***
*** Using Zephyr OS v4.1.99-1612683d4010 ***
[00:00:00.002,008] <inf> app: RMIRA MAIN DEVICE with NRF54L - MAIN APP STARTED
[00:00:00.002,196] <inf> app: peripheral_init return: 0, crypto_init return: 0
Thread analyze:
Peripheral : STACK: unused 1816 usage 232 / 2048 (11 %); CPU: 0 %
: Total CPU cycles used: 25
thread_analyzer : STACK: unused 560 usage 464 / 1024 (45 %); CPU: 1 %
: Total CPU cycles used: 235
mcumgr smp : STACK: unused 1752 usage 296 / 2048 (14 %); CPU: 0 %
: Total CPU cycles used: 22
BT LW WQ : STACK: unused 1808 usage 296 / 2104 (14 %); CPU: 0 %
: Total CPU cycles used: 20
BT GATT DM WQ : STACK: unused 1008 usage 296 / 1304 (22 %); CPU: 0 %
: Total CPU cycles used: 20
sysworkq : STACK: unused 1752 usage 296 / 2048 (14 %); CPU: 0 %
: Total CPU cycles used: 16
MPSL Work : STACK: unused 728 usage 296 / 1024 (28 %); CPU: 0 %
: Total CPU cycles used: 17
logging : STACK: unused 7592 usage 600 / 8192 (7 %); CPU: 86 %
: Total CPU cycles used: 20020
idle : STACK: unused 272 usage 48 / 320 (15 %); CPU: 0 %
: Total CPU cycles used: 0
main : STACK: unused 7856 usage 336 / 8192 (4 %); CPU: 6 %
: Total CPU cycles used: 1559
ISR0 : STACK: unused 1624 usage 424 / 2048 (20 %)
void uart_thread_create(void *p1, void *p2, void *p3)
{
k_tid_t tid = k_thread_create(&uart_thread_data,
Uart_Thread_Stack,
UART_THREAD_STACK_SIZE,
uart_thread,
NULL,
NULL,
NULL,
UART_THREAD_PRIORITY,
0,
K_NO_WAIT);
LOG_INF("Uart Thread created");
k_thread_name_set(tid, "uart");
uart_msgq.command = UART_INIT;
k_msgq_put(&uart_thread_msgq, &uart_msgq, K_NO_WAIT);
}