2023年9月1日金曜日

TOPPERS/ASP - PIC32MX版 その6

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


雛形プロジェクトの作成

まずは「MPLAB X IDE」を起動して下さい。

前回から続いて作業している場合は、すでに起動していますかね。

画面上部の「File」、「New Project...」メニューを順にクリックしていきます。

「MPLAB X IDE」 - 1


以下のような「New Project」ダイアログが表示されます。

ここから「Categories」リストから「Microchip Embedded」を、「Projects」のリストから「32-bit MPLAB Harmony Project」をそれぞれ選択して、ダイアログ下方の「Next >」ボタンをクリックしてください。

「New Project 」ダイアログ - 1


すると、以下のような表示に切り替わります。

ここでは「Harmony Path:」のテキストボックスの右側のディレクトリボタンをクリックしましょう。

「New Project 」ダイアログ - 2


ディレクトリの選択ダイアログが表示されたはずです。

ここでは、先程インストールした「MPLAB Harmony」の場所を選択しましょう。

特に変わった操作をしていなければ、その場所は以下のパスになります。

このパスを指定したあとは「開く」ボタンをクリックです。


C:\microchip\harmony\v2_06

ディレクトリの選択ダイアログ


元の「New Project」ダイアログに戻ります。

ここで思い出してください。

現在は、TOPPERS/ASPのプロジェクトを作成するのではなく、そのために必要な「MPLAB Harmony」のソースコードを出力させるための雛形プロジェクトを作成する作業をしています。

したがって、今回作成するプロジェクト名、すなわち「Project Name:」のテキストボックスには「Hinagata」とでも入力しておきましょう。

「New Project 」ダイアログ - 3


続いて「Target Board」のコンボボックスでは、今回使用する評価ボードの「PIC32MX1/2/5 Starter Kit」を選択します。

「New Project 」ダイアログ - 4


以下のように正しく設定できたら、ダイアログ下方の「Finish」ボタンをクリック!

「New Project 」ダイアログ - 5


なにか「MPLAB X IDE」でワチャワチャ始まりました!

「MPLAB X IDE」 - 2


画面下方の「Output」エリアでは、次々とメッセージが表示されていますね。

「仕事してます」感バリバリ。

「MPLAB X IDE」 - 3


この処理の終盤に、以下のようなダイアログが表示されたら「Save」ボタンをクリックしましょう。

「Save Configuration」ダイアログ - 1


さて、処理が終了すると、メインの画面は以下のような表示になっていると思います。

ここで「Harmony Framework Configurarion」の項目をクリックしてください。

「MPLAB X IDE」 - 4


「Harmony Framework Configurarion」の項目が展開されて、更に色々な項目が出てきましたね。

その中で「Drivers」という項目があるので、これをクリックして展開します。

「MPLAB X IDE」 - 5


TOPPERS/ASPは、外部のハードウェアとしてOSタイマーである「Timer」と、デバッグシリアルに使用する「USART」の2つが必要です。

(正確には、「割り込み」もそうですが、ここでは特に意識する必要はありません。)

では、まずOSタイマーに使用する「Timer」の設定からいきましょう。

展開された「Drivers」という項目の中に「Timer」という項目がありますので、これをクリックして展開します。

「MPLAB X IDE」 - 6


すると、なにやら細々した項目が展開されましたね?

これを以下の通りに設定してください。

間違えると、後々面倒になりますのでここは慎重に!

「Timer」の設定


次にデバッグシリアルに使用する「USART」の設定にいきましょう。

展開された「Drivers」という項目の中に「USART」という項目がありますので、これをクリックして展開します。

「MPLAB X IDE」 - 7


またまた細々した項目が展開されました。

これを以下の通りに設定してください。

こちらも間違えないよう慎重にお願いします!

「USART」の設定


まだまだ、作業は続きます。

次は、PIC32MXマイコンのピンの設定です。

メインの画面のタブを現在の「Options」から「Pin Disgram」に切り替えてください。

「MPLAB X IDE」 - 8


すると以下のようにマイコンの絵が出てきましたね。

この中で74番ピン「RC14」と73番ピン「RC13」に注目してください。

これらのピンは、現在のデフォルト状態では何も機能が割り振られていない(GPIO入力?)ので、これらをUSART、いわゆるシリアル通信のためのRX(受信)とTX(送信)として使えるように設定します。

ピンの設定 - 1


まずは、74番ピン「RC14」をUSARTのRX(受信)に設定します。

