最近、S32K314シリアルポートのデバッグ中に問題が発生しました。以前はGD32/STM32プラットフォームを使用しており、シリアルポートをリアルタイム印刷に使用する場合、アプリケーション層で印刷文字を処理し、割り込みを介して送信するために基盤となる書き込み関数を呼び出していました。
このデータはデータレジスタに直接書き込まれ、すぐに送信されます。そのため、キューがありデータ転送が高速なので、アプリケーション層が大量のデータを受信しても慌てる必要はありません。しかし、S32K3 を使用すると、ネストされたレイヤーがあるため、非同期送信関数 `Lpuart_Uart_Ip_AsyncSend` が比較的遅いことがわかりました。相対的に言えば、同じバイト数のプリントデータの場合、S32K3 は GD32 よりもはるかに遅いです。AI は解決策を提供します。
アプリケーション層では、書き込みごとの処理方式から、大きなバッファを使用して下位層に書き込む方式に変更されます。そして、下位層の書き込み関数と割り込みは、以下のように処理されます。
この方法は確かに速度を向上させますが、大量のRAMを必要とします。容量と効率の両面でより優れた方法はありますか?
MCUレベルでのOSを使っていますか?それともベアメタルだけですか?
使用されているオペレーティングシステム
こんにちは@Joker_Y
可能であれば、レジスタを使用してLPUART送信を直接実装してみてください。
具体的な手順の例を教えていただけますか?