kozos on V-scale chip on ARTY

ARTY という FPGA ボード上に V-scale chip を実装して kozos という小さな OS を動かしたいっていうお話です。
ARTY は DIGILENT 社の FPGA ボードで、Xilinx 社の Artix 7 という FPGA が載っています。ここ とか ここ で1.6万円くらいで売っています。この FPGA 上に V-scale chip を載せます。ボード上には FPGA 以外にもいろいろな機能が載っているのですが、もったいないことに USB-UART くらいしか使っていません。この USB-UART チップを通して、V-scale chip の UART とパソコンの間で通信をします。↓こんなのです。
f0054075_20595195.jpg
V-scale chip は、先日紹介した V-scale という RISC-V アーキテクチャのマイコンを搭載します。マイコン以外は命令用とデータ用にシングルポート SRAM を2個と UART を搭載します。SRAM は各 16KB で、V-scale の I-Bus, D-Bus どちらからでもアクセスできます。ただし、競合によるバスストールを避けるためには命令とデータは明確に分離すべきでしょう。UART は TX,RX 用にそれぞれ4バイトの FIFO を持ちます。バスマスタ機能や割り込み発生機能は持ちません。ブロック図は下のような感じです。
f0054075_17094555.png

kozos は 組み込みOS自作入門 という本の中で作り上げていく、とても小さな OS です。もともとは H8 マイコンボード用なのですが、これを V-scale chip 向けに移植しています。OS(というかブートローダ)には次の機能があります
  1. UART を通してパソコンと通信する
  2. プロンプトを表示して、入力されたコマンドを解釈する
  3. XMODEM プロトコルで、ファイルを転送する
  4. 転送された ELF ファイルを展開して、マイコン上で実行する
本来はもっといろいろな機能があるのですが、現状はステップ6までで実現される、上の機能で満足しています。
ちゃんとは動かないけど、V-scale chip と共に ここ に公開しました。

[ぎりぎり動くようになったので追記]
[追記 AHBとはなんか違うプロトコルで動いていましたが、この度修正出来ました。]
プロンプトが出てきたら、load[改行]と打ってから、XMODEM でファイルを転送します。ここで ELF ファイルを転送すると、次の run コマンドでプログラムを実行できます。
kzload (kozos boot loader) started.
kzload> load
XMODEM receive succeeded.
dump[改行]と打つと、転送したファイルの HEXDUMP が表示されます。
run[改行]で、転送したファイル(ELF形式)を展開して実行します。
kzload> run
starting from entry point: 1900
Hello World!
>
サンプルプログラムは src/main/c/os/ 以下にあります。サンプルプログラムでは echo コマンドが使えます。転送するファイルは ELF をストリップした kozos です。ライブラリはすべて自作で、lib.c の物しか使えません。また、オリジナルでは 8kB 位までしか動かないそうです。vscale-chip ではアドレスマップを大幅変更しているのでよく分かりませんが、大体同じくらいの制限かと思います(^^;

[PR]
トラックバックURL : http://tom01h.exblog.jp/tb/27321632
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
by tom01h | 2016-12-22 00:00 | PCとか | Trackback | Comments(0)