Chinaunix首页 | 论坛 | 博客
  • 博客访问: 829289
  • 博文数量: 213
  • 博客积分: 5048
  • 博客等级: 大校
  • 技术积分: 1883
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-14 10:14
文章分类

全部博文(213)

文章存档

2011年(4)

2010年(55)

2009年(47)

2008年(107)

我的朋友

分类: 嵌入式

2009-12-15 11:54:20

amd部分都是为了amd公司一些老的不支持cfi的芯片设计的。不知道现在这种老的flash还有多少人用呢?不过我觉得这部分和linux的mtd中的jedec部分倒是有部分类似的地方,记得我用sst39系列的时候就因为linux的mtdcfi那部分对sst39没有直接支持,jedec使用更方便一些。
第一个过程:
mtd_dev_init() [mtdcore.c] -> mtd_init() [s3c2410_flash.c] -> amd_init()[s3c2410_flash.c]
这个过程和cfi的几乎一样。
第二个过程:
do_map_probe()[chipreg.c]->get_mtd_chip_driver()[chipreg.c]->amd_flash_probe()[amd_flash.c]
amd_flash_probe和cfi_probe最大的不同就是,cfi_probe是通过cfi接口得到芯片信息的,而amd_flash_probe是通过JEDEC读取machineID和deviceID,然后查找一个struct amd_flash_info table[]表来得到芯片信息的。
table里面有很多芯片的信息,你也可以添加自己的芯片。
接下来的过程和cfi中的mtd_do_chip_probe还是很类似的
第三个过程:
probe_new_chip()[amd_flash.c]
首先第一次调用这个函数,通过JEDEC读出
machineID和deviceID,查表得到之前写好的更全面的信息。
以后根据interleave多次调用把struct flchip信息填好,主要就是start地址。
第四个过程:
还是回到amd_flash_probe函数,完善mtd函数,把写读擦除等函数填进。

总的来说,amd这部分简单多了,因为他是查表,通用性肯定没那么好,这也是cfi出现的原因。
阅读(1192) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~