2022年11月13日日曜日

TOPPERS/ASP - MSP430版 その4

前回からの続きです。

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


プロジェクトの作成

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

そして、前回ではTI社のIDEであるCode Composer Studioのインストールを行いました。

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

前回のCode Composer Studioを立ち上げた状態から、画面左上のメニューから「File」→「New」→「Project」の順にクリックしていきましょう。


すると、以下のダイアログが表示されますので、中央のリストから「C/C++」ディレクトリをクリックして、その中の「Makefile Project with Existing Code」を選択し「Next」ボタンをクリックします。


以下のダイアログが表示されたら必要事項を入力します。

ここでは、以下の通り。


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

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

Toolchain for Indexer Settings:<none>


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


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

何の変化もないようですが、画面左端の重なったウィンドウマーク(?)を二箇所クリックしてみてください。


以下のように2つのウィンドウが現れ、そのうち「Project Explorer」の方には先程入力したプロジェクト名のディレクトリが表示されているはずです。


次に、画面上部のメニューから「Window」→「Show View」→「Other...」の順にクリックしていきましょう。


すると、以下のようなダイアログが表示されるので、中央のリストから「Make」ディレクトリ直下の「Build Targets」を選択し、「Open」ボタンをクリック!


これにより、画面下部のウィンドウに「Build Targets」タブが追加されたはずです。


配置場所が気持ち悪いので「Build Targets」タブをマウスでドラッグして左に移動させましょうか…。

(個人の好みで結構ですよ。)


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

このCode Composer Studioは、Eclipseベースなので、上記のページと同じ方法で作業を続行できます、

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

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

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


これまでの作業を行っていると「Console」タブが気持ち悪い場所に表示されていますね。

スペースの無駄なので、すぐ上のウィンドウと統合してしまいましょう。

Console」タブをマウスで上のウィンドウへドラッグ&ドロップしてください。


こんな感じ。


このように、各タブの表示位置は個人のお好みに応じて変えていってくださいね~。


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


<続く>

2022年11月5日土曜日

TOPPERS/ASP - Arduino Mega2560版 目次

Arduino Mega2560版に関する記事の目次です。

ブログの性質上、どうしても日付が新しい順となってしまって読み難いんですよね…。


■TOPPERS/ASP - Arduino Mega2560版 その1

TOPPERS/ASP - Arduino Mega2560版 概要

必要なもの

ダウンロード/GitHub


■TOPPERS/ASP - Arduino Mega2560版 その2

開発環境の構築(Microchip Studio編)


■TOPPERS/ASP - Arduino Mega2560版 その3

開発環境の構築(Eclipse編)


■TOPPERS/ASP - Arduino Mega2560版 その4

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

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


■TOPPERS/ASP - Arduino Mega2560版 その5

デバッガとArduinoの配線

AVRマイコンのヒューズ設定

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


■TOPPERS/ASP - Arduino Mega2560版 その6

サンプルプロジェクトの説明

Arduino Mega2560版カーネルについて

参考資料

ライセンスについて



なお、Qiitaにも上記の記事を1ページにまとめたダイジェスト版を投稿しました。

こっちの方が読み易いです。

是非参考にしてください。

Qiita

TOPPERS/ASP - Arduino Mega2560版 - Qiita

2022年11月1日火曜日

DEVKIT-MPC5744Pという評価ボードを発掘!?

会社のデスクの下に置いてあるダンボール。

この中には、色々なマイコンの評価ボードやデバッガーが入っています。

大概は、いつかOSでも載せてやろうと思って買っておいたものです。

OSを載せるのは、そのマイコンのアーキテクチャを根本から理解しないといけませんが、その過程が面白くて、ちょっとしたゲームみたいなものです。

ましてや、マイナーなものになってくると、インターネット上で拾える情報も限られていて、ほとんど無理ゲーみたいなマイコンもありますが、そういうマイコンほど攻略に時間がかかり、長い時間楽しめるのでお得です。

貧乏性ともいう…。

とはいえ、本業をおろそかにしてはいけないので、こういった楽しみに使う時間も限られており、そのくせ気になった評価ボードは頻繁に買ってしまうものだから、このダンボールが一杯になってしまいました。

買っただけで開封もせずに積み上げているテレビゲームを「積みゲー」とか言いますが、アレと同じですね。

そんな私の「おもちゃ箱」ですが、そろそろ中身を整理するか~と思い立ち、ダンボールの中を整理していると…。

まったく買った覚えのない評価ボードを発見!


なんだコレ?


