Linux NAND FLASH驱动代码分析
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-17
-> set_current_state(TASK_INTERRUPTIBLE) -> schedule(); // 让出cpu使用权 -> //等待,直到有io请求到来被唤醒 -> do_blktrans_request() -> blk_fs_request() -> 检查访问的便宜量不能大于整个nandflash的容量 -> 假设为读访问: -> tr->readsect() mtdblock_readsect() // mtd_block.c -> do_cached_read() // mtd_block.c -> mtd->read() nand_read() // nand_base.c -> nand_do_read_ops() -> nand_read_page_raw() -> s3c2410_nand_read_buf() // 通过s3c2410nandflash控制器发命令读取nandflash内容 // s3c2410.c -> 假设为写访问: -> tr->writesect() mtdblock_writesect() -> end_request() 2)当io请求来时,唤醒线程mtd_blktrans_thread() 3)nandflash io请求处理线程mtd_blktrans_thread()开始处理io请求: 从上面的代码流程可见,NAND flash驱动作为一个块设备的典型案例,为位于MTD的下层,其数据的读写通过mtd_blktrans_thread内核线程来处理IO请求. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |