1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

wslで、最小のカーネルをコンパイル その18

Last updated at Posted at 2024-03-24

概要

wslで、kernel.elfのコンパイル、やってみた。
ISA DMAを叩きたい。

ISA DMAとは。

IOポートにつながるレジスタ

IOポート レジスタ名 Write Read
0x008 ステータスレジスター o
0x008 コマンドレジスター o
0x009 リクエストレジスター o
0x00A シングルチャンネルマスクレジスター o
0x00B モードレジスター o
0x00C クリアーバイトポインタレジスター (フリップフロップリセットレジスター) o
0x00D テンポラリーレジスター o
0x00D マスタークリアーレジスター o
0x00E マスクリセットレジスター o
0x00F オールマスクレジスター o o

実験

リクエストレジスターとオールマスクレジスターを読んでみた。

サンプルコード

			uint8 v = inb(0x009);
			print_string("9 = ");
			print_hex(v);
			v = inb(0x00f);
			print_string("f = ");
			print_hex(v);

image.png

DMCコントローラのステータスレジスター

ビット シンボル 名称 説明
0 TC0 チャンネル0 DMA転送完了 0:チャンネル0のDMA転送は完了していません1:チャンネル0のDMA転送は完了しました
1 TC1 チャンネル1 DMA転送完了 0:チャンネル1のDMA転送は完了していません1:チャンネル1のDMA転送は完了しました
2 TC2 チャンネル2 DMA転送完了 0:チャンネル2のDMA転送は完了していません1:チャンネル2のDMA転送は完了しました
3 TC0 チャンネル3 DMA転送完了 0:チャンネル3のDMA転送は完了していません1:チャンネル3のDMA転送は完了しました
4 CH0 チャンネル0 DMAリクエスト保留中 0:チャンネル0はデバイスからのDMA要求を保留していません1:チャンネル0はデバイスからのDMA要求を保留しています
5 CH1 チャンネル1 DMAリクエスト保留中 0:チャンネル1はデバイスからのDMA要求を保留していません1:チャンネル1はデバイスからのDMA要求を保留しています
6 CH2 チャンネル2 DMAリクエスト保留中 0:チャンネル2はデバイスからのDMA要求を保留していません1:チャンネル2はデバイスからのDMA要求を保留しています
7 CH3 チャンネル3 DMAリクエスト保留中 0:チャンネル3はデバイスからのDMA要求を保留していません1:チャンネル3はデバイスからのDMA要求を保留しています

DMCコントローラのオールマスクレジスター

ビット シンボル 名称 説明
0 CH0 チャンネル0マスク 0:チャンネル0のマスクを解除します 1:チャンネル0をマスクします
1 CH1 チャンネル1マスク 0:チャンネル1のマスクを解除します 1:チャンネル1をマスクします
2 CH2 チャンネル2マスク 0:チャンネル2のマスクを解除します 1:チャンネル2をマスクします
3 CH3 チャンネル3マスク 0:チャンネル3のマスクを解除します 1:チャンネル3をマスクします

以上。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?