nRF9151 CONFIG_UART_ASYNC_API

Hi!

I am using nRF9151-DK, enabling UART1 and using CONFIG_UART_ASYNC_API.

The build is successful, but the problem every time i connect a flashed kit with this binaries into nrf Programmer software.

I get notification of "Application core is protected".

I have isolated all the included configurations and found out that CONFIG_UART_ASYNC_API is causing this.

Am i missing some configuration? How to overcome this issue?

nRF Programmer

UART-related config:

# Enable UART1 Async
CONFIG_SERIAL=y
CONFIG_UART_ASYNC_API=y
CONFIG_UART_1_ASYNC=y
CONFIG_UART_1_INTERRUPT_DRIVEN=n

Devicetree:

&uart1 {
    status = "okay";
    current-speed = <115200>;
    pinctrl-0 = <&uart1_default>;
    pinctrl-1 = <&uart1_sleep>;
    pinctrl-names = "default", "sleep";
};

Best regards,
Abdu

Parents
  • Hello,

    we are facing the same issue. For us, the suggested workaround is not double since we need it in production as well and power consumption is a strict limitation.

    Besides that, I do not understand why this issue reported in the errata manifests only when CONFIG_UART_ASYNC_API is set.
    For example, let's say that i do something like this in the main thread:

    int main(void) {
        int i = 0;
        while (1) {
            k_sleep(K_SECONDS(3));
            printk("Still alive! (%d)\n", i++);
        }
        return 0;
    }
    

    Now, when the execution hits k_sleep, Zephyr's idle thread should run and the WFI instruction should be invoked, as there is nothing else to do. That alone shall trigger the Approtect bug. However, this doesn't happen and while the CONFIG_UART_ASYNC_API is not set, everything works correctly.

    Can you somehow explain this behaviour?

Reply
  • Hello,

    we are facing the same issue. For us, the suggested workaround is not double since we need it in production as well and power consumption is a strict limitation.

    Besides that, I do not understand why this issue reported in the errata manifests only when CONFIG_UART_ASYNC_API is set.
    For example, let's say that i do something like this in the main thread:

    int main(void) {
        int i = 0;
        while (1) {
            k_sleep(K_SECONDS(3));
            printk("Still alive! (%d)\n", i++);
        }
        return 0;
    }
    

    Now, when the execution hits k_sleep, Zephyr's idle thread should run and the WFI instruction should be invoked, as there is nothing else to do. That alone shall trigger the Approtect bug. However, this doesn't happen and while the CONFIG_UART_ASYNC_API is not set, everything works correctly.

    Can you somehow explain this behaviour?

Children
Related