ボード立ち上げの概要
この章では、新しいプラットフォーム上でTouchGFXのプログラミングを開始する、ボードの立ち上げフェーズについて解説します。 ボードの立ち上げとは、ボードの必要部品すべてと対応するドライバが正常に機能することを、TouchGFXの導入前に確認することです。
ディスプレイとともに正常に機能するボードがすでにある場合、このフェーズの作業の多くは簡単です。 完全に新規のカスタム・ボードの場合は、このフェーズを完了するには数日を要することが予想されます。 しかし、プラットフォームが不安定では、優れたアプリケーションの作成が困難になるため、通常、この作業は効果をもたらします。 逆に、安定して実績のあるプラットフォームがあれば、アプリケーション作成に集中できます。
この章は、ボード上のハードウェアおよび低レベル・ソフトウェアのコンポーネントが期待通りに動作することを確認するタスクを担当する開発者向けです。 アプリケーションの実際のUI開発のみに携わる開発者は対象としていません。
ボードの立ち上げ時には、ボード上のコンポーネントとペリフェラル、それらすべての間の接続、それらの通信に使用されるプロトコルとそれぞれで使用できる / 必要となるドライバ・コードについて、深く理解している必要があります。
次章「TouchGFX AL(抽象化アブストラクション・レイヤ)開発」では、使用するハードウェアおよびドライバ上でのTouchGFXの動作を可能にするための抽象化レイヤの作成方法について解説します。
作業用ツール
次の表は、STM32ベースのボードの立ち上げに使用する重要なツールの一部を示したものです。
ツール | 説明 |
---|---|
STM32CubeMX | マイクロコントローラの設定と、プロジェクトおよび内部ペリフェラルの初期化ソース・コードの生成のための使いやすいツールです |
STM32Cubeファームウェア・パッケージ | 使用するマイクロコントローラ・ファミリ向けのSTM32Cubeファームウェア・パッケージには、各種ペリフェラルの使用法がわかる多数のサンプル・プロジェクトおよびアプリケーションが含まれています。 |
ベンダのデータシート | ディスプレイやFlashなどの外部デバイスのデータシートには、マイクロコントローラ(例: STM32CubeMXによる)と外部デバイスを適切に初期化するためのタイミングや電圧など、重要な情報が記載されています。 |
ベンダのドライバ・コード | 時間を節約するため、外部デバイスのサンプル・コードをベンダに要求してください。 ドライバ・コードは、多くの場合、STM32マイクロコントローラへの移植が必要ですが、この方がゼロから作成するよりも簡単になることもよくあります。 |
ボードの立ち上げフェーズで実施する作業は、いずれもTouchGFXからは独立しているため、TouchGFXのコードは含めないでください。 ここでの作業および得られるコードは、TouchGFX抽象化レイヤの開発の確固とした基盤となります。
第一の目標は、ハードウェアと低レベルのソフトウェアが最終アプリケーションに対する期待通りに実際に動作することの確認です。
機能の検証
ボードの立ち上げにおいて、1つ以上のテスト・プロジェクトという形で生成されるコードには2つの目的があります。
抽象化レイヤ | ボード初期化コードは、TouchGFX AL、および最終的に機能するUIアプリケーションの構築のための基盤となります。 |
テスト・コード | ボード初期化コードとともに作成される検証コードは、期待通りの動作が得られなかった場合の最後のよりどころになります。 ボードの立ち上げフェーズでは、ボードと各特定コンポーネントが期待通り動作することを確認する、小さな検証プログラムを多数作成します。 これらの検証プログラムは、開発を進める上で極めて貴重なものとなり、何らかの不確かな挙動が見られたときに再利用したり、強化したりすることができます。 |
上記の2つの理由から、検証プログラムを体系的に保存しておくことは極めて有効です。 これによって、後で、テスト・プログラムを再利用できます。 たとえば、ハードウェアの新しいリビジョンをテストする場合や、より大規模なアプリケーションで予期せぬ障害が発生したときに根本原因を究明する場合などに役立ちます。 また、開発中に得られた測定値(たとえばメモリ帯域幅)を、系統的にメモしておくことも推奨します。
全体のプロセス
ユーザのハードウェアの具体的な構成が不明であるため、以下の「立ち上げ方法」ガイドでは、TouchGFXを実行するためのボードの立ち上げと準備に必要な一般的なステップを、段階を追って示しています。
ガイドの各ステップが、ハードウェアやソフトウェアのコンポーネントの特定の1箇所の立ち上げ方法に対応しています。 ハードウェアのカスタム・コンポーネント部分の一例がタッチ・コントローラです。 全体的な目標は、タッチ・コントローラを操作してディスプレイ上の任意のタッチで情報を取得することです。 タッチ・コントローラに送信する具体的なコマンドは、ハードウェアで使用している特定のコントローラによって決まるため、このガイドではそのすべての方法を示すことはできません。 したがって、本ガイドの情報と、使用するタッチ・コントローラのデータシートの情報を組み合わせる必要があります。
Note
- 一度に1ステップずつ実行すること
- 次に進む前に各ステップを徹底的に検証すること
- 意図する動作が得られなかった場合、ガイドをデバッグの手段として使用するか、前のステップに戻ってミスがないかを確認すること
- 予想外の挙動を示しても慌てないこと - ボードの立ち上げはそれほど簡単なタスクではありません。
ガイドの各ステップは、次のように構成されています。
- 動機
このパートでは、ステップについて説明し、ハードウェアでTouchGFXを実行するための準備としてこのステップが重要である理由を示します。 - 目標
このパートでは、このステップの目標の一覧を示します。 検証ポイントの一覧では、実行する必要がある具体的なテストについて詳述します。 これらの検証ポイントにより、ハードウェアでTouchGFXを適切に実行するために必要な要件を、ソフトウェアが実施していることを確認できます。 - 前提条件
ここには、タスクを実行するために必要な項目が列挙されています。 - 作業内容
このパートでは、ハードウェアの設定と使用に必要なソフトウェアの作成方法を、可能な限り具体的に説明します。 ソフトウェアは、使用するハードウェアに大きく依存するため、それほど厳密には説明できないステップもあります。 そのような場合は、よりおおまかにステップを記載しているので、ハードウェアに関連する詳細情報はユーザが自ら収集する必要があります。
個々のハウツー・ステップは次のとおりです。
ステップ | 内容 |
---|---|
プロジェクト作成 | STM32CubeMXに空のプロジェクトを作成します。 |
CPU動作 | マイクロコントローラが目的のスピードで動作していることを確認します。 |
内部RAMに配置したフレームバッファ | 内部RAMにフレームバッファを割り当て、これをディスプレイに送信します。 |
外部RAM | 外部RAMを有効化します。 |
外部RAMに配置したフレームバッファ | フレームバッファを外部RAMに移動して、ディスプレイに送信します。 |
外部Flash(メモリ・マップド・モード) | 外部のメモリマップドFlashを有効化します。 |
外部Flash(非メモリ・マップド・モード) | 外部のブロックモードFlashを有効化します。 |
ハードウェア・アクセラレータ | Chrome-ARTグラフィック・アクセラレータを有効化します。 |
タッチ・コントローラ | タッチ・コントローラとの通信を設定します。 |
物理ボタン | 物理ボタンへのアクセスを設定します。 |
Flashローダ | 外部Flashにデータを書き込む方法を開発します。 |