2023年10月17日火曜日

TOPPERS/ASP - PIC32MX版 その9

前回からの続きです。

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


シリアル通信用の配線の引き出し

さて、いよいよパソコンと「PIC32MX1/2/5 Starter Kit」評価ボードを接続します。

接続した結果は以下のような感じになりますが…。

パソコンと「PIC32MX1/2/5 Starter Kit」評価ボードの接続


まず、USBの方はデバッガと接続するためのものですが、問題はそれ以外の電線。

これらは「TOPPERS/ASP PIC32MX版」のサンプルプログラムで使用するデバッグメッセージ用のシリアル通信線です。

しかし「PIC32MX1/2/5 Starter Kit」評価ボードには、既に最初からD-SUBコネクタが実装されていますよね。

実は、これはシリアル通信のためのものではなく、CANのためのD-SUBコネクタなのです。

では、シリアル通信のためのコネクタが何処にあるかというと、実は、この評価ボードでは用意されていないのです。

そのため、シリアル通信を使用するには必要な信号線を評価ボードから引き出してあげる必要があるのです。

さて、どこから引き出しましょうか?

以下の「PIC32MX1/2/5 Starter Kit」評価ボードの回路図を御覧ください。

74ピンの「SOSC0/T1CK/RC14」と73ピンの「SOSC1/RC13」に注目してください。

これらのピンは「Y2」というクリスタルに接続されていますね?

しかしながら「DNP」とあるように、どうやらこのクリスタルは実装されていないようです。

「PIC32MX1/2/5 Starter Kit」評価ボードの回路図


そして、74ピンの「SOSC0/T1CK/RC14」と73ピンの「SOSC1/RC13」は、レジスタの設定により、それぞれシリアル通信の受信(RXD)と送信(TXD)端子として使用することができるようです。

では早速、そのレジスタの設定をしなくちゃ!

…って、実はもう設定できているんです

思い出してください。

TOPPERS/ASP - PIC32MX版 その6」の投稿の下の方で既にやっています。

こんな感じで雛形プロジェクトで設定しましたよね?

ピンの設定


この設定により、74ピンの「SOSC0/T1CK/RC14」と73ピンの「SOSC1/RC13」は、それぞれシリアル通信の受信(RXD)と送信(TXD)端子として使用することになります。

そして、この雛形プロジェクトから吐き出されたソースコードを前回「TOPPERS/ASP PIC32MX版の」ソースツリーにコピーしたため、これから動かすサンプルプログラムは、この設定通りに動くことになるのです。

では、シリアル通信に必要な信号線を評価ボードから引き出しましょう。

必要な信号線は、受信(RXD)、送信(TXD)、そしてGNDの計3本ですね。

受信(RXD)、送信(TXD)は、基板下方の未実装の「Y2」クリスタルのホール(穴のことね)をそのまま使いましょうか。

GNDは、基板上方にパッドがあります。

「PIC32MX1/2/5 Starter Kit」評価ボード


未実装の「Y2」クリスタルのホールから受信(RXD)と送信(TXD)を引き出しましょう。

こんな感じ。

受信(RXD)と送信(TXD)の引き出し


続いて、GNDも引き出します。

こんな感じ。

GNDの引き出し


これで、必要な信号線の引き出しは完了です。


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

引き出した線は、パソコンのシリアルポートに接続します。

しかしながら、今どきシリアルポートが備えられているパソコンは稀でしょう。

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

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


USB/シリアル通信変換ケーブルのコネクタの形状によりますが、引き出した信号線は圧着端子などで加工する必要があるかもしれません。

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

これでシリアルポートが使えるようになりました。

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


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

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

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

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

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

デバイスマネージャー


ここで、ターゲットとパソコンもUSBケーブルで繋げちゃいましょ。

ご覧の通り、通電します。

ターゲットとパソコンの接続


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

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

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

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

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

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

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

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


さて、「MPLAB X IDE」に戻りましょう。

「MPLAB X IDE」でプロジェクトを作成した状況から始めます。

画面左上の「Projects」リストにおいて「OBJ」プロジェクトが選択されていることを確認してください。

「MPLAB X IDE」 - 1


次に、プログラムの実行を行います。

画面上部のデバッグボタンをクリックします。

「MPLAB X IDE」 - 2


デバッガの起動には、意外と時間がかかります。

もしこの時、以下のようなエラーが表示されてしまったら、それはサンプルプログラムがビルドされていない証拠です。

「MPLAB X IDE」 - 3


