FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2016-06-01から1ヶ月間の記事一覧

RISC-V版xv6のコンソールデバッグ(cprintfの謎解析)

xv6

xv6をRISC-Vに移植する作業を進めているが、cprintfが上手く表示できずにずっと止まっている。 前回、怪しいと思ったのはここだ。 msyksphinz.hatenablog.com 80100600 <cprintf>: 80100600: fa010113 addi sp,sp,-96 80100604: 02112e23 sw ra,60(sp) 80100608: 0281</cprintf>…

「Unix考古学 Truth of the Legend」購入

Unix考古学 Truth of the Legend作者: 藤田昭人出版社/メーカー: KADOKAWA発売日: 2016/04/28メディア: 単行本この商品を含むブログ (3件) を見る Amazonのおすすめにちょいちょい上がってきていたので買ってみた。 正直こんなUnixの歴史を語る本だとは思っ…

xv6教科書翻訳を(多少)リファクタリング(誤字脱字の修正と怪しい日本語の修正)

xv6

github.com https://pdos.csail.mit.edu/6.828/2014/xv6/book-rev8.pdf xv6の移植を続けていて、ググっているとよく自分自身の文献にぶつかったりするのだが、その時の誤字脱字の多さに絶望するため多少リファクタリングを行った。 xv6の翻訳についてはまだ1…

RISC-V版xv6のコンソールデバッグ

xv6

RISC-Vに移植したxv6のデバッグを引き続き行っているのだが、どうやら表示系の調子がおかしい。 cpu-4096,33554432: init start コア数が多すぎる(笑)。 デバッグしているのだが、ついでなのでxv6の表示系はどのように構成されているのか見ていく。 xv6のUAR…

xv6のブートプロセスにおけるEBDAとBDAについて

xv6

