Linux 下 Nand Flash 驱动主要数据结构说明

s3c2410 专有数据结构

  1. s3c2410_nand_set

struct s3c2410_nand_set {

int                    nr_chips;     /* 芯片的数目 */

int                    nr_partitions; /* 分区的数目 */

char                   *name;          /* 集合名称   */

int                   nr_map;       /* 可选, 底层逻辑到物理的芯片数目 */ struct mtd_partition                      partitions;   /* 分区列表   */

};

  1. s3c2410_platform_and

struct s3c2410_platform_nand {

/* timing information for controller, all times in nanoseconds */

int     tacls; /* 从 CLE/ALE 有效到 nWE/nOE 的时间 */ int   twrph0; /* nWE/nOE 的有效时间 */

int     twrph1; /* 从释放 CLE/ALE 到 nWE/nOE 不活动的时间 */

int     nr_sets; /* 集合数目 */

struct s3c2410_nand_set sets; /* 集合列表 */

/* 根据芯片编号选择有效集合 */

void (*select_chip)(struct s3c2410_nand_set , int chip);

};

  1. s3c2410_nand_mtd               在 drivers/mtd/nand/s3c2410.c 中, struct s3c2410_nand_mtd {

struct mtd_info               mtd;    /* MTD 信息 */

struct nand_chip              chip;   /* nand flash 芯片信息 */ struct s3c2410_nand_set   set;    /* nand flash 集合    */ struct s3c2410_nand_info     *info;  /* nand flash 信息    */  int    scan_res;

};

  1. s3c2410_nand_info

struct s3c2410_nand_info {

/* mtd info */

struct nand_hw_control        controller; /* 硬件控制器 */ struct s3c2410_nand_mtd                              *mtds;     /* MTD 设备表 */ struct s3c2410_platform_nand         platform;  /* Nand 设备的平台 */


/* device info */


struct device


*device;


/* 设备指针 */


struct resource


*area;


/* 资源指针 */


struct clk


*clk;


/*
Nand Flash 时钟 */


void  iomem

int


*regs;

mtd_count;


/* 寄存器基地址(map 后的逻辑地址) */

/*
MTD 的数目 */


unsigned char


is_s3c2440;


};

  1. struct                                       clk 在 arch/arm/mach­s3c2410/clock.h
    中 struct clk
    {

struct
list_head  list;   /* clock 列表结点 */ struct module    *owner;    /* 所属模块     */ struct
clk    *parent;   /* 父结点        */

const char          *name;     /* 名称          */

int                  id;       /* 编号           */

atomic_t             used;     /* 使用者计数  
 */ unsigned long   rate;    /*
时钟速率     */ unsigned long        
ctrlbit;  /* 控制位        */

int                (*enable)(struct clk *, int enable);
/* Clock 打开方法 */

};

原文地址:https://www.cnblogs.com/fanweisheng/p/11106197.html

时间: 2024-10-08 03:51:07

Linux 下 Nand Flash 驱动主要数据结构说明的相关文章

【详解】如何编写Linux下Nand Flash驱动

From: http://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html 版本:v2.2 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开始介绍Linux下面和Nand Flash相关的软件架构MTD的相关知识,最后介绍了

Linux 下 Nand Flash 驱动说明

注册 driver_register 通过 module_init(s3c2410_nand_init);注册 Nand Flash 驱动. 在 s3c2410_nand_init ()中通过 driver_register()注册 s3c2410_nand_driver 驱动程序,如下所示: static struct device_driver s3c2410_nand_driver = { .name          = "s3c2410-nand", .bus        

Linux 下 Nand Flash 调用关系

Nand Flash 设备添加时数据结构包含关系 struct mtd_partition        partition_info[] --> struct s3c2410_nand_set     nandset --> struct s3c2410_platform_nand superlpplatfrom --> struct platform_device      s3c_device_nand 在该数据结构的 name 字段的初始化值"s3c2410-nand&

linux下Pl353 NAND Flash驱动分析

linux的NAND Flash驱动位于drivers/mtd/nand子目录下: nand_base.c-->定义通用的nand flash基本操作函数,如读写page,可自己重写这些函数 nand_bbt.c-->与坏块管理有关的函数和结构体 nand_ids.c-->nand_flash_ids[](芯片ID)和nand_manuf_ids[](厂商ID) nand_ecc.c-->软件ECC代码,若系统支持硬件ECC,则不用理会这个文件 pl353_nand.c-->

MPC8313ERDB在Linux从NAND FLASH读取UBoot环境变量的代码分析

[email protected] 一.故事起因 因为文件系统的增大,已经大大的超出了8MB的NOR FLASH,而不得不把内核,文件系统和设备树文件保存到NAND FLASH上.但是因为使用的是RAMDISK,而无法保存一些个别的配置和参数,最简单的需要就是设置系统的IP了,,, 要使用统一的RAMDISK,而实现LINUX启动之后,设置成不能的参数功能,比较方便的就是从UBOOT把这些参数传递过去,这个得到了大家的认证,我们可以直接添加启动参数,然后在内核里面读出来,这种方法比较方法,唯一不

NAND FLASH 驱动分析

NAND FLASH是一个存储芯片 那么: 这样的操作很合理"读地址A的数据,把数据B写到地址A" 问1. 原理图上NAND FLASH和S3C2440之间只有数据线, 怎么传输地址? 答1.在DATA0-DATA7上既传输数据,又传输地址 当ALE为高电平时传输的是地址, 问2. 从NAND FLASH芯片手册可知,要操作NAND FLASH需要先发出命令 怎么传入命令? 答2.在DATA0-DATA7上既传输数据,又传输地址,也传输命令 当ALE为高电平时传输的是地址, 当CLE为

linux下USB设备驱动

本文以USB鼠标讲解USB设备驱动. 驱动程序中调用usb_register(struct usb_driver *)函数时,先判断USB总线驱动程序是否支持usb_driver里定义的id_table,若支持,调用usb_driver的probe函数. 所以首先要定义并初始化usb_driver结构体: static struct usb_driver usbmouse_as_key_driver = { .name = "usbmouse_as_key", .probe = usb

Linux下hp打印机驱动hplip分析

Hplip分析 版本是2.14,源码位置:http://hplipopensource.com.图的来源:http://hplipopensource.com/node/128. 1.D-Bus初始化流程 D-Bus的初始化同样是在ui4/devmgr5.py开始的. ui4/devmgr5.py 01 class DevMgr5(QMainWindow,  Ui_MainWindow): 02     ...... 03     # TODO: Make sbus init mandatory

【L】小米随身WiFi,Linux下AP热点驱动(开源)

前言 这是作者修改后的Linux下的小米随身WiFi驱动,支持Ap模式,开源,同时支持360随身WiFi二代 注意: 1.这个是Linux下的小米随身WiFi驱动,不是Window和MAC下 2.这个不是STA模式下的可当作无线网卡的驱动,是可当Ap热点模式的驱动 3.这个理论上也是支持360随身WiFi二代..(rtusb_dev_id.c 里面同样有360的id) 原由: 小米随身WiFi很好用,有Widnow和Mac的系统的驱动, 但是可怜不少Linux下的苦逼开发者,没有驱动就是没有..