Link命令をどう実装するか(SCP vs. Pipelined)

jump and link 「31番」レジスタ($ra = リターンアドレス)に「PC+4」を格納しつつ、即値で与えられたアドレスにPCを切り替える。という命令 SCPの場合 http://meseec.ce.rit.edu/eecc550-winter2005/550-chapter5-exercises.pdf 上記のように、 RegDst と …

FPGAにbootcodeやkernelをどう転送するか(SDRAMやUFMとやりとりするには)

いま使用しているDE−10 Liteは残念ながらSRAMを装備しておらず [方法1]Qsys & System Consoleを使う Qsys > SDRAM Controller bit幅を16にする 「wire」を右クリックして「Exported」にする メニューの Generate > Show Instantiation Templateの結果をコ…

Soc周辺機器

xv6

UART (8250, RS-232規格を満たしていればよい) 説明 https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming 実装例 https://github.com/varmil/uart-verilog https://www.nandland.com/vhdl/modules/module-uart-serial-port-rs232.html …

MIPS Interruptのハードウェア実装(CP0)

xv6

CPU受付完了時にassertするIACKピンの実装 We also want to have to ability to service external interrupts. This is useful if a device external to the processor needs attention. To do this, we'll add 2 pins to the processor. The first pin, cal…

xv6 bootmain

xv6

0x7c00 はx86のBIOSがMBRを読み取って、物理メモリに展開するときの位置(仕様) 0x10000 はプログラム側でディスク読み取って、物理メモリに展開する際のdstアドレス。これはリンカスクリプトの設定と一致させればよい。 つまり、自作する際はリセットベク…

xv6-mipsリンカスクリプトとentry

xv6

リンカスクリプトの OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradlittlemips", "elf32-tradlittlemips") OUTPUT_ARCH(mips) ENTRY(_start) この _start はentry.Sに定義されている。 # By convention, the _start symbol specifies the ELF entry poi…

xv6のI/O, PIC, IRQ, uart

xv6

プロセッサ側とポートを合わせなきゃいけないものと、kernel(ソフト側)で好き勝手に決めればいいものの境界線を探っている。xv6-mipsで定義している mips.h static int io_port_base = 0xb4000000; これはなぜこのアドレスなのかわからない。inb outb で u…

(xv6)kernelmemfsとmemide.o

memide.o Fake IDE disk; stores blocks in memory. Useful for running kernel without scratch disk. とあるとおり、Makefileでkernelをビルドする際にこいつを差し替えてる感じ。GAIAのをみるとわかるように実機で動かす場合はちょっと面倒な処理が必要か…

MIPS HardwareにおけるKSEG0, 1, 2のアドレス変換とTLB

KSEG0, 1におけるマッピングはハードとkernelがどう連携しているのか調査した。結論としては、ハード側でTLBにVirtualAddressを渡す前にチェック 例1) pc(virtual address)の上位2 or 3bitが 100 : KSEG0 (2.0G - 2.5G) 101 : KSEG1 (2.5G - 3.0G) 11 : K…

GAIAとxv6におけるbootloader

SRAM GAIAで使ってる基盤は4MB(222)のSRAMを積んでる。 rom.vhd は実際には sram.vhd をラップしてるに過ぎず、いわゆるDRAMは一切使用していない。(BlockRamというのもSRAMの一種らしい?) sram.vhdの中では、入ってきたアドレスの上位10bitは見ておらず…

xv6のbootloader

xv6_translate/chapter1.md at master · msyksphinz/xv6_translate · GitHub original UNIX v6 ROMに保存されているブートストラップローダプログラムが、ルートディスクのブロック番号0にあるブートストラッププログラムをメモリのアドレス0に読み込んで…

Program Memoryの書き換え

そもそもどのタイミングでプログラムがロードされるのか(xv6カーネルから) そして、Data MemoryとProgram Memoryをどうやって区別しているのか(See Mips Run) See MIPS Run - Dominic Sweetman - Google ブックス D-Cacheにまずプログラムが読み込まれて…

-Makefile編- xv6 (mips) コードリーディング

