今天学习了NandFlash的驱动,硬件操作非常简单,就是这个linux下的驱动比较复杂,主要还是MTD层的问题,用了一下午时间整理出来一份详细的分析,只是分析函数结构和调用关系,具体代码实现就不看了,里面有N个结构体,搞得我头大
我用linux2
25内核,2440板子,先从启动信息入手
内核启动信息,NAND部分: S3C24XX NAND Driver, (c) 2004 Simtec Electronics s3c2440-nand s3c2440-nand: Tacls=2, 20ns Twrph0=3 30ns, Twrph1=2 20ns NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit) Scanning device for bad blocks Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit": 0x00000000-0x00040000 : "boot" 0x0004c000-0x0024c000 : "kernel" 0x0024c000-0x03ffc000 : "yaffs2" 第一行,在driver/mtd/nand/s3c2410
c中第910行,s3c2410_nand_init函数: printk("S3C24XX NAND Driver, (c) 2004 Simtec Electronics\n"); 行二行,同一文件,第212行,s3c2410_nand_inithw函数: dev_info(info->device, "Tacls=%d, %dns Twrph0=%d %dns, Twrph1=%d %dns\n", tacls, to_ns(tacls,