linux NAND驱动之四:6410上的NAND读写流程
来源:互联网 发布:java jar classloader 编辑:程序博客网 时间:2024/04/24 04:09
MTD对NAND芯片的读写主要分三部分:
A、struct mtd_info中的读写函数,如read,write_oob等,这是MTD原始设备层与FLASH硬件层之间的接口;
B、struct nand_ecc_ctrl中的读写函数,如read_page_raw,write_page等,主要用来做一些与ecc有关的操作;
C、struct nand_chip中的读写函数,如read_buf,cmdfunc等,与具体的NAND controller相关,就是这部分函数与硬件交互,通常需要我们自己来实现。值得一提的是,struct nand_chip中的读写函数虽然与具体的NAND controller相关,但是MTD也为我们提供了default的读写函数,如果你的NAND controller比较通用(使用PIO模式),对NAND芯片的读写与MTD提供的这些函数一致,就不必自己实现这些函数了。
本地代码上我们所有的实现函数都在s3c_nand.c中,
nand->cmd_ctrl = s3c_nand_hwcontrol;
nand->ecc.hwctl = s3c_nand_enable_hwecc;
nand->ecc.calculate = s3c_nand_calculate_ecc;
nand->ecc.correct = s3c_nand_correct_data;
nand->ecc.read_page = s3c_nand_read_page_4bit;
nand->ecc.write_page = s3c_nand_write_page_4bit;
以读NAND芯片为例,讲解一下这三部分读写函数的工作过程。首先,MTD上层会调用struct mtd_info中的读page函数,即nand_read函数。
(1)接着nand_read函数会调用struct nand_chip中cmdfunc函数,这个cmdfunc函数与具体的NAND controller相关,它的作用是使NAND controller向NAND 芯片发出读命令,NAND芯片收到命令后,就会做好准备等待NAND controller下一步的读取。
(2)或者nand_read函数又会调用struct nand_ecc_ctrl中的read_page函数,而read_page函数又会调用struct nand_chip中read_buf函数,从而真正把NAND芯片中的数据读取到buffer中(所以这个read_buf的意思其实应该是read into buffer,另外,这个buffer是struct mtd_info中的nand_read函数传下来的)。
read_buf函数返回后,read_page函数就会对buffer中的数据做一些处理,比如校验ecc,以及若数据有错,就根据ecc对数据修正之类的,最后read_page函数返回到nand_read函数中。
对NAND芯片的其它操作,如写,擦除等,都与读操作类似。
- linux NAND驱动之四:6410上的NAND读写流程
- linux NAND驱动之四:6410上的NAND读写流程
- linux NAND驱动之四:6410上的NAND读写流程
- linux NAND驱动之四:6410上的NAND读写流程
- linux NAND驱动之六:NAND驱动的probe流程
- linux NAND驱动之六:NAND驱动的probe流程
- linux NAND驱动之六:NAND驱动的probe流程
- linux NAND驱动之三:6410平台上的NAND驱动加载
- linux NAND驱动之三:6410平台上的NAND驱动加载
- linux NAND驱动之三:6410平台上的NAND驱动加载
- linux NAND驱动之三:6410平台上的NAND驱动加载
- inux NAND驱动之六:NAND驱动的probe流程
- Linux内核的Nand驱动流程分析
- Linux内核的Nand驱动流程分析
- Linux内核的Nand驱动流程分析
- Linux内核的Nand驱动流程分析
- Linux内核的Nand驱动流程分析
- 2410上NAND的初始化及驱动流程
- c++判断操作系统类型
- SSL的流程
- 战区漫步Gouraud渲染
- C语言堆栈入门——堆和栈的区别
- 半导体复习-能带模型1
- linux NAND驱动之四:6410上的NAND读写流程
- lua_State和luaL_newstate,luaL_openlibs及lua_close
- 使用Flex4画图形:圆、矩形、线
- jquery动画与效果
- ArcMap已停止工作
- Visual Studio 2010 C++ 代码自动格式化
- TCP/IP教程
- 软件自动重启
- eclipse+spket+extjs4.1开发环境搭建和代码智能提示(一)