ヤバい、本当に買った記憶がない...。


この型番をネットで調べてみると、どうもNXP製のPowerPC系のマイコンの評価ボードみたいです。

私の場合、公式でサポートされていないようなアーキテクチャのマイコンにRTOSをムリクリ載せて動かすことに喜びを覚えるタイプの変態プログラマーなので、なぜこれを買ったのか不思議です。

というのも、確かPowerPCのTOPPERSって既にあったよな?

...と思って調べてみると、ああなるほど。

TOPPERS/JSPという一世代古い実装は存在しますが、TOPPERS/ASPは公式ではリリースされていないんですね。

それを知って衝動的にポチってしまったのでしょう。

両者の違いはそれほど大きくありませんが、時間を作ってこの評価ボードにもTOPPERS/ASPを移植してみましょうか。

コイツの後くらいに…。

TOPPERS/JSPを参考にすればそれほど長い期間は楽しめませんが、古くからのMacintosh使いの私としては、PowerPCというアーキテクチャには多少の興味とご縁もあることですし。

失礼な言い方ですが大成功とは言えないアーキテクチャで、もはや需要は少ないかもしれませんが、公開できればブログのネタにもなります。

また、ウィキペディアを読んでみると、なかなかにその誕生の経緯も熱い!


思わぬ所から暇潰し(今はそれほど暇じゃないけど!)のネタを発掘してしまいましたというお話。

ちょっと得した気分です。

2022年10月25日火曜日

TOPPERS/ASP - MSP430版 その3

前回からの続きです。

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


開発環境の構築(IDE編)

続きまして、MSP430用のIDEのインストールを行います。

IDEは、TI社純正の「Code Composer Studio」というものを使用します。

以下のページでダウンロードします。


https://www.ti.com/tool/ja-jp/CCSTUDIO

右上の「ダウンロード」というボタンをクリックすると…


以下の場所まで移動しますので、「CCSTUDIO - Code Composer Studio 統合開発環境」の右の「ダウンロードオプション」ボタンをクリックしましょう。


以下の表示が出たら、目的のタイプのコンパイラを選択します。

このブログでは「Windows single file (offline) installer for Code Composer Studio IDE (all features, devices)」をダウンロードしたものとして説明します。


ダウンロードが完了すると「CCS12.x.x.xxxxx_win64.zip」というファイルが生成されますので、これを解凍します。

解凍されて生成された「CCS12.x.x.xxxxx_win64」ディレクトリの中に「ccs_setup_12.x.x.xxxxx.exe」というファイルがあります。

これがインストーラー本体ですので、ダブルクリック!


以下のように、インストーラーが起動しますので「Next」ボタンをクリックです。


以下の表示は、もはや儀式。

I accept the agreement」を選択して「Next」ボタンをクリックします。


この画面は、特に何もする必要がなく「Next」ボタンをクリック。


ここで以下の警告、「ペンディングされた再起動があるから、続けるならPCを再起動してけろ…」って、よく分からないが…とりあえず「OK」ボタンをクリックしましょう。


自動的に再起動食らうのでは?と思いましたが、そういうこともなく以下の表示が出ます。

続けて良いんだよな?

ならば「Next」ボタンをクリックしましょう。


この画面も、特に何もする必要がなく「Next」ボタンをクリック。


以下の表示は、このIDEで使用するマイコンのアーキテクチャを選択する画面です。

今回は、MSP430で使用しますので「MSP430 ultra-low power MCUs」のみをチェックして「Next」ボタンをクリックしましょう。


その後は、特に何もする必要がないので「Next」ボタンを連打です。



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

完了までは、かなりの時間がかかります(序盤は順調にプログレスバーが進むが、終盤にグズグズする)。


インストールが完了すると、再び以下の警告が!

何やら「このインストールを完了するには再起動してけろ…」だって。

よっぽど再起動して欲しいらしい…わかったよ。

とりあえず「OK」ボタンをクリック。


以下の表示が出れば、インストールは完了です。

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


さて、インストールされた「Code Composer Studio」をすぐにでも起動させてみたいところですが、散々再起動しろ!って言われたので、ここで一旦PCを再起動しましょう。

こういうのは従っておいた方が、後々トラブルに遭う可能性が少なくなるんで。


再起動後は、デスクトップに「Code Composer Studio」ショートカットが出来ているはずなので、それをダブルクリックしてIDEを起動してみましょう。

以下のようなスプラッシュ画面が表示されます。


しばらくすると、以下の表示が。

ここでベテランさんはピンと来ているハズ。

