2262521_ja-JP

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

2262521_ja-JP

2262521_ja-JP

iMX6ULLコンソールUARTがRS-485を使用する他のUARTに干渉する

カーネル lf-6.6.52-2.2.1 を搭載した iMX6ULL システム。コンソールは、ttymxc3 上の RS-485 シリアル ポートである ttymxc0 に設定されています。トランシーバ「Drive Enable」は SNVS_TAMPER7 にコネクテッドであり、次の DTS があります。

&iomuxc_snvs {
	pinctrl_rs485_snvs: rs485grp_snvs {
		fsl,pins = <
			MX6ULL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x1b0b1 /* RS485.DE as RTS */
		>;
	};
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rs485>, <&pinctrl_rs485_snvs>;
	fsl,dte-mode;
	rts-gpios = <&gpio5 7 GPIO_ACTIVE_HIGH>;
	linux,rs485-enabled-at-boot-time;
	status = "okay";
	label = "rs485";
};

データがコンソールに出力されると、RS-485 シリアル ポートに干渉が発生することに気付きました。RTS/DE 信号が 5 ~ 10 ミリ秒遅延することがあります。これは 9600 bps で 3.5 文字より長いため、ホストがまだバスを駆動しているため、デバイスからの応答が文字化けすることになります。これは次のようにCANできます:

while true;do echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >/dev/kmsg;done

これは既知の問題ですか?

i.MX6ULソフトウェア不具合の疑いYocto ProjectRe: iMX6ULL console UART interferes with other UART using RS-485

こんにちは@astrand


これは Linux カーネルではよくある問題のようです。こちらは LWN.NET での議論です。printk/console は遅いデバイスです。大量のログが発生した場合、カーネルはメッセージをコンソールに同期的に書き込む必要があります。このプロセス中、関連するロックが保持され、CPU 時間が消費され、他のタスクのスケジュールと割り込み処理が遅延されます。コンソールが RS-485 シリアル ポートと異なる場合でも、システム全体のスケジュール/ソフト割り込み/タスク キューは依然として遅くなります。これにより、UART 送信完了イベント情報がドライバに到達し、その後 DE ビットをプルダウンするまでの時間が遅延されます。詳細については、そのディスカッションを参照してください。

https://lwn.net/Articles/909980/


実行時にCAN、コンソールのログレベルを低く設定するか、

rs485-rts-dts の遅延
echo "4 4 1 7" > /proc/sys/kernel/printk




よろしくお願いします、
志明

Tags (1)
No ratings
Version history
Last update:
‎12-16-2025 05:45 AM
Updated by: