2024年2月18日日曜日

TOPPERS/ASP - Arduino UNO R4版 その7

前回からの続きです。

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


プログラムの転送とデバッグ

ターゲットの「Arduino UNO R4」とデバッガの「E2 emulator Lite」を前々回作成したケーブルで接続します。

こんな感じ。

「Arduino UNO R4」と「E2 emulator Lite」の接続例


これからTOPPERS/ASPのサンプルプログラムを動かす際には、動作確認のためにどうしてもシリアルポートが必要です。

そこで、以下のような市販のUSB/シリアル通信変換ケーブルを用意します。

市販のUSB/シリアル通信変換ケーブル


作成したケーブルからシリアル通信用のTXD)、RXD)、GND)の線を出しておきましたよね?

それらを以下のように接続します。

作成したケーブルからのシリアル通信用の線


USB/シリアル通信変換ケーブル側の配線は、上からTXD、RXD、GND順番でこんな感じです。

USB/シリアル通信変換ケーブル側の配線


続いて、このUSB/シリアル通信変換ケーブルをパソコンに繋いでみましょう。

パソコン上でデバイスマネージャーを開きます。

ポート(COMとLPT)のサブカテゴリーとして「USB Serial Port」というポートが追加されているはずです。

(私のパソコンでは、「COM15」として認識されていますね。)

このポート番号、覚えておいて下さい。

デバイスマネージャー


ここで「E2 emulator Lite」とパソコン、「Arduino UNO R4」とパソコンをそれぞれUSBケーブルで接続しましょう。

厄介なのは「E2 emulator Lite」がUSB mini-B、「Arduino UNO R4」がUSB Type-Cと、異なるケーブルが必要なことです。

それぞれを接続すると、ご覧の通り通電します。

「E2 emulator Lite」とパソコン、「Arduino UNO R4」とパソコンをそれぞれ接続


次に「TeraTerm」をご用意ください。

インストールしていない方は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「TeraTermの導入」の項目を参考にしてください。

もちろん、シリアル通信のターミナルであれば、他のものもお使いいただけます。

今回のTOPPERS/ASPのサンプルプログラムは、シリアル通信のメッセージを出力しますので、先程「USB Serial Port」として認識されたシリアルポート番号でターミナルを立ち上げておきましょう。

設定は、こんな感じです。

ボーレートは「9600」です。

(私のパソコンは、USB/シリアル通信変換ケーブルをCOM15として認識していました。)

TeraTerm - シリアルポートの設定


さて、「e2 Studio」に戻りましょう。

まだサンプルプログラムをビルドしていない場合は、画面右側の「ビルド・ターゲット」タブの中、「OBJ」ディレクトリ直下の「all」をダブルクリックして、ビルドを完了させましょう。

<追記>

この記事を書いている過程で、雛形プロジェクトの作成時に「Arduino UNO R4」のクロック設定の作業を忘れていることに気が付きました。

大変お手数ですが「TOPPERS/ASP - Arduino UNO R4版 その3~クロックの設定」を追記しましたので、こちらに戻ってクロック設定を行ってから、再び生成された雛形プロジェクトのソースコードをTOPPERS/ASPのディレクトリにコピーしてください。

「e2 Studio」 - 1


次にデバッガの設定を行います。

画面上部にある緑色の「虫マーク」。

その脇に「▼」ボタンがありますので、それをクリック。

そこで現れた「デバッグの構成」という項目をクリックしましょう。

「e2 Studio」 - 2


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

左側のリストから「Renesas GDB Hardware Debugging」という項目をダブルクリックしてください。

「デバッグ構成」ダイアログ - 1


ダイアログ右側がガラリと変わりましたね?

「デバッグ構成」ダイアログ - 2


この「デバッグ構成」ダイアログの各項目に対し、以下の設定を入力します。


名前:<任意の構成名(ここでは「OBJ」)>

プロジェクト:<プロジェクト名(ここでは「asp_1.9.2」)>

C/C++アプリケーション:C:\cygwin64\home\<ユーザ名>\asp_1.9.2\OBJ\asp.exe

Build Configuration:Use Active

「自動ビルドを無効にする」を選択

「デバッグ構成」ダイアログ - 3


お次は現在の「メイン」タブから「Debugger」タブへクリックして切り替えます。

「デバッグ構成」ダイアログ - 4


新しく現れた各項目に対し、以下の設定を入力します。


Debug hardware:E2 Lite (ARM)

Target Device:R7FA4M1AB

「デバッグ構成」ダイアログ - 5


さて、お次は現在の「GDB  Settings」タブから「Connection Settings」タブへクリックして切り替えます。

「デバッグ構成」ダイアログ - 6


たくさん設定項目があるんですが、ここでは「エミュレーターから電源供給」の項目だけは忘れずに「いいえ」にしておいて下さい。

「デバッグ構成」ダイアログ - 7


最後にもう一丁!

現在の「Debugger」タブから「共通」タブへクリックして切り替えます。

「デバッグ構成」ダイアログ - 8


エンコードの設定で「その他」に選択し、文字コードを「UTF-8」に設定してあげて下さい。

これをしないと、デバッガーからの日本語メッセージが文字化けしてしまいます。

これでよ~やく、ダイアログ下部の「適用」ボタンと「デバッグ」ボタンを順にクリックすることで、デバッガーが起動しプログラムの転送が開始されます。

「デバッグ構成」ダイアログ - 9


プログラムの転送が終わると、以下のようにスタートアップ・アドレスでプログラムが止まった状態になります。

「e2 Studio」 - 3


ここからプログラムを続行してみましょう。

画面上部の「」ボタンをクリックすると、プログラムが続行されます。

「e2 Studio」 - 4


はい、ここで長らく放置していた「TeraTerm」を見てみましょう。

以下のように、サンプルプログラムが動作していることが確認できます。

TeraTermの表示


プログラムを停止する場合は、画面上部の「」ボタンをクリックします。

停止させてみましょう。

「e2 Studio」 - 5


ついでに「e2 studio」の表示を「デバッグモード」から「C/C++モード」に変更します。

「e2 studio」の画面右上のボタンで切り替えができます。「C/C++」ボタンをクリックします。

「e2 Studio」 - 6


ブレークポイントを仕掛けましょう。

画面右の「プロジェクト・エクスプローラー」のソースコードリストの中から「sample1.c」をダブルクリックし、ソースコードを表示します。

このソースコードの丁度中盤くらい、メインタスクの始めに仕掛けましょうか。

ブレークポイントは、ソースコードビューの左端をダブルクリックすることにより丸が表示され、セットすることができます。

(解除したい場合もダブルクリックします。丸が消えます。)

「e2 Studio」 - 7


これで本当にブレークポイントがかかるのか、試してみましょう。

画面上部にある緑色の「虫マーク」。

その脇に「▼」ボタンがありますので、それをクリック。

すると今後は、さっき色々と入力した「OBJ」のデバッグ設定が登録されていますので、これをクリックすると、デバッガが起動します。

「e2 Studio」 - 8


しばらくして、プログラムの転送と書き込みが完了すると、前と同じようにスタートアップ・アドレスでプログラムが停止しますので、画面上部の「」ボタンをクリックして、プログラムを続行させます。

「e2 Studio」 - 9


程なくして、以下のように正しくブレークポイントを仕掛けた位置でプログラムが停止するはずです。

ここからは、「F6」キーでステップオーバー、「F5」キーでステップインなど、おなじみの操作が使用できます。

因みに、ステップオーバーやステップインなどを行っている時に命令が飛んでしまったり前後したりする場合は、最適化のせいです。

デバッグ時は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「サンプルプログラムのデバッグ」の項目を参考に最適化を解除しましょう。

「e2 Studio」 - 10


さてさて、これでTOPPERS/ASPをビルドして動かすところまで、一通りの説明ができたと思います。

次回は、応用編。

このTOPPERS/ASPとRenesas社純正のライブラリパッケージ「Flexible Software Package (FSP)」を組み合わせて使う方法について書いていけたらなぁ…と思います。

