linux mtd m25p80,关于spi flash芯片m25p80驱动以及其简单的mtd驱动分析

本文详细分析了Linux内核中针对SPI Flash芯片M25P80的驱动,包括MTD层的作用、硬件驱动的注册过程以及MTD原始设备和设备层的调用流程。通过module_spi_driver注册SPI驱动, spi_register_board_info注册SPI设备信息,系统启动时匹配驱动并调用probe函数。在MTD原始设备层,实现了擦除、读写方法。MTD设备层提供了文件操作接口,使得应用程序能进行读写操作。最后,介绍了设备节点在系统中的体现。
摘要由CSDN通过智能技术生成

项目中用到了spi flash芯片MX25L25635E,之前在uboot下简单分析了驱动代码,调试该flash擦除的bug,一直没有时间分

析内核中关于该芯片的驱动,以下是对该芯片驱动的一个简单分析:

1、先粘贴一些flash的理论部分:

0818b9ca8b590ca3270a3433284dd417.png

MTD层为NOR FLASH和NAND FLASH设备提供统一接口。MTD将文件系统与底层FLASH存储器进行了隔离。

如图所示,MTD设备通常可分为四层,从上到下依次是:设备节点、MTD设备层、MTD原始设备层、硬件驱动层。

Flash硬件驱动层:(相当于spi driver/i2c driver)Flash硬件驱动层负责对Flash硬件的读、写和擦除操作。MTD设备的Nand Flash芯片的驱动则drivers/mtd/nand/子目录下,Nor Flash芯片驱动位于drivers/mtd/chips/子目录下。

MTD原始设备层:(相当于spi master/i2c client)用于描述MTD原始设备的数据结构是mtd_info,它定义了大量的关于MTD的数据和操作函数。其中mtdcore.c:  MTD原始设备接口相关实现,mtdpart.c :  MTD分区接口相关实现。

MTD设备层:基于MTD原始设备,linux系统可以定义出MTD的块设备(主设备号31)和字符设备(设备号90)。其中mtdchar.c :  MTD字符设备接口相关实现,mtdblock.c : MTD块设备接口相关实现。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值