1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

組み込み実践編(実践の導入編):どのレイヤーがおかしいかの見極め方

1
Last updated at Posted at 2026-07-16

組み込み実践編(実践の導入編):どのレイヤーがおかしいかの見極め方

はじめに

組み込み機器の不具合調査で一番時間を溶かすのは、実は「原因の特定」そのものより「どのレイヤーを疑うべきか」の判断だったりします。
電源が原因なのに延々とファームのログを追いかけたり、逆にソフトのバグなのにオシロを引っ張り出したり…という遠回りは、現場あるあるだと思います。

このシリーズ「組み込み実践編」では、18年ほど組み込み/FPGA/ファームウェア開発に携わってきた中で自然と身についた「デバッグの道具箱」を、実際に手元にある機材ベースで紹介していきます。
初回となる本記事は総論として、個別ツールの前に「どのレイヤーがおかしいかをどう見極めるか」という考え方の土台を整理します。

本シリーズ全5回の目次

# タイトル
A-1 組み込み実践編(実践の導入編):どのレイヤーがおかしいかの見極め方(← 本記事)
A-2 組み込み実践編 ②:シリアルコンソール編
A-3 組み込み実践編 ③:JTAG・デバッガ編
A-4 組み込み実践編 ④:オシロ・ロジアナ編
A-5 組み込み実践編 ⑤:自作ツールでレジスタを叩く編

このシリーズの全体構成

  • A. デバッグの道具箱(本シリーズ)
    • A-1 総論:どのレイヤーがおかしいかの見極め方(本記事)
    • A-2 シリアルコンソール編
    • A-3 JTAG・デバッガ編
    • A-4 オシロ・ロジアナ編
    • A-5 自作ツールでレジスタを叩く編
  • C. 組み込みLinuxの仕組み(全3回・後日)
  • B. 組み込み機器にWi-Fiを載せる(全3回・後日)

レイヤーを5段階に分けて考える

不具合の「見た目の症状」は同じでも、原因は全く違うレイヤーにあることが多いです。ここでは大きく5段階に分けて考えます。

  1. 電源・クロックレイヤー:そもそも電圧が足りているか、クロックが発振しているか
  2. 信号・通信レイヤー:UART/SPI/I2Cなどの物理配線・信号品質(JTAG/SWDの配線もここに含まれますが、デバッガとしての活用そのものは次の「ブート・ファームウェアレイヤー」の道具としてA-3でまとめて扱います)
  3. ブート・ファームウェアレイヤー:起動シーケンス、ブートローダ、ファームウェアの初期化処理
  4. OS・ミドルウェアレイヤー:Linuxカーネル、ドライバ、ミドルウェアの挙動
  5. アプリケーションレイヤー:アプリのロジックそのもの

「基板が起動しない」という同じ症状でも、1(電源が入っていない)のこともあれば、3(ブートローダが化けている)のこともあります。順番に切り分けずにいきなり4や5を疑うと、確認すべき箇所を見落として遠回りになります。

症状からレイヤーを絞り込む考え方

実務でよくやる思考の流れはだいたい以下の通りです。

  • LEDも点かない・発熱もない → まず電源・クロックレイヤーを疑う(テスターで電圧確認)
  • 電源は入っているがシリアルに何も出ない → 信号・通信レイヤー(配線・ボーレート・レベル変換)を疑う
  • シリアルには何か出るが起動が途中で止まる → ブート・ファームウェアレイヤー(ブートログを読む)
  • OSは起動するが特定の機能だけ動かない → OS・ミドルウェアレイヤー(ドライバ・カーネルログ)
  • OSも機能も動くが挙動がおかしい → アプリケーションレイヤー

このように、「まず生存確認(電源)→ 次に声を聞く(シリアル)→ 起動の過程を追う(ブートログ)→ OSの視点で見る → アプリの視点で見る」という順序で切り分けると、無駄な深追いを避けられます。

A-1_可変電源モジュール.jpg
A-1_汎用ACアダプタセット.jpg
電源レイヤーの生存確認では、こういった可変電源や複数電圧に対応したACアダプタセットがあると、電圧を変えながら「本当に電源起因か」を切り分けやすくなります。

レイヤー×道具マップ(本シリーズの地図)

このシリーズの各記事は、上記のレイヤーに対応する道具を1つずつ深掘りしていく構成にしています。

レイヤー/観点 主な道具 対応記事
電源・クロック テスター、電源ライン観測 本記事で概要を扱う
信号・通信 シリアルコンソール(TeraTerm) A-2
ブート・ファームウェア JTAG/デバッガ(ST-LINK, J-Link, DAPLink) A-3
信号波形の実測(信号・通信レイヤーの深掘り) オシロスコープ、ロジックアナライザ A-4
レジスタレベルの対話(ブート・ファームウェアレイヤーの深掘り) 自作GUIツール(C#デスクトップアプリ) A-5

記事単位では表を見れば十分追えるようにしているので、まずはこの対応表をシリーズ全体の地図として使ってください。
なお、4(OS・ミドルウェア)・5(アプリケーション)レイヤーの深掘りは本シリーズの範囲外とし、別シリーズ「組み込みLinuxの仕組み」で扱う予定です。

まとめ

  • 不具合調査は「原因の特定」より前に「どのレイヤーを疑うか」の判断が肝心
  • 電源→通信→ブート→OS→アプリ、の順に切り分けると遠回りしにくい
  • 次回以降、このレイヤーに対応する具体的な道具(シリアルコンソール、JTAG、オシロ、自作ツール)を1つずつ深掘りする

次回は、最も手軽で最初に手が伸びる道具「シリアルコンソール」について、TeraTermでのログ取得の作法を中心に解説します。


シリーズ内リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?