このページは、本HPで作成したオリジナル16ビットCPUコアMoscoviumをBlocklyで開発するための、Blockly.XML→Moscovium.ASM変換スクリプトマニュアルです。
詳細については、以下リンクから本文を参照してください。
本文へ戻る。
オリジナル16ビットCPUコアMoscoviumのプログラムを、Blocklyで開発できる様になりました。
Google Blockly公式HP(別ウインドウが開きます)
Blocklyは、Google社が提供する、グラフィカルにブロックを組み上げることでプログラムを開発できる、ビジュアルプログラミング開発環境です。
Googleが配布するBlocklyデモに、Moscovium用のカスタムブロックを追加した環境で、プログラム開発が可能です。Blocklyデモ+Moscovium開発環境の構築方法については、こちらをご覧ください。
上図で「Code Editor」リンクの先が、Blocklyエディタです(下図)。
プログラムを作成したら、「XMLタブをクリック ⇒ XMLデータを全選択 ⇒ コピー ⇒ テキストエディタに貼り付け ⇒ セーブ」等の手順で保存が可能です。
保存したXMLデータは、逆の手順で読み込み可能な他、Blockly.XML→Moscovium.ASM変換スクリプトによって、Moscovium用のアセンブラソースファイルへ変換することができます。
変換スクリプトはこちらからダウンロード可能です。
Blockly.XMLからMoscovium.ASMソースリストへの変換は、いたって簡単です。
アセンブラ言語に比べて抽象度の高いBlocklyを使ってプログラムを組むことができるのは、大きな優位となるはずです。
以下リンクよりダウンロードしてお使いください。
変換プログラム:blky2mcvm.olv
ランタイムライブラリ:blky2mcvm.incl
※スクリプト(.olv)の実行には拙作Olive+をWindowsにインストールしてください。
拡張子OLVファイルはBlockly.XML→Moscovium.ASM変換スクリプト、INCLファイルはMoscoviumマクロアセンブラでアセンブルする時に必要となる、ランタイムライブラリです。
Cmod A7ボード(FPGA)用Moscoviumマイコンの設計データ(Vivadoプロジェクト)は、GitHubにて配布しております。以下バナーよりアクセスしてください。
Blockly.XML→Moscovium.ASM変換スクリプトやマクロアセンブラなども、GitHubのデータに含まれます。
※本HPの設計データは全て、「サポート無し、無保証」であることを前提としています。ご承知の上、ご活用ください。
Blocklyのエディタに於いて、より上に配置されたブロック群が、先にXML形式として出力されます。
Blockly.XML→Moscovium.ASM変換スクリプトは、XMLファイル内の出現順にプログラムを実行しますので、プログラムのエントリポイントが一番上に配置されるようにしてから、XML形式で保存してください。
エディタ背景部分で「右クリック ⇒ Clean up Blocks」を実行すると、ブロックが縦に整列されるので、この様な機能も活用してください。
複数のブロック群が見つかった場合、変換スクリプトは、より上に配置されたブロック群から順に、下方のブロック群を実行して行きます。
これは、初めての関数/手続き/タスク定義に遭遇するまで適応されます。関数/手続き/タスク定義に遭遇すると、そこでCPUが停止します。CPUを停止したくない場合は、無限ループにするなど、プログラムで対処してください。
なお、一旦、関数/手続き/タスク定義が挟まった後で、再び遭遇したブロック群は、実行されることがありません。こちらに関しても、配置順(配置場所)に注意を払ってください。
各ブロックについて、引数の省略は不可です。引数に対しては、必ず、何らかの値を設定してください。適切なブロックが設定されることで、対応するアセンブラソースリストが出力されるため、引数を省略すると、意図した動作には、なりません。
同様にifブロックなど、ステートメント(do)の内容が省略不可の場合があります。
基本的ブロックの動作について、以下に説明します。
Logic: |
|
Loops: |
|
Math: |
|
Text: |
|
Variables: |
|
Functions: |
|
Moscovium用に拡張したカスタムブロックの動作について、以下に説明します。
Moscovium: |
|
Memory: |
|
Standard: |
|
String: |
|
Library: |
|
Blocklyエディタの「右クリック ⇒ Add comment」で追加できるコメント中に、変換オプションを指定することができます。
以下に、変換オプションの仕様を示します。
変換オプション仕様:
ブロック毎に"@int@"/"@float@"オプションを切り替える事で、符号付整数演算と、浮動小数演算を混在する事が可能です。
日付 | 項目 | 備考 |
2024/10/26 | 割り込み対応 |
irq enableブロックを追加。 taskブロックにIRQ,IRQ2タスクを追加。 変換オプション"@isr_bank@","@uart_baud@"を追加。 do repeat/loopブロックを追加。 |
2024/10/19 | マルチコアタスク対応 |
taskブロックを追加。 mem addrブロックを追加。 delayTicksブロックを追加。 変換オプション"@var_iram@"を追加。 エントリポイントに関する説明を追加した。 |
2024/09/07 | 文字列操作ブロック | オフセット付き文字列操作ブロックを追加した。 |
2024/08/31 | Google Blocklyデモ版 | 改定 |
2024/07/27 | Blockly.XML→Moscovium.ASM変換スクリプトマニュアル | 作成 |