Project

General

Profile

Using WKUP_UART0 in Linux Space

Added by Holden Wozniak 3 days ago

Hi,

I am having some difficulty bringing up a serial port that utilizes WKUP_UART0 pins. From what I understand, it is typically reserved for DM logging and is unusuable in Linux until it is disabled. I have disabled the UART log for the ipc_rpmsg_echo_linux example is the MCU SDK, rebuilt it, and linked it in place of the old firmware in /lib/firmware.
Screenshot%20From%202026-03-25%2016-01-18.png

My configuration for wkup_uart in my board device tree is as follows:


aliases {
    serial3 = &main_uart1;
    serial0 = &wkup_uart0;
};

bt_uart0_pins_default: wkup-uart0-default-pins {
    pinctrl-single,pins = <
        AM62AX_MCU_IOPAD(0x002c, PIN_INPUT, 0) /* (C10) WKUP_UART0_CTSn */
        AM62AX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */
        AM62AX_MCU_IOPAD(0x0024, PIN_INPUT, 0) /* (C9) WKUP_UART0_RXD */
        AM62AX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (E9) WKUP_UART0_TXD */
    >;
};

&wkup_uart0 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&bt_uart0_pins_default>;
};

I have also attempted to block it from being configured as a serial port in U-Boot in hopes the it would not be claimed on boot before Linux is operable (below is the entry in k3-am62a7-mitysom-som.dtsi in the U-Boot project). I also removed its alias as serial0 for u-boot.

/* WKUP UART0 is used for DM firmware logs */
&wkup_uart0 {
    pinctrl-names = "default";
    pinctrl-0 = <&wkup_uart0_pins_default>;
    status = "disabled";
};

I'm a little stuck on what to do. I found a TI forum that says it is possible to interface to a wkup_uart0 using a /dev/ttySX file, and if still possible this seems like the easiest way to have it configured (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1166852/am625-use-wkup_uart0-as-bt-connect-port). If it is necessary to configure it in the MCU firmware and pipe it back to Linux it would be okay, I just am unsure about how to go about freeing it from the DM.

Any insight on this would be greatly appreciated.

Thanks,
Holden


Replies (3)

RE: Using WKUP_UART0 in Linux Space - Added by Jonathan Cormier 3 days ago

I just responded to your support email but will put my response here as well so others can benifit.

Holden Wozniak wrote:

Hi,

I am having some difficulty bringing up a serial port that utilizes WKUP_UART0 pins. From what I understand, it is typically reserved for DM logging and is unusuable in Linux until it is disabled. I have disabled the UART log for the ipc_rpmsg_echo_linux example is the MCU SDK, rebuilt it, and linked it in place of the old firmware in /lib/firmware.
Screenshot%20From%202026-03-25%2016-01-18.png

As you noted in your email, the DM firmware is baked into the tispl.bin u-boot file. Linux doesn't handle loading this processor core.

My configuration for wkup_uart in my board device tree is as follows:
[...]

These look reasonable to me

I have also attempted to block it from being configured as a serial port in U-Boot in hopes the it would not be claimed on boot before Linux is operable (below is the entry in k3-am62a7-mitysom-som.dtsi in the U-Boot project). I also removed its alias as serial0 for u-boot.
[...]

This is the u-boot device tree. It doesn't effect what the WKUP DM firmware is doing.

I'm a little stuck on what to do. I found a TI forum that says it is possible to interface to a wkup_uart0 using a /dev/ttySX file, and if still possible this seems like the easiest way to have it configured (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1166852/am625-use-wkup_uart0-as-bt-connect-port). If it is necessary to configure it in the MCU firmware and pipe it back to Linux it would be okay, I just am unsure about how to go about freeing it from the DM.

This e2e covers a lot of whats going on, although it is out of date and targeted for the AM62x. We do need to modify the DM fw to remove its use of the wkup_uart pins.

I've not done this before so lets see if we can walk through where to look.

In our u-boot 62ax-build.sh, we point u-boot to the following firmware:
TI_DM="ti-dm/am62axx/dm_edgeai_mcu1_0_release_strip.out"

For SDK 11, we download this from "git clone clone https://git.ti.com/git/processor-firmware/ti-linux-firmware.git --branch=11.01.07", which is a prebuilt binary provided by TI. So not very helpful.

So, let's look at the Yocto build,

yocto_scarthgap/oe-layersetup/sources$ ag dm_edgeai_mcu1_0
meta-ti/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb
41:DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"

meta-ti/meta-ti-bsp/recipes-bsp/u-boot/u-boot-ti.inc
52:DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"

meta-mitysom/recipes-bsp/u-boot/u-boot-cl-ti.inc
53:DM_FIRMWARE:am62axx = "dm_edgeai_mcu1_0_release_strip.out"

Unfortunately meta-ti/meta-ti-bsp/recipes-bsp/ti-dm-fw/ti-dm-fw.bb also pulls the firmware from the same ti-linux-firmware.git git repo... I was really hoping they'd build it from source but alas.

There is a guide here on how to disable the WKUP_UART for the AM62x
https://software-dl.ti.com/mcu-plus-sdk/esd/AM62X/latest/exports/docs/api_guide_am62x/DEVELOP_AND_DEBUG_DMR5.html#autotoc_md358

The AM62A version of the MCU SDK, is missing this. https://software-dl.ti.com/mcu-plus-sdk/esd/AM62AX/11_01_00_16/exports/docs/api_guide_am62ax/DEVELOP_AND_DEBUG_DMR5.html#autotoc_md291

Unfortunately, the AM62A uses a special "edgeai" build of the DM firmware to add something for the AI support and so the standard MCU firmware used by the AM62x/P isn't one to one compatible. I have booted using the regular non-AI firmware but the AI demos all stop working. I assume you intent to use the AI features?

I downloaded the mcu_plus_sdk_am62ax_11_01_00_16 just in case, but unfortunately there doesn't appear to be any reference to the following filename anywhere in the provided code.
dm_edgeai_mcu1_0_release_strip.out

I created an e2e post to ask TI about this.
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1630089/am62a7-using-the-wkup_uart-from-linux

During hardware design, I strongly recommended avoiding the WKUP_UART for all the different AM62 platforms for mostly all the reasons above. Even if it's possible to use it, your project is going to need to maintain a separate version of TI's DM firmware. And keep updating it every time you move to a new SDK version.

Lets see what TI responds with but you may want to look at using one of the other UARTs or using a separate I2C/USB UART chip if there aren't enough pins.

RE: Using WKUP_UART0 in Linux Space - Added by Jonathan Cormier 2 days ago

Holden, TI wants to know if you are using the "VPAC/ISP camera functionality on your AM62A7". Presumably to determine if you need the dm_edgeai firmware or if you can get away with just the normal "ipc_echo_testb_mcu1_0_release_strip.xer5f"

RE: Using WKUP_UART0 in Linux Space - Added by Jonathan Cormier 2 days ago

If your able, please jump in and respond to them directly and I'll monitor and i'll jump in as needed.

    (1-3/3)
    Go to top
    Add picture from clipboard (Maximum size: 1 GB)