2023年11月7日火曜日

「pcDuino3」でYocto Project その2

前回からの続きです。


「VMware Workstation Player」のインストール

さて「Yocto Project」で「pcDuino3」のための最新のディストリビューションを作るのはいいとして、まずはLinuxが動作する環境が必要です。

「Yocto Project」は、Linux上で動くフレームワークだからです。

LinuxはLinuxで作らなければなりません。

もし、余ったパソコンをお持ちなら、そこにLinuxをインストールしましょう。

この場合、今回の記事に書かれている内容は飛ばしてしまって構いません。

とはいえ「Yocto Project」を動作させるためには、相当なスペックのパソコンが必要です。

なにせ「Yocto Project」で一つのLinuxディストリビューションを作成する過程で、物凄く多くのソフトウェアのダウンロード、ビルド、コピーを繰り返し行いますので、すべて終わるまでには膨大な時間がかかります。

(場合によっては、丸一日とか…。)

したがって、パソコンが速いほど作業効率は上がります。

しかし、そんなにスペックの高いパソコンって、そうそう余ってませんよね。

懐も寂しいですし…。

そこで、今、Windowsでお使いのパソコン上でLinux環境を再現するために「VMware Workstation Player」を使いましょう。

「VMware Workstation Player」スプラッシュスクリーン


この「VMware Workstation Player」は、Windowsの中に仮想のパソコンを作ってくれるアプリケーションです。

そうして作られた仮想のパソコンの中にLinuxをインストールして「Yocto Project」を動かそう…という目論見です。

まずは、ダウンロードから。

以下のWebページにアクセスしてください。

そして、以下の通り「VWware Workstation Player」というリンクをクリックします。


https://www.vmware.com/jp/products/workstation-player/workstation-player-evaluation.html

「VMware Workstation Player」のダウンロードページ - 1


ちなみに「VMware Workstation Player」は、非商用利用であれば無償です。

商用利用であれば有償であり、その場合は「VMware Workstation Pro」という製品名になります。

今回は、無償の「VMware Workstation Player」を使用する場合を説明しています。

新しく開いたページで「無償ダウンロード」というボタンをクリックします。

「VMware Workstation Player」のダウンロードページ - 2


次に、新しく開いたページで「GO TO DOWNLOADS」という表示をクリックします。

「VMware Workstation Player」のダウンロードページ - 3


更に、新しく開いたページで「VMware Workstation 17.x.x Player for Windows 64-bit Operating Systems」の欄の右側、「DOWNLOAD NOW」というボタンをクリックします。

やっとこさ、ダウンロードが開始されるはずです。

「VMware Workstation Player」のダウンロードページ - 4


VMware-player-full-17.x.x-xxxxxxxx.exe」みたいな名前のファイルのダウンロードが終了したら、これをダブルクリックします。

インストーラーが起動します…が!、以下のような表示が現れることがあるかもしれません。

なにやら分からぬが…ここは従っておいたほうが無難でしょう。

この表示が出た場合は「はい」ボタンをクリックして、パソコンを再起動しましょう。

これだからWindowsは…。

「VMware Workstation Player」のインストーラー - 1


パソコンの再起動後は、再度「VMware-player-full-17.x.x-xxxxxxxx.exe」をダブルクリックして、インストールを再開しましょう。

インストーラーが立ち上がります。

「VMware Workstation Player」のインストーラー - 2


以下の表示に切り替わったら準備完了。

ここは「次へ」ボタンをクリックです。

「VMware Workstation Player」のインストーラー - 3


はいはい同意同意…って、適当に受け流してはダメですね。

しっかり確認して「使用許諾契約書に同意します」のチェックボックスを有効にしてから「次へ」ボタンをクリック。

「VMware Workstation Player」のインストーラー - 4


以下のような表示が出た場合は、迷わず「Windows Hypervisor Platform(WHP)の自動インストール」のチェックを有効にしましょう。

説明文中にある「Hyper-V」というのは、今インストールしようとしている「VMware Workstation Player」と同じく、Windowsの中に仮想のパソコンを作ってくれる機能で、ある時期からWindowsに標準で実装されるようになりました。

ですが、そのままだと「VMware Workstation Player」とケンカになります。

ですので「Hyper-V」と「VMware Workstation Player」との仲介をするWHPというソフトウェア(ていうかAPI)を自動的にインストールしますか?…というのがこの説明文の大雑把な内容です。

チェックボックスを有効にしてから「次へ」ボタンをクリックします。

「VMware Workstation Player」のインストーラー - 5


