DART-MX8M UART: Difference between revisions

From Variscite Wiki
(Created page with "{{PageHeader|DART-MX8M - UART}} {{DocImage|category1=DART-MX8M|category2=Yocto}} __toc__ = DART-MX8M UART Overview = All 4 UARTs on DART-MX8M are enabled by default. UART1 is...")
 
No edit summary
Line 30: Line 30:
Each time you run echo command the "hello" string should appear on the terminal.
Each time you run echo command the "hello" string should appear on the terminal.


= Using UART3 for console (instead of UART1) =
= Disabling UART2 =
In the following example we use UART3 for console.<br>
Other UART ports can be used, similarly.<br>


== Changes needed in U-Boot ==
To disable UART2 edit arch/arm64/boot/dts/variscite/imx8m-vart-dart-common.dsti under kernel source directory and modify


<syntaxhighlight lang="diff">
<pre>
Subject: [PATCH] mx6ul_var_dart: Use UART3 for console (instead of UART1)
&uart2 {
        ...
        status = "okay";
};
</pre>


---
to
board/variscite/mx6ul_var_dart/mx6ul_var_dart.c | 8 ++++----
include/configs/mx6ul_var_dart.h                | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)


diff --git a/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c b/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c
<pre>
index 63a75ec..9d70851 100755
&uart2 {
--- a/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c
        ...
+++ b/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c
        status = "disabled";
@@ -162,9 +162,9 @@ int dram_init(void){
};
}
</pre>
-static iomux_v3_cfg_t const uart1_pads[] = {
- MX6_PAD_UART1_TX_DATA__UART1_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
- MX6_PAD_UART1_RX_DATA__UART1_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
+static iomux_v3_cfg_t const uart3_pads[] = {
+ MX6_PAD_UART3_TX_DATA__UART3_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
+ MX6_PAD_UART3_RX_DATA__UART3_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
};
static iomux_v3_cfg_t const usdhc1_pads[] = {
@@ -253,7 +253,7 @@ static void setup_gpmi_nand(void)
static void setup_iomux_uart(void)
{
- imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
+ imx_iomux_v3_setup_multiple_pads(uart3_pads, ARRAY_SIZE(uart3_pads));
}
static struct fsl_esdhc_cfg usdhc_cfg[2] = {
diff --git a/include/configs/mx6ul_var_dart.h b/include/configs/mx6ul_var_dart.h
index 5313d17..88bc1a0 100755
--- a/include/configs/mx6ul_var_dart.h
+++ b/include/configs/mx6ul_var_dart.h
@@ -55,7 +55,7 @@
#define CONFIG_MXC_GPIO
#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE UART1_BASE
+#define CONFIG_MXC_UART_BASE UART3_BASE
/* MMC Configs */
#ifdef CONFIG_FSL_USDHC
@@ -169,7 +169,7 @@
        BOOT_ENV_SETTINGS \
"script=boot.scr\0" \
"image=zImage\0" \
- "console=ttymxc0\0" \
+ "console=ttymxc2\0" \
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
"var_auto_fdt_file=Y\0" \
--
1.9.1
 
</syntaxhighlight>
 
You can follow the "Build U-Boot from source code" guide to get the U-Boot source code and build it.<br>
 
== Changes needed in Yocto ==
Edit the file: sources/meta-variscite-imx/conf/machine/imx6ul-var-dart.conf<br>
and change the line:<br>
SERIAL_CONSOLE = "115200 ttymxc0"<br>
to:<br>
SERIAL_CONSOLE = "115200 ttymxc2"<br>
<br>
(or you can change it on the target in /etc/inittab)
 
= Disable the console =
Disabling the serial console completely is not recommended, as it makes it hard or even impossible to analyze errors such as a user interface crash or to get control of the system if it doesn't boot successfully.<br>
If you need to do it anyway, this is how.<br>
<br>
For Debian, the only changes needed are in U-Boot.<br>
 
== Changes needed in U-Boot ==
Applying the first patch only will still allow you to stop the boot process at U-Boot and get to the U-Boot command line.<br>
Applying the second patch will eliminate that also.<br>
 
<syntaxhighlight lang="diff">
Subject: [PATCH 1/2] mx6ul_var_dart: Silence console
 
---
board/variscite/mx6ul_var_dart/mx6ul_var_dart.c | 2 ++
include/configs/mx6ul_var_dart.h                | 8 +++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
 
diff --git a/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c b/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c
index 59c4da7f8a..139b5bc216 100755
--- a/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c
+++ b/board/variscite/mx6ul_var_dart/mx6ul_var_dart.c
@@ -966,8 +966,10 @@ void board_init_f(ulong dummy)
/* setup GP timer */
timer_init();
+#ifndef CONFIG_SPL_NO_CONSOLE
/* UART clocks enabled and gd valid - init serial console */
preloader_console_init();
+#endif
setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
diff --git a/include/configs/mx6ul_var_dart.h b/include/configs/mx6ul_var_dart.h
index 5313d17c21..abbcb11620 100755
--- a/include/configs/mx6ul_var_dart.h
+++ b/include/configs/mx6ul_var_dart.h
@@ -93,6 +93,11 @@
#define CONFIG_POWER_PFUZE3000_I2C_ADDR  0x08
#endif
+#define CONFIG_SYS_DEVICE_NULLDEV
+#define CONFIG_SILENT_CONSOLE
+#define CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC
+#define CONFIG_SPL_NO_CONSOLE
+
#define CONFIG_SYS_MMC_IMG_LOAD_PART 1
#define NAND_BOOT_ENV_SETTINGS \
@@ -169,7 +174,8 @@
        BOOT_ENV_SETTINGS \
"script=boot.scr\0" \
"image=zImage\0" \
- "console=ttymxc0\0" \
+ "silent=1\0" \
+ "console=null\0" \
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
"var_auto_fdt_file=Y\0" \
--
2.11.0
</syntaxhighlight>
 
<syntaxhighlight lang="diff">
Subject: [PATCH 2/2] mx6ul_var_dart: Autoboot with no delay and no check for
abort
 
---
include/configs/mx6ul_var_common.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
 
diff --git a/include/configs/mx6ul_var_common.h b/include/configs/mx6ul_var_common.h
index 8556b257be..6139ec6d55 100644
--- a/include/configs/mx6ul_var_common.h
+++ b/include/configs/mx6ul_var_common.h
@@ -72,7 +72,7 @@
#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
#ifndef CONFIG_BOOTDELAY
-#define CONFIG_BOOTDELAY 1
+#define CONFIG_BOOTDELAY -2
#endif
/* allow to overwrite serial and ethaddr */
--
2.11.0
</syntaxhighlight>
 
== Changes needed in Yocto ==
Edit the file: sources/meta-variscite-imx/conf/machine/imx6ul-var-dart.conf<br>
and change the line:<br>
SERIAL_CONSOLE = "115200 ttymxc0"<br>
to:<br>
SERIAL_CONSOLE = ""<br>
<br>
(or you can change it on the target in /etc/inittab)

Revision as of 18:10, 1 November 2018

DART-MX8M - UART

DART-MX8M UART Overview

All 4 UARTs on DART-MX8M are enabled by default. UART1 is connected to debug console, UART2 and UART3 are connected to header J12 on DART-MX8M carrier board, UART4 is connected to Bluetooth module. On DART-MX8M SoMs without WIFI/BT module UART4 is also connected to J12 header. See carrier board datasheet https://www.variscite.com/wp-content/uploads/2018/04/VAR-DT8MCustomBoard-Datasheet.pdf for the exact pinout. Only UART4 has RTS and CTS lines.

UART naming under Linux

The Linux devices corresponding to UART1 - UART4 are /dev/ttymxc0 - /dev/ttymxc3 respectively.

Testing UART2

Short J12.4 and J12.6 pins and run the following commands:

stty -F /dev/ttymxc1 -echo -onlcr 115200
cat /dev/ttymxc1 &
echo hello > /dev/ttymxc1

Each time you run echo command the "hello" string should appear on the terminal.

Testing UART3

Short J12.11 and J12.13 pins and run the following commands:

stty -F /dev/ttymxc2 -echo -onlcr 115200
cat /dev/ttymxc2 &
echo hello > /dev/ttymxc2

Each time you run echo command the "hello" string should appear on the terminal.

Disabling UART2

To disable UART2 edit arch/arm64/boot/dts/variscite/imx8m-vart-dart-common.dsti under kernel source directory and modify

&uart2 {
        ...
        status = "okay";
};

to

&uart2 {
        ...
        status = "disabled";
};