상품 설명
本商品は、Raspberry Pi Pico (RP2040) における
UART DMA 受信設計について、
「なぜこの設計で壊れにくいのか」を
実測コードと設計思想の両面から解説した資料です。
■この商品でできること(概要)
・Raspberry Pi Pico(RP2040)で UART DMA を使った高信頼通信 の実装例が分かる
・Linux ↔ Pico 間の 双方向テストコード がそのまま使える
・CRC32 + シーケンス番号 による欠落・破損検出の実例
・数十万フレーム・数時間連続転送の 実測ログ付き
・「なぜこの設計で壊れにくいのか」を 文章で理解できる
■ ディレクトリ構成(概要)
common/
└ protocol.h
UART通信で使用する共通プロトコル定義
pico/
├ lib/
│ └ UartDma.*
│ UART DMA を用いた送受信ライブラリ
└ apps/
├ pico_rx_seqcrc32/
└ pico_tx_seqcrc32/
Pico 側の送受信・検証用サンプル
linux/
├ rx_seqcrc32.cpp
├ tx_seqcrc32.cpp
Linux 側での送受信・CRC/SEQ検証プログラム
logs/
数十万フレーム・数時間の実測ログ
設計思想・説明
explanation.pdf
構造・使い方
README
■動作実績(超重要)
・Baudrate: 921600 bps
・Payload: 4096 bytes
・Frames: 480,000
・実行時間: 約6時間
・CRC_NG: 0
・SEQ_NG: 0
※ 実測ログ同梱
■設計の特徴
・RX は DMA write position 追跡方式
・RX 側で DMA IRQ に依存しない設計
・DMA IRQ は 通知としてのみ使用
・ISR とメイン処理を明確に分離
・リングバッファは N-1 設計+不変条件
・mutex / heavy ISR に依存しない
■注意事項・保証範囲
・任意ボーレート・任意負荷での動作保証は行っていません
・単一 UART / 単一 DMA チャネル前提
・商用製品への直接組み込み保証なし
・学習・設計例用途向け
■ライセンス
MIT License
個人・商用利用可(詳細は LICENSE 参照
■作者コメント
「UART DMA は怖い」と言われがちですが、
設計と検証をきちんと行えば、
ここまで安定して動く、という実例を残すために作りました。
動作環境
## 動作確認環境
### Linux側(送受信テスト)
- OS: Linux Mint 22.x(Ubuntu 24.04 LTS 系)
- Kernel: 6.x 系で動作確認
- コンパイラ: g++(C++17)
- ビルドツール:
- cmake
- make
### Pico側
- 対象ボード: Raspberry Pi Pico(RP2040)
- Pico SDK: 1.5.x 系で動作確認
- ツールチェーン:
- arm-none-eabi-gcc
- cmake
- make
모든 리뷰
더보기리뷰 등록
리뷰를 작성하려면 로그인이 필요합니다.
로그인하고 리뷰 쓰기