xv6のブートプロセスにおいて、mpinitという関数があり、予想ではマルチプロセッサ関係の初期化を行っている。 その中で、EBDAやBDAというBIOS関連のアクセスに入る部分があるので、具体的に何をしているのかを調べてみた。 void mpinit(void) { ... bcpu = …

xv6ブートとISSの機能拡張(デバッグ用トレースを常にflushさせる)

xv6のブートをRISC-VのISSで再現させている。途中までうまくいっているのだがどこで止まっているのかわからない。そのときは階層トレース機能を使ってどの関数まで飛んできたかをチェックする。 <FunctionCall 183795: main(0x80104ec8)> <FunctionCall 183803: kinit1(0x80103a98)> <FunctionCall 183814: initlock(0x80106d2c)> <Return: initlock> <FunctionCall 183836: freerange(0x80103b38)> </functioncall></return:></functioncall></functioncall></functioncall>

MicrosoftのC言語拡張"Checked-C"のLLVM環境をビルドする(公開LLVMリポジトリにガッカリ...)

前回の続き。MicrosoftのC言語拡張 "Checked-C" のLLVM環境が公開されているので、ビルドに挑戦してみる。 msyksphinz.hatenablog.com 使用したのはVagrant上で構築されたUbuntu-14.04だ。ちなみにメモリは8GB程度必要になる。LLVMエグいな! github.com リ…

Microsoftの開発したC言語拡張「Checked-C」とは何なのか

Microsoftが、C言語を拡張した独自言語「Checked-C」の仕様をオープンソース化した。 developers.srad.jp Checked CはC言語にポインタの境界チェック機能を追加したことが名前の由来となっている。チェックに対応する新しい種類の配列型やポインタ型が追加さ…

Windows+MingWでChefが立ち上がらなくなった(継続調査中)

僕の自宅環境は基本的にすべてVagrantで管理されており、さまざまツールのインストールはChefを使って自動化している。 しかし環境がWindowsなものだから、Vagrantを利用するためにMingWをインストールしたり、Windows用のChefをインストールしたりしていた…

xv6のブート時に実行していること(ブート時の初期化とxchg命令)

xv6

自作ISSで少しずつxv6が起動してきた。 最初に実行されるのはmain.cのmain()だが、これはどのようにして起動しているのか少し見て行こう。 そういえば自分でxv6の教科書を翻訳していたのだった。これを参考に進めて行く。 github.com int main(void) { kinit…

RISC-Vのオペランドフォーマットについて(デコードの容易性とISSの修正)

RISC-Vのオペコードは、取り揃えはおそらくMIPSをベースにしているが、その命令フォーマットはMIPSのそれとは異なっている。 一応、彼らの言い分としてはデコードのしやすさを基準に設計してあるらしいが、それが本当に有用かどうかは正直分からない。 特に…

xv6のブートアップの仕組み(1. イメージのロードとelfの判定)

xv6

しばらくxv6のRISC-Vへの移植で、ブートアップが上手くいかずに悩んでいた。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com どの部分でコケていたかというと、bootmain.cでロードイメージの判定をして、ブートアップをす…

ISSを使ったxv6のデバッグ(まだブートできない)

ISS

とりとめのない記事だが、とりあえず日記なので書いておく。 RISC-Vアーキテクチャでコンパイルしたxv6を動作させるためにISSを利用して、シミュレーションを行っている。 現在、最初のHDDからカーネルのロードまでは終わっているが、そこから先でmainまで飛…

ISSの実装(32ビットモードと64ビットモード混在)

ISS

自作ISSのバグでしばらくハマっていた。32ビットモードでxv6やCoremarkなどのベンチマークを動かすと、ちゃんと動作してくれず、トレースモードが正常出力されない。 しばらく追いかけていたのだが、32ビットモードと64ビットモードの混在環境での詰めの甘さ…

Valgrindでプログラムの潜在的な問題を抽出する

C++

ISSでプログラムを実行して解析していると、ISSの妙な動作に遭遇することがある。プログラムの挙動が怪しい時は、解析をしていくのだが、どうやら未初期化の領域を参照しているらしい。 こういうときには、Valgrindで不正メモリアクセスをチェックするのが効…

Bazelビルドにおけるincludeディレクトリの関係

Bazelで自作ISSをビルドしようとしているが、いろいろと詰まっている。なかなかうまくいかないらしい。 これはC++のソースコードの記述を、Bazelに合わせるべきなので、Bazelの設定をがんばってC++に合わせるべきか。。。 includeファイルの指定方法 include…

RISC-Vユーザレベル命令セットVer.2.1が公開

RISC-Vのユーザレベル命令セットの改版Ver.2.1が公開された。 http://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf 64ビットよりも大きいデータを扱う命令において、RDフィールドが移動しないためのフォーマット変更 CSR命令を整数命令の章…

BazelのBUILDファイルとWORKSPACEファイルの関係性

Bazelをひたすら試行して、Bazelの小難しい環境がなんとなく分かってきた。特に注意しなければならないのは、Bazelに含まれるBUILDファイルとWORKSPACEファイルの関係性だ。ここを理解するのには、かなり時間がかかった。 例として、以下のようなプロジェク…

Bazelで自作ISSビルドの調査(階層ディレクトリとライブラリのライブラリのビルド)

Bazelでは一般的にどのような構成のプロジェクトディレクトリを作ればいいのかいろいろ調査していたのだが、日本語でうまいこと説明してくれている文章が見つからない。 クックパッドのブログは、実際の運用とビルドのトライアルの面でかなり役に立つものだ…

"Understanding the detailed Architecture of AMD's 64bit Core"の翻訳が完了

msyksphinz.hatenablog.com msyksphinz.hatenablog.com msyksphinz.hatenablog.com おおよそ2か月前から実施していた、AMDのOpteronアーキテクチャの詳細を示した文章、"Understanding the detailed Architecture of AMD's 64bit Core"の翻訳が完了した。 ht…