Movatterモバイル変換


[0]ホーム

URL:


FPGA開発日記

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

2015-08-01から1ヶ月間の記事一覧

土日は出勤だったため、集中して勉強することが出来なかった... xv6を勉強していきたくて、ひととおりテキストは読み込んだものの、実際のコードはどこから手を付けていいのか分からない。 まずは、xv6の動作の仕組みを分かるところから探っていこう。 make …

はてなブックマーク - xv6の起動方法を追い掛ける

MIPSプロセッサは、実装フェーズに入ってきたので、あまり更新する内容が無いのだが、ISSのデコードテーブルから自動生成したRTLを組込む作業に入っている。 msyksphinz/pulsar-2github.com 自動生成コードはRubyで記述しているのだが、ちょっと柔軟性に欠け…

はてなブックマーク - ISSの埋め込み

6月に、xv6のテキストを翻訳して、ある程度の知識を手に入れたが、まだまだマスターしたとはいい難い。 そこで、せっかくシミュレータも作ったし、xv6をx86以外のアーキテクチャに移植して、xv6の構造を勉強してみることにしよう。 対象としては、RISC-V、MI…

はてなブックマーク - xv6を試そう(移植のための基礎知識の勉強)

ISSのボトルネックになっている部分を調査すべく、Google Perftools を導入した。 gperftools - Fast, multi-threaded malloc() and nifty performance analysis tools - Google Project Hosting どうやら、gperftoolsを使うと、 メモリリークの検出 ヒープ…

はてなブックマーク - Google Perftoolsを導入する

前回の続き。では、アドレスを探索できる機能を利用して、ブレークポイントの機能を作ってみよう。 gcc+gdbによるプログラムのデバッグ 第2回 変数の監視、バックトレース、その他のコマンド 調査してみると、gdbのブレークポイントは、実行前にブレークが発…

はてなブックマーク - ISSでアドレス逆サーチとブレークポイントの導入(2)

LuaとBfdのインタフェースが出来たので、これを利用していろんなことができる。 Luaインタフェースで、関数のシンボルからエントリポイントを探索する。 Luaで次のようなインタフェースを実装した。 get_addr (cpu, symbol) インスタンスCPUに対して、関数の…

はてなブックマーク - ISSでアドレス逆サーチとブレークポイントの導入(1)

という訳で、ISSをいろいろ修正して、無事にRISC-VのISSでCoremarkが動作するようになった。 あとは、これにいろいろデバッグ機能を足して、改良していく、という感じかな。 MIPS側のビルドもメンテナンスを行ったので、RISC-VとMIPS、どちらでも同じ機能が…

はてなブックマーク - 自作RISC-V ISSでCoremarkが動作するようになった

bfdのシンボルには、BSF_GLOBALとBSF_LOCALという、変数やセクション、各種定数を格納するためのセクションがある。 この中で、BSF_GLOBALはグローバル変数の情報が格納されており、取り扱うには一番簡単っぽいので試してみた。 関数のシンボルテーブルを作…

はてなブックマーク - グローバル変数にアクセスしたときのアクセス情報をログに表示する

何か誰かがやってた気がするなーと思って、調べてみたらGCC-4.9でサポートされてるのね。 errorとかwarningとかの文字を探すのがつらいので、これはかなり助かる。GCCのメッセージの色付け機能。 -fdiagnostics-color を追加することで実現可能だ。 Language…

はてなブックマーク - GCC-4.9以降でサポートされたメッセージのカラー表記

Bfd, Luaといろいろ道具は揃ってきたので、いろんな便利機能を実装してみよう。 msyksphinz/swimmer_riscvgithub.com まずは、関数の先頭にジャンプしたときに、その関数名を表示するように変更する。 この機能は、Lua側からだと、debug("func")を追加するか…

はてなブックマーク - シミュレーションログに関数名を表示させる

