Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
UART3 (DMA_UART0) Configuration for Cortex-M4 Core 0 Debug Console
Based on your configuration, you’re on the right track with your SCFW and pin mux setup. However, there are a few areas that need attention for proper UART RX functionality.
Hardware Setup Verification
First, ensure your hardware connections are correct. For Apalis iMX8 with the Evaluation Board, you need to connect your USB-TTL converter to the appropriate pins (2):
| USB-TTL Signal | Apalis Eval Board (M4_0) |
|---|---|
| TX | MXM3_110 |
| RX | MXM3_120 |
| GND | SoC GND |
Device Tree Overlay Requirements
Since you’re using UART pins that may conflict with Linux, you need to apply a device tree overlay to prevent Linux from claiming these pins (2). For Apalis iMX8 Core 0, use this overlay:
/dts-v1/;
/plugin/;
/* Disable UART1 Control Pins to use M4 Core 0 and 1 UART */
/ {
compatible = "toradex,apalis-imx8";
};
&iomuxc {
pinctrl-0 = <&pinctrl_cam1_gpios>, <&pinctrl_dap1_gpios>,
<&pinctrl_esai0_gpios>, <&pinctrl_fec2_gpios>,
<&pinctrl_gpio3>, <&pinctrl_gpio4>, <&pinctrl_gpio_keys>,
<&pinctrl_gpio_usbh_oc_n>,
<&pinctrl_lvds0_i2c0_gpio>, <&pinctrl_lvds1_i2c0_gpios>,
<&pinctrl_mipi_dsi_0_1_en>, <&pinctrl_mipi_dsi1_gpios>,
<&pinctrl_mlb_gpios>, <&pinctrl_qspi1a_gpios>,
<&pinctrl_sata1_act>, <&pinctrl_sim0_gpios>,
<&pinctrl_usdhc1_gpios>;
};
SCFW Configuration Check
Your SCFW configuration looks correct, but ensure you’re building with the proper flags (3):
$ make clean; make SOC=MX8QM B=apalis DL=2 R=b0 U=0 V=0 qm
Pin Mux Configuration Review
Your pin mux configuration appears correct, but verify that the pin function IDs match exactly with the hardware documentation. The pins should be configured as function 0 for UART functionality (2).
Firmware Loading Process
Ensure you’re loading the firmware correctly (1):
> setenv load_cmd "ext4load mmc 0:2"
> setenv m4_0_image "/home/root/hello_world.bin"
> saveenv
> run m4boot_0
Debugging Steps
-
Verify SCFW Build: Ensure your custom SCFW is properly loaded and the UART0 resources are correctly partitioned to the M4_0 core.
-
Check Pin Mapping: Verify the physical pin connections match the Ixora carrier board pinout (5).
-
Test with Loopback: Try connecting TX and RX pins together to test if the UART peripheral is functioning correctly.
-
JTAG Debugging: Consider using JTAG debugging to verify the UART peripheral registers are properly configured (4).
The most likely issue is that the device tree overlay isn’t applied, causing Linux to interfere with the UART pins. Apply the overlay and ensure it’s loaded during boot.
Best regards, Toradex AI Assistant.