新闻中心

EEPW首页>嵌入式系统>设计应用> 基于单片机的IDE硬盘控制的研究与设计

基于单片机的IDE硬盘控制的研究与设计

作者: 时间:2012-03-29 来源:网络 收藏

在PIO[4]工作模式下,向发出命令前,必须先检测驱动器是否忙(BSY)。如果在规定时间内驱动器一直忙碌,置超时错,否则表示驱动器空闲,可接受命令,对硬盘进行相应操作。接口通过两个协议来执行命令:PI协议(读扇区)和PO协议(写扇区)。

3.1 读扇区操作

处理器在接收到读扇区的命令后,首先调用ide_rd线程,将8255数据线端口配置成输入模式,然后读出的状态,查询硬盘是否准备好(DRDY=1?);若准备好则调用wr_lba线程,把逻辑块地址写入到相应寄存器;调用ide_wr线程,将8255数据线端口配置成输出模式,把命令代码写入命令寄存器,读扇区命令开始执行。此时对驱动器状态寄存器的BSY位置1,同时将硬盘上指定扇区上的数据送入扇区缓冲区。当扇区缓冲区准备好时,置位DRQ位,清除BSY位,发中断请求INTRQ信号。

而后处理器读取状态寄存器,若DRQ=1,则将扇区缓冲区中的数据读走,完毕后,驱动器置BSY,准备读下一个扇区,直到请求的扇区全部读完。

在读的过程中查询状态寄存器的ERR位,若有错误产生,则跳入错误处理子程序。

其程序流程图如图3:

54.jpg



评论


相关推荐

技术专区

关闭