豊富なライブラリが使えるようになれば、電子工作の幅が広がりますよ!


<続く>

2024年2月11日日曜日

TOPPERS/ASP - Arduino UNO R4版 その6

前回からの続きです。

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


プロジェクトの作成

前々回までの作業で、開発環境をインストールし、Arduino UNO R4版TOPPERS/ASPのソースコードをダウンロードし、それに雛形プロジェクトから抜き出したソースコードを補填し、それをCygwinターミナルでビルドするまでを行いました。

そこで、今回は「e2 studio」上でTOPPERS/ASPのビルドが行えるようにプロジェクトを作成しましょう。

まずは「e2 studio」を立ち上げて下さい。

そして、画面左上のメニューから「ファイル」→「新規」→「プロジェクト」の順にクリックしていきましょう。

「e2 studio」 - 1


以下のダイアログが表示されたら、リストボックスの中の「c/c++」ディレクトリのアイコンをクリックしてください。

「新規プロジェクト」ダイアログ - 1


すると「c/c++」ディレクトリの以下の項目が展開されます。

今度は「Makefile Project with Existing Code」の項目をクリックして選択し、ダイアログ下部の「次へ」ボタンをクリックします。

「新規プロジェクト」ダイアログ - 2


ダイアログが以下の表示に切り替わったら必要事項を入力します。

ここでは、以下の通り。


プロジェクト名:<任意のプロジェクト名(ここでは「asp_1.9.2」)>

既存のコードの場所:C:\cygwin64\home\<ユーザ名>\asp_1.9.2

インデクサー設定に対するtoolchain:<なし>


入力が終わったら「終了」ボタンをクリックします。

「新規プロジェクト」ダイアログ - 3


その後は元の画面に戻ります。

もし「e2studio」が「FSP Configuration」モードになっている場合は「C/C++」モードに切り替えましょう。

この切り替えは、画面右上の「C/C++」ボタンで行います。

クリックしてみましょう。

「e2 studio」 - 2


左側の「プロジェクト・エクスプローラー」というタブの中には、元からあった「Hinagata」プロジェクトのディレクトリと、先程入力したプロジェクト名(つまりは「asp_1.9.2」)のディレクトリが追加され、表示されているはずです。

「e2 studio」 - 3


次に、画面上部のメニューから「ウィンドウ」→「ビューの表示」→「ビルドターゲット」の順にクリックしていきましょう。

「e2 studio」 - 4


これにより、画面下右側のウィンドウに「ビルドターゲット」タブが追加されたはずです。

「e2 studio」 - 5


以降の作業は、このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのデバッグ)の「プロジェクトのクリーンとビルド」の項目を参考に続行してください。

この「e2 studio」は、Eclipseベースなので、上記のページと同じ方法で作業を続行できます、

但し、文中の「Makeターゲット」タブは、先程表示させた「ビルドターゲット」タブに置き換えてお読みください。

名称は違いますが、これらのタブは同じ働きをするものです。

「e2 studio」の画面右側に以下のようなアイコンが表示されて、これらをダブルクリックすることによりビルドができるまでを確認してください。

「e2 studio」 - 6


「realclean」や「all」など、アイコンをダブルクリックすることにより、その操作に応じたメッセージが画面下部の「コンソール」タブ内に表示されるはずです。

「e2 studio」 - 7


次回はいよいよ実機へプログラムを転送して、実行/デバッグを行っていきます!


<続く>

2024年2月4日日曜日

「pcDuino3」でYocto Project その7

前回からの続きです。

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


「local.conf」の更新

いよいよ「pcDuino3」のLinuxディストリビューションをビルドしたいと思うのですが、最後の…というより最も重要な作業が残っています。

それは「local.conf」というファイルを「pcDuino3」のための内容に更新することです。

その「local.conf」が何処にあるかというと、以下のパスに生成されているはずです。


/home/yocto/poky/build/conf

ファイル・ブラウザ - 1