これ以降は、しばらく「次へ」ボタンを連打~!

「VMware Workstation Player」のインストーラー - 6


個人的には、タダで使わせてもらっているのだから、せめて協力くらいは~と思います。

個人の判断で良いと思います。

「VMware Workstation Player」のインストーラー - 7


「VMware Workstation Player」のインストーラー - 8


「VMware Workstation Player」のインストーラー - 9


ようやくインストールが始まります。

「VMware Workstation Player」のインストーラー - 10


結構時間はかかりますが、以下の表示が出ればインストールは終了です。

完了」ボタンをクリックしてインストーラーを閉じましょう。

「VMware Workstation Player」のインストーラー - 11


さて、インストールされた「VMware Workstation Player」を試しに起動させてみましょう。

デスクトップに追加されたアイコンをダブルクリックすると、まずは以下のようなダイアログが…。

無償で使います、サーセン…ってなわけで「続行」ボタンをクリック。

「VMware Workstation Player」の起動 - 1


完了」ボタンをクリックしましょう。

お世話になります!

「VMware Workstation Player」の起動 - 2


以下のような表示が出たら「VMware Workstation Player」のインストールと起動は成功です。

お疲れ様でした~。

「VMware Workstation Player」の起動 - 3


さて、今日はここまで。

次回は、この「VMware Workstation Player」で仮想のパソコンを作り、そこにLinuxをインストールするまでやっていきましょうか。


<続く>

2023年11月3日金曜日

「pcDuino3」でYocto Project その1

組み込みLinuxの学習

突然ですが、長年勤めた現職を今年いっぱいで退職し、転職することになりました!

転職先はIoT関連のメーカーで、今までと同様、組み込みエンジニアとしてお仕事をさせていただくことになりました。

お話を伺っていると、新しい職場では、RTOSを使用したベアメタルな機器に加え、組み込みLinuxのお仕事も多いとのこと。

私自身、今まで、このブログで取り上げているようなRTOSを使用した機器の開発がメインでしたが、実は組み込みLinuxを使用した機器の開発経験もあります。

ただし、数年のブランクが空いています。

人間、使わない知識はどんどん忘れていきますし(歳のせいとも言う)、時間の流れが速いLinuxなどのオープンソースの世界においては、この数年のブランクが命取り!

転職後に即戦力となれるように、今一度(現在の)組み込みLinuxを学習してみたいと思いました。


「pcDuino3」とは?

米国LinkSprite社の「pcDuino3」というARMのシングルボード・コンピュータです。

pcDuino3


組み込みLinuxを学ぶ(…というより思い出す)ためには、ターゲットを弄りながら進めていくのが一番。

というわけで、かつて組み込みLinuxでの開発を行っていた時に買ったまま放置していたコイツを引っ張り出してきました。

秋月電子商会さんでは、まだ取り扱っています。

ディスコン(製造中止)ですが、在庫は潤沢のようです。

発売は2014年とのことで、もう10年近く昔の製品です。

しかし、1GHzで動作する「ARM Cortex-A7」のデュアルコアというスペックは、組み込み機器として考えた場合は、まだまだ十分使える性能です。

ちなみに、CPUは中国製の激安SoC「Allwinner A20」です。

一時期は、民生の格安タブレットなどで相当数使われていたとか…。

この手のLinuxが動作するようなシングルボード・コンピュータでは、なんといっても「Raspberry Pi」シリーズが有名ですよね。

一方で、この「pcDuino」シリーズの最大の特徴は、有名な学習用マイコンボードである「Arduino」と同じピン配のピンソケットを実装していることでしょう。

ハードウェアも作るような人は、この「Arduino」用のユニバーサルボードや、ピンソケットの入手性が良いので、オリジナルのシールドが作りやすく、電子工作好きの方々からは好評だったようです。

私も仕事で試作品を作るときには「Arduino」をよく使いますし、オリジナルのシールドを作るために、こういったパーツは使い慣れています。

「Arduino」用のユニバーサルボードとピンソケット


ただし、既存の「Arduino」用のシールドがそのまま使えるか?というと、そこまでの互換性はないようです。

第一、電源が違います(「pcDuino」は3.3Vのみ)ので、既存のシールドは接続しないように注意してください。

さて、この「pcDuino3」を使用して「Node.js」をインストールして「TypeScript」などを使って、IoTゲートウェイのようなものを作ろうと思いました。

いわゆる今風のナウい組み込みLinuxの使い方ですよね~。

そこで、気になるのはデフォルトでインストールされているLinuxのバージョンです。