「Eclipse」の方で「Makeターゲット」タブから「depend」、「all」の順にダブルクリックして、ビルドを終わらせましょう。

「Eclipse」


無事にデバッガが起動すると、立ち上げておいたターミナルに以下のような表示が出ていると思います。

TOPPERS/ASPカーネルとそのサンプルプログラムの転送と実行に成功です。

TeraTermの表示


ブレークポイントを試してみましょう。

動作中のプログラムを停止します。

画面上部の「」ボタンをクリックします。

「MPLAB X IDE」 - 4


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

エクスプローラーで「TOPPERS/ASP PIC32MX版」のソースツリーの「OBJ」ディレクトリの中にある「sample1.c」をドラッグし「MPLAB X IDE」にドロップして、ソースコードを表示します。

「MPLAB X IDE」 - 5


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

ブレークポイントは、ソースコードビューの左端をクリックするとが表示され、セットされていることを表します。

仮に、これを再びクリックするとブレークポイントが解除されも消えます。

「MPLAB X IDE」 - 6


では、ブレークポイントを仕掛けた状態で、プログラムを再び実行してみます。

上手く引っかかってくれるでしょうか…。

「MPLAB X IDE」 - 7


以下のようにプログラムが停止すれば成功です!

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

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

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

「MPLAB X IDE」 - 8


今回の「TOPPERS/ASP PIC32MX版」は、やることが多くて大変でした~。

お疲れ様でした!!

次回はいよいよ最終回。

サンプルプログラムの動きの説明や、PIC32MX版カーネルの詳細な情報や注意事項などを書いていきます。


<続く>

2023年10月13日金曜日

TI「LAUNCHXL-F280049C」C2000リアルタイム・マイコン評価ボード

またまた、新しいオモチャを買ってしまいました。

最近は遊ぶ時間もないのにぃ~。

TI社のリアルタイム・マイコン「C2000」シリーズの評価ボード「LAUNCHXL-F280049C」です。

「LAUNCHXL-F280049C」評価ボード - 1


この「C2000」シリーズって、あまりメジャーなマイコンではないですよね。

メーカーの説明はコチラからどうぞ。

この「LAUNCHXL-F280049C」評価ボードには「TMS320F280049C」という型番のマイコンが積まれているようです。

ん?「TMS320」だって!?

ベテランさんの中には、この型番には聞き覚えがある人も多いのでは?

そう、「TMS320」はTI社の名作シグナルプロセッサ、すなわちDSP(digital signal processor)ですね。

DSPに関する詳細としましては、コチラをご覧いただくとして、簡単に言ってしまえば、デジタル信号処理に特化したマイクロプロセッサのことです。

それに対して、普通のマイコンは汎用マイクロプロセッサと呼んだりします。

DSPとは、数値演算を非常に高速に処理することのみを得意とする風変わりなCPU…という解釈で良いと思います。

例えば、掛け算。

人間が手計算でやっても単純な足し算や引き算よりも時間がかかりますよね?

普通のマイコン、すなわち汎用マイクロプロセッサにとってもそれは同じです。

例えば「3✕6=」を普通のマイコンにやらせると、3を6回足し算するという処理になります。

これをアセンブラで書くと、何ステップにもなります。

すなわち、処理に時間がかかるということです。

一方のDSPでは「3✕6=」をたった1ステップで行う命令がハードウェア的に用意されています。

つまり、時間がかからず処理が速いということです。

すげー、だったら普通のマイコンは捨てちゃって、処理の速い全部DSPに置き換えればいいじゃん!って思いますよね?

しかし元来、DSPは数値演算以外のことは苦手です。

たとえば、条件分岐や様々なタイプのジャンプなど、普通のマイコンが普通にできることが難しかったりするのです。

これをもって「DSPは汎用性がない」と言ったりします。

したがって、普通のマイコンとDSPは、長い間、各々の得意の分野によって使い分けられてきました。


ですが…。


やはり、DSPの高速演算処理は魅力的!

なんとか普通のマイコンの汎用性とDSPの性能のイイトコドリはできないだろうか!?


という思想のもとに、2つの系譜が出来上がりました。

一つ目は、普通のマイコンにDSPの機能を加えたものです。

これには、ARMのCortex-M4やCortex-M7、Blackfinなど他多数が該当します。

二つ目は、DSPに汎用性を付加して普通のマイコンのように使えるようにしたものです。

「C2000」シリーズは、まさにこの系譜のものでしょう。

「LAUNCHXL-F280049C」評価ボード - 2