このファイルは「Yocto Project」を導入した後に初めて「$ source oe-init-build-env」を実行した際に生成された「build」ディレクトリに含まれています。

内容は、以下の通り…といってもゴチャゴチャしていて難しそうです。

「local.conf」の内容


今はあまり深入りせずに「pcDuino3」のディストリビューションを作るための要点だけに集中しましょう。

まずは、以下の箇所をご覧ください。

「local.conf」の16行から始まる「Machine Selection」という部分からです。

最後の行にご注目。

なにやら「MACHINE」という変数に「qemux86-64」という文字列を代入していますね。

  1. #
  2. # Machine Selection
  3. #
  4. # You need to select a specific machine to target the build with. There are a selection
  5. # of emulated machines available which can boot and run in the QEMU emulator:
  6. #
  7. #MACHINE ?= "qemuarm"
  8. #MACHINE ?= "qemuarm64"
  9. #MACHINE ?= "qemumips"
  10. #MACHINE ?= "qemumips64"
  11. #MACHINE ?= "qemuppc"
  12. #MACHINE ?= "qemux86"
  13. #MACHINE ?= "qemux86-64"
  14. #
  15. # There are also the following hardware board target machines included for
  16. # demonstration purposes:
  17. #
  18. #MACHINE ?= "beaglebone-yocto"
  19. #MACHINE ?= "genericx86"
  20. #MACHINE ?= "genericx86-64"
  21. #MACHINE ?= "edgerouter"
  22. #
  23. # This sets the default machine to be qemux86-64 if no other machine is selected:
  24. MACHINE ??= "qemux86-64"


これは、「QEMU」というオープンソースのエミュレータ(今使っている「VMware」みたいなものですね!)で動作するのインテルx86-64アーキテクチャ用のLinuxディストリビューションを選択する、という意味です。

つまり「Yocto Project」は、デフォルトの状態で「bitbake」すると「QEMU」用のディストリビューションが作成されるということになります。

このことから、この「local.conf」というファイルは、作ろうとしているLinuxディストリビューションの各種設定を記述するファイルであると推測できます。

というわけなので「local.conf」を「pcDuino3」で動くようなLinuxディストリビューションを作成できるように修正していけばよいのです。

まずは手始めに、今「qemux86-64」となっている「MACHINE」変数を変更する必要があります。

ところで、このqemux86-64」という文字列の根拠は何でしょうか?

実は、これは同名の設定ファイルを意味しています。

前回のレイヤーの話で触れた「meta~」というディレクトリ。

これらの中には「conf」というディレクトリと、その下に「machine」というディレクトリを持つものがあります。

例えば「meta」というディレクトリの中には「conf」というディレクトリがあって、さらにその下に「machine」というディレクトリが存在します。

この中には、多くの設定ファイル「~.conf」が置かれており、デフォルトで「MACHINE」変数に設定されている「qemux86-64.conf」も存在しています。


/home/yocto/poky/meta/conf/machine

ファイル・ブラウザ - 2


興味のある方は、この設定ファイルの中を覗いてみてください。

つまり「pcDuino3」用の設定ファイルを見つけて、そのファイル名を「local.conf」の中で「MACHINE」変数に代入すればよさそうです。

いままでの作業で、この設定ファイルが存在してそうなレイヤー、もしくは「mata~」ディレクトリといえば…「meta-sunxi」あたりが臭そうですね。

というわけで「meta-sunxi」ディレクトリを開いてみると…あった!

「meta~/conf/machine」のパターンです!


/home/yocto/poky/meta-sunxi/conf/machine

ファイル・ブラウザ - 3


この中に「pcDuino3」用の設定ファイルがあれば楽なんだけど…。

あーありました!!

その名もズバリ「pcduino3.conf」!


/home/yocto/poky/meta-sunxi/conf/machine

ファイル・ブラウザ - 4


では、この「pcduino3.conf」を「MACHINE」変数に代入するよう「local.conf」を修正しましょう。

「local.conf」の37行から、以下のように修正して保存してください。

  1. #
  2. # This sets the default machine to be qemux86-64 if no other machine is selected:
  3. MACHINE ??= "pcduino3"
  4. #MACHINE ??= "qemux86-64" コメントアウト


