[iMX8MM] Change UART console

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

[iMX8MM] Change UART console

Jump to solution
5,091 Views
kat61545
Contributor II

Hello

I'm using flex-imx8mm

I want to change console from UART 2 -> UART 3. I changed it in the u-boot, but I can't start kernel.

Please help me. Thanks you

[UPDATE]

Change 0x30890000 to 0x30880000

"console=ttymxc2,115200 earlycon=ec_imx6q,0x30880000,115200\0" \

u-Boot change:

  • DTB

chosen {
bootargs = "console=ttymxc2,115200 earlycon=ec_imx6q,0x30890000,115200";
stdout-path = &uart3;
};

  • include/configs

#define CONFIG_EXTRA_ENV_SETTINGS \
CONFIG_MFG_ENV_SETTINGS \
M4_BOOT_ENV \
JAILHOUSE_ENV \
"script=boot.scr\0" \
"image=Image\0" \
"console=ttymxc2,115200 earlycon=ec_imx6q,0x30890000,115200\0" \
"fdt_addr=0x43000000\0" \
"fdt_high=0xffffffffffffffff\0" \
"boot_fdt=try\0" \
"fdt_file=undefined\0" \
"initrd_addr=0x43800000\0" \
"initrd_high=0xffffffffffffffff\0" \

....

#define CONFIG_MXC_UART
#define CONFIG_MXC_UART_BASE UART3_BASE_ADDR

Result:

U-Boot SPL 2018.03-g5823e9f-dirty (May 19 2020 - 14:45:59 +0700)
power_bd71837_init
dram_init: LPDDR4: 2GB
DDRINFO: start lpddr4 ddr init
DRAM PHY training for 3000MTS
check ddr4_pmu_train_imem code
check ddr4_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr4_pmu_train_dmem code pass
Training PASS
DRAM PHY training for 3000MTS
check ddr4_pmu_train_imem code
check ddr4_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr4_pmu_train_dmem code pass
Training PASS
DRAM PHY training for 400MTS
check ddr4_pmu_train_imem code
check ddr4_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr4_pmu_train_dmem code pass
Training PASS
DRAM PHY training for 100MTS
check ddr4_pmu_train_imem code
check ddr4_pmu_train_imem code pass
check ddr4_pmu_train_dmem code
check ddr4_pmu_train_dmem code pass
Training PASS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
Normal Boot
Trying to boot from MMC1


U-Boot 2018.03-g5823e9f-dirty (May 19 2020 - 14:45:59 +0700)

CPU: Freescale i.MX8MMQ rev1.0 1800 MHz (running at 1200 MHz)
CPU: Commercial temperature grade (0C to 95C) at 51C
Reset cause: POR
Model: TechNexion FLEX-IMX8MM and FLEX-PI baseboard
DRAM: 2 GiB
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: serial
Out: serial
Err: serial

BuildInfo:
- ATF 1cb68fa
- U-Boot 2018.03-g5823e9f-dirty

switch to partitions #0, OK
mmc0 is current device
flash target is MMC:0
Net: No ethernet found.
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
** Unable to read file boot.scr **
** Unable to read file tnrescue.itb **
18108928 bytes read in 780 ms (22.1 MiB/s)
** Unable to read file m4.bin **
Booting from mmc ...
42993 bytes read in 17 ms (2.4 MiB/s)
## Flattened Device Tree blob at 43000000
Booting using the fdt blob at 0x43000000
Using Device Tree in place at 0000000043000000, end 000000004300d7f0

Starting kernel ...

Labels (1)
1 Solution
4,779 Views
kat61545
Contributor II

I fixed
"console=ttymxc2,115200 earlycon=ec_imx6q,0x30880000,115200\0" \

View solution in original post

5 Replies
4,780 Views
kat61545
Contributor II

I fixed
"console=ttymxc2,115200 earlycon=ec_imx6q,0x30880000,115200\0" \

4,779 Views
shivanipatel
Senior Contributor II

Hi kat61545@eoopy.com‌,

Are you using the Yocto build system to generate the images?

If so then, you also need to change the value of the "SERIAL_CONSOLES" variable in the machine configuration file in yocto build. You need to assign ttymxc2 to the SERIAL_CONSOLES variable as well.

e.g. SERIAL_CONSOLES = "115200;ttymxc2"

Hope this will help you.

Regards,

Shivani

0 Kudos
4,779 Views
kat61545
Contributor II

Shivani Patel wrote:

Hi Oliver Vu,

 

Are you using the Yocto build system to generate the images?

If so then, you also need to change the value of the "SERIAL_CONSOLES" variable in the machine configuration file in yocto build. You need to assign ttymxc2 to the SERIAL_CONSOLES variable as well.

 

e.g. SERIAL_CONSOLES = "115200;ttymxc2"

 

Hope this will help you.

 

Regards,

Shivani

Thanks for response.

I tried it, but it didn't show in the uart3 (ttymxc2)

pastedImage_2.png

0 Kudos
4,779 Views
joanxie
NXP TechSupport
NXP TechSupport

"

from dtb, uart3 should be tty2,   

 serial0 = &uart1;
  serial1 = &uart2;
  serial2 = &uart3;
  serial3 = &uart4;

test   /dev/ttymxc2 with cmd:

/unit_test/UART/mxc_uart_xmit_test.out /dev/ttymxc2  -B 9600 

"

0 Kudos
4,779 Views
kat61545
Contributor II

Thanks, but I do not understand your answer

flex-imx8mm.h 

line 156: Modify

"console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200\0" \

->

"console=ttymxc2,115200 earlycon=ec_imx6q,0x30890000,115200\0" \

line 279: Modify

#define CONFIG_MXC_UART_BASE UART2_BASE_ADDR

->

#define CONFIG_MXC_UART_BASE UART3_BASE_ADDR

flex-imx8mm.c

line 45: Add

static iomux_v3_cfg_t const uart_pads3[] = {
IMX8MM_PAD_ECSPI1_SCLK_UART3_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
IMX8MM_PAD_ECSPI1_MOSI_UART3_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
};

line 58: Modify

imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));

->

imx_iomux_v3_setup_multiple_pads(uart_pads3, ARRAY_SIZE(uart_pads3));

imx8mm-flex.dtsi

line 25: Modify

bootargs = "console=ttymxc1,115200 earlycon=ec_imx6q,0x30890000,115200";

stdout-path = &uart2;

->

bootargs = "console=ttymxc2,115200 earlycon=ec_imx6q,0x30890000,115200";

stdout-path = &uart3;

This is my change. I stuck at "Starting kernel ..."

pastedImage_1.png

0 Kudos