「AIが組込み開発で実機をデバッグする。」
もう少し先の話だと思われていた技術が、生成AIの進化とMCPの登場によって現実のものとなりました。
PALMiCE4は、AIとデバッガを連携させる「AIアシスト・デバッグ技術」により、新しい実機デバッグのスタイルを提案します。
【2026年12月リリース予定】
実機を扱う組込み開発では、AIの活用が限定的になります。
コード生成や静的解析が主なAIの活用領域
実機の情報取得はログ出力が中心
ログだけでは解決できないバグが存在
AIが実機をデバッグできれば、組込み開発はもっと変わる。
AIエージェントには外部ツールと接続する仕組み「MCP(Model Context Protocol)」が用意されています。この技術により、AIがデバッガを操作して実機をデバッグする可能性が見えてきました。
AIはMCPサーバというプログラムを経由して、PALMiCE4の機能を呼び出し、レスポンスを検証して推論を進めることができます。
日本語による簡単なデバッガ操作から、AIの推論による不具合の原因特定まで。
PALMiCE4を使った実機デバッグの事例をご紹介します。
AIがPALMiCE4を操作し、CPUを停止してレジスタ値を読み出します。
PALMiCE4を使用してプログラムを停止させ、PC/SP/R0を表示してください。
MCPサーバでPALMiCE4の接続を確認し、プログラムを停止してPC・SP・R0を読み取ります。
| レジスタ | 値 |
| PC | 0x020077A2 |
| SP | 0x00000000 |
| R0 | 0x22001908 |
停止位置:cpu_idle.c の99行目
AIがPALMiCE4を操作し、取得したレジスタ情報を表示します。
ソースコードが公開されていない処理を含む不具合を、AIが実機を調査して解析します。
バッファの合計値を計算するプログラムに、DMAで時々バッファを壊すバグを仕込みました。原因となるDMAやタイマーのソースコードはAIに公開していません。
main関数で計算しているsumの値が時々おかしくなります。PALMiCE4を使用して実機で原因を見つけてください。
PALMiCE4の状態を確認し、mainのsumが崩れる箇所を追います。まずプロジェクトとデバッグ用ツールを確認します。
異常を再現できました。sumが異常値となり、app_buffer[37]が変化していました。さらにタイマー割り込み内で、バッファ内へ4バイト転送するDMA設定を確認しました。次の転送の前後を比較して、上書き元を確定します。
原因は、タイマー割り込みから起動するDMAがapp_bufferを上書きしていることです。 PALMiCE4で実機確認できました。
原因となるソースコードがないメモリ破壊の不具合を、PALMiCE4の逆アセンブル機能などを使って特定できました。
Linuxが動作するCortex-A53とCortex-M4の間で発生したメモリ破壊を、複数コアの実機情報から追跡します。
Linux上で内蔵RAMのテスト(ライト&ベリファイ)を行うアプリに対し、Cortex-M4から時々データを上書きしてエラーを発生させています。AIにはCortex-M4の情報は伝えていません。
Linux側のメモリテストアプリで不定期にメモリ内容が壊れます。PALMiCE4を使って実機調査し、どのコアのどの命令が、どのアドレスをどの値からどの値へ書き換えたか特定してください。
ソースとELF/DWARF、PALMiCE4の接続を確認し、実機で書き込みを捕捉してコア・命令・アドレス・変更前後の値を絞り込みます。
M4の実機命令列に、OCRAMへ値をXORして書く候補命令が見つかりました。
M4の書き込みを実機で確認しました。A53全コアを停止した状態でストア命令を1命令だけ実行すると、メモリ内容が変化しました。
| 書き込みコア | Cortex-M4 |
| 命令アドレス | 0x1FFE0562 |
| 命令 | STR.W R5,[R7,R8,LSL #2] |
| 関数/ソース位置 | update_region/ main.c:38 |
| 書き込み先 | M4: 0x20217564、対応するA53物理アドレス: 0x00917564 |
Cortex-M4の情報は伝えていない状況で、Linux側のアプリ解析に固執せず、Cortex-M4側に問題があることをつきとめました。
AIアシスト・デバッグの詳細や導入について、お気軽にご相談ください。
評価を希望される方も、こちらからお問い合わせください。