IC・トランジスタで出来たコンピューターを設計・製作するためのブログ

Jeans & Development 電子ブロック工房 三日坊主 フロントページ

MachiKania type Pで、BASICコードからCで書かれたコードを呼び出す、その2 [MachiKania]

2023年3月26日

MachiKania type P の ver 1.2 では、BASIC コードから C で書かれたコードを呼び出すための機能追加がされた。ひとつ前の記事では、CプロジェクトをHEXファイルに変換し、そこから必要なC関数を呼び出す方法について述べた。この記事では、もう一つの方法について述べる。

HEXファイルに変換する方法においては、複雑なCでのコーディングが必要な多くの事例に対応できる。一つの例として、正規表現エンジンを実装するMachiKaniaクラス(REGEXP クラス)の実装について述べた。

この記事で述べる方法では、Cのプロジェクトから必要なコードを抜き取って BASIC コードに変換してプログラムに埋め込む方法を取る。HEXを介する方法と比べた長所は、以下の通り。

1.一つの BASIC ファイルの中に C コードを埋め込むことができる
2.HEX を介した方法では HEX コードのメモリ上での配置位置を考慮する必要があったが、この方法ではその必要が無い
3.C プログラムの中から必要なものだけを抜き取って BASIC プログラムに埋め込むので、メモリー占有領域を最小限にできる


他方、短所は以下の通り

1.複雑な C プログラムでは対応できない場合がある

従って、それほど大きくない C のプログラムの場合はこの記事で述べる方法が有利である。後に述べる「c_convert.php」スクリプトの実行でエラーが出る、あるいは、作成されたBASIC プログラムが意図したように動作しない場合は、HEXを介する方法に移行すればよい。

MachiKania type Pで、BASICコードからCで書かれたコードを呼び出す [MachiKania]

2023年3月26日

MachiKania type P の ver 1.2 では、BASIC コードから C で書かれたコードを呼び出すための機能追加がされた。この記事では、どのようにすれば C で書かれたコードを呼び出すことができるのかについて述べる。

方法は大きく分けて二通りあって、一つは RAM 上に HEX アプリケーションを読み込んでそこに含まれる機能を呼び出す方法である。RAM 上にアプリケーションを配置して HEX ファイルを作成する方法は、別の記事で紹介した。この記事では、作成したHEXファイル中にある C で関数をどのようにして呼び出すかについて述べる。この手法を用いて HELLO_CW アプリケーションREGEXP クラスを作成したので、それを例に挙げながら説明する。

もう一つは、C でビルドしたオブジェクトから、必要な機能だけをピックアップして、BASIC の EXEC ステートメントに変換して埋め込む方法である。簡単な C のコードを実行させる場合には、この方法が簡便でサイズもコンパクトにできるが、これについては、別の記事で取り上げることにする。

この記事では HEX アプリケーションを読み込んでそこに含まれる機能を呼び出す方法について述べたい。複雑な C のコードを呼び出すのに向いた方法である。

Raspberry Pi Picoで、RAM領域にアプリケーションを配置する [MachiKania]

2023年1月30日

Raspberry Pi Pico 用のアプリケーションを C で開発すると、デフォルトではメインプログラムがフラッシュ領域(アドレス 0x10000000 からの 2048 kbytes)に配置される。作成されたuf2ファイルを、Pi Pico 本体の BOOTSELボタンを押しながら PC の USB 端子に接続すると現れる RPI-RP2 ドライブにコピーすると、フラッシュ領域にプログラムが書き込まれ、2回目以降は Pi Pico に電源を供給するだけで、インストールしたプログラムが実行される。

この記事では、フラッシュ領域ではなく RAM 領域(アドレス 0x20000000 からの 256 kbytes)にプログラムを配置する方法について述べる。ソースコードに若干の変更を加えるだけでよい。(ビルドすると、uf2 ファイルだけではなく hex ファイルも作成されるが、この hex ファイルは、MachiKania type P でファイル選択すると、実行可能。)

MachiKania type P ver 1.2の新機能 [MachiKania]

2023年1月30日

2023/01/28に、MachiKania type P の ver 1.2を公開しました。

公式ページは、こちら。
Github リリースページは、こちら。

Readmeに記載した更新履歴は、次の通りです。
Phyllosoma 1.20/KM-1502(2022.1.28)
 ・USBキーボード及びエディターをサポート
 ・INKEY()・READKEY()・INPUT$()の3つの関数と、INKEY割り込み機能を整備
 ・クラスファイルコンパイル時に一部の環境で生じる不具合を修正
 ・ALIGN4ステートメント・DATAADDRESS()関数・FUNCADDRESS()関数を追加
 ・タイマー割り込みのタイミングが少しずれていたのを修正
 ・SYSTEM()に、メモリーアロケーション関連の機能を追加
 ・文字列で「\r」「\t」のエスケープシークエンスが使用可能に
 ・OPTION CLASSCODEに対応
 ・BASICプログラム実行中でのカードの抜き差しが可能に
 ・ファイル選択画面でC言語で作成したHEXファイルのロードが可能に
 ・CRDINI・CLDHEX・REGEXP・STRINGの4つのクラスを、ライブラリーに追加

