Upgrade to Pro — share decks privately, control downloads, hide ads and more …

汎用 IP ドライバ移植の罠 - Implementation of IP driver to...

汎用 IP ドライバ移植の罠 - Implementation of IP driver to SoC

Zephyr project meetup: Sappro Japan 2026 (Lightning Talk)

Avatar for K. Hayashi

K. Hayashi

July 05, 2026

More Decks by K. Hayashi

Other Decks in Programming

Transcript

  1. 1 汎用 IP ドライバ移植の罠 Implementation of IP driver to SoC

    Embedded SW Engineer/OpenSource Contributer K.Hayashi ( khayash1) 2026/06/26 Zephyr Project Meetup: Sapporo, Japan 2026
  2. 2 About me 2026/06/26 Name: K.Hayashi ( khayash1) Job: Embedded

    SW Engineer OpenSource Contributer  Linux kernel (For soc, dts, pci, net, usb, sdhci, ata, spi, …)  U-Boot  Buildroot  OP-TEE  Zephyr RTOS
  3. 3 Zephyr RTOS には非常に多くのドライバが備わっている ⇒ ボードのZephyr サポートがあれば即動作 ⇒ 標準 API

    と数多くの contribution の恩恵 しかし、サポートが少ないボードや自分で移植する人に対しては... ⇒ 自力でドライバを有効にしていかなければならない ⇒ これは運も左右する、割と過酷な道 ⇒ 汎用 IP なら少しはマシかも? Overview 2026/06/26
  4. 4 汎用 IP の DMA ドライバを動かしてみる  Kconfig を有効化 (loop_transfer/boards/<target>.conf)

     Devicetree Overlay を追加 (loop_transfer/boards/<target>.overlay)  loop_transfer テストをビルド  Zephyr 公開ドライバがある (drivers/dma/dma_*.c)  Linux 実装も動作実績もある(GPL なので仕様を眺めるだけ)  対象 SoC ボードでの Zephyr は動作済 ということで、いざ実行 Case Study: dmac 2026/06/26 $ west build -p always -b <target> zephyr/test/drivers/dma/loop_transfer これだけ揃ってれば 簡単に動くんじゃない?
  5. 5 現実はそんなに甘くない テスト結果は FAIL 動作している Linux の挙動とにらめっこしながらレジスタデバッグ... Try and error

    2026/06/26 デバッグの末に分かったこと IP は汎用でもドライバは汎用に作られていない可能性 ⇒ 特定 SoC 環境でしかテストされていない? ⇒ 汎用 IP は SoC ごとの “configuration” の差 明らかにおかしいバグ1 件、怪しいバグ2 件 ⇒ テストがうまく機能していない可能性 ⇒ これは PR / Issue 発行のチャンス!
  6. 6 さらに分かったこと テストが “タイマーウェイト”で作られている ⇒ 転送レートが違うと転送サイズも変えないといけない ⇒ シリアルログを増やしたら全然パスしない(or 逆にパスする) Link

    List を有効にしたら全然動かない ⇒ 何やら書き戻し処理が有効にしてる割には、   他の設定が全然足りてなさそう ⇒ このドライバ本当に動かした? ⇒ とりあえずいらないので無効にしたら動いた! これもPR チャンス? … いや、これは無効だと動かなくなると言われそうだから issue か? Understand more 2026/06/26