前述のように、10年近く昔の製品。

あまり古いバージョンのLinuxディストリビューションだと、最新のアプリケーションが動きません。

確認のために、数年ぶりに「pcDuino3」に電源を投入しました。

HDMIコネクタをLCDに繋いで、操作のためのキーボードやマウスをUSBのAコネクタに接続します。

(USBのAコネクタは一つしかありませんから、キーボードとマウスを同時に使用する場合は、USBハブを使いましょう。)

最後に、USBのMicro-Bコネクタから電源を供給してあげれば準備完了です。

「pcDuino3」に電源を投入


しばらくすると、デスクトップが立ち上がります。

「pcDuino3」には、マイクロSDカードのスロットを搭載しています。

しかし、今はこのスロットにはマイクロSDカードが入っていませんので、OSは内蔵のNANDフラッシュから起動しています。

デスクトップの表示


アプリケーションは、最小限ですが「Chromium」を搭載しているのはスゴい。

そうそう、こんな感じだったなぁ…。

インストールされているアプリケーション


ターミナルを開いて各種バーションを確認します。

以下のように入力します。


$ uname -a

カーネルのバージョン確認


カーネルは「3.4.79」!

やはり相当古い…。

今や「6.x.x」とかの時代ですから。

ディストリビューションは「Ubuntu」ですか。

念のため、ディストリビューションの詳細を確認します。

以下のように入力してみます。


$ lsb_release -a

ディストリビューションのバージョン確認


Linaroによる「12.07」ですか。

Ubuntuなので「apt install」コマンドでアプリケーションの追加は可能ですが、カーネルもディストリビューションも古いですね。

これでは、最新の開発環境を使った開発は難しいかもしれません。

さて、どうしたものか…。

そこで「Yocto Project」です!!


「Yocto Project」とは?

詳しくは、こちらを参照してください。

要するに、カスタムのLinuxディストリビューションを作れてしまうフレームワークです。

Linuxディストリビューションを作るには、Linuxの3種の神器「ブートローダ」、「カーネル」、「rootファイルシステム」が必要です。

昔は、これらのそれぞれソースコードを入手して、コンパイラを準備して、ビルドして…という作業が必要でした。

特に「rootファイルシステム」なんかは、ソフトウェアの数が膨大なので、大変な労力を要します。

しかも、それぞれを関連付けるための設定ファイルの作成やら、変更やらで、やっと終わったと思ったらカーネルパニックを起こして起動しなかったりで、もう…やってられるかっ!!…の繰り返しです。

二度とやりたくないです。

そのような煩雑な作業すべてを簡単にやってくれるツールとして「Yocto Project」が登場しました。

他にも、同様の思想のフレームワークには「Buildroot」というものが存在します。

この手のフレームワークでは「Yocto Project」と「Buildroot」が、二大勢力ですが…


●細かいカスタマイズが可能だが、使うのが難しい「Yocto Project

●使うのが簡単だけど、細かいカスタマイズが難しい「Buildroot


という、アベコベの関係にあります。

しかしながら、紆余曲折あって現在は「Yocto Project」がスタンダードです。

組み込みエンジニアにとって、今や「Yocto Project」を扱うことは必須であるといっても過言ではありません。

この「Yocto Project」を使って「pcDuino3」用の最新のカーネルを含むディストリビューションを作ろう!と思います。

IoTゲートウェイを作ろうとしているので、最悪GUIは要りませんが、最低限のセキュリティの担保と、最新の開発環境が使えるだけのディストリビューションを目指したいと思います。


次回から、早速「Yocto Project」による開発環境を揃えていきます。

<続く>…といいですけどね、ボードも古いし、色々忘れちゃってるから…。


<続く>

2023年10月24日火曜日

TOPPERS/ASP - Arduino UNO R4版 その1

TOPPERS/ASP - Arduino UNO R4版 概要

皆様おなじみの「Arduino」。

Arduino UNO R4 - 1


お財布に優しく、比較的入手がしやすいマイコンボードとして大人気です。

さて、この「Arduino」はローエンドのものからハイエンドのものまで多くのバリエーションがあります。

以前、コチラの記事でご紹介した「Arduino Mega2560」は比較的ハイエンドの型番でした。

しかし、一般的に「Arduino」といえば「Arduino UNO」を指すことが多いです。

最もスタンダードな型番と言えるでしょう。

更にこの「Arduino UNO」にも新旧いくつかのバリエーションが存在します。

そして、2023年に入ってから、長らく販売されていた「Arduino UNO R3」に代わり、その次世代モデル「Arduino UNO R4」が発表されました。

