The processor is on a single board from MYiR, the MYS-8MMX, but they have been unable to provide any help. Perhaps someone here has some insight.
The board is running ubuntu 18.04.6 LTS. I was able to modify the device tree source file and rebuild the kernel to use some of the GPIO pins for UART as indicated in the SBC’s documentation. The TX line always functions. Unfortunately there is a 50% chance upon boot that the RX line does NOT function at all, but 50% of the time everything works great and can continue to run just fine for hours.
When the issue occurs after boot, it will usually receive the first input preceded by a ton of NULLs, and then won't receive any input at all after that. Sometimes it does not even receive the first input.
I have verified with a oscilloscope that there is not an issue with the serial cable i.e. the RX line on the board is receiving the bytes.
Let me assume you are using ECSPI1 pins for UART3:
Open the Base board schematic of Imx8MM-EVK, and find page 10, we can see the following warnings:
It means that internal pull(up/down) is invalid when using 3.3V IO, so we should disable internal pull(up/down) of UART pins of CPU.
For example, some customers use ECSPI1 PADs to multiplexed UART signals:
Device tree should be changed like below:
Open linux-imx/arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi, and find pinctrl_uart3 node, modify PAD strength from 0x140 to 0x40, like below:
pinctrl_uart3: uart3grp {
fsl,pins = <
MX8MM_IOMUXC_ECSPI1_SCLK_UART3_DCE_RX 0x40
MX8MM_IOMUXC_ECSPI1_MOSI_UART3_DCE_TX 0x40
MX8MM_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x40
MX8MM_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x40
>;
};
Above code was validated on i.MX8MM-EVK+AW-CM276-uSD January 2021.
[Note]
As for my personal opinion, probably even if IO=1.8V, timeout issue also occur, so above code can also be used.
Above code has been validated for Bluetooth which uses UART3 port.
You can try it.