美光的华邦的nand flash 驱动不一样吗
发布网友
发布时间:2022-04-30 02:34
我来回答
共1个回答
热心网友
时间:2023-10-08 13:46
Linux内核已经三星Nand Flash驱解释Nand Flash驱具体流程原理
处参考2.6.29版本Linux源码\drivers\mtd\nand\s3c2410.c2410例
1. nand flash驱加载第步调用应init函数s3c2410_nand_init,nand flash驱注册Linux驱框架
2. 驱本身真始probe函数s3c2410_nand_probe->s3c24xx_nand_probe,
probe程用clk_enable打nand flash控制器clock钟用request_mem_region申请驱所需要些内存等相关资源s3c2410_nand_inithw初始化硬件相关部主要关于钟频率计算及启用nand flash控制器使硬件初始化面才能工作
3. 需要解释部代码:
for (setno = 0; setno < nr_sets; setno++, nmtd++) {
pr_debug("initialising set %d (%p, info %p)\n", setno, nmtd, info);
/* 调用init chip挂载nand 驱底层函数nand flash结构体及设置应ecc mode挂载ecc相关函数 */
s3c2410_nand_init_chip(info, nmtd, sets);
/* scan_ident扫描nand 设备设置nand flash默认函数获物理设备具体型号及应各特性参数部算些值于nand flash说主要参数比nand falsh芯片块页等 */
nmtd->scan_res = nand_scan_ident(&nmtd->mtd,
(sets) ? sets->nr_chips : 1);
if (nmtd->scan_res == 0) {
s3c2410_nand_update_chip(info, nmtd);
/* scan tail名字看扫描阶段经前面scan_ident我已经获应nand flash硬件各参数scan tail根据些参数设置其些重要参数尤其ecclayout即ecc何oob摆放再进行些初始化操作主要根据驱没实现些函数用系统默认 */
nand_scan_tail(&nmtd->mtd);
/* add partion根据nand flash区设置区 */
s3c2410_nand_add_partition(info, nmtd, sets);
}
if (sets != NULL)
sets++;
}
4. 等所参数都计算函数都挂载完毕系统工作
层访问nand falsh数据候通MTD层层层调用调用所实现些底层访问硬件数据/缓存函数