「pcDuino3」用ディストリビューションのビルド

それでは、早速「pcDuino3」用のLinuxディストリビューションをビルドしましょう!

「/home/yocto/poky/build」に移動して以下のコマンドを入力します。

エラーが出る場合は、ホームから「$ cd poky/」でpokyディレクトリへ移動して「$ source oe-init-build-env」で環境変数を設定するのをお忘れなく!


$ bitbake core-image-minimal

ターミナル - 1


以前にも味わったので嫌な思い出があるかもしれません。

そう…これは終了までに物凄い時間がかかるのです。

というわけで、今日は寝ちゃいましょう…。


....

zzzz

....

起床!


警告は出ているものの無事終了のようです。

ターミナル - 2


以下のディレクトリを開いてください。

色々できてると思います。


/home/yocto/poky/build/tmp/deploy/images/pcduino3

ファイル・ブラウザ - 5


「pcDuino3」起動用SDカードの作成

さて、今回はこのできあがったLinuxディストリビューションのイメージファイルを「bmaptool」というコマンドでSDカードに書き込みたいと思います。

イメージファイルを書き込んだSDカードを「pcDuino3」に挿入して、Linuxを起動させようという目論見です。

この「bmaptool」で使用するイメージは「WIC」形式(「~.wic」)のファイルでなければいけません。

core-image-minimal-pcduino3.wic.gz」っていう、それっぽいファイルがありますね。


/home/yocto/poky/build/tmp/deploy/images/pcduino3

ファイル・ブラウザ - 6


このファイルは圧縮されているようですので、解凍しましょう。

以下のコマンドです。

元の「~.wic.gz」ファイルを残す場合は「-k(--keep)」、このファイルはリンクされており、それを強制的に解凍するので「-f(--force)」オプションを付けましょう。


$ gunzip -k -f ./tmp/deploy/images/pcduino3/core-image-minimal-pcduino3.wic.gz

ターミナル - 3


すると「/home/yocto/poky/build/tmp/deploy/image/pcduino3」に「core-image-minimal-pcduino3.wic」というファイル名で「WIC」形式のイメージファイルが解凍されました!


/home/yocto/poky/build/tmp/deploy/images/pcduino3

ファイル・ブラウザ - 7


イメージファイルは準備OK。

あとは、これをSDカードに書き込むためのツール「bmaptool」の調達が必要です。

これは、Linuxディストリビューションと同じく「bitbake」コマンドを使用してビルドします。

以下のコマンドを実行します。

とかく待たされる印象が強い「bitbake」コマンドですが、今度はすぐに終わりますのでご安心を。


$ bitbake bmap-tools-native

ターミナル - 4


次に、マイクロSDカードを用意します。

加えて、これをお使いのパソコンに接続するためのアダプタが必要になります。

私は、こんなのを買ってきました。

USBのコネクタ部分にマイクロSDカードを差し込むようなタイプですが、これって、下手をするとパソコン側のUSBの口にマイクロSDカードが取り残されそうで怖いんだよなぁ…。

マイクロSDカードUSBアダプタ


マイクロSDカードを挿入したアダプタをパソコンに接続します。

すると、以下のようなダイアログが表示されますので「仮想マシンに接続」を選択して「OK」ボタンをクリックします。

「新しいUSBデバイスが検出されました」ダイアログ


以下のような表示も出るかもしれませんが、これも「OK」ボタンをクリックして閉じちゃってください。

「取り外し可能デバイス」ダイアログ


Ubuntu上のファイル・ブラウザの左側に、認識されたマイクロSDカードが表示されましたでしょうか?

以下の例では「16 GB Volume」と表示され、認識されていることが分かります。

ファイル・ブラウザ - 8


この「16 GB Volume」の表示の部分にマウスカーソルをしばらく乗せておくと、マウントされたディレクトリのパスが表示されます。

ファイル・ブラウザ - 9


続いてターミナルに戻り、以下のコマンドを実行します。

