2017-11-01から1ヶ月間の記事一覧

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