この「C2000」シリーズは、RTOSとしては、FreeRTOSとTI社独自のTI-RTOSが用意されていますので、DSPの性能を活かした色々な工作ができそうです。

デジタル電源や、ギターのエフェクターやフィルターとか…。

要は、リアルタイムに多くの数値演算が必要になるアプリケーションにウッテツケです。

残念ながら、私の使い慣れている「TOPPERS/ASP」は移植されていないので、そこから作っていくのも楽しいかもしれませんね。

なんとか時間を作ってチャレンジしてみます。

2023年10月6日金曜日

TOPPERS/ASP - PIC32MX版 その8

前回からの続きです。

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


プロジェクトの作成(Eclipse編)

前回までの作業で、開発環境をインストールし、PIC32MX版TOPPERS/ASPのソースコードをダウンロードし、それをコマンドラインでビルドするまでを行いました。

このままずっとコマンドラインで作業するのもシンドいので、Eclipse上でビルドが行えるようにプロジェクトを作成しましょう。

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

デバッガの登録」の項目は読み飛ばしてください。

今回はデバッグ作業をこのEclipse上で行わず、次にプロジェクトを作成する「MPLAB X IDE」上で行う方針なので、この作業は必要ありません。

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

Eclipse


プロジェクトの作成(MPLAB X IDE編)

さて、もう一方のIDEである「MPLAB X IDE」用のプロジェクトも作りましょう。

とはいえ、既にこのプロジェクトは「TOPPERS/ASP PIC32MX版」のソースツリーのディレクトリの中に既に用意してあります。

OBJ.X」というディレクトリがそれです。

「asp_pic32mx_gcc」や「asp_pic32mx_gcc_master」を「asp_1.9.2」に改名した場合。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2

「OBJ.X」ディレクトリ


それでは「MPLAB X IDE」を起動させましょう!

起動させた場合、画面左上の「Projects」タブには、以前作成した雛形プロジェクトを示す「Hinagata」のみが登録されていることを確認してください。

「MPLAB IDE」 - 1


件の「OBJ.X」プロジェクトをここに登録したいと思います。

画面左上の「File」メニューから「Open Project...」項目をクリックしてください。

「MPLAB IDE」 - 2


以下のようなダイアログが表示されますので「OBJ.X」のディレクトリを選択してやってから「Open Project」ボタンをクリックします。

「Open Project」ダイアログ


すると、画面左上の「Projects」タブには、新たに「OBJ」というディレクトリが追加されていることが確認できるはずです。

「MPLAB IDE」 - 3


ここで注意していただきたいことがあります。

このプロジェクトのビルド対象は「OBJ.X」ではなく、同じディレクトリにある「OBJ」ディレクトリ以下のソースコードです。

なので、以下のように「Source Files」をクリックすると「OBJ」ディレクトリ以下のソースコードのリストが展開されると思うでしょう?

「MPLAB IDE」 - 4


しかしながら、今回用いた方法ではそのようにはなりません。

「Source Files」をクリックしても何も起こりません。

その上の「Header Files」も同様です。

その理由は、今回の方法は、雛形プロジェクトの時とは異なり「MPLAB X IDE」にとっては通常のプロジェクト作成手順ではないためです。

今回の場合「MPLAB X IDE」を使うのは、単にデバッガを操作するためであり、ソースコードの編集などはEclipseの方で行う方針なので、ソースコードの閲覧はEclipseの方で行ってください。

でも、デバッガのみを使う場合でも、ブレークポイントを仕掛ける際にソースコードを表示しなければなりませんよね。

では、どうするか?

その場合は、以下の方法が簡単です。

たとえば、サンプルプログラムのメインのソースコードである「sample.c」を「MPLAB IDE」で表示したい場合、以下のように「OBJ」ディレクトリの中にある「sample.c」をドラッグして「Start Page」タブにドロップしてみてください。

「MPLAB IDE」 - 5


すると、新たに「sample.c」タブが作成され、「sample.c」の内容が表示されます。

「MPLAB IDE」 - 6


この方法で「OBJ」ディレクトリ内のソースコードを閲覧することも出来ますし、ソースコードの中の任意の行にブレークポイントを仕掛けることもできます。

同じ操作を繰り返せば、複数のソースコードの表示も可能です。

ちょっと不便かもしれませんけど…。

申し訳ないです。


ともあれ、これで「MPLAB X IDE」の方のプロジェクトも準備ができました。

あとは、ビルドしたプログラムを実機に転送して実行させて、デバッグの方法を確認するだけです。