この「Code Composer Studio」って「Eclipse」ベースじゃね!?

…正解!

前回の「Arduino Mega2560版」で使用した「Microchip Studio」は「Visual Studio」がベースでしたが、今回は「Eclipse」ベースなのです。

マイコンベンダー各社は、もはや自前でIDEを作らなくなっちゃったんですかね。

企業の側でもIDEの開発工数を削減できるし、客側もベースとなったIDEを使った経験があればそれを活かせるし、メリットが多いのでしょう。

でもどうせなら、やたらと重い「Visual Studio」や、やや陳腐化している「Eclipse」などより、「Visual Studio Code」をベースにしてくれた方が軽くてナウい気がするんですけどね。

話を戻して…。

この表示で、ワークスペースのディレクトリを選択します。

特に拘りがなければ、そのままで「Launch」ボタンをクリックしてください。


以下の画面が出れば「Code Composer Studio」は正しくインストールできています。

やっぱ「Eclipse」だね~。


さて、次回は、この「Code Composer Studio」上でTOPPERS/ASPカーネルを動かすためのプロジェクトを作っていきましょう。


<続く>

TOPPERS/ASP - MSP430版 その2

前回からの続きです。


開発環境の構築(コンパイラ編)

何はともあれ、まずはMSP430用のコンパイラのインストールを行いましょう。

以下のページでダウンロードします。


https://www.ti.com/tool/ja-jp/MSP430-GCC-OPENSOURCE

右上の「ダウンロード」というボタンをクリックすると…


以下の場所まで移動しますので、「MSP430-GCC-OPENSOURCE」の方の「ダウンロードオプション」ボタンをクリックしましょう。

もう一方の「MSP432-GCC-OPENSOURCE」の方だと、ARMのコンパイラのダウンロードになっちゃうので注意。


以下の表示が出たら、目的のアーキテクチャ用のコンパイラを選択します。

このブログでは「Mitto Systems GCC Windows installer incl. support files」をダウンロードしたものとして説明します。


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

程なくして、以下の表示が出ます。

実行できない!?…と焦らずに「詳細情報」というリンクをクリックします。


そうすれば、ちゃんと「実行」ボタンがあらわれますので、これをクリック。


以降、インストーラーが起動し、しばらくは「Next」ボタンを連打です。




インストールが始まりましたね?


インストールが完了したら「Finish」ボタンをクリック。

これでコンパイラがインストールされました!


今回使うMSP430用のツールチェーンの環境変数の設定を行います。

ツールチェーンは、先程のインストール作業により既に以下のディレクトリにセットアップされているはずです。


C:\ti\msp430-gcc\bin


環境変数の設定方法は、このページ(TOPPERS/ASPのビルドからデバッグまで~GNUツールチェーンの導入)の「環境変数の設定」の項目を御覧ください。

ただし、パスは…


C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin


…となっているところを…


C:\ti\msp430-gcc\bin


に置き換えてください。

こんな感じ…。


また、このページの「パスの確認」の項目で打ち込むコマンドも、以下のように変わります。


> msp430-elf-gcc --version


続きまして「Cygwin」のインストールを行います。

このページ(TOPPERS/ASPのビルドからデバッグまで~Cygwinの導入)を参考にしてください。


「Cygwin」がインストールできたら、ここまでの作業が上手くいっているかどうか確認しておきましょう。

次のページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトのビルド)を参照してください。

ただし、今回使用するソースコードはこのページの冒頭の「NUCLEO-F401RE STM32 Nucleo-64」開発ボード用のTOPPERS/ASPカーネル簡易パッケージではなく、「MSP430」用のものを使います。

ソースコードのダウンロードはこちらからどうぞ。

また、「Github」を使いたい方は以下のコマンドでソースコードのクローンを行います。


$ git clone https://github.com/RyutaroMorita/asp_msp430_gcc.git


ダウンロードとGithub、いずれの場合も「asp_msp430_gcc」というディレクトリの名前を「asp_1.9.2」などと改名すると、上記のページと同じ状況になります。

また、今回は「OBJ」ディレクトリを作成する必要はありません。

これは既に用意されていますので、そのまま「OBJ」ディレクトリに移動し「make~」コマンドを実行してください。


コマンドライン環境で正しくビルドができることを確認したら、次回はTI社のIDEである「Code Composer Studio」のインストールを行っていきます。


<続く>

2022年10月16日日曜日

TOPPERS/ASP - Arduino Mega2560版 その6

前回からの続きです。

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


サンプルプロジェクトの説明

