
linux mtd
gjy938815
在硬件、软件、算法等方面有多年工作经验
展开
-
3、基于MTD的NAND驱动开发(三) .
五、NAND 驱动中的probe 函数 对于很多嵌入式Linux 的外设driver 来说,probe 函数将是我们遇到的第一个与具体硬件打交道,同时也相对复杂的函数。而且根据我的经验,对于很多外设的driver 来说,只要能成功实现probe 函数,那基本上完成这个外设的driver 也就成功了一多半,基于MTD 的NAND driver 就是一个典型的例子。稍后就可以看到,转载 2013-07-17 12:20:29 · 495 阅读 · 0 评论 -
基于MTD的NANDFLASH设备驱动底层实现原理分析 .
经过UBOOT初步的移植,Linux内核初步的移植,Linux内核总线设备模型的分析,等一系列痛苦的折腾,目的就是想更好的来分析下NANDFLASH的驱动。。大概一共历经了半个月的时间,慢慢的对NANDFLASH驱动程序有感觉了。。。一、MTD体系结构:Linux内核提供MTD子系统来建立FLASH针对Linux的统一、抽象接口。MTD将文件系统与底层的FLASH存储器进行隔离。转载 2013-07-20 16:52:45 · 814 阅读 · 0 评论 -
MTD(4)---nand flash的bbt坏块表的建立函数代码分析 .
其实现在Linux kernel的bbt做的也比较简单,就是把整个flash的block在内存里面用2bit位图来标识good/bad,这样,在上层判断一个block是否good时就不需要再去读取flash的oob里面的坏块标记了,只需要读取内存里面的bbt就可以了,这是一个比较重要的优化。但,我想这只是一个开始,希望将来能够把BBM加入到kernel里面来,让上层不再操心nand flash转载 2013-07-20 13:37:58 · 1022 阅读 · 0 评论 -
MTD(3)---nand flash的erase,read,write接口函数代码分析 .
本来是想按照代码流程往下讲bbt的,但是写着写着,还是要先介绍下mtd的几个基本flash读写擦函数接口。那就调整下,先讲基本接口函数,再讲到bbt的时候,就不用回头来讲基本读写函数了,这样主线清楚些。忽然觉得我讲的流程有些乱:)还没有讲flash的具体操作命令,要是穿插在下来的章节里面讲,会更乱,那就在这里补充下吧:) 前面这章已经提到了一些东西,但我光顾着分解代码了,没有把他们转载 2013-07-20 13:37:20 · 1573 阅读 · 0 评论 -
MTD(1)---nand flash的基本知识 .
这是我准备的一个讲解MTD子系统的一个文档,我是以DM368 EVM板子的kernel 2.6.32.17为样本代码来讲述的,各位最好准备3样东西再开始阅读我的文档。1、DM368的芯片手册 sprufg5_TMS320DM36xDMSoC ARM Subsystem Reference Guide.pdf2、kernel 2.6.32.17的源码3、一份nand flash的硬件手册转载 2013-07-20 13:36:16 · 701 阅读 · 0 评论 -
MTD(2)---nand flash的底层驱动代码分析 .
介绍完了nand flash的基本知识,我们现在可以看kernel的代码了。 首先看下Board-dm365-evm.c(arch\arm\mach-davinci),这个文件定义了板子的一些外设信息,其中跟nand flash相关的摘录部分如下;static struct davinci_nand_pdatadavinci_nand_data = { .mask_ch转载 2013-07-20 13:36:50 · 897 阅读 · 0 评论 -
mtd-utils_工具的使用
一.下载源码包。二.编译1.修改Makefile CROSS=mipsel-linux-2.make3.将编译生成的可执行文件COPY到开发板上三.命令的使用使用命令前用cat /proc/mtd查看一下mtdchar字符设备;或者用ls -l /dev/mtd*#cat /proc/mtddev: size erasesize na转载 2013-07-15 15:12:52 · 569 阅读 · 0 评论 -
mtd-utils交叉编译 .
在网上参考了很多人的文章,开始就是编译不过去,提示/sys/acl.h无法找到!最后终于解决,原因是路径的问题 1、源码http://www.zlib.net/zlib-1.2.5.tar.gzhttp://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gzftp://ftp.infradead.org/pub转载 2013-07-16 10:44:33 · 1404 阅读 · 0 评论 -
linux spi子系统(框架) .
一.spi设备[cpp] view plaincopyprint?struct spi_device { struct device dev; //设备文件 struct spi_master *master; //spi主机 u32 max_speed_hz; //最大速率 u8 chip_s转载 2013-06-29 09:00:35 · 1847 阅读 · 0 评论 -
6、MTD原始设备与FLASH硬件驱动的对话 (二) .
上一个贴由下到上的介绍了FLASH硬件驱动是如何与MTD原始设备建立联系的,现在再由上到下的研究一下是如何通过MTD原始设备来访问FLASH硬件驱动的。首先分析一下如何通过MTD原始设备进而通过FLASH硬件驱动来读取FLASH存储器的数据。引用自>一文:"读Nand Flash:当对nand flash的设备文件(nand flash在/dev下对应的文件)执行系统调转载 2013-07-17 12:22:27 · 617 阅读 · 0 评论 -
5、MTD原始设备与FLASH硬件驱动的对话 (一) .
看了>后对以MTD的分层结构以及各层的分工情况有了大致的了解,然而各层之间是如何进行对话的呢,对于这个问题,>上没有详细的去说明。小弟抽空研究了一下,打算从下到上,在从上到下,分两条主线来研究一下MTD原始设备与FLASH硬件驱动的对话(MTD原始设备与更上层的对话留待以后再研究)。以下是第一部分,从下到上的介绍FLASH硬件驱动与MTD原始设备是如何建立联系的。1、首先从转载 2013-07-17 12:21:46 · 543 阅读 · 0 评论 -
4、基于MTD的NAND驱动开发(完) .
六、NAND驱动中的坏块管理 由于NAND Flash的现有工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此在NAND芯片出厂的时候,厂家只能保证block 0不是坏块,对于其它block,则均有可能存在坏块,而且NAND芯片在使用的过程中也很容易产生坏块。因此,我们在读写NAND FLASH 的时候,需要检测坏块,同时还需在NAND驱动中加入坏块管转载 2013-07-17 12:21:01 · 699 阅读 · 0 评论 -
基于MTD的NAND驱动开发(二) .
四、基于MTD的NAND 驱动架构 1 、platform_device 和platform_driver 的定义和注册 对于我们的NAND driver ,以下是一个典型的例子: staticstruct platform_driver caorr_nand_driver= { . driver =转载 2013-07-17 12:19:53 · 436 阅读 · 0 评论 -
基于MTD的NAND驱动开发(一) .
○、说明 大约用了两个礼拜不到的时间为公司的IPcamera 系统写了基于MTD 的NAND 驱动(linux-2.6.22.10 内核) ,目前已可以在该驱动的支持下跑cramfs 和jffs2 文件系统,另外,该驱动也可以同时支持small page( 每页512 Byte) 和big page( 每页2048 Byte) 两种NAND 芯片。在此整理一下与NAND 驱转载 2013-07-17 12:19:18 · 579 阅读 · 0 评论 -
linux spi子系统驱动分析
2.6.18内核下已经添加了完整的spi子系统了,参考mtd的分析,将从下到上层,再从上到下层的对其进行分析。以下先从下到上的进行分析: driver/spi下有两个底层相关的spi驱动程序:spi_s3c24xx.c和spi_s3c24xx_gpio.c其中spi_s3c24xx.c是基于s3c24xx下相应的spi接口的驱动程序,spi_s3c24xx_gpio.c允许用户指定转载 2013-07-02 08:35:51 · 474 阅读 · 0 评论 -
mtd-utils 及 ubi-utils 交叉编译 .
NAND是嵌入式系统一个很重要的部件,而mtd-utilts中包含了很多针对NAND的调试和测试的工具。 1. 在http://git.infradead.org/mtd-utils.git上下载最新的mtd-utils代码, 下面是以2009-07-03的代码为例。2. 解压缩mtd-utils.tgz3. cd mtd-utils,编辑common.mk:转载 2013-08-22 11:28:21 · 587 阅读 · 0 评论