ピンの部分をクリックすると、ドロップダウンリストが表示されます。

ここでは、このピンに割り当て可能な機能が列挙されます。

今回はUSARTのRX(受信)、すなわち「U1RX」を選択します。

ピンの設定 - 2


次は、73番ピン「RC13」をUSARTのTX(送信)に設定します。

同じ要領でUSARTのTX(送信)、すなわち「U1TX」を選択します。

ピンの設定 - 3


以下のように、74番ピンに「U1RX」、73番ピンに「U1TX」と、それぞれ表示が変わったでしょうか?

ここはミスるとシリアル通信ができなくなるなど、後々非常に厄介なので必ずご確認を!

ピンの設定 - 4


さて、以上で全ての設定が終了です。

メインの画面の左上のフロッピーディスクのマークをクリックして設定を保存しましょう。

「MPLAB X IDE」 - 9


以下のようなダイアログが表示されたら「Save」ボタンをクリックして、この雛形プロジェクトを保存しましょう。

「Save Configuration」ダイアログ - 2


もしこの先、無事に「TOPPERS/ASP」の起動に成功して、イザ何かを作ろう!となった場合、今回追加した「MPLAB Harmony」ライブラリだけでは絶対に足らなくなることでしょう。

評価ボードにセンサーを繋げて、そのセンサーとSPIで通信するとか、AD変換を使いたいだとか…。

その際には、再び今回の手順で必要になった「MPLAB Harmony」ライブラリを追加して、ソースコードを吐き出させて、更にそれを「TOPPERS/ASP」のソースツリーにコピーしなければなりません。

そういう意味では、この雛形プロジェクト、結構使用頻度が高くなるかもしれませんよ?

大切に取っておきましょう!


ではいよいよ、この雛形プロジェクトからソースコードを吐き出させてみましょう。

先程のフロッピーディスクのマークの右側、「歯車→Code」というアイコンのボタンをクリックします。

「MPLAB X IDE」 - 10


以下のような「Generate Project」ダイアログが表示されるので「Generate」ボタンをクリック!

「Generate Project」ダイアログ - 1


以下のように雛形プロジェクトからソースコードが生成されていきます。

「Generate Project」ダイアログ - 2


ソースコードの生成が終わると「Generate Project」ダイアログは自動的に消えます。

これで雛形プロジェクトから必要なソースコードを抽出できました。

雛形プロジェクトのソースコードは、以下のディレクトリに出力されています。


C:\microchip\harmony\v2_06\apps\Hinagata


どんなものが出力されているのか?

ちょっと見てみるのも良いでしょう。


さて次回は、この雛形プロジェクトから必要なソースコードを「TOPPERS/ASP PIC32MX版」のソースツリーにコピーし、コマンドのラインでOSのビルドを透すところまでやっていきましょう!

ここまで出来てしまえば、面倒くさいのはもう少しで終わりです。

最後までお付き合いいただけると嬉しいです。


<続く>

2023年8月25日金曜日

DIYレトロゲーム機「Nibble」の開発環境構築 その1

「Nibble(ニブル)」の開発環境

クラウドファンディングサイト「Makuake」でオーダーした、DIYレトロゲーム機「Nibble(ニブル)」。

Nibble


以前このブログで、キットの内容組立てて電源を入れるまでを紹介させていただきました。

執筆時点では、まだコチラで購入できますよ~。

最初から入っているゲームは一通り遊んでみたので、次は自分でプログラミングです!

とりあえず、簡単なサンプルプログラムをビルド、転送して、その後、工場出荷状態に戻すまでを確認してみようと思いました。

工場出荷状態に戻せないと、せっかく最初から入っていたゲームが遊べなくなってしまうので、この確認は重要です。

この「Nibble」は、知育玩具という扱いなので、子供向けには「CircuitBlocks」(ブロックを組み合わせるビジュアル言語)という開発環境を使用することが推奨されています。

この「CircuitBlocks」については付属のドキュメント - コーディング最初のステップ - Nibble_JP coding-first steps.pdf - を参照してください。

ここでは、C++での開発環境構築に挑戦します!

その場合の開発環境としては「Arduino IDE」と「VisualStudio Code」の2種類が使えるようです。

両方とも見ていきましょう。


Arduino IDEでの開発

付属のドキュメント - セットアップガイド - Nibble_JP Setup Guide.pdf - の通りに開発環境を構築してみました。

特に問題は無さそうですが、このドキュメント、サンプルのソースコードが文字欠け、文字化けしてますね!