このページ(TOPPERS/ASPのビルドからデバッグまで~サンプルプロジェクトで遊ぼう)を参照してください。


Arduino Mega2560版カーネルについて

以下、このカーネルにおける備考です。


●ArduinoIDEやライブラリは使用不可

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

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

但し、「ATMega2560」チップのペリフェラル用のデバイスドライバなどは「Microchip Studio」導入時にサンプルプログラムのインストールを選択していれば、豊富なサンプルコードが手に入るはずです。

少々手間ですが、これらをカーネル上で動くように移植することは難しくないと思います。

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

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


●割り込み優先度の設定不可

このカーネルでは、割り込み優先度の設定はできません。

コンフィグレーションファイルなどにおいて、他のアーキテクチャからの移植性を考慮して、-1(優先度最低)から-6(優先度最高)を設定してもエラーが起きないようになっていますが、実際の動作に反映しません。

これは「ATMega2560」チップに搭載されている割り込みコントローラーがシンプルな設計であり、割り込み優先度を変更する機能が存在しないためです。

「ATMega2560」チップにおける割り込み優先度は、割り込み番号が若いほど優先度が高くなるように固定されています。


●多重割り込みには未対応

デフォルトでは、割り込みハンドラやタスクコンテキスト以外のプログラムのための(非タスクコンテキスト用)スタック領域は、0x200(512バイト)としています。

これは「..\target\arduino_mega2560_gcc\target_config.h」の以下の箇所で「DEFAULT_ISTKSZ」という名前で定義されています。

  1. /*
  2.  * デフォルトの非タスクコンテキスト用のスタック領域の定義
  3.  */
  4. #define DEFAULT_ISTKSZ  0x200U
  5. #define DEFAULT_ISTK    (void *)(0x00002200U - DEFAULT_ISTKSZ - 1)


このスタックサイズは、Arduino Mega2560に搭載されている「ATMega2560」チップのRAMのサイズがわずか8KBであることを考えれば、妥当と考えています。

しかし、これにより多重割り込みのサポートを諦めています。

0x200(512バイト)というスタックサイズでは、割り込みをネストするのには十分ではなく、あっという間に暴走してしまう危険性が高くなりますので、そのリスクを避けました。

もっとも、多重割り込みが必要なほどの処理がシビアなアプリケーションには、このターゲットは使われないだろうと判断した結果です。


●例外ハンドラは未対応

コンフィグレーションファイルなどにおいて、他のアーキテクチャからの移植性を考慮して、例外ハンドラの作成はできるようになっているものの動作はしません。

理由は「ATMega2560」チップに例外処理が存在しないためです。


●一部サービスコールは未対応

割り込みIDを指定して、これを有効/無効化するための「ena_int()」と「dis_int()」サービスコールはサポートしていません。

これは「ATMega2560」チップに搭載されている割り込みコントローラーがシンプルな設計であり、割り込み要因ごとに有効/無効化するためのフラグを設けていないためです。

どうしても一時的に割り込みを有効/無効化したい場合は、各ペリフェラルのレジスタを設定するか、CPU全体の割り込みを一括で設定しても良いのであれば、以下のような処理で代用してください。

  1. /* すべての割込みの許可 */
  2. Asm("sei");
  1. /* すべての割込みの禁止 */
  2. Asm("cli");


また、性能評価用システム時刻取得のための「get_utm()」サービスコールは未実装です。


参考資料

Arduino Mega2560に搭載されている「ATMega2560」チップに関する詳細な情報は、メーカーであるMicrochip社のWebページはもちろんのこと、「AVR日本語情報サイト」をご覧頂くことをお勧めします。

特に後者のページは、ディスパッチャやデバイスドライバの実装の際に大変にお世話になりました。

こんな場で恐縮ですが、心より感謝を申し上げたい。

ありがとうございました!

このページは、日本におけるAVRマイコンのシェアを大きく伸ばしたものと思います。

但し、条項が厳しいため(相当イヤな目に遭ったみたい…)、こちらのサイトへの直接リンクを張ることはできませんので、お手数ですが検索してお読みください。


ライセンスについて

このカーネルは「TOPPERSライセンス」で配布しております。

無償ですが、使用に関しては自己責任です。

まず居ないとは思いますが…万が一、このカーネルを商用利用するような無茶をやる場合は、このリンク先の条項に従ってください。

あと、その場合は必須ではありませんが、当方に連絡いただければ、ちゃんとソースコード見直します。

…怖いから!


<終わり>

BSD 4-Clause License

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