首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于ARM920T的IDE硬盘接口设计
来源:本站整理  作者:佚名  2010-01-27 12:41:10



5.3

设备I/O操作

读写块设备时要用到块缓冲区(bufer),对bufer的管理采用BuferCache机制。它管理bufer的创建、撤销、回收、查找、更新等,同时还要与系统中的其它部分(如文件系统、内存管理等)交互。Linux将Buffer

Cache从块设备驱动程序中独立出来,作为对块设备读写的通用机制,所以对块设备的读、写、同步等操作采用的都是由操作系统提供的公共函数,一般为block_read()和block_write()。

为了减少对块设备操作的次数,读写块设备时采用延迟操作,尽量将多个读写操作合并,所以操作请求不是马上递交给物理设备,而是提供了一种手段记录每次的请求(request),并为每类块设备提供一个请求队列用来排队、合并、重组对该块设备的请求。

当需要从硬盘读时,block_read()函数首先查找Buffer Cache

如果在其中能找到需要的buffer,则立刻返回:否则,生成一个读请求,并将其加入相应的请求队列排队。

当需要向硬盘写时,block_write()为此次写操作生成一个buffer,而后生成一个写请求,并将其加入相应的请求队列排队。

块设备驱动程序提供了一个请求处理函数,对硬盘而言是函数do_rw_disk。在适当的时候,硬盘的请求处理函数启动,do_rw_disk处理在请求队列上排队的请求,通过向硬盘发出读、写命令完成对设备的真正操作。其伪代码如下:

C程序

DO_RW_DISK(COMMAND)

{

Set_Registers();

if(COMMAND=READ){

Set read_intr as interrupt process function

Send WIN_READ or WIN_MULTREAD

command to Command register

}

if(COMMAND=WRITE){

Send WIN_WRITE or

WIN_MULTWRITE command to Command register

Get the status of Status register

and set DRQ bit

Set write intr as interrupt process function

Senddatato buferin thedisk

}

}

5.4 释放设备

由设备驱动程序中的release操作完成,一般完成与打开设备相反的动作:释放打开设备特殊文件时在file结构上所创建的私有结构;如果是最后一个设备的释放,则从硬件上关闭设备。

6 结束语

通过上述方法对IDE硬盘接口的设计与实现,我们可以在S3C2410开发板上安全自由地对硬盘上的各种文件系统进行访问,由于采用DMA方式,可以满足用户对速率的要求。

上一页  [1] [2] 

关键词:

·上一文章:ARM9远程图像无线监控系统
·下一文章:三种嵌入式操作系统
[] [返回上一页] [打 印]

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:210,800.80000 毫秒