これにより、先程のディレクトリのパスの行に「/dev/sdb1」と表示されているので、このマイクロSDカードは「/dev/sdb」という仮想ファイルとしてシステムに認識されたことが分かります。

他のデバイスの接続状況によっては「sdb」ではない可能性もありますので、この部分はよく確認してから作業を行ってください。


$ df

ターミナル - 5


上記のコマンドの結果、現在マイクロSDカードは「/media/yocto/DDEB-8DCA」というディレクトリとしてマウントされていることが分かります。

この「DDEB-8DCA」の部分は識別子であり、マイクロSDカードによって異なりますので、こちらも要確認です。

とにかく、マウントされているとLinuxディストリビューションのイメージファイルを書き込めないので、以下のコマンドでアンマウントします。

前述の識別子が「DDEB-8DCA」の場合は、以下のコマンドです。


$ umount /media/yocto/DDEB-8DCA

ターミナル - 6


では、いよいよLinuxディストリビューションのイメージファイルを書き込みましょう。

まずは「/dev/sdb」のパーミッションを設定します。

以下のコマンドを実行してください。

(パスワードを問われた場合は、入力します。)


$ sudo chmod 666 /dev/sdb

ターミナル - 7


イメージの書き込みは以下のコマンドで行います。

おっと、コマンドが見つからないとかなんとか?


$ oe-run-native bmap-tools-native bmaptool copy ./tmp/deploy/images/pcduino3/core-image-minimal-pcduino3.wic /dev/sdb

ターミナル - 8


エラーメッセージのアドバイス通り、以下のコマンドを実行します。


$ bitbake bmap-tools-native -caddto_recipe_sysroot

ターミナル - 9


これで良いのか?

再度、イメージの書き込みにトライ!

最小限の「core-image-minimal」というタイプのディストリビューションなので、それほどの時間は掛かりません。

以下の表示が出れば、イメージの書き込み完了です。


$ oe-run-native bmap-tools-native bmaptool copy ./tmp/deploy/images/pcduino3/core-image-minimal-pcduino3.wic /dev/sdb

ターミナル - 10


イメージの書き込みが完了したマイクロSDカードを安全に引き抜きましょう。

ファイル・ブラウザのイジェクトボタンをクリックするか、もちろんターミナルから「umount」コマンドを実行しても構いません。

ファイル・ブラウザ - 10


「pcDuino3」用ディストリビューションの起動

それでは、イメージの書き込みが完了したマイクロSDカードを「pcDuino3」に挿入し、Linuxを起動させてみましょう。

「pcDuino3」には、HDMI接続のディスプレイとUSBキーボードを接続しておきます。

Linuxの起動 - 1


「pcDuino3」のマイクロUSBから給電させると、なにかディスプレイに表示されましたよ!

Linuxは順調に起動しているようです。

Linuxの起動 - 2


ログインは「root」とでも入力しときましょう。

パスワードの設定はありませんので入力不要です。

Linuxの起動 - 3


早速、今回の主目的…新しいカーネルで動いているのかどうかを確かめます。

以下のコマンドを入力と…。


# uname -a


OK、カーネル・バージョンは「6.1.9」と出ました!!

デフォルトでインストールされていたカーネルが「3.4.79」だったので、大きな進歩です。

Linuxの起動 - 4


さて「Yocto Project」を使用して、無事Linuxディストリビューションを作成できたわけですが「core-image-minimal」という最小限の構成です。

SSHすら載ってません。

次回以降、より実用的なディストリビューションを構築していきましょう。

SSHは必須、Gitや「Node.js」も欲しいですよね。

当初の目的からは逸れますが、せっかくHDMIがあるのだから、ちゃんとしたGUIも表示させてみたいかも。


<続く>

BSD 4-Clause License

  名称:「四条項BSDライセンス」(BSD-4-clause) タイプ: ・コピーレフト…× ・ライセンス文の掲示…〇 ・コピーライト(著作権)の掲示…〇 ・その他…〇 原文: Copyright (c) <year>, <copyright holde...