<   2016年 11月 ( 17 )   > この月の画像一覧

V-scale のマシンモードパタンを通すために、mstatus レジスタを実装した。いや、正確にはビットアサインが変わっていたのを直したので9割、他にもちょっと機能を足したけど… で、4本のパタンがパス。
即値でシフト量を渡すシフト命令のシフト量が32を超える場合を直してもう1本パス。
残るはミスアラインメモリアクセス例外2本とブレークポイントの合わせて3本。
でも、ちゃんとマニュアル読んでないから、他にも直す必要ありそうな気がする…

[PR]
by tom01h | 2016-11-29 22:52 | PCとか | Trackback | Comments(0)
先日、マシンモードのパタン9本を試してみると、3本パス、3本フェイル、3本終了せずだったのですが、よく見ると、本当はパスじゃないものもいくつかある事に気づきました。まずは illegal_csr_access の論理ループをぶった切った暫定修正をちゃんと直すべきみたいです。
直してみたら… なんか、ユーザモードでマシンモードのレジスタにアクセスするパタンがある。意味わからん。と思ったら、mstatus レジスタの意味が分かっていないらしいです。次は、ここをちゃんと作ろうと思います。
ちなみに、スーパバイザの stvec を触っているのはパタンのバグだよねぇ。

[PR]
by tom01h | 2016-11-28 00:26 | PCとか | Trackback | Comments(0)
V-scale で遊びたいんだけど、なんとなく古いアーキテクチャのまま取り残されているように見える。test/ に入っている hex ファイルしか実行できない CPU ではつまらないので、riscv-tests リポジトリの RV32IM のユーザモードのテストくらいはパスするように改造する。
その前に、入力ファイルの生成方法がわからなかったので、読み込むファイルの形式を ihex に変更した。
リセットベクタが変わっていたり、システムレジスタのアドレスが変わっていて、なかなか本来のテストまで届かない。意味の分からないレジスタも、とりあえず isa のパタンが通れば良い程度の変更をした。で、やっとテストが始まると、テスト部分はあっさり通過。だが、終了方法も変わっている模様。そこまで直すとやっとパスした。
1本通ると、他の全部のテストもパスしました。まあ、基本的なところは変わっていないってことか。
特権マニュアルちゃんと読んで変更分反映しないとダメかな?こういうのつまらないんだよなぁ。
現状版を GitHub に公開しました。
[追記] rv32mi-* の9本を試してみると、3本パス、3本フェイル、3本終了せずでした。ここから手を付けるか。

[PR]
by tom01h | 2016-11-26 20:59 | PCとか | Trackback | Comments(0)

Rocket Chip Generator

一応 Rocket Chip Generator も試してみようと思った。
ますは WSL で試したんだけど、JAVA が動かない。
[error] (antlr4:Generate classes from antlr4 grammars) java.io.IOException: Cannot run program "java": error=12, メモリ を確保できません
WSL では JAVA のメモリ関係で動かない事もあるとか書いているネットの情報もある。でも WSL は日々進化しているし、古い情報は当てにならないかも。まあ、うちでも動いていないんだけどね。
でもなんで JAVA 使っているの?Chisel は Scala の上で動いて、 Scala は JAVA の上で動くのかな?Windows の JAVA を呼べると解決するかな?
[追記 ここ に書いたとおり、CreatorsUpdateは出来るようになったみたいです。試したのはFreedom E310ですが。]

で、VM 上の Ubuntu でも試してみたら動いた。Java 入れろっていうから入れてみたのに、今度は Javac がないっていう。検索してみたら、Javac は Java とは別みたいね。で、入れてみたら、その後勝手に Scala 入れたり Verilator 入れたりとっても時間かかった末に Verilog を吐くところまでは確認できた。これは人の読める Verilog じゃないや。V-scale はやっぱり人手で書いていると推測します。
この後、この Verilator で Linux のブートとかもできるのかな?ちなみに、spike での Linux は Ubuntu 上でも動きませんでした。

[PR]
by tom01h | 2016-11-23 22:10 | PCとか | Trackback | Comments(0)

Arty で kozos Step6 完成

なぜか gets の途中で有りもしない改行を拾っていた改行が来なくてもループを抜けていたのですが、リンカスクリプトを変えたらちゃんと動くようになりました。がしかし、どう悪かったのかは謎のまま。H8 の設定のまま使っていたけど、気持ち悪いところを指していたので、変えたら動きました。が、元がどう悪かったのかは分かりません。
ramall(rwx) : o = 0xffffbf20, l = 0x004000 /* 16KB */
ram(rwx) : o = 0xffffc020, l = 0x003f00
stack(rw) : o = 0xffffff00, l = 0x000000 /* end of RAM */
↑を↓にした
ramall(rwx) : o = 0xffffc000, l = 0x004000 /* 16KB */
ram(rwx) : o = 0xffffc100, l = 0x003f00
stack(rw) : o = 0xffffff00, l = 0x000000 /* end of RAM */
まぁ、動いたからいいか。ここで終わりにしようと思っていたけど、割り込みのデバッグに Step7 もやってみた方が良いかな?
f0054075_20002261.png

[PR]
by tom01h | 2016-11-22 20:53 | PCとか | Trackback | Comments(0)

登山用ドリンク

