linux内核MTD分区

(30页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

MTD 设备驱动 和 NAND Flash 驱动程序分析硬件环境: 飞凌OK6410,256MB DDR,2GB NAND Flash、   NAND Flash 型号:K9G8G08U9A   、     分析源码:Linux 2.6.36.2 内核源码。一、 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 字符设备定义      在mtdchar.c 中实现,MTD 块设备则是定义在一个描述MTD 块设备的结构 mtdblk_dev ,并声明了一个名为 mtdblks 的指针数组,这个数组 中的每个mtdblk_dev 和 mtd_table 中的每一个mtd_info 一一对应。4->设备节点: 通过mknod 在/dev 子目录下建立MTD字符设备节点 和 块设备节点,用户通过访问此此设备节点即可访问 MTD 字符设备和块设备。3、分析Linux MTD 系统接口 mtd_info 结构体代码分析  此结构体定义在 ./include/linux/mtd/mtd.h 中关键词词解析: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 plaincopy1. 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 be cleared), in case of NAND flash it is 13.      * one NAND page (or half, or one-fourths of it), in case of ECC-ed NOR 14.      * it is of ECC block size, etc. It is illegal to have writesize = 0. 15.      * Any driver registering a struct mtd_info must ensure a writesize of 16.      * 1 or larger. 17.      */  18.     uint32_t writesize;           // 最小的可写单元的字节数  19.   20.     uint32_t oobsize;   // Amount of OOB data per block (e.g. 16) OOB 字节数  21.     uint32_t oobavail;  // Available OOB bytes per block   可用OBB 字节数  22.   23.     /* 24.      * If erasesize is a power of 2 then the shift is stored in 25.      * erasesize_shift otherwise erasesize_shift is zero. Ditto writesize. 26.      */  27.     unsigned int erasesize_shift;  28.     unsigned int writesize_shift;  29.     /* Masks based on erasesize_shift and writesize_shift */  30.     unsigned int 关 键 词: linux 内核 MTD 分区

 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

linux内核mtd分区,linux内核MTD分区相关推荐

  1. linux 程序读写Env分区 --- mtdparts,/dev/mtd*,mtd_debug

    1. uboot $mtdparts 和 linux /dev/mtd* 的联系 比如: uboot:# setenv mtdparts 'mtdparts=nx_2016:1408k@0k(boot ...

  2. mtd分区创建linux,浅析linux下mtd设备onenand存储器的分区和节点创建流程及yaffs2文件系统挂载...

    浅析linux下mtd设备onenand存储器的分区和节点创建流程及yaffs2文件系统挂载 在arch/arm/mach-pxa/luther.c这个产品平台文件中,即: MACHINE_START ...

  3. linux 查看mmc分区_查看MTD,EMMC,MMC三种设备的分区

    因为在做系统升级,AOSP的recovery下有一个flash_image工具,这个 工具 可以在开机状态下刷写系统分区.源码位置在/bootable/recovery/mtdutils/flash_ ...

  4. 嵌入式linux文件系统格式,嵌入式Linux的文件系统分区及数据读写方法与流程

    本发明涉及Linux系统的数据存储管理领域,特别是涉及一种基于NANDFlash存储器和UBIFS文件系统的嵌入式Linux的文件系统分区及数据读写方法. 背景技术: ::目前Linux操作系统由于源 ...

  5. linux ubi 分区,Linux最新UBI文件系统介绍

    嵌入式linux中文站关注嵌入式linux文件系统的发展.在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs.jffs2.yaffs2等文件系统.它们也都是基于文 ...

  6. 关于NAND flash的MTD分区与uboot中分区的理解 .

    今天做内核移植,准备添加NAND flash的驱动,做到MTD分区时,想起在一本书上看到的一句话,说的是分区时每个区之间没有间隙,前一个区的结束地址是后一个区的起始地址.可是当我看我的开发板的教程时, ...

  7. 移植U-BOOT之裁剪和修改默认参数(易用性)启动内核,以及对uboot进行分区

    今天我们来裁剪U-BOOT,使其更加易用,修改默认参数,以及制作最终修改好得补丁文件方便以后的快速移植. 那么如果想看之前的关于网卡以及flash等的移植,请点击链接查看:点击链接查看 在裁剪修改之前 ...

  8. Linux移植随笔:让内核支持nor flash

    内核:linux-2.6.37.3 nor flash芯片:SST39VF6401B 网上有文章说了如何让linux内核支持nor flash.不过那些转载的文章中没有头文件(因为使用了<尖括号 ...

  9. Linux nor flash分区,Linux驱动开发笔记:NOR FLASH编写实例

    1. 背景介绍 板子上的zynq通过emc外接一块nor flash,地址分配如下: Nor flash的起始地址为0x80000000.当zynq上运行Linux后可以通过对该地址起始的区域进行擦除 ...

最新文章

  1. 题库练习1(单词长度、统计字符个数、)
  2. soapui模拟桩mockservice---模拟后台服务器
  3. 【Android】Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法
  4. Leetcode: Single Number
  5. 敏捷、TDD(测试驱动开发)、OO--前奏
  6. 关于解决Server Tomcat v9.0 Server at localhost failed to start的问题
  7. react生命周期钩子
  8. 2019中兴捧月·总决赛心得
  9. 《非暴力沟通》-- 马歇尔.卢森堡
  10. UVA 11137 - Ingenuous Cubrency
  11. 低功耗基础概念——Level Shifter cell补充
  12. python_10_绘制图表
  13. 游戏引擎架构-学习笔记
  14. 金蝶K3--生产领料单--更新销售订单编号
  15. 计算机科学与技术学习心得
  16. 基于PHP+MYSQL的成绩查询系统(含源码)
  17. 【BFS】营救铁达尼号(C++)
  18. 基于PHP+MySQL的美容会所企业资产管理系统
  19. 【转】“上善若水”是什么意思?
  20. frontiers出版社投稿记录(附状态变化)

热门文章

  1. 【Excel常用函数】VLookup函数使用教程,附视频教程
  2. Java中的Switch用法
  3. 计算机中函数vlookup怎么用,教您使用excel函数vlookup
  4. 技术盛典,2016AppCan移动开发者大会即将开启
  5. python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化
  6. 网络安全实验-入侵检测-基于网络入侵检测系统
  7. Google Filament 源码学习(六):Material System (五) - 材质系统框架
  8. ppt嵌入文件对计算机有危害,PPT插入声音文件后在其他电脑上无法播放声音
  9. Cannot access ‘state‘ before initialization
  10. Sql2012的下载与安装