找回密码
 注册
搜索
查看: 4451|回复: 29

[讨论] FLASH 能否做兼容??

[复制链接]
发表于 2009-4-20 18:03:17 | 显示全部楼层 |阅读模式
哪位高手实现过手机FLASH兼容程序,譬如实现TOSHIBA 70nm与90nm两种不同工艺的FLASH momery 兼容程序,请不惜赐教!谢谢
发表于 2009-4-20 18:39:20 | 显示全部楼层
这样的兼容还没见过啊!见过的只是不同厂家的兼容
点评回复

使用道具 举报

 楼主| 发表于 2009-4-20 19:09:56 | 显示全部楼层
不同厂家的兼容我也没有想出到底应该怎么做?能指示一下吗?谢谢
点评回复

使用道具 举报

发表于 2009-4-20 20:59:12 | 显示全部楼层
Toshiba 90NM  70NM device ID 不一样, 所以没法做成兼容
同理 不同厂家的也无法做成兼容
点评回复

使用道具 举报

 楼主| 发表于 2009-4-21 09:04:23 | 显示全部楼层
我也是比较困惑,但确实有公司实现过这方面的兼容,但我却想不出如何做兼容,确切的说,只有 device id不一样才能做兼容,不然无法实现程序分支。只是我不知道该在哪里去读Device id 以及如何链接到对应的memory list上。
点评回复

使用道具 举报

发表于 2009-4-22 16:07:36 | 显示全部楼层
不同厂家的flash,大小一样,封装一样,可以兼容。目前支持nor-flash
我说说思路;
1、首先要把mtk里面memory自动配置的命令关掉,就是把emigen这个命令关闭
2、把要兼容的flash的id,分区,页大小等相关信息搜集到,然后放在一个结构里面。
3、在init.c中Application_Initialize进行读id操作
const kal_uint32 MANUFACTURE_ID_ADDR = 0x80030100;        // flash id is save in DMA registers
const kal_uint32 DEV_ID_ADDR = 0x80030200;
const kal_uint32 EXT_DEV1_ID_ADDR = 0x80030104;
const kal_uint32 EXT_DEV2_ID_ADDR = 0x80030204;

gManufacture_code = *(volatile kal_uint16 *)MANUFACTURE_ID_ADDR;
        gDev_code = *(volatile kal_uint16 *)DEV_ID_ADDR;
        gExt_dev_code1 = *(volatile kal_uint16 *)EXT_DEV1_ID_ADDR;
        gExt_dev_code2 = *(volatile kal_uint16 *)EXT_DEV2_ID_ADDR;

4、在custom_emi.c中custom_setEMI和Initialize_FDD_tables中进行判断,然后把相应的flash参数赋给相关的变量。
点评回复

使用道具 举报

发表于 2009-4-22 19:37:28 | 显示全部楼层
一般来讲,区分不同的Flash MCP,有如下几个方法:
1. 产品ID号
2. RAM的容量大小
3. 上述两个都无法区分,还可以通过分析不同MCP的NOR控制器中的寄存器,即CFI接口数据进行区分
点评回复

使用道具 举报

发表于 2009-4-23 11:38:44 | 显示全部楼层
To:yxj5421
几点疑问:
1 在Application_Initialize进行读id操作是不是晚了?是不是应该在INT_Config里set emi之前?
2 把flash id is save in DMA registers 是做何考虑?直接保存到不会被清零的internal ram中可以吧

3 flash操作函数也需要根据不同的flash动态加载的
点评回复

使用道具 举报

发表于 2009-4-23 14:04:21 | 显示全部楼层
我的意思是把所有兼容的flash相关信息保存在一个静态数据结构里面,等读到板子上真正贴的flash的id后,和这个数据结构里面的id进行比较,如果相同,就把这个结构里面相应的flash的访问方式,分区等赋给相应的变量

在Application_Initialize进行读id操作不晚,
点评回复

使用道具 举报

发表于 2009-4-23 15:30:42 | 显示全部楼层
关注 [em12][em12][em12][em12]
点评回复

使用道具 举报

发表于 2009-4-26 23:42:11 | 显示全部楼层
是不是还要修改BOOTARM。S中的汇编代码?
点评回复

使用道具 举报

发表于 2009-4-27 14:06:38 | 显示全部楼层
我们已经做了,目前常用的几种都ok
点评回复

使用道具 举报

 楼主| 发表于 2009-4-27 19:43:22 | 显示全部楼层

TO:gogogoing&&yxj5421

TO:gogogoing&&yxj5421 ,谢谢两位的指点,我尝试了修改代码,但还是没有兼容成功,两位能否提供相关的实例代码,鄙人不胜感激。paradise.on.net@163.com
点评回复

使用道具 举报

发表于 2009-6-18 21:21:38 | 显示全部楼层

高通的W平台和EVDO平台可以可以实现不同厂商的FLASH共存,MTK的没有接触过

高通的W平台和EVDO平台可以可以实现不同厂商的FLASH共存,MTK的没有接触过
点评回复

使用道具 举报

发表于 2009-6-18 23:48:16 | 显示全部楼层
最好不要做Flash的兼容,出现问题后,很难调试,会出现校准数据丢失等现象(造成无法进行呼叫等)。
点评回复

使用道具 举报

发表于 2009-6-22 11:39:31 | 显示全部楼层
事实上,只要两个FLASH 的ID不一样,应该都可以做兼容。知识根据两个FLASH 的BLOCK划分不一样(小BLOCK),可能会造成一些空间浪费。
点评回复

使用道具 举报

发表于 2009-6-22 11:49:55 | 显示全部楼层
可以做兼容的,只是我不知道怎么做
没有去做过
点评回复

使用道具 举报

发表于 2010-6-7 23:59:02 | 显示全部楼层
学习学习
点评回复

使用道具 举报

发表于 2010-6-9 10:25:55 | 显示全部楼层
可以做兼容
点评回复

使用道具 举报

发表于 2010-7-21 22:32:59 | 显示全部楼层
我也正在做这个工作,目前兼容了toshiba 和 numonyx的几颗 128M的,但是64M的有single bank兼容问题,很是麻烦,不知道有谁做过这块,不吝指教一下啊!!![em10]
相同的device id的flash可以读取CFI中关于Psram的类型(这个是numonyx的fae说的,当然要在某个datecode946之后的flash批次才行)。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-6 20:33 , Processed in 0.066272 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表