正しくは、以下の通りです(だと思います)。

  1. #include <Nibble.h>
  2. Display* display;
  3. Sprite* sprite;
  4. void setup() {
  5.   // put your setup code here, to run once:
  6.   Nibble.begin();
  7.   display = Nibble.getDisplay();
  8.   sprite = display->getBaseSprite();
  9.   sprite->clear(TFT_BLACK);
  10.   sprite->setTextColor(TFT_WHITE);
  11.   sprite->setTextFont(2);
  12.   sprite->setCursor(0, 0);
  13.   sprite->print("Hello World!");
  14.   display->commit();
  15. }
  16. void loop() {
  17.   // put your main code here, to run repeatedly:
  18.   delay(1000);
  19. }


このスケッチは、そのままビルドが通りました!

こんな感じ。

Arduino IDE - 1


ドキュメントと異なるのは、今回はまだパソコンと「Nibble」を接続して、このスケッチを転送していないことです。

今の段階では工場出荷状態に戻す方法が分からないので、このプログラムを「Nibble」に書き込んでしまったら、元に戻せなくなってしまうからです!

なので今回は、ビルド&転送の「→」ではなく、ビルドの「V」をクリックするだけ!

Arduino IDE - 2


VisualStudio Codeでの開発

付属のドキュメント - プログラミングガイド - Nibble_JP Programming Guide.pdf - の通りに開発環境を構築してみました。


が…。


これが難題!

「VisualStudio Code」と、その拡張「PlatformIO」をインストールするまでは良かったんです。

これらの作業が終わって「VisualStudio Code」を再起動します。

そして、画面左側の「アリの顔面」マークをクリックします。

VisualStudio Code - 1


コイツね。

アリの顔面


次は、切り替わった画面左側の階層構造のリストから「QUICK ACCESS」→「PIO Home」→「Open」をクリックです。

VisualStudio Code - 2


以下のような表示に切り替わりますので「New Project」をクリック。

VisualStudio Code - 3


続けて、ドキュメント通りにプロジェクトを作成していきます。

必要な項目を埋めて「Finish」ボタンをクリック!

VisualStudio Code - 4


途中の以下のような表示も「Yes, I trust the authers」ボタンをクリックします。

VisualStudio Code - 5


さて、ここでドキュメントに不穏な表記が!

「簡単なプログラムの作成」の章です。

それによると…


ここで、必要なライブラリや設定ファイルをGitHubのリポジトリからダウンロードし、プロジェクトディレクトリに配置する必要があります。


…???

なんのこっちゃ!?

じゃあ、その必要なライブラリとか設定ファイルとか、GitHubのリポジトリの場所は?

リンクも何の表記もありません!


なんでソコの説明を端折っちゃうかな~?


まあいいや、と作成されたプロジェクトの「main.cpp」を開いて…

VisualStudio Code - 6


ここに「Arduino IDE」で書いたスケッチと同じソースをコピペしてビルドすれば動くやろ!

ビルドコマンドのボタンは、画面下部にある小さなチェックマークです。

VisualStudio Code - 7


これをクリック!

VisualStudio Code - 8


結果…


エラー発生でビルド通らず!

撃沈!!

VisualStudio Code - 9


…うん。

まあ。

人生そんなもんだよ。


...しかし、諦めずにそれから色々調べました!

その甲斐あって、以下の手順を踏めばビルドが通るようにはなりました。


まず、先程のビルドのエラーメッセージから、何らかのファイルが不足していると推察。

今の時点で、この「Hello World」プロジェクトは以下のディレクトリに生成されているハズです。


C:\Users\<ユーザー名>\Documents\PlatformIO\Projects\Hello World


このディレクトリの中の「lib」というディレクトリにご注目を。

「Hello World」プロジェクトのディレクトリ


この「lib」ディレクトリの中には「README」ファイル以外は何も入っていません。

「lib」ディレクトリ - 1


ここに不足しているファイルを配置すれば良いのでは?

足りないファイル(ていうかライブラリ)は「Arduino IDE」で使っているものを持ってきましょう!

その場所は、普通にインストール作業を進めて頂いた場合は、以下のディレクトリに入っています。


C:\Users\<ユーザー名>\AppData\Local\Arduino15\packages\cm\hardware\esp8266\1.2.1\libraries


…トライ&エラーを繰り返しながら、少なくともこの中にある以下の3つのディレクトリを「Hello World」プロジェクトの「lib」ディレクトリにコピーすればよいことが分かりました。


・TFT_eSPI

