正在加载图片...
#endif (1)如果驱动用于uOSH操作系统,则不需要编译这两个开、关中断函数,因为在 uCOS中已定义了这两个函数 SYS PortIn0和 SYS PartOut(函数通过使用程序清单15中定义的ATA设备寄存器的地 址的宏作为参数,实现对ATA设备各寄存器的读写操作。 ZLG/CF驱动读写ATA设备寄存器的函数如程序清单16所示 程序清单15设备寄存器地址宏定义 /*GPI0引脚影射寄存器地址*/ Define ATA REG DATA IDE CSI /*数据寄存器* #define ATA REG ERR (IDE CSI IDE AO) /*读错误寄存器* #define ATA REG FEATURE (DE CSI IDE AO) /*写功能寄存器* Define ATA REG SECCNT (IDE CSI IDE Al) /*扇区计数器*/ Define ATA REG SECTOR (IDE CSI IDE Al+ IDE AO) /*扇区号*/ #define ATA REG CYLI LOW (IDE CSI IDE A2) /*柱面低8位*/ #define ATA REG CYLI HIGH (IDE CSI IDE A2+ IDE AO) /*柱面高8位* Define ATA REG DEVICE HEAD (IDE CSI IDE A2 IDE Al /*选择主从,模式,磁头* Define ATA REG COMMAND (IDE_CS1+IDE_A2+IDE_A1+IDEA0)/*写命令寄存器 #define ATA REG STATUS ( IDE CSI+IDE_A2+IDE_A1+IDEA0)/*读状态寄存器* Define ATA REG CONTROL (DE CSO+ IDE A2 IDE Al) /*写控制寄存器* Define ATA REG ASTATUS (IDE CSO IDE A2 IDE Al) *读辅助状态寄存器*/ 程序清单16读写设备相关寄存器接口函数 /驱动与硬件对ATA设备寄存器操作接口* #define GetDatao SYS PortIn(ATA REG DATA) /读数据寄存器,与驱动接口考 SYS PortOut(ATA REG DATA, X) /写数据寄存器,与驱动接口 #define getERRO SYS PortIn(ATA REG ERR) /读错误寄存器,与驱动接口* # define set feature(x) SYS Potou( ATA REG FEATUREX)/写特征寄存器,与驱动接口 #define GetSECCNTO SYS PortIn(ATA REG SECCNT) /读扇区计数寄存器,与驱动接口啊 #define SetsECCNT(x) SYS PortOut(ATA REG SECCNT, X) /写扇区计数寄存器,与驱动接口 #define GetSectorO SYS PortIn(ATA REG SECTOR) *读扇区寄存器与驱动接口* define SetSectort(x) SYS PortOut( ATA REG SECTOR. X)写扇区寄存器与驱动接口 # define GetCylinderLowO SYs_ Portin( ATA REG CYLINDER LOW)/读柱面低寄存器,与驱动接口 # define SetCylinderLow(x) SYS Partout( ATA REG_CYLⅠNDER_LOW,xy写柱面低寄存器与驱动接口 #define GetCylinderHighO SYS PortIn(ATA REG CYLI HIGH /读柱面高8位寄存器,与驱动接口* # define SetCylinderHigh(x)SYS_ Partout( ATA REG CYLI HIGHX)/写柱面高8位寄存器,与驱动接口* # define GetDeviceHeado SYS PortIn( ATA REG DEⅤ CE HEAD)/读设备磁头寄存器,与驱动接口 # define SetDeviceHead(x) SYS PartOut( ATA REG DEYⅥ CE HEAD,x)/*写设备磁头寄存器,与驱动接口 SYS PortIn(ATA REG STATUS) /*读状态寄存器与驱动接口* # define setCommand(x)SYS_ Potou( ATA REG_ COMMAND,x)写命令寄存器与驱动接口 硬件复位函数} #endif (1) 如果驱动用于 uC/OS-II 操作系统,则不需要编译这两个开、关中断函数,因为在 uC/OS-II 中已定义了这两个函数。 SYS_PortIn()和SYS_PortOut()函数通过使用程序清单1.5中定义的ATA设备寄存器的地 址的宏作为参数,实现对 ATA 设备各寄存器的读写操作。 ZLG/CF 驱动读写 ATA 设备寄存器的函数如程序清单 1.6 所示。 程序清单 1.5 设备寄存器地址宏定义 /*GPIO 引脚影射寄存器地址*/ #define ATA_REG_DATA IDE_CS1 /*数据寄存器*/ #define ATA_REG_ERR (IDE_CS1 + IDE_A0) /*读错误寄存器*/ #define ATA_REG_FEATURE (IDE_CS1 + IDE_A0) /*写功能寄存器*/ #define ATA_REG_SECCNT (IDE_CS1 + IDE_A1) /*扇区计数器*/ #define ATA_REG_SECTOR (IDE_CS1 + IDE_A1 + IDE_A0) /*扇区号*/ #define ATA_REG_CYLI_LOW (IDE_CS1 + IDE_A2) /*柱面低 8 位*/ #define ATA_REG_CYLI_HIGH (IDE_CS1 + IDE_A2 + IDE_A0) /*柱面高 8 位*/ #define ATA_REG_DEVICE_HEAD (IDE_CS1 + IDE_A2 + IDE_A1) /*选择主从,模式,磁头*/ #define ATA_REG_COMMAND (IDE_CS1 + IDE_A2 + IDE_A1 + IDE_A0) /*写命令寄存器*/ #define ATA_REG_STATUS (IDE_CS1 + IDE_A2 + IDE_A1 + IDE_A0) /*读状态寄存器*/ #define ATA_REG_CONTROL (IDE_CS0 + IDE_A2 + IDE_A1) /*写控制寄存器*/ #define ATA_REG_ASTATUS (IDE_CS0 + IDE_A2 + IDE_A1) /*读辅助状态寄存器*/ 程序清单 1.6 读写设备相关寄存器接口函数 /*驱动与硬件对 ATA 设备寄存器操作接口*/ #define GetData() SYS_PortIn(ATA_REG_DATA) /*读数据寄存器,与驱动接口*/ #define SetData(x) SYS_PortOut(ATA_REG_DATA,x) /*写数据寄存器,与驱动接口*/ #define GetERR() SYS_PortIn(ATA_REG_ERR) /*读错误寄存器,与驱动接口*/ #define SetFeature(x) SYS_PortOut(ATA_REG_FEATURE,x) /*写特征寄存器,与驱动接口*/ #define GetSECCNT() SYS_PortIn(ATA_REG_SECCNT) /*读扇区计数寄存器,与驱动接口*/ #define SetSECCNT(x) SYS_PortOut(ATA_REG_SECCNT,x) /*写扇区计数寄存器,与驱动接口*/ #define GetSector() SYS_PortIn(ATA_REG_SECTOR) /*读扇区寄存器,与驱动接口*/ #define SetSector(x) SYS_PortOut(ATA_REG_SECTOR,x) /*写扇区寄存器,与驱动接口*/ #define GetCylinderLow() SYS_PortIn(ATA_REG_CYLINDER_LOW) /*读柱面低寄存器,与驱动接口*/ #define SetCylinderLow(x) SYS_PortOut(ATA_REG_CYLINDER_LOW,x)/*写柱面低寄存器,与驱动接口*/ #define GetCylinderHigh() SYS_PortIn(ATA_REG_CYLI_HIGH) /*读柱面高 8 位寄存器,与驱动接口*/ #define SetCylinderHigh(x) SYS_PortOut(ATA_REG_CYLI_HIGH,x) /*写柱面高 8 位寄存器,与驱动接口*/ #define GetDeviceHead() SYS_PortIn(ATA_REG_DEVICE_HEAD) /*读设备磁头寄存器,与驱动接口*/ #define SetDeviceHead(x) SYS_PortOut(ATA_REG_DEVICE_HEAD,x)/*写设备磁头寄存器,与驱动接口*/ #define GetStatus() SYS_PortIn(ATA_REG_STATUS) /*读状态寄存器,与驱动接口*/ #define SetCommand(x) SYS_PortOut(ATA_REG_COMMAND,x) /*写命令寄存器,与驱动接口*/ 2.硬件复位函数
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有