次回は、いよいよそれを行っていきましょう!


<続く>

2023年9月29日金曜日

「MSX0 Stack」がやってきた!

ついに我が家にも「MSX0 Stack」が到着しました!

「MSX0 Stack」 - 1


「MSX」とは何ぞや?…という方は、コチラを参考にしてください。

入手方法はクラウドファンディングで、すでに受付は終了し新たに入手することはできませんが、そのうちAmazonなどでも気軽に買えるようになるかもしれません。

入手し損ねた方は、期待して待ちましょう!

早速、届いたダンボールを開封。

丁寧に梱包されています。

ダンボール開封


私がオーダーしたのは、最もスタンダードな「PLAN A」というもの。

2つのパッケージが出てきました。

2つのパッケージ


このうち「BOTTOM2」というのは拡張バッテリーのようです。

本体は「FACES」と書いてあるプラスチックの箱の中に入っているみたいです。

では、プラスチックの箱を開けてみましょう。

こういう瞬間が楽しいのです!

ご丁寧に、アダプタ付きのSDカードとUSB Cのケーブルが見えますね。

ここでも発泡スチロールで厳重に梱包されています。

開封 - 1


では、一番上に被さっている発泡スチロールを除けてみましょう。

ついに本体と対面です!

コンゴトモヨロシク!

開封 - 2


今回届いたものを全て展開すると以下のようになります。

ゲーム用のパッドや、簡単な工具、ステッカーなども入っていますね。

内容物全て


何はともあれ動作チェックです。

工場出荷時の設定では、充電池の保護のために給電がオープンになっていますので、本体背面のスイッチを「0」から「1」に切り替える必要があります。

「MSX0 Stack」 - 2


これ以降は、本体右側の電源スイッチでON/OFFができるようになります。

ONはワンプッシュ

OFFは長押しですね。

さて、通電しているはずなので、画面を観てみましょう!

ノスタルジックな「MSX」ロゴが表示されましたよ~!!

「MSX0 Stack」 - 3


「MSX」ロゴが消えると、すぐにROMベーシックが立ち上がります。

流石に、文字が小さいです。

「MSX」で遊んだ世代の中では私は若輩者の方だと思うのですが、老眼が始まっているのか結構キツい…。

みんな大丈夫なの!?

「MSX0 Stack」 - 4


動作チェック完了!

マニュアルやソフトウェアは、付属のSDカードの中に記録されています。

ソフトウェアは、以下のものが収録されているようです。


●Windows版リモートコントロールパネル

●MSX0システムメニュープログラム

●MSX-DOS TOOLS

●MSX-S BUG(デバッガ)

●MSX-DOS2(英語)

●MSX-DOS2(日本語)

●MSX-DOS2 TOOLS

●MSX-S BUG2(デバッガ)

●MSX-C(Cコンパイラ)

●MSX-C Library

●IoT BASIC サンプルプログラム


これだけあれば、色々なプログラムを作って遊べそうですね!

特に、Cコンパイラはありがたい!

当時は高嶺の花でしたからね~。

…と言っても2万円くらいでしたが、子供にとっては…ねぇ。

最後に「MSX0 Stack」と以前ご紹介した「1chip MSX」の2ショットです。

クリアブルーの筐体が、妙な統一感を醸し出していて素敵です。

「MSX0 Stack」と「1chip MSX」


さて、しばらくは付属のSDカードの中のマニュアル類を読み漁って暇(暇じゃない!)を潰すのも良し。

いきなりプログラムを書き始めるのも良し。


何をしようか考える前に、何ができるかを考える…。

何ができるかを考える前に、何をしようか考える…。


仕事なら前者、趣味なら後者でもOKでしょ!

2023年9月22日金曜日

TOPPERS/ASP - PIC32MX版 その7

前回からの続きです。

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


Harmony Frameworkのコピー

既にインストール済みの「MPLAB Harmony」のディレクトリと、「TOPPERS/ASP PIC32MX版」のソースツリーのディレクトリを同時に2つエクスプローラーで開いておきましょう。

記事通りに作業すると、「MPLAB Harmony」は以下のディレクトリに保存されているはずです。


C:\microchip\harmony

「MPLAB Harmony」のディレクトリ - 1


同じく、TOPPERS/ASPのソースツリーは以下のディレクトリに保存されているはずです。

「asp_pic32mx_gcc」や「asp_pic32mx_gcc_master」を「asp_1.9.2」に改名した場合。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2

TOPPERS/ASPソースツリーのディレクトリ - 1