・CircuitOS

・Nibble

「lib」ディレクトリ - 2


その後「Hello World」プロジェクトのディレクトリ直下にある「platformio.ini」というファイル…。

VisualStudio Code - 10


これを以下のように編集します。

  1. ; PlatformIO Project Configuration File
  2. ;
  3. ; Build options: build flags, source filter
  4. ; Upload options: custom upload port, speed and extra flags
  5. ; Library options: dependencies, extra library storages
  6. ; Advanced options: extra scripting
  7. ;
  8. ; Please visit documentation for the other options and examples
  9. ; https://docs.platformio.org/page/projectconf.html
  10. [env:esp12e]
  11. platform = espressif8266
  12. board = esp12e
  13. framework = arduino
  14. ; 以下追記!
  15. build_flags =   -Os
  16.                 -g
  17.                 -DCIRCUITOS_LITTLEFS
  18.                 -DCIRCUITOS_TONE
  19.                 -DCIRCUITOS_LOWRAM
  20.                 -DST7735_DRIVER
  21.                 -DTFT_WIDTH=128
  22.                 -DTFT_HEIGHT=128
  23.                 -DST7735_GREENTAB128
  24.                 -DTFT_RGB_ORDER=TFT_BGR
  25.                 -DTFT_MOSI=13
  26.                 -DTFT_SCLK=14
  27.                 -DTFT_MISO=-1
  28.                 -DTFT_CS=-1
  29.                 -DTFT_DC=2
  30.                 -DTFT_RST=-1
  31.                 -DSPI_FREQUENCY=27000000
  32.                 -DLOAD_GFXFF
  33. build_unflags = -Werror=return-type


この状態で、再ビルドです!


うぉし!

ビルドが通りました~!!

VisualStudio Code - 11


この「VisualStudio Code」でビルドして生成された「Hello World」プログラムのバイナリと、冒頭の「Arduino IDE」で生成したスケッチのバイナリは、全く同じではないにしろ、似たようなファイルサイズです。

なので、このまま転送して「Nibble」で動作させれば同様の動きをするものと思われます。

多分「Nibble」の画面に黒をバックに白地で「Hello World!」と表示されるのかな?


さて、思いのほか情報が少なくて「VisualStudio Code」の方は、いきなりドツボにハマってしまいました。

以降は、そのソースコードの入手法も含め、工場出荷状態に戻す方法を探っていきたいと思います。

そうしないと、オリジナルのプログラムを動かすこともできませんからねぇ...。

頑張ります!


<続く>

2023年8月15日火曜日

TOPPERS/ASP - PIC32MX版 その5

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


MPLAB Harmonyとは?

MPLAB Harmony」とは、ドライバ、プロトコル、スタック、コーディングユーティリティ、ビルドシステムなどを開発者に提供するソースコードのライブラリです。

いわゆる純正のライブラリパッケージであり、これを使用するとCPUに内蔵されているペリフェラル(周辺機器)を簡単に利用することができるというものです。

今回の「TOPPERS/ASP PIC32MX版」のカーネル内でも、割り込み、タイマーやシリアル通信ドライバなどは、この「MPLAB Harmony」のドライバを使用しています。

ところが、この「MPLAB Harmony」のソースコードのライセンスの条項が不明瞭なために再配布できません。

そのため「TOPPERS/ASP PIC32MX版」のソースコードが不完全なものとなり、そのままではビルドが通らず、通すためには手動で不足分のソースコードをコピーしていただくという手間を強いることになってしまいました。

申し訳ありません…。

では、その「MPLAB Harmony」のソースコードを何処から入手すれば良いのか?

そのためには、インストールした「MPLAB X IDE」上で雛形となるプロジェクトを作って、そこで生成された「MPLAB Harmony」のソースコードを「TOPPERS/ASP PIC32MX版」のソースツリーにコピーするという方法を採ります。

ちなみに、この「MPLAB Harmony」は、すでにインストール済の「MPLAB X IDE」には付随しておらず、別途ダウンロードとインストールが必要になります。

今回はやたらとダウンロード/インストールするものが多いですね。

こらえてつかぁさい…。


MPLAB Harmonyのインストール

「MPLAB Harmony」は、以下のページでダウンロードします。


https://www.microchip.com/en-us/tools-resources/configure/mplab-harmony/version-2

このページの下の方に行ってもらって…。

Harmonyダウンロードページ - 1


「MPLAB Harmony Integrated Software Framework v2.06 Windows」という表記の右側の「Download」という表示をクリックします。

