好文档 - 专业文书写作范文服务资料分享网站

块设备驱动程序介绍(doc 15页)(完美版)

天下 分享 时间: 加入收藏 我要投稿 点赞

CPU 硬盘控制器 时间1.发送读命令及扇区等命令,中断指令do_hd同时指向写扇区中断函数 可以看出,写盘、读盘流程差别不大,区别就在于写盘要先读状态寄存器信息并进行第一次写盘。

下面分析软盘驱动程序linux/kernel/blk_drv/floppy.c,其主流程同样是

do_fd_request,与硬盘驱动最大的不同是用到了一些定时操作,详见p157描述,do_fd_request同样分为1. 复位、重校统称错误处理2. 写盘3. 读盘 三部分 错误处理流程

中断过程 1. 若硬盘控制器返回错误信息,执行错误处理流程并返回 2. 将数据从数据寄存器口读到请求结构缓冲 3. 若所需读出数据还未读完,则置中断指针do_hd为读硬盘函数并返回,否则处理请求结束事宜,执行下一硬盘请求 硬盘控制器执行读一个扇区数据 中断 …

CPU 硬盘控制器 时间复位1. 关中断 2. 置重置软盘操作后的中断调用函数,即do_floppy指向reset_interrupt 3. 延迟等待后启动软盘控制器 4. 开中断 读盘、写盘操作仅有细微差别,并在一起分析:

中断 启动软盘控制器 中断过程1. 检测中断状态,读取命令执行结果字节 2. 发送设定软驱参数命令 设定软盘控制器参数 校正1. 当前磁道号归零 2. 置校正软盘操作后的中断调用函数,即do_floppy指向recal_interrrupt 3. 发送校正命令及参数:磁道号和驱动器号 4. 如复位标志被置位,继续执行复位流程 中断 校正软盘控制器 中断过程1. 检测中断状态,读取命令执行结果字节,若异常结束,复位标志置位 2. 返回do_fd_request

时 间do_fd_request 中断过程 floppy_on_interrupt transfer 中断过 程seek_interrrupt setup_rw_floppy 中断过程 rw_interrrupt CPU 硬盘控制器 1. 根据请求项,置软盘读写命令码 2. 添加定时器,指定驱动器到能正常运行需要的时间(秒),当定时时间到时调用函数floppy_on_interrupt 定时中断 1. 置已选择当前驱动器标志 2. 设置数字输出寄存器DOR为当前驱动器 3. 执行读写传输函数transfer() 设置当前驱动器 1. 设置当前驱动器参数,发送命令和参数 2. 设置指定驱动器的数设置驱动器参数 据传输速率 3. 若复位标志被置位,执行错误处理流程并返回 设置驱动器传输速率 4. 若不需要寻道,执行setup_rw_floppy,否则发送磁头寻道命令及参数并置软盘中断指针do_floppy为执行寻道操作 seek_interrupt 中断 1. 检测中断状态命令,若出错执行错误处理流程否则设置当前磁道为寻道号 2. 执行setup_rw_floppy 1. 初始化软盘DMA通道 2. 置软盘中断指针do_floppy为rw_interrupt 3. 发送读写命令及扇区根据读写命令在软盘与内等参数 中断 存缓冲区之间传数据 1. 若软盘写保护,结束请求项 2. 若为其他错误,执行错误处理流程 3. 因DMA的寻址为1MB空间,对读操作作处理 4. 释放软盘,结束请求项

块设备驱动程序介绍(doc 15页)(完美版)

CPU硬盘控制器时间1.发送读命令及扇区等命令,中断指令do_hd同时指向写扇区中断函数可以看出,写盘、读盘流程差别不大,区别就在于写盘要先读状态寄存器信息并进行第一次写盘。下面分析软盘驱动程序linux/kernel/blk_drv/floppy.c,其主流程同样是do_fd_request,与硬盘驱动最大的不同是用到了一些定时操作,详见p157描述,d
推荐度:
点击下载文档文档为doc格式
2bbto1quoh1is530855j3blzb1bwa600hq2
领取福利

微信扫码领取福利

微信扫码分享