1 / 30
文档名称:

linux内核MTD分区.docx

格式:docx   大小:64KB   页数:30
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux内核MTD分区.docx

上传人:ranfand 2016/12/24 文件大小:64 KB

下载得到文件列表

linux内核MTD分区.docx

相关文档

文档介绍

文档介绍:MTD 设备驱动和 NAND Flash 驱动程序分析硬件环境: 飞凌 OK6410 , 256MB DDR , 2GB NAND Flash 、 NAND Flash 型号: K9G8G08U9A 、分析源码: Linux 内核源码。一、 MTD 设备驱动。 1、先来简单介绍一下 MTD 在 Linux 系统中, 提供了 MTD ( Memory Technology Device ,内存技术设备)系统来建立 Flash 针对 Linux 的系统、抽象的接口, MTD 将文件系统与底层的 Flash 存储器进行了隔离,使 Flash 驱动工程师无需关心 Flash 作为字符设备和块设备与 LInux 内核的接口。 2、在引入 MTD 后 Linux 系统中的 Flash 设备及接口可分为 4层,从上到下依次是:设备节点、 MTD 设备层、 MTD 原始设备层和硬件驱动层。这4层的作用定义如下: 1-> 硬件驱动层: Flash 硬件驱动层负责 Flash 硬件设备的读、写、擦除, LInux MTD 设备的 NOR Flash 芯片驱动位于 drivers/mtd/chips 子目录下, NAND Flash 的驱动程序则位于 drivers/mtd/nand 子目录下。 2->MTD 原始设备层: MTD 原始设备层由两部分组成, 一部分是 MTD 原始设备的通用代码, 另一部分是各个特定 Flash 的数据,例如分区。 3->MTD 设备层: 基于 MTD 原始设备, Linux 系统可以定义出 MTD 的块设备的结构(主设备号 31) 和字符设备(设备号 90 ),构成 MTD 设备层, MTD 字符设备定义在 中实现, MTD 块设备则是定义在一个描述 MTD 块设备的结构 mtdblk_dev ,并声明了一个名为 mtdblks 的指针数组,这个数组中的每个 mtdblk_dev 和 mtd_table 中的每一个 mtd_info 一一对应。 4-> 设备节点:通过 mknod 在/dev 子目录下建立 MTD 字符设备节点和块设备节点,用户通过访问此此设备节点即可访问 MTD 字符设备和块设备。 3、分析 Linux MTD 系统接口 mtd_info 结构体代码分析此结构体定义在./include/linux/mtd/ 中关键词词解析: XIP : XIP eXecute In Place ,即芯片内执行,指应用程序可以直接在 flash 闪存内运行,不必再把代码读到系统 RAM 中。 flash 内执行是指 nor flash 不需要初始化,可以直接在 flash 内执行代码。但往往只执行部分代码,比如初始化 RAM. OOB : Out Of Brower 传输层协议使用带外数据(out-of-band,OOB) 来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时, iovec-base : iovec 结构体基础。 struct iovec 定义了一个向量元素。通常,这个结构用作一个多元素的数组。对于每一个传输的元素,指针成员 iov_base 指向一个缓冲区,这个缓冲区是存放的是 readv 所接收的数据或是 writev 将要发送的数据。成员 iov_len 在各种情况下分别确定了接收的最大长度以及实际写入的长度。 Sync :函数, 函数说明:此函数负责将系统缓冲区的内容写回磁盘,以确保数据同步。[cpp] view plain copy 1. struct mtd_info { 2. u_char type; // 内存技术的类型 3. uint32_t flags; // 标志位 4. uint64_t size; // Total size of the MTD 、 mtd 设备的大小 5. 6. /* "Major" erase size for the device. Na 茂 ve users may take this 7.* to be the only erase size available, or may use the more detailed 8.* information below if they desire 9. */ 10. uint32_t erasesize; // 主要的擦除块大小 erase size of main block 11. /* Minimal writable flash unit size. In case of NOR flash it is 1 (even 12. * though individual bits can