1年間で目標300エントリ程度としていたので、まあまあな到達状況。1月1日から今日まで230日くらい?なので、1ヶ月(4月)を除いて、ほぼ毎日更新できたことになる。 ブログという性質上、同じエントリをまとめて書くことができないのが辛いが、それでもいろん…

はてなブックマーク - ブログを始めてから200エントリ到達

BFDからバイナリデータを抽出してISSを動作させる(2) - FPGA開発日記msyksphinz.hatenablog.com バイナリファイルを読み込むことができるようになったため、Luaから制御できるようにしよう。 msyksphinz/swimmer_riscvgithub.com load関数を実装して、環境に…

はてなブックマーク - Luaからバイナリファイルから読み込んでISSに渡す

さて、BFDからデータを読み込んで、ISSにロードしていこう。 基本的には、ダンプしていたルーチンから、メモリオブジェクトに対してデータ書き込みの関数を追加しておく。 https://github.com/msyksphinz/swimmer_riscv/tree/bfd_testgithub.com -static voi…

はてなブックマーク - BFDからバイナリデータを抽出してISSを動作させる(2)

いよいよ、libbfdの使い方が分かってきたので、ISSに組み込んでシミュレータに流し込む実験に入ろう。 ただ、仕事が忙しくて、家に帰ってからもなかなか時間がとれない。 msyksphinz/swimmer_riscvgithub.com とりあえずは、まずはダンプ機能をISSに入れてみ…

はてなブックマーク - BFDからバイナリデータを抽出してISSを動作させる(1)

Luaを使ってシミュレータの制御ができるようになったので、次はlibbfdを使ってバイナリファイルからデータを取得してシミュレータに流し込めるようにしよう。 現在のシミュレータはsrecファイルを使っているので、取り扱いとしては簡単だが、情報が限定され…

はてなブックマーク - libbfdを使ってバイナリのデータをダンプするプログラムを書く

どうにかこうにか、ISSにLuaを組み込んだ。 msyksphinz/swimmer_riscvgithub.com Luaのインタフェースを使用して、CPUコアを生成して、シミュレーションをすることができる。 インタフェースのサンプルとして、以下を用意した。 msyksphinz/swimmer_riscvgit…

はてなブックマーク - LuaからC++の機能を呼び出す(ISSにLuaを組み込み)

昨日一昨日くらいは、LuaからどのようにしてC++のクラスにアクセスするかを調査していた。 やりたいこととしては、ある環境(クラス)を定義して、それにLuaからアクセスすることでクラス内の挙動を変えたい。 具体的に言えば、Lua側からスクリプトを書くこと…

はてなブックマーク - LuaからC++の機能を呼び出す(クラスに対するアクセス)

http://www.skyfree.org/linux/references/bfd.pdf libbfdを使えば、バイナリから情報を引き出し、プログラム中で利用することができる。これを使えば、今開発している命令セットシミュレータに、バイナリの情報を読み込んで、デバッグ情報を出力しながらシ…

はてなブックマーク - libbfdを使ってバイナリから情報を吸い出す方法の調査

ISSを外部から操作するための、スクリプト言語を組込みたくて、Luaについて調査してみた。 第 5 回: Lua を組み込み用の言語として利用する方法 (関数編) — WTOPIA v1.0 documentation Ubuntuで挑戦したのだが、インストールしたパッケージは以下。 sudo apt…

はてなブックマーク - LuaとC言語への組み込みの勉強(1)

かなりのパタンが動作するようになってきた。 msyksphinz/swimmer_riscvgithub.com ma_fetchというパタンは、フェッチ時にミスアラインが発生したときの対処をチェックするテスト項目だ。 RISC-Vのアーキテクチャでは、JALRのジャンプ先アドレスのLSBは無視…

はてなブックマーク - Privileged命令の実装 (命令フェッチミスアラインの動作)

以下のリビジョンでテストを実行。rv32si-p-*.hexを実行してパスするかをチェックした。 msyksphinz/swimmer_riscvgithub.com rv32si-p-csr.hex 156 : [00000184] 780e1073 : csrrw r00,0x780,r28 mtohost=>00000000 r28=>00000019 mtohost<=00000019 rv32si…

はてなブックマーク - システムレベル命令のテストパタン実行結果

プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?作者: 秋葉拓哉,岩田陽一,北川宜稔出版社/メーカー: マイナビ発売日: 2012/01/28メディア: ?行本-平装購入: 25人 クリック: 473回この商…

はてなブックマーク - next_permutationについて調べた

友人に教えてもらった、C/C++を書くときのGoogleのコーディングスタイル "google-c-style.el"を導入してみた。 google/styleguidegithub.com 自分の環境管理用のリポジトリのsubmoduleに追加しておいた。 git submodule add https://github.com/google/style…

はてなブックマーク - Google-c-style.elを導入してみた

RISC-Vのトラップの処理方法の勉強 - FPGA開発日記msyksphinz.hatenablog.com トラップの処理方法を勉強して、まずはrv32si-p-csrをパスするようにしたい... トラップが発生したときに、どのような処理が発生するか? RISC-Vのトラップは4種類用意されている…

はてなブックマーク - RISC-Vのトラップの処理方法の勉強(2)

新ISSでシステム命令系のパタンをパスさせようと奮闘中... システム命令は、以下の資料で定義されている。ただし、ユーザレベル命令と同様に、命令の説明を英語の文体で書いてあるため、理解に時間がかかる。 手っ取り早く、疑似言語とかで書いてくれればい…

はてなブックマーク - RISC-Vのトラップの処理方法の勉強

新RISC-V ISSの検証のために、まずはPrimitive命令の検証パタンを実行してみた。 msyksphinz/swimmer_riscvgithub.com 利用しているのは、RISC-Vが提供している以下のパタンだ。 riscv/riscv-testsgithub.com これのMakefileを一部書き換え、srecファイルが…

はてなブックマーク - 新RISC-V ISSでの検証パタン実行結果

ところで、CMakeで管理された別のライブラリを、自動的にコンパイルして、リンクまでするためにはどうすればいいんだろう。 今のISSでそれを実現するために、とりあえず簡単なモデルを作って勉強してみることにした。 msyksphinz/swimmer_riscvgithub.com プ…

はてなブックマーク - CMakeで管理された外部のライブラリをリンクする方法

CoremarkのRISC-V版は、一度本ブログでビルドしている。 Rocket-Chip を ZedBoardにインプリしてCoremarkを測定する(クロスコンパイル編) - FPGA開発日記msyksphinz.hatenablog.com ただ、これはLinuxで動作させるためのもので、ISSで動作を確認するためのビ…

はてなブックマーク - RISC-V用のCoremarkをビルドする(ISS動作確認用)

これで、ある程度PortableのISSが完成した。まだCoremarkが完走しないけど。 msyksphinz/swimmer_riscvgithub.com 同じリポジトリから、ベースを変えずにコンパイルオプションを変えるだけで、MIPSとRISC-VのISSがビルドすることができる。 RISC-Vのビルド方…

はてなブックマーク - MIPS用ISSをRISC-Vでも動作するようにする

昨日から本格的に実装を始めたMIPSの新ISSがなんとか動作するようになった。といっても、まだCoremarkくらいしか動作確認していないけど。 MIPS ISS実装中... - FPGA開発日記msyksphinz.hatenablog.com msyksphinz/swimmer_riscvgithub.com ビルド方法はまだ…

はてなブックマーク - 新ISSがどうにか動くようになった
検索

引用をストックしました

引用するにはまずログインしてください

引用をストックできませんでした。再度お試しください

限定公開記事のため引用できません。

読者です読者をやめる読者になる読者になる

[8]ページ先頭

©2009-2025 Movatter.jp