登山用ドリンクは、お茶とスポーツドリンクと水を各 500ml 持っていくのがデフォ、小さい山だと水はなしです。そして、スポーツドリンクは泊りのことも考えて 500ml 用粉末を使っています。お茶は良いのが見つかっていません。暖かい飲み物を持っていくことはめったにないかなぁ。
で、粉末ですが、以前は amino VITALのクエン酸チャージを使っていました。最近は VAAM を使っているのですが、特にこれに変えた理由はなくって、たまたまこれしか 500ml 用の粉末がなかったから。しかし、VAAM は評判もそうだし、売りもそうなのだから仕方ないけど、すごく汗をかきます。これ、あんまり山に向いていない。ダイエットには良いのかもしれないけどね。なので次はまた、amino VITAL に戻します。今年はよくばてていたのは飲み物のせいだったのなら良いなと思っています。
f0054075_23535454.jpg

[PR]
by tom01h | 2016-11-21 19:54 | Trackback | Comments(0)

高山不動尊

西吾野の高山不動尊へ行きました。まずは不動三滝へ。思ったよりも綺麗な滝が待っていました。いろいろと行ったり来たりだし、結構疲れます。そして、コースタイムよりもだいぶ余分に時間がかかります。
f0054075_20474362.jpgf0054075_20482953.jpg

f0054075_20483056.jpgf0054075_20484416.jpg
写真の順番前後しますが、紅葉がとってもきれいでした。
f0054075_20555693.jpgf0054075_20574919.jpg

f0054075_21072195.jpgf0054075_21072287.jpgそして高山不動尊。ここも紅葉がきれい。有名な銀杏がこれ?おっかない石段を上るとすごく立派な不動尊が建っていました。
f0054075_21171591.jpgf0054075_21171609.jpg
[PR]
by tom01h | 2016-11-20 21:19 | 山歩き | Trackback | Comments(0)

VirtualBox に Ubuntu

やっぱり WSL では出来ないこともありそうなので、仮想マシンに Ubuntu を入れようと思う。さすがに SSD128GB の VOYO V3 に入れるのはきついかと思うので、Vostro に入れる。
Ubuntu は日本語化された 16.04 をここからダウンロードします。さっそく Windows Update が邪魔しに来やがった。そういうところが嫌われているってことを自覚すべきです。いやでも、Windows を消すんじゃないから。
で、大体この通りにインストールする。メモリ4GBディスク32GBくらいにしておいた。
ちなみに Ubuntu は root のパスワードが設定されていないらしい。こうすれば良いとのこと。
うーん、やっぱりこっちにも RISC-V 環境作るかな?
[追記]
VirtualBox をインストールしたら、PC TV Plus が使えなくなりました。なんの事だか解りませんが、仮想 NIC とやらに接続したらいけないそうです。で、この通りに無効化したら直りました。何かができなくなっているんだろうけど、仮想マシンからインターネット接続ができないわけではないようです。

[PR]
by tom01h | 2016-11-19 21:55 | PCとか | Trackback | Comments(0)
spike で Linux が動くものなのか?
まずは、ここを見ながらカーネル(vmlinux)をコンパイルしてみる。
soft-float じゃなくて no-float じゃないの?とか文句言われたので、srch/tiscv/Makefile を書き換えた。
#KBUILD_CFLAGS += -msoft-float
#KBUILD_AFLAGS += -msoft-float
KBUILD_CFLAGS += -mno-float
KBUILD_AFLAGS += -mno-float
これでカーネルはできたかな?
次はルートディスクイメージなるものが必要らしい。ここから下を見るのが良いか?
んん?mount が出来ないとな?WSL の限界かな?やっぱり本物の Linux が必要かな?
[追記]
そんなわけで、主力マシンの仮想環境に Ubuntu を入れてルートディスクイメージの作成だけそこでやってみる。
USB メモリに busybox をコピーして仮想環境に持っていく。
[デバイス]-[USB] からメモリを選ぶと Ubuntu が認識するんですね。どこにマウントされたのかわからないので、GUI でコピーします。
そして、mnt/ 以下にいろいろと操作しろと書いてあるけど、これは全部 root 権限じゃないと出来ないみたいです。
出来上がった root.bin をもう一度 USB メモリ経由で持って来て、
This is bbl's dummy_payload. To boot a real kernel, reconfigure
bbl with the flag --with-payload=PATH, then rebuild bbl.
ん?bbl を作り直すのか?
$ ../configure --prefix=$RISCV --host=riscv64-unknown-elf --with-payload=../../linux-4.6.2/vmlinux
$ make
$ cd HOGE
$ spike +disk=root.bin ../riscv-pk/build/bbl
なんか出たけどまだみたい。root.bin があってもなくても同じ所で落ちるので、root.bin がマウントできないんだろうね。
[ 0.040000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

[PR]
by tom01h | 2016-11-19 00:03 | PCとか | Trackback | Comments(0)

Arty で kozos Step6 途中

組み込みOS自作入門の Step6 をやってみた。リンカスクリプトのアドレスが短いのを直して実行。大体ちゃんと動いているように見えるんだけど、gets が改行来なくても抜けちゃう。再現性は高く見えるけどルールはわからない。gets 自体はブートローダ側にもあるし、その周りもほとんど同じようなコードだし、そっちではちゃんと動いてるんだけどね。
int gets(unsigned char *buf)
{
int i = 0;
unsigned char c;
do {
c = getc();
if (c == '\n')
c = '\0';
buf[i++] = c;
} while (c);
return i - 1;
}
ちなみに、ずっと SoC の奥の方をやってきたので TXD,RXD のクロスを忘れるのは仕方がないとか言い訳してみたいんだけど、Arty のマニュアルには矢印まで書いてあるのでちゃんと見てれば間違わないよね。
f0054075_22144220.png

[PR]
by tom01h | 2016-11-17 23:03 | PCとか | Trackback | Comments(0)