MachiKaniaを使ったチャートレコーダー [MachiKania]

2022年12月27日

MachiKania type Pを使って、チャートレコーダー(記録装置)を作成しました。

2022-12-27-ChartRecorder.png

MachiKania type Pの開発環境 [MachiKania]

2022年9月30日

MachiKania type Pのver 1.1では、USBケーブルで接続したPC上で、BASICプログラムの開発や、クラスライブラリーの開発が行えます。

下の写真は、開発環境の実行例です。操作としては、PC上のテキストエディターでBASICプログラムを編集し、MachiKaniaのリセットボタンを押すだけです。MMC/SDカードの抜き差しや、BASICファイルのドラッグ&ドロップは必要ありません。

2022-09-25-Clipboard01.png

この機能は結構便利で、私自身が常用しています。MMC/SDカードの抜き差しをほとんどしなくなりました。以下で、開発環境の構築方法について述べます。

MachiKania type Pに、BASICプログラムを埋め込む [MachiKania]

2022年8月10日

MachiKania type Pでは、起動時に自動的に実行するBASICプログラムを指定することができます。これにより、Raspberry Pi Picoの電源を入れると指定のBASICプログラムがすぐに実行されます。

これを行うには、2つの異なる方法があります。

1.MMC/SDカードに、MACHIKAP.BASを保存する
2.MachiKania本体に、実行するBASICプログラムを埋め込む

の方法は、単にMMC/SDカードのルートに、MACHIKAP.BASという名でBASICプログラムを保存するだけです。特に説明は必要ないと思います。また、MACHIKAP.INIを編集すると、起動時にMACHIKAP.BASとは異なるファイル名のBASICプログラムを実行することもできます。

この記事では、の方法について述べます。の方法と異なり、MMC/SDカードも液晶ディスプレイの接続も必須ではありません。Raspberry Pi Pico単体でMachiKaniaおよび埋め込んだBASICプログラムが走ります。従って、様々な組み込み用途でMachiKaniaを使用することができます。

MachiKania type Pの実行速度 [MachiKania]

2022年7月26日

現在、Raspberry Pi Pico用のMachiKaniaを、ケンケンさんと共同で開発中です。これは、MachiKania Type M, Type ZとコンパチブルなBASICコンパイラーを搭載し、表示装置にLCDを使った、Raspberry Pi Pico用のMachiKaniaで、コードネームにPhyllosomaと名付けたものです。正式名称は、MachiKania Type Pになる予定です。近々、公式にversion 1.0を公開します。

Type MやType Zでは、プログラムの実行にMMC/SDカードやNTSCディスプレイが必要でしたが、Type Pではそういったものが無い環境でもBASICプログラムを高速で実行し、I2CやSPIなどのインターフェースで外部機器を制御することが可能です。従って、組み込み用途でのMachiKania Type Pの利用も、ニーズとしてあると考えています。

Raspberry Pi Pico用には、C/C++による開発環境やMicroPythonによる開発環境がすでに提供されていて、これらはニーズに応じて便利に使えます。C/C++で開発すると最速の実行速度が得られる一方、開発環境の構築に手間がかかり、かつ、外部機器との接続用のSDKの呼び出し方も複雑です。他方で、MicroPythonでの開発は外部機器の制御も分かりやすく、開発にかける時間を少なくできますが、実行速度がそれほど速くはありません。

MachiKaniaはC/C++と同じコンパイル形式なので、最速でないにせよ、ある程度の高速実行が可能です。また、Pythonほど強力ではありませんが、オブジェクト指向プログラミングも可能です。

そこで、MachiKaniaの利便性を評価するため、MachiKania・C/C++・MicroPythonで、実行速度の差がどれぐらいあるのか、調べてみました。

MM Systemの紹介 [PIC]

2020年12月3日

Microchip社のPIC32MMファミリーのマイクロコントローラーは、低価格で32ビットのCPUが使え、DIPパッケージもあるので、趣味の電子工作にはもってこいの石です。私自身も最近はこれを多用しています。そこで、色々な用途に簡単に使えるよう、最小限のインターフェースを簡単に実装するためのプラットフォームを作成しました。MM Systemと名付けています。

特徴:
 ・PIC32MM0064GPL028を使用
 ・出力用に、4桁の7セグメントLEDを標準装備
 ・入力用に、最大32個までのスイッチを接続化
 ・最大9個までのA/Dコンバーターの読み込みが容易
 ・PIC32MMに標準で組み込まれているSPIやUARTだけでなく、I2C通信も使用可

FZ/KM mega の紹介 [MachiKania]

2020年2月2日

FZ/KM megaは、MachiKania type Mで使える、Fuzix (ver 0.3) 実行環境です。

2020-02-02-fzkmmega.png
<<前の記事   後の記事>>