Armadilloフォーラム

Armadillo-X1 CON4を汎用通信として使用

alphasystem

2019年8月1日 10時25分

お世話になります。大野と申します。

Armadillo-X1のCON4のUARTはコンソール用になっていますが
汎用のシリアル通信用に使用することは可能でしょうか。

可能であれば設定の変更が必要と思います。
設定の方法などは何を調べたら良いでしょうか。

宜しく御願い致します。

コメント

古関です。

技術的には可能です。

こちらで動作確認していないのですが、以下でコンソール出力を止められないでしょうか。
※ コンソール停止の確認だけでなく、意図しないところで出力されていないか、波形も見ていただければと思います

(1) U-Bootソースコードの変更
以下を変更、イメージをビルドしArmadillo-X1に書き込み

※ コンソール入出力先を変える場合
include/configs/x1.h
以下をUART5以外のUARTコアに変更
--------------------------------------------------------------------------
#define CONFIG_MXC_UART_BASE UART5_IPS_BASE_ADDR
--------------------------------------------------------------------------

board/atmark-techno/x1/x1.c
以下をUART5以外のUARTコアに変更
--------------------------------------------------------------------------
static iomux_v3_cfg_t const uart5_pads[] = {
MX7D_PAD_GPIO1_IO06__UART5_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
MX7D_PAD_GPIO1_IO07__UART5_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
MX7D_PAD_GPIO1_IO04__UART5_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
MX7D_PAD_GPIO1_IO05__UART5_RTS_B | MUX_PAD_CTRL(UART_PAD_CTRL),
};

static void setup_iomux_uart(void)
{
imx_iomux_v3_setup_multiple_pads(uart5_pads, ARRAY_SIZE(uart5_pads));
}
--------------------------------------------------------------------------

※ コンソール入出を止める場合
上記のPAD設定と、以下を削除
--------------------------------------------------------------------------
void board_init_f(ulong dummy)
{
board_early_init_f();

/* UART clocks enabled and gd valid - init serial console */
- preloader_console_init();
--------------------------------------------------------------------------

(2) カーネルブートパラメータ変更

保守モードで起動後下記のコマンドを実行し、コンソール入出力を停止。
もしくは別のttyに割当。

--------------------------------------------------------------------------
=> printenv console
console=ttymxc4

=> setenv console none

=> printenv console
console=none

=> saveenv
--------------------------------------------------------------------------

大野です。

ご回答有難うございます。

まずはご回答頂く前に行ったことを報告いたします。
コンソール入出力にUART4を割り当てようと添付dtsをコンパイルしDevice Treeを置き換えて
保守モードで下記コマンドでブートローダーの環境変数を設定しました。
------------------------------------------
=> setenv console ttymxc3

=> saveenv
------------------------------------------
上記の作業でカーネル起動後はUART5にコンソール出力はされないようでした。
(UART4に出力されいるかは確認できていません。波形も確認できていません。)

ちょうど、ブートローダー起動時もUART5にコンソール出力しない方法を探しているところにご回答頂き助かりました。

ご回答いただいた内容に沿って
include/configs/x1.h を下記のうに変更
--------------------------------------------------------------------------
-#define CONFIG_MXC_UART_BASE UART5_IPS_BASE_ADDR
+#define CONFIG_MXC_UART_BASE UART4_IPS_BASE_ADDR
--------------------------------------------------------------------------

board/atmark-techno/x1/x1.c を下記のように変更
-----------------------------------------------------------------------------------
+static iomux_v3_cfg_t const uart4_pads[] = {
+ MX7D_PAD_SD2_DATA0__UART4_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
+ MX7D_PAD_SD2_DATA1__UART4_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
+ MX7D_PAD_SD2_DATA2__UART4_DCE_CTS | MUX_PAD_CTRL(UART_PAD_CTRL),
+ MX7D_PAD_SD2_DATA3__UART4_DCE_RTS | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
-----------------------------------------------------------------------------------

-----------------------------------------------------------------------------------
static void setup_iomux_uart(void)
{
- imx_iomux_v3_setup_multiple_pads(uart5_pads, ARRAY_SIZE(uart5_pads));
+ imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads));
-----------------------------------------------------------------------------------

ソース変更し、ブートローダーをビルドしArmadillo-x1に書き込みしました。

ここからまた質問させていただきます。
カーネルブートパラメータの変更を行いたいのですがコンソール入出力がUART5でなくなっているため
USB接続では保守モードの操作ができません。
この状態ではコンソール入出力できるはずのUART4に接続するためのハードも準備していません。
よってブートローダーのソースを変更しカーネルブートパラメータ"console"のデフォルト値を
"ttymxc3"に変更する方法をご教示頂けないでしょうか

以上、お手数とは存じますが宜しく御願い致します。

ファイル ファイルの説明
armadillo_x1_uart4_alpha.dts

古関です。

> よってブートローダーのソースを変更しカーネルブートパラメータ"console"のデフォルト値を
> "ttymxc3"に変更する方法をご教示頂けないでしょうか

下記ファイルの
include/configs/x1.h

以下を書き換えてみてください。
console=ttymxc4

大野です。

書き換えて試してみました。
UART5からのコンソール入出力は停止しました。

ご回答有難うございます。