検索
連載

MPUを使ったボード開発での落とし穴と確認事項マイクロプロセッサQ&Aハンドブック(6)(2/5 ページ)

マイクロプロセッサ(MPU)を使用したボードを開発するユーザーが抱えるさまざまな悩みに対し、マイクロプロセッサメーカーのエンジニアが回答していく連載。今回は、「初めてのボード開発での落とし穴と確認事項」について紹介します。

Share
Tweet
LINE
Hatena

 初めてのボード開発での落とし穴と確認事項について、比較的回路構成がシンプルなSTマイクロエレクトロニクスのエントリ向けマイクロプロセッサ「STM32MP13シリーズ」を例に説明していきます。

 まず、基礎知識として、初めてのボード開発でよく起きる開発上の問題点と、マイクロプロセッサのプログラム書き込みの仕組みについて説明します。次に、よく聞かれる質問と回答として、次の項目について解説します。

  • プログラムがメモリに書き込めない
  • 起動しない

初めてのボード開発でのよく起きる開発上の問題点

 マイクロプロセッサを使用したボード開発では、ファームウェアを改変しづらいように、容易に交換可能なSDカードをファームウェア格納メモリとして使用しないケースが多いです。そのため、eMMCなどファームウェアを格納するメモリを基板上に実装することが多く、開発時のプログラムの書き込みは、USB経由で書き込むことになります。

 また、コンソール用のUARTやPMIC接続用のI2Cのピンアサインの変更をした際には、ブートローダーのデバイスツリーのカスタマイズおよびビルドが必要になります。

 マイクロプロセッサでの開発では、eMMCなどの外部メモリへの書き込みとブートローダーのカスタマイズといった、マイコンでの開発にはない項目があり、次のような開発上の問題点があります。

ハードウェアの問題か、ソフトウェアの問題かの切り分け

 マイコンの場合は、プログラムの書き込みの際には、何もソフトのカスタマイズは必要ないのでプログラムの書き込みで失敗すれば、ハードウェアの問題であると判断しやすかったです。しかしながら、マイクロプロセッサの場合はプログラムの書き込み時には、作成したボードに合わせてカスタマイズしたブートローダーが必要であり、新規である部分が、ハードウェア、ソフトウェア、開発環境に渡るため、問題の要因が複数考えられ、切り分けが難しいです。

ブートローダーのデバッグ

 ブートローダーは、はじめにブートするFSBLと呼ばれるブートローダーがCPUの動作に必要なクロックの初期化や、DDRメモリの初期化を行います。STM32MPシリーズでは、TF-AというソフトウェアをFSBLとして使用しています。FSBLによるDDRメモリの初期化がうまく行えなかった場合は、後続としてブートする、セキュアモニターやU-BOOTがブートできません。当然、最後にブートするLinuxカーネルもブートしません。

 このような状況下では、調査のためにマイクロプロセッサ上のU-BOOTやLinux上で動く、便利なデバッグツールを使用することができません。

セキュア領域のブートローダーのデバッグ

 FSBLは、eMMCやSDカードなどに起動メモリから、マイクロプロセッサ内部のSRAM領域にコピーされて実行されます。FSBLのロード先であるプロセッサ内部のSRAM領域は通常、セキュア領域として設定されており、JTAGやSWDといったデバッガーからの外部アクセスおよびU-BOOTやLinuxといった通常領域からのアクセスが禁止されています。ブートローダーのデバッグ時には、ブートローダー自体にJTAGやSWDなどのデバッガーによる外部アクセスを許可するデバッグコードが付加された、デバッグ用のビルド構成でのバイナリを使用する必要があります。

セキュア領域のペリフェラルのデバッグ

 マイクロプロセッサでの開発では、マイコンのそれとは違い、セキュリティ上重要なペリフェラルのレジスタはセキュア領域として設定されています。マイクロプロセッサのペリフェラルのうち、ブートの問題にもかかわる、クロックの有効化やクロックの分周設定を行うペリフェラルのレジスタは通常、セキュア領域として設定されるため、U-BOOTやLinuxといった通常領域からのアクセスが禁止されています。セキュア領域のペリフェラルのレジスタをデバッグするには、ペリフェラルの接続されたAXIバスが、セキュア状態でないとアクセスできません。

 そのため、デバッガーでのアタッチ先CPUがセキュア状態ではなく通常状態の場合、デバッガーでセキュア領域のペリフェラルのレジスタにアクセスしてもバスエラーとなります。この場合のデバッグは、デバッガーのアタッチ先ターゲットをCPUからAXIバスに変更し、AXIバスをセキュア領域に変更する必要があります。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る