では、この「R3」と「R4」では、どのような違いがあるのでしょうか?

以下の表にまとめてみました。

Arduino UNO R3 R4
CPU Microchip(AVR) ATmega328P Renesas RA4M1 Arm cortex-M4
ビット数 8bit 32bit
動作クロック 16MHz 48MHz
ROM 32kB 256kB
RAM 2kB 32kB


このように、全ての面で「R4」が「R3」を大幅に上回るスペックへアップグレードされ、もはや別物と言っても過言ではありません。

もっとも大きな違いは、CPUのアーキテクチャが変更されたことです。

Microchip社の「AVR」独自アーキテクチャから、遂に「ARM」アーキテクチャへの進化を果たしました。

これによって、従来の8ビットから32ビットのCPUに強化されたため、数値上の動作クロックは3倍でも、それ以上の処理速度の向上が期待できます。

それでいて、お値段はそのまま!

これは、かなり魅力的なマイコンボードと言えそうです。

RAMも32kBへ大幅に増量され、RTOSを十分搭載可能な容量となりました。

そこで今回は、この「Arduino UNO R4」に「μITRON4.0」準拠のRTOS(リアルタイムOS)であるTOPPERS/ASPを移植してみました。

移植といっても、今回はいつもみたいにディスパッチャなどをアセンブラでガリガリ書いたりはしていません。

今回扱うマイコンはARMアーキテクチャですから、公式のARM版を「Renesas RA4M1」マイコン用にモディファイしただけです。

だから、とても品質が良いでしょう!

私が書いたのと比べて…。


TOPPERS/ASP - Arduino UNO R4版の注意事項

このカーネルを使った時点で、ArduinoはArduinoでなくなります。

当然、便利なArduinoIDEや、それに付随する豊富なライブラリは使用できなくなります。

そのような向きには、TOPPERS/ASPカーネルで動作しながらArduinoのライブラリを使えるような「TOPPERS/R2CA」(凄い!)という実装も存在します。

この場合はターゲットが「Arduino UNO R4」ではなく、同じくARMコアの「Arduino M0」になりますが、極めて有意義な実装です。

一方、このブログでご紹介する「TOPPERS/ASP Arduino UNO R4版」は、Arduinoの枠にとらわれず、単純に「Arduino UNO R4」を安価なマイコンボードとして使用したい方を対象としています。

ハードウェアだけ便利に使わせてもらおう!…という目的ですね。


必要なもの

まずは、今回のターゲットとなる「Arduino UNO R4」です。

秋月電子商会さんでも販売しています。

お値段、3,000円ちょっと!

Arduino UNO R4 - 2


次に、デバッガです。

今回は「E2 emulator Lite」というRenesas製のデバッガを使用しました。

というのも「Arduino UNO R4」には、Renesas製のARMマイコンが搭載されているので、一番スマートかなぁ…と思って。

同じく秋月電子商会さんで買うと、10,000円でお釣りが出ちゃうくらいですね。

これでなくても、ローエンドのARMマイコンで標準的なデバッグインターフェースである「SWD」に対応しているものなら、もっと安価なものでも使用できるかもしれません。

このブログでは「E2 emulator Lite」を使用した例を説明します。

「E2 emulator Lite」デバッガ


ダウンロード/GitHub

ソースコードの入手は、こちらからどうぞ。

とは言っても、このソースコードをダウンロード、もしくは「git clone」しても、絶対にビルドが通りません。

このソースコードは未完成です。

なぜなら、Renesas社のドライバを後から付け加える必要があるんです。

そのRenesas社のドライバのライセンスの条項が理解に難しく、公開、および再配布しない方が無難と判断したためです。

ですので、今後この記事では、それらのソースコードの入手方法やコピーする場所などを事細かに書いていくつもりです。

ちょっとだけ面倒です。

ごめんなさい…。

ビルドは、まだしないでくださいね~。

(あと、動かしながら記事書いてる過程でバグなんかが見つかるかもしれないので、ダウンロードは後の方が良いかも…。)


さて、次回から開発環境の構築をやっていきましょう。


<続く>

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」の方のプロジェクトも準備ができました。

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

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


<続く>

Simplicity Studioを使ってみた! その3

前回からの続き です。 このテーマを最初からご覧になる場合は こちら からどうぞ。 「Simplicity Studio」でプログラミング インストールしたSilicon Labs社のマイコン用の統合開発環境「 Simplicity Studio 」で、テストプログラムを動かして...