ATA/ATAPI
の編集
Top
> ATA/ATAPI
[
ホーム
] [
一覧
|
検索
|
ヘルプ
]
-- 雛形とするページ --
!Template
A20
API
ATA/ATAPI
ATA/ATAPI/Command
ATA/ATAPI/I/O Port, Register
ATA/ATAPI/Transfer
ATA/ATAPI/Transfer/UltraDMA
Address space
Assembly language
BBS
Barn
Books
Boot process
Build
Comments/El Torito
Comments/Memo
Comments/OS glossary
Comments/Privilege levels
Comments/Projects/TestOS_CD
Computer language
Computer language/C
Computer language/C++
Computer language/C++/Class
Computer language/C++/Class/Inheritance
Computer language/C++/Operator
Computer language/C++/関数名forアセンブリ
Computer language/C/Complex sentence
Computer language/GNU Assembler
DMA
DMAC
DMAC/Intel 8237A
Development environment for Linux
Device
Device/82093AA
Device/8259
Device/PCI
Device/PCI to ISA Bridge
Device/PCI/Class Code
El Torito
Exception
FDC
FDC/82077AA
FDD boot
FDDブート
FileSystem
FileSystem/ISO 9660
FileSystem/Joliet
Format/FileFormat
Format/FileFormat/ELF
Format/FileFormat/PNG
FormattingRules
GCC
GHex
Help
Info
Info/Copyright Policy
Info/Introduction
Inline assembly
InterWikiName
I/O port address
I/O port address/0x0000~0x03ff
I/O port address/0x0c00~0x0fff
I/Oポートアドレス
KBC
KBC/Intel 8042
Kernel
Linker script
Links
MBR
Makefile
Memo
Memo/Flags
Memo/Linux
Memo/if文が遅い理由
Memo/アドレスの種類
Memo/クラス設計パターン
Memo/コメントアウト手法
Memo/ブートセクタ
Memo/メモリの連続領域(一次元)を多次元で扱う
Memo/リンカスクリプト
Memo/二重ループをアセンブリで書く
Memo/勉強会でのプレゼン
Memory management
Memory map
Menu
NDP
OS
OS glossary
OS用語集
PIC
PIT
PIT/Intel 8254
PORTA
PORTB
Page fault
Paging
Popular
Privilege levels
Projects
Projects/ML_Check
Projects/TestOS_CD
Projects/TestOS_FDD
QEMU
RTC
RTC/MC146818A
Recent
SandBox
Section
Stack
Stack switching
System port A
System port B
Top
Trouble Information
UEFI
VESA
arch/arm
x64
x64/Descriptor/Base
x64/Descriptor/Segment descriptor
x64/Descriptor/System descriptor
x64/Descriptor/System descriptor/System segment descriptor/LDT segment descriptor
x64/Descriptor/System descriptor/System segment descriptor/TSS descriptor
x64/Descriptor/System descriptor/Type
x86
x86/Descriptor
x86/Descriptor/AVL
x86/Descriptor/Base
x86/Descriptor/DPL
x86/Descriptor/D/B
x86/Descriptor/G
x86/Descriptor/Limit
x86/Descriptor/P
x86/Descriptor/S
x86/Descriptor/Segment descriptor
x86/Descriptor/Segment descriptor/A
x86/Descriptor/Segment descriptor/Type
x86/Descriptor/System descriptor
x86/Descriptor/System descriptor/Gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Call gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Interrupt gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Task gate descriptor
x86/Descriptor/System descriptor/Gate descriptor/Trap gate descriptor
x86/Descriptor/System descriptor/System segment descriptor
x86/Descriptor/System descriptor/System segment descriptor/LDT segment descriptor
x86/Descriptor/System descriptor/System segment descriptor/TSS descriptor
x86/Descriptor/System descriptor/Type
x86/GDT
x86/IDT
x86/Interrupt management
x86/LDT
x86/Register
x86/Segment selector
x86/Task management
x86/Task management/TSS
システム・ポートA
システム・ポートB
セクション
ヒデ
特権レベル
*** パラメータ取得 [#waec86fd] - [[デバイス選択>./Command#r7e5d8cf]]を実行。 - 取得したシグネチャからATAデバイスかATAPIデバイスかを判断し、[[IDENTIFY DEVICE>./Command#ad256ecf]]コマンドか[[IDENTIFY PACKET DEVICE>./Command#j35ece2c]]コマンドを実行。
タイムスタンプを変更しない
* ATA/ATAPI [#d805418d] ** 目次 [#gce6dd5a] #contents ------------------------------------------------------- ページが肥大化したため、分割しています。 #ls2 ** 基礎知識 [#gaaa737c] *** ATA/ATAPIとは [#h526386c] ATAは、もともとHDDを接続するための規格で、CDドライブなどを接続するためにATAを拡張した規格がATAPI(アタピー)です。~ ATAPIはATAが発展途上のときに作られ、今ではATAの規格に吸収されています。 最近のものは、ほとんどが[[SATA]]で接続されていますが、ATAとの互換性は%%かなり保たれているようです。%%%%%極力PATAに合わせるようチップセットががんばっているようです。%%% ** 初期化処理 [#tc348752] まず、どのようなデバイスが何台接続されているのかを調べ、そしてそれにあった初期化処理を行う必要があります。 *** ソフトウェア・リセット [#y2f3d630] - [[デバイス・コントロール・レジスタ>./I/O Port, Register#b211b772]]へ''0x06''をOUT。(ソフトウェア・リセット|割り込み禁止) - 5μs以上ウェイト - [[デバイス・コントロール・レジスタ>./I/O Port, Register#b211b772]]へ''0x02''をOUT。(割り込み禁止) - 2ms以上ウェイト - [[ステータス・レジスタ>./I/O Port, Register#ge432d01]]か[[オールタネート・ステータス・レジスタ>./I/O Port, Register#o22e7bee]]のBusyビットが0になるまで待機。 *** マスター接続チェック&シグネチャ取得 [#z38ba8c1] - [[デバイス選択>./Command#r7e5d8cf]]を実行。 - [[エラー・レジスタ>./I/O Port, Register#v1f22b51]]が''0x01''か''0x81''ならOK。それ以外はNG。 - [[デバイス/ヘッド・レジスタ>./I/O Port, Register#cf062c4d]]が''0x00''か''0x10''ならOK。それ以外ならもう一度リトライ。 - [[シリンダLow>./I/O Port, Register#k6cd1fb1]]と[[シリンダHigh>./I/O Port, Register#qa57b50d]]を読み取り、シグネチャを取得。 *** スレーブ接続チェック&シグネチャ取得 [#g07cd6b4] - [[デバイス選択>./Command#r7e5d8cf]]を実行。 - [[エラー・レジスタ>./I/O Port, Register#v1f22b51]]が''0x01''ならOK。それ以外はNG。 - [[デバイス/ヘッド・レジスタ>./I/O Port, Register#cf062c4d]]が''0x00''か''0x10''ならOK。それ以外ならもう一度リトライ。 - [[シリンダLow>./I/O Port, Register#k6cd1fb1]]と[[シリンダHigh>./I/O Port, Register#qa57b50d]]を読み取り、シグネチャを取得。 *** パラメータ取得 [#waec86fd] - [[デバイス選択>./Command#r7e5d8cf]]を実行。 - 取得したシグネチャからATAデバイスかATAPIデバイスかを判断し、[[IDENTIFY DEVICE>./Command#ad256ecf]]コマンドか[[IDENTIFY PACKET DEVICE>./Command#j35ece2c]]コマンドを実行。 *** デバイス初期化 [#b544f374] ** 参考・関連 [#gf3c78e8] - [[OS-Wiki:ATA]] - [[IT用語辞典 - Serial ATA>http://e-words.jp/w/E382B7E383AAE382A2E383ABATA.html]] *** 書籍 [#a5221e4c] **** Vol.10 ATA(IDE)/ATAPIの徹底研究 [#x621cb59] #amazon(4789833216,left); 少し前のHDDやCDドライブとの通信規格であるATA/ATAPIについて解説されています。 #clear **** Vol.44 シリアルATAの基礎とFPGAへの実装 [#z29af31f] #amazon(4789849902,left); ようやく、SATAの本が出ました。 #clear **** Vol.45 改訂版 ATA(IDE)/ATAPIの徹底研究 [#w91f1a3b] #amazon(4789849899,left); ATA(IDE)/ATAPIの徹底研究の改訂版です。最新の情報も載っています。 #clear
Since 2008 July. OS Project Wiki