さて、2つ開いたエクスプローラーでそれぞれ以下の場所を表示するようにします。

まず、「MPLAB Harmony」の方は、以下のディレクトリへ移動させます。


C:\microchip\harmony\v2_06

「MPLAB Harmony」のディレクトリ - 2

次に、TOPPERS/ASPのソースツリーの方は、以下のディレクトリへ移動させます。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\arch\pic32mx_gcc

TOPPERS/ASPソースツリーのディレクトリ - 2


「MPLAB Harmony」の方のディレクトリに注目!
以下のディレクトリを確認して下さい。


●framework

「MPLAB Harmony」のディレクトリ - 3


この「framework」ディレクトリの中には「MPLAB Harmony」で使用できる様々な周辺機器のデバイスドライバのソースコードやヘッダーファイルが大量に入っています。

「TOPPERS/ASP PIC32MX版」で使用するタイマーやシリアル通信のデバイスドライバもこの中に含まれています。

この「framework」ディレクトリを開いてあるもう一方のエクスプローラー、TOPPERS/ASPのソースツリーの方にコピーします。

結果、TOPPERS/ASPのソースツリーの方は、以下のようになりましたか?

TOPPERS/ASPソースツリーのディレクトリ - 3


これで、HarmonyのFrameworkのソースコードの回収は完了です。


雛形プロジェクトで生成したソースコードのコピー

現在、2つ開いているエクスプローラーでそれぞれ以下の場所を表示するようにします。

「MPLAB Harmony」の方は、以下のディレクトリへ移動させます。

ここは、既に作成した雛形プロジェクトのソースが格納されている場所です。


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

「MPLAB Harmony」のディレクトリ - 4


次に、TOPPERS/ASPのソースツリーの方は、以下のディレクトリへ移動させます。


C:\cygwin64\home\<ユーザー名>\asp_1.9.2\target\1_2_5_starterkit_gcc

TOPPERS/ASPソースツリーのディレクトリ - 4


「MPLAB Harmony」の方(ていうか、雛形プロジェクトの方)のディレクトリに注目!

以下の3つのディレクトリとソース/ヘッダーファイルを確認して下さい。


●system_config

●app.c

●app.h

「MPLAB Harmony」のディレクトリ - 5


雛型プロジェクトは、今回使用する「PIC32MX1/2/5 Starter Kit」評価ボードで動作する基本的な設定や定義を行うソースコードを生成させるために作成しました。

これらのディレクトリやファイルは、まさにその生成されたソースコードというわけです。

この3つを開いてあるもう一方のエクスプローラー、TOPPERS/ASPのソースツリーの方にコピーします。

結果、TOPPERS/ASPのソースツリーの方は、以下のようになりましたか?

TOPPERS/ASPソースツリーのディレクトリ - 5


これで、雛形プロジェクトによって生成されたソースコードの回収は完了です。


コマンドラインでのビルド

さて、これで全ての準備は整いました。

早速ビルドしてみましょう。

ここまで長かったですね!

お疲れ様です。

Cygwinを開いて、TOPPERS/ASPソースツリーの場所まで移動しましょう。


$ cd asp_1.9.2/


次にその直下の「OBJ」ディレクトリに移動します。


$ cd OBJ/


コンフィギュレーターのパーミッションを実行可能に設定します。


$ chmod 755 ../cfg/cfg/cfg.exe


ここまで、大丈夫ですか?

Cygwinターミナル - 1


そうしたら、プロジェクトのコンフィグファイル(sample1.cfg)の情報を元に、OSに必要な定義を記したソースコード(「kernel_cfg.c」と「kernel_cfg.h」)を生成します。


$ make depend


以下のような表示にならずエラーが出力される場合は、残念ながらこれまでの作業に誤りがあります。

お手数ですが、最初からご確認を!

Cygwinターミナル - 2


ここまで上手くいったら、本番のビルド。

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


$ make all


以下のように無事にビルドが通ったでしょうか?

Cygwinターミナル - 3


今回はここまで!

長々と面倒な作業でしたが、お疲れ様でした。

ここまで付いてきてくれた方がいたら、本当にありがとうございました。


コマンドラインではビルドが通るようになりましたので、次回はIDE(統合開発環境)で開発できるようにプロジェクトを作りましょう。

今回は、デバッガを使うための純正IDEである「MPLAB X IDE」とコーディングとビルドを行うための「Eclipse」、2つのプロジェクトを作らなければなりません。

またまた面倒ですが、どうかお付き合いを!


MLAA License

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