Harmonyダウンロードページ - 2


ダウンロードが完了すると「harmony_v2_06_windows_installer.exe」というファイルが生成されますので、これをダブルクリック!

以下のようにインストーラが起動します。

ここでは「Next>」ボタンをクリックです。

Harmonyインストーラ - 1


同意せざるを得んでしょう…。

ラジオボタンを「I accept the agreement」に選択してから「Next>」ボタンをクリックしましょう。

Harmonyインストーラ - 2


しばらくは「Next>」ボタンを連打です。

Harmonyインストーラ - 3


Harmonyインストーラ - 4


Harmonyインストーラ - 5


ようやくインストール作業が開始されたようです。

これも、そこそこ時間がかかります。

終わるまでTVでも観ていてください。

Harmonyインストーラ - 6


終了すると以下のような表示となります。

Finish」ボタンをクリックしてインストーラを終了させましょう。

Harmonyインストーラ - 7


これで「MPLAB Harmony」のインストールは終了です。

しかし、これを使うにはまだまだ作業が必要です!


MPLAB HarmonyのIDEへの登録

すでにインストール済みの「MPLAB X IDE」は、先程インストールしたばかりの「MPLAB Harmony」の存在を知りません。

(大体、この時点で「MPLAB X IDE」は一回も起動させていませんしねぇ。)

ですので「MPLAB X IDE」に「MPLAB Harmony」の存在を知らせて、それを使えるようにする作業が必要です。

そこで、まずは「MPLAB X IDE」を起動します。

普通にインストールした場合、PCのデスクトップに「MPLAB X IDE」のショートカットがあるはずですので、それをダブルクリックします。

すると、以下のようなスプラッシュスクリーンが表示されます。

「MPLAB X IDE」スプラッシュスクリーン


しばらくすると、まっさらな状態のIDEが立ち上がります。

キレイでシッカリ作られていそうなIDEですね!

「MPLAB X IDE」 - 1


次に「MPLAB X IDE」上部の「Tools」メニューから「Plugins」をクリックします。

「MPLAB X IDE」 - 2


以下のようなダイアログが現れます。

このダイアログの「Download」タグをクリックしましょう。

「Plugins」ダイアログ - 1


以下のように表示が切り替わりましたか?

次は、ダイアログの左上の「Add Plugins...」ボタンをクリックです。

「Plugins」ダイアログ - 2


新たに開いたダイアログで「MPLAB Harmony」のプラグイン・ファイル(.nbm)を選択します。

つまり、このプラグインをインストールすることで「MPLAB X IDE」が「MPLAB Harmony」を認識し、協調して働くことができるようになるという寸法です。

では、そのプラグイン・ファイルが何処にあるかっていうと、以下のパスです。


C:\microchip\harmony\v2_06\utilities\mhc


「MPLAB Harmony」は、ここにインストールされていたのですね。

そこで、以下のダイアログで上記のパスまで移動し「com-microchip-mplab-modules-mhc.nbm」という長ったらしい名前のファイルを選択し、右下の「開く」ボタンをクリック!

「Add Plugin」ダイアログ


以下のような表示になったでしょうか?

それでは満を持してダイアログ左下の「Install」ボタンをクリックです!

「Plugins」ダイアログ - 3


すると、以下のように「Plugin Installer」なるものが立ち上がります。

Next>」ボタンをクリックしましょう。

「Plugin Installer」 - 1


ああ、いつものアレだ…。

同意のチェックボタン、「Install」ボタンの順にクリックです。

「Plugin Installer」 - 2


プラグインのインストールが終わると、以下の表示となります。

Finish」ボタンをクリックしてください。

「Plugin Installer」 - 3


その後「MPLAB X IDE」は自動的に終了しますが、ビックリしないでください。

しばらく待っていると再起動します。

これで無事「MPLAB Harmony」のIDEへの登録は完了です!


このマイコンは、開発を始めるまでの作業が多いですね!

この辺り、もうちょっとスマートになると良いのですが…。

次回からは「TOPPERS/ASP PIC32MX版」をビルドするのに必要なソースコードを回収する作業を始めましょう。


<続く>

MLAA License

 名称:「MLAAライセンス」(MLAA) タイプ: ・コピーレフト…× ・ライセンス文の掲示…〇(ソースコード頒布のみ) ・コピーライト(著作権)…〇(ソースコード頒布のみ) ・その他…〇(バイナリ頒布のみ) 原文: Copyright: 2010 Jorge Jimenez ...