SPI / RX 衝突試験

spi_rx_collision_test通信ドライバでの SPI と RX の衝突試験をしました。通信ドライバはいつでも RX 信号を受け取る可能性があります。それはホストがデータの受け渡しをするため SPI 通信をしている最中でも起こります。RX 信号の処理は他の処理を中断して即行わなくてはいけないので外部入力割り込みハンドラで実施しています。このハンドラの処理がやや複雑なので、バグによりもう一つの複雑な処理である SPI 通信で使われているレジスタを壊してしまう可能性があり、実際にそういうバグがいくつか出ました。バグは全て修正されて、負荷試験が通せるようになりました。試験では、負荷生成ドライバがシリアルデータを送り続けている一方、受信ドライバのホストのタイミングを調整して RX 信号と SPI が頻繁に衝突するようにしました。パケット一個おきに衝突が発生しています。負荷試験は10時間走り続け、通信エラーなし、セッションは固まったり暴走したりすることなく続いています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください