検索
連載

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

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

Share
Tweet
LINE
Hatena

マイクロプロセッサでのプログラム書き込みの仕組み

 マイクロプロセッサのUSB経由のプログラム書き込みは、次のような手順で実現されています。

  1. マイクロプロセッサ内のROMコードが実行され、BOOTピンの状態を検出し、ブートモードがUSB書き込みモードであれば、USB書き込みモードに遷移します。
  2. USB書き込みモードでは、USB経由でFSBLであるブートローダーTF-Aをプロセッサ内のSRAMに転送します。SRAMに転送されたFSBLは必要なクロックの有効化やI2Cを経由してPMICを操作し、DDRメモリへの供給電圧VDD_DDRをONさせ、DDRメモリの初期化を行います。
  3. USB経由でセキュアモニターであるOPTEEおよび、eMMCなどのメモリへの書き込み処理を実現するために、U-BootというブートローダーをDDRメモリ上に転送します。
  4. DDRメモリ上でOPTEEおよびU-BOOTが実行されます。
  5. U-BOOTはeMMCなどのメモリへアクセスするペリフェラルの初期化をします。
  6. U-BOOTはUSBからプログラム書き換え用のデータを受け取り、eMMCなどのメモリへデータを書き込みます。

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

 プログラムがメモリに書き込めない場合、基板自体が起動できる状態になっていないケースが多いです。そのため、まずは、次の章の”起動しない“の項目を確認してください。基板が起動できる状態になった後での質問と回答は次の通りです。

Q1 eMMCにプログラムを書き込みたいのですが、JTAGやUARTから書き込めません。どうしたらいいですか?

A1 マイコンでの開発では、フラッシュメモリ内蔵マイコンのプログラムを書き換える際に、JTAGやUARTを使うことが一般的ですが、プロセッサの場合、フラッシュメモリは外付けで、数ギガバイト以上の容量を持つことは珍しくありません。プログラム書き込み時に転送するデータサイズも、OSや各種ライブラリを含めた総合プログラムサイズは数百メガバイトを超えることがあります。そのため、JTAGやUARTでの書き換えは、効率の面から、現実的ではありません。

 eMMCのプログラムの書き換えについては、USBOTGを使用して書き換えることを推奨します。STマイクロエレクトロニクスではUSBOTGを使用して、基板上のeMMCやSDカードのプログラムを書き換えるために、STM32CubeProgrammerという無償のソフトを提供しています。STM32MP1やSTM32MP2のプログラム書き換えの際にはSTM32CubeProgrammerを使用して、USBOTG経由でご使用ください。

Q2 eMMCにプログラムを書き込めないのですが、書き込みモードにするなど特定の手順が必要なのでしょうか?

A2 ブートピンの信号がUSBブートモードになっていることを確認します。STのSTM32MP1シリーズではBOOT0-2が全てLowの時にUSBブートモードになります。ブートモードを切り替えた後はRESETボタンを押して、リセットをしてください。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る