alphasystem
2019年8月1日 10時25分
お世話になります。大野と申します。
Armadillo-X1のCON4のUARTはコンソール用になっていますが
汎用のシリアル通信用に使用することは可能でしょうか。
可能であれば設定の変更が必要と思います。
設定の方法などは何を調べたら良いでしょうか。
宜しく御願い致します。
コメント
alphasystem
大野です。
ご回答有難うございます。
まずはご回答頂く前に行ったことを報告いたします。
コンソール入出力に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 |
at_koseki
alphasystem
at_koseki
2019年8月9日 10時42分
古関です。
技術的には可能です。
こちらで動作確認していないのですが、以下でコンソール出力を止められないでしょうか。
※ コンソール停止の確認だけでなく、意図しないところで出力されていないか、波形も見ていただければと思います
(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
--------------------------------------------------------------------------