加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

nandflash驱动的读写操作实现过程

发布时间:2020-12-15 17:59:18 所属栏目:百科 来源:网络整理
导读:韦东山的视频讲了nandflash驱动的初始化过程,但是没有讲 '发生 ' 读 系统调用'时 驱动的硬件操作过程. 我找了半天也没找到相关的读写硬件操作在哪里. 因为太晚了,先在这里记点笔记.打个开头. -------------------------------------------------------------

韦东山的视频讲了nandflash驱动的初始化过程,但是没有讲 '发生 ' 读 系统调用'时 驱动的硬件操作过程.

我找了半天也没找到相关的读写硬件操作在哪里.

因为太晚了,先在这里记点笔记.打个开头.

---------------------------------------------------------------------------------------------------------

首先韦东山的例程里没有设置nand_chip 结构体的 read_byte 等成员.

所以会在nand_scan()--->nand_set_defaults()中设置

if (!chip->read_byte)
chip->read_byte = busw ? nand_read_byte16 : nand_read_byte;

---------------------------------------------------------------------------------------------------------

在nand文件夹查找cmd_ctrl的调用,会发现,cmd_ctrl使用了以NAND_CMD_开头的宏

这些宏对应了芯片的硬件操作命令.

读系统调用要操作硬件必须使用这些宏,那么找一个例子来搜索

NAND_CMD_READSTART

但是并没有什么发现,这个宏还是在命令相关的函数中使用..

在Sh_flctl.c中,有很多类似这样的函数

flctl_cmdfunc

if (flctl->page_size) {
set_cmd_regs(mtd,command,(NAND_CMD_READSTART << 8)
| NAND_CMD_READ0);
set_addr(mtd,mtd->writesize,page_addr);

---------------------------------------------------------------------------------------------------------

再看chip->cmdfunc = nand_command;

chip->cmd_ctrl(mtd,page_addr,ctrl);
ctrl &= ~NAND_CTRL_CHANGE;
chip->cmd_ctrl(mtd,page_addr >> 8,ctrl);
/* One more address cycle for devices > 32MiB */

---------------------------------------------------------------------------------------------------------

虽然不知道具体调用哪个函数,但是应该是把需要操作的命令存在 int command中,第二周期的命令左移8位保存

然后再调用nand_chip 的读写函数



太晚了..眼睛痛,明天继续

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读