QEMUで実行できる形に最適化されているので、実機(FPGA)で動作させる場合はコードの手直しが必要かもしれない。 xv6.img, fs.img QEMUで実行する際に qemu-nox: fs.img xv6.img $(QEMU) -nographic $(QEMUOPTS) となるが、これは下記のようなコマンドとし…

TODO

JTAG-UARTってDE10-Lite+MIPS+xv6で使えるのか。使えなかったらシリアルポート付きFPGAを購入する必要あり? http://blog.goo.ne.jp/sim00/e/236d685cc29873571051270075449cac Nios II/eでHello, world! (Quartus IIとQsys) - FPGAがさっぱり分からない…

XV6の入出力

inb, outb ◆入出力の方法 CPU が持つ入出力命令を使うもの。 どのデバイスをアクセスするかは、ポート番号で指定する。 通常のメモリアクセスの命令を使うもの(memory mapped I/O)。 どのデバイスをアクセスするかは、番地で指定する。 x86ではポートマップ…

WIP ハードウェア資源は足りる?

MIPS/LinuxがDE-10 Liteで動くかという問題 出力: VGA, 2*20GPIO(SerialPortがないけど大丈夫?...MIPS/Linuxって標準でどこへ出力すんの?) メモリ: 1,638 Kbit M9K Memory 5,888 Kbits user flash memory(こっちにブートローダとかカーネルイメージ…

MIPSアーキテクチャ上にLinuxを初期インストールするには「ブートローダ」が重要

とりあえず、既存のMIPS CPUリポジトリを使ってFPGA実機でLinux動作させようと思ったが... Q. そもそも、LinuxカーネルイメージをFPGA(上のMIPS CPU)に転送しても、どうやって起動(or インストール)するのだろう? A1. ブートローダが鍵になるっぽい。 x…

LinuxディスクイメージをどうやってFPGAに焼くんだろう?

stackoverflow.com

linux コンソール周り

blog.ginbear.com

yaccとlex(コンパイラ)

プログラミング言語を作る/yaccとlex 言語処理系とは http://www.hpcs.cs.tsukuba.ac.jp/~msato/lecture-note/comp2002/1/lecture1.pdf Bison - Wikipedia

機械学習(サポートベクターマシン)でBitcoin相場を予測する

scikit-learnを使って勉強中 github.com

ライティングで影が汚い場合の対処法

answers.unity3d.com FBXの設定でGenerate Lightmap UVsにチェックを入れよう

UI設計

developers.cyberagent.co.jp

ポストプロセスもりもり on Nexus6p

ブルーム、SSAO、被写界深度を持ったコーネルボックス 描画領域を720pにしてぎりぎり30fps出るかどうか。

cookpadログ解析

speakerdeck.com

要素のソート

画像ソートとかに使える github.com github.com 検索クエリ javascript drag and drop sort

video / audio recording with browser API

github.com なるものがあるが、内部で RecordRTC というライブラリに依存しており、それがsafariをサポートしていない。ChromeとFireFoxのみのサポートだ。 Video Not working in safari · Issue #56 · muaz-khan/RecordRTC · GitHub ブラウザ内で動画撮影さ…

video play, Video upload, 360 photo

github.com github.com github.com HLS Http Live Streaming。つまり、くそでかい動画ファイルをちょっとずつクライアントに垂れ流すストリーミング配信がHTTPプロトコルで実現できる技術。必要に応じて使ったほうがいいかも。 dev.classmethod.jp

Facebook User AccessTokenの有効期限は2種類

developers.facebook.com ウェブ上のアクセストークンの寿命は、多くの場合、約2時間ですが、必要に応じて自動的に更新されます。特にサーバー側でより長期的なウェブアプリ用のアクセストークンを使用する必要がある場合、長期トークンを生成する必要があり…

dump exportとimport

mysqldump Export ↓ レコード削除 ↓ Alterテーブルでカラム追加する ↓ Import エラーなくImportできた。 # Export docker exec -i docker_mariadb_1 mysqldump -uroot <DB Name> > ./01221441.sql # Import docker exec -i docker_mariadb_1 mysql -uroot <DB Name> < ./012214</db></db>…