自作OS
この前作ったELFを読むコードを自作カーネルに移植して、ファイルシステムからバイナリを読んでそれを実行できるようにしてみました。 プロセス終了処理とかをちゃんと作って無いので一般保護例外出してますが・・・ 動作としては、"A"を表示するだけのカー…
自作カーネルにMinixのファイルシステム(V2)実装できました。ソースはいつもながらこちらです。 主要な実装はfs/minix/minixfs.cの以下の関数です。 minix_get_sb():スーパーブロックを読む read_file():指定したファイルのデータを取得 find_file():フ…
自作カーネル用にext2の実装をテストしてたんですが、inodeまわりでちょっとハマってたので、 ext2よりは簡単そうなminixのファイルシステムで実装の実験して、データを読めるようになりました。 ソースは例のごとくgithubにあります。 実装の方法は前回のex…
だらだろext2の実装を始めたので、忘れないようにc⌒っ゜д゜)っφ メモメモ... 基本的にはLinuxの実装方法を参考にしつつ進めてます。ソースはこちら。 とりあえず、極々基本的なreadの流れが出来たので、めもっとかないと自分で忘れてしまいますorz なんとな…
オレオレカーネル用のソフトウェア割り込みにやっと手を出したたので、メモっときます。 まぁ、今更なネタだし面白くないですけど。 ソースはいつもながらgithubに。流れ的には、こんな感じです。 1.設定 2.(どっかから)システムコール呼び出し 3.アセンブ…
c⌒っ゜д゜)っφ メモメモ... 自作カーネルでTSSを使ったタスク切り替えをしてて,かなりハマったのでメモっときます. ページング無+TSSでコンテキストスイッチは動いてたのに,ページング有+TSSだとセグメント間ジャンプしたときに落ちてて悩んでたんだけ…
2010/02/18時点では,単に指定した位置を読み書きしてるだけで,実用性のあるコードにはなってないです>< ソースはgithubに.処理内容は読み込みとほぼ一緒で,論理セクタの設定方法は,あたりまえだけど,読み込み時とまったく一緒です. 読み込み時はコ…
ということで,自作カーネルもATAのPIOデータ転送(LBAとCHS)を使ってデータの読み込みが出きるようになりました(∩´∀`)∩ワーイソースはこちら http://github.com/masami256/miko 参考文献は「インターフェース増刊 ATA(IDE)/ATAPIの徹底研究」です. これ…
前のコードでバグってるところを見つけたので、修正版です. 全てのソースコードはgithubにあります.PCIのバス番号と、デバイス番号からPCIデバイスを探す関数. static u_int32_t find_pci_data(u_int8_t bus, u_int8_t dev) { u_int32_t data; u_int32_t s…
PCIにアクセスするのにPCI BIOS使った方が良いのかな〜と思って,まずは,PCI BIOS32を探すコードを書いてみました. 参考文献は昨日買った「PCIバス&PCI‐Xバスの徹底研究」最初に探すのは,PCI BIOS32サービス・ディレクトリで,アドレス0xE0000〜0xFFFFFの…
といっても,まずは作成とテストがしやすいように,Linux上の普通のアプリとして実装してます. 大体動いているので,次はこれを,オレオレカーネルに移植します. 一応,ページ単位のメモリ管理は作ってあるので,移植時の変更点はinit_kmalloc_area()でmal…
2010/02/10追記:下の日記が,ちゃんと動く版です〜 http://d.hatena.ne.jp/masami256/20100208/1265644385昨日のソースにデバイスがマルチファンクションの場合の処理を追加してみました.というか,マルチファンクションかどうかチェックしてないですけど…
2010/02/10追記:下の日記が,ちゃんと動く版です〜 http://d.hatena.ne.jp/masami256/20100208/1265644385最近だらだらと自作カーネルを書いているんですが, PCIについて,OSDevとかこちらを読んで,現状分かったことを忘れないうちにメモっときます.PCI…