Linux下Nand Flash 驱动代码分析
随着越来越多的平台支持从Nand Flash 中启动,掌握Nand Flash 的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对Nand Flash 驱动只是简单的修改。 下面分析一下Nand Flash 的代码流程: 学习Nand Flash 之前,需要对块设备中下面2点有个认识: 1, gendisk: 描述块设备实体(一整个Nand Flash 芯片)的结构体,整个块设备的注册过程都是围绕gendisk 来开展的; 2, add_disk(): 将一个分区信息(如:/dev/mtdblock3)注册到内核列表中 下面分析具体的驱动: 1, s3c2410 nandflash 控制器初始化步骤 s3c2410_nand_init(&s3c2410_nand_driver) ->driver_register->bus_add_driver()->driver_attach->bus_for_each_dev(_driver_attach)->driver_probe_device()->dev->probe() /*最后这个函数实质是 s3c2410_nand_probe() */ ->s3c2410_nand_probe() ->s3c24xx_nand_probe() ->s3c2410_nand_inithw() /*