QSPI nor flash相关驱动代码
Linux kernel中QSPI nor flash相关驱动文件:
1. drivers/spi/spi.c: 是linux spi通用框架代码,向下适配ti mcspi以及ti qspi控制器驱动. 2. drivers/spi/spi-ti-qspi.c:? TI qspi主控器驱动,不同平台使用不同的主控驱动 3. drivers/mtd/devices/m25p80.c: m25p80.c和spi-nor.c都是linux spi nor驱动框架的一部分 4. drivers/mtd/spi/spi-nor/spi-nor.c: m25p80.c和spi-nor.c都是linux spi nor驱动框架的一部分 系统架构?从架构图可以看出spi-nor是简单的粘合层,把mtd调用转换为m25p80接口.? spi-nor还包含了qspi芯片检测,通过芯片ID,确定spi nor的参数:sector size,nsectors,pagesize,flags. spi-nor驱动适配多种spi nor flash,这些flash的驱动层代码差异,由flash_info的几个参数表示. spi-nor.c为mtd子系统服务,为mtd层提供如下几个接口:
spi_nor_scan调用spi_nor_read_id从chip获取ID,根据chip ID得到该芯片的flash_info 1. 设置mtd_info的type,writesize,size等参数 2. 设置mtd_info的_erase,_read,_write回调函数 3. 设置mtd_info 的erasesize m25p80.c 这个驱动最初为M25Pxx系列使用,现在已经成为一个通用的spi nor实现,实际上完全可以和spi-nor.c合二为一. m25p80.c主要实现了如下几个函数:
m25p80.c底层接口为common的spi调用接口,common spi接口会调用qspi master. 驱动初始化流程Linux spi子系统中,存在两个角色
spi master系统要访问spi device,必须通过spi master设备访问,通常spi master和spi device是一对多的关系,一个spi master上挂载多个spi device,通过chip select选取操作哪个spi device spi busspi_init首先初始化注册spi_bus_type,这是所有spi初始化的起点,没有spi_bus_type就无法就进行spi device和spi bus的匹配. spi devicem25p80.c定义了一个spi driver m25p80_driver. 在系统初始化阶段module_spi_driver(m25p80_driver)会注册一个spi driver,在注册过程中,kernel会查看spi_bus上的spi device是否match这个m25p80_driver,如果match则调用m25p80_dirver的probe函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |