ide.h

来自「武汉创维特ARM7实验箱的全部源代码」· C头文件 代码 · 共 63 行

H
63
字号
#ifndef __IDE_H__
#define __IDE_H__

#define IDE_CONTROL_ADDR       0x0a000004

#define IDE_CONTROL_MASK_POWER  (1<<5)
#define IDE_CONTROL_MASK_IOIS   (1<<4)
#define IDE_CONTROL_MASK_CS     (0x3<<2)

#define IDE_COMMAND_BASE   		0x020C0000

//control block registers 
#define REG_ALT_STATUS			(IDE_CONTROL_BASE+0x08)		// R
#define REG_DEVICE_CONTROL		(IDE_CONTROL_BASE+0x08)		// W
#define REG_DRIVE_ADDRESS		(IDE_CONTROL_BASE+0x0e)		// R

//command block registers
#define REG_DATA				(IDE_COMMAND_BASE+0x00)		// RW
#define REG_ERROR				(IDE_COMMAND_BASE+0x02)		// RW
#define REG_SECTOR_COUNT		(IDE_COMMAND_BASE+0x04)		// RW
#define REG_SECTOR_NUMBER		(IDE_COMMAND_BASE+0x06)		// RW
#define REG_LBA_BITS_00_07		(IDE_COMMAND_BASE+0x06)		// RW
#define REG_CYLINDER_LOW		(IDE_COMMAND_BASE+0x08)		// RW
#define REG_LBA_BITS_08_15		(IDE_COMMAND_BASE+0x08)		// RW
#define REG_CYLINDER_HIGH		(IDE_COMMAND_BASE+0x0a)		// RW
#define REG_LBA_BITS_16_23		(IDE_COMMAND_BASE+0x0a)		// RW
#define REG_DRIVE_HEAD			(IDE_COMMAND_BASE+0x0c)		// RW
#define REG_LBA_BITS_24_27		(IDE_COMMAND_BASE+0x0c)		// RW
#define REG_STATUS				(IDE_COMMAND_BASE+0x0e)		// R
#define REG_COMMAND				(IDE_COMMAND_BASE+0x0e)		// W

// status consts
#define IDE_ST_BUSY				0x80
#define IDE_ST_DRDY				0x40
#define IDE_ST_DWF				0x20
#define IDE_ST_DSC				0x10
#define IDE_ST_DRQ				0x08
#define IDE_ST_CORR				0x04
#define IDE_ST_IDX				0x02
#define IDE_ST_ERR				0x01

// commands
#define IDE_CMD_READ_DMA		0xc8
#define IDE_CMD_READ_DMA1		0xc9
#define IDE_CMD_READ_LONG		0x22
#define IDE_CMD_READ_LONG1		0x23
#define IDE_CMD_READ_MULTI		0xc4
#define IDE_CMD_READ_SECTORS	0x20
#define IDE_CMD_READ_SECTORS1	0x21
#define IDE_CMD_READ_VERIFY_SECTORS		0x40
#define IDE_CMD_READ_VERIFY_SECTORS1	0x41

#define IDE_CMD_WRITE_SECTORS	0x30
#define IDE_CMD_WRITE_SECTORS1	0x31

// shortcut defines
#define inp(port) (*(unsigned char *)(port))
#define inw(port) (*(unsigned short *)(port))
#define outp(port, value) (*(unsigned char *)(port))=value
#define outw(port, value) (*(unsigned short*)(port))=value

#endif /*__IDE_H__*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?