找回密码
 注册
搜索
查看: 3965|回复: 23

[讨论] mtk平台,做一个动态识别flash的bin档

[复制链接]
发表于 2007-11-4 21:12:34 | 显示全部楼层 |阅读模式
mtk平台下,打算做一个能自动识别flash并配置emi的bin档,就是说更换flash时不再需要每次emiclean,emigen来生成那几个配置文件,一个bin档支持几种flash。现在已能识别不同型号的flash,下一步要做的:各种flash需要的不同emi配置可以直接用exel表格的东西,即把custom_emi.h定义的宏改成全局变量等,在这些全局变量被用到之前根据flash的不同来动态调整他们,而原来代码里在c运行环境建立之前就被用到了的宏可以可以定义为几组只读常量来解决,也可以做到动态。可是做到现在发现一个问题,cusom_setemi这个函数是初始化bb的emi模块的,只有这步骤做完了才可能去操作emi上的器件,就是说flash id就只能在这个函数正常执行完才能读出来,可是动态的目的恰恰就是要根据flash的不同来配置emi模块,似乎这是个逻辑上的因果矛盾,这个问题无解了吗?[br]<p align=right><font color=red>+1 RD币</font></p>
发表于 2007-11-5 08:50:37 | 显示全部楼层
难道不可以将读取Flash ID的函数提到初始化之前么,应该只需要一条命令就可以读取ID的,然后进行相关的配置。。。。。。。。。。
期待高手解题中[em01]
点评回复

使用道具 举报

发表于 2007-11-5 10:44:58 | 显示全部楼层
这个想法很好,如果做好了,完全可以取消emiclean这个动作!欢迎高手一起来解决这个问题!
点评回复

使用道具 举报

发表于 2007-11-5 11:01:57 | 显示全部楼层
我个人的建议:

完全取消emiclean这个动作,我们可以在现有的emi文件中做修改;添加如下功能函数:

1、读取flash ID的函数接口;
2、根据ID来配置flash的指令集,bank及读写速度等参数的配置;

采用以上的想法后,我们可以取消custom_MemoryDevice.h文件中cs0和cs1的类型定义了;另外,Flash_opt.h中的定义要调整,同时调用Flash_opt.h中宏的flash驱动文件也要调整;

这样设计,以后手机硬件换不同类型的flash,只要bin能支持,就不用重新烧入bin了,直接换就ok:)
点评回复

使用道具 举报

发表于 2007-11-5 15:36:06 | 显示全部楼层
哦,就是作flash兼容吧,读id判断的同时,是不是,flash driver也要改
点评回复

使用道具 举报

发表于 2007-11-5 16:45:38 | 显示全部楼层
大家好像都没有解决楼主的问题:
1,楼主想读flash ID,但是读flashID 需要flash 的时序配置正确,或者至少可以正确访问;
2,楼主必须默认配置一组默认值,而这组默认值支持你要做兼容的几种flash;
3,flash id读取成功后,可以根据不同的ID采取优化后的参数;
4,至于driver操作的兼容,相信楼主没有问题。[br]<p align=right><font color=red>+1 RD币</font></p>
点评回复

使用道具 举报

 楼主| 发表于 2007-11-5 18:48:41 | 显示全部楼层
楼上的兄弟深得我意,基本上这个方案可以到此为止,可能性不大,关键问题是这组同时适合多种flash的emi默认值不好找,就算能找到也是兼容的型号非常有限。

我做了一个返回flash id的函数,利用是否正确读到id来做判断,如果id正确则可继续往下走,否则会强制出错。结果将这个处理过程放到init.c文件的 custom_setemi函数之前,系统不能启动。而放到该函数之后,系统正常启动。说明确实一定要先配置好BB的emi模块硬件才谈得上读flash id。

当然不排除有强人能有别的解决办法,如果有请一定赐教在下。
点评回复

使用道具 举报

 楼主| 发表于 2007-11-5 23:19:04 | 显示全部楼层
想到了一个临时解决办法,做几组emi参数供custom_setemi调用,该函数后读flash id,将返回值在一个预先定义的id组里查找,如果没找到就返回去传入另一组参数调用custom_setemi,直到返回值在此id组里找到,此时emi即为正确设置。
点评回复

使用道具 举报

发表于 2007-11-6 08:19:05 | 显示全部楼层
读FLASHd的ID并不需要先初始化时序,比如FlashTool等的Download Agent之类的。但是可能(记不清楚了,也可能不需要)有一个要求就是这段代码需要在非FLASH上运行,比如内部SRAM或者外部的PSRAM等。你可以考虑把读取FLASH ID的代码放在系统引导过程中并拷贝到RAM中运行,最好是内部SRAM。
点评回复

使用道具 举报

发表于 2007-11-6 08:21:20 | 显示全部楼层
不过这种做法并不一定有多大的好处。更换FLASH是一个很重要的事情,通常需要进行批量试产来帮助验证,而且即使同一型号的FLASH批次不同都有可能时序上有差异,所以需要严格控制FLASH的型号。
点评回复

使用道具 举报

发表于 2007-11-6 10:21:02 | 显示全部楼层
如果是MTK的话可以看下bootarm.s,引导程序会把flash里的代码拷贝到ram里运行,在拷贝之前也会对emi进行配置时序的操作,这是在custom_setemi之前
点评回复

使用道具 举报

发表于 2007-11-6 10:57:50 | 显示全部楼层
今天来看,还没有人来解决啊!看来只有我出马了:)

1、flash ID的读写没有任何限制,任何flash都能提供 flash id的读,但是我们现在感觉好像读
    不出 flash ID,其真正的原因是因为我们要把读flash ID 的函数link到mtk的内部ram
    中,具体原因,大家自己考虑吧;

2、自己做张flash的配置表,里面根据flash ID来索引。至于有同仁说时序问题,我想这个问题
     和做这个自动的表没有任何冲突,你可以先调好。


以上两步好后,自动适应flash的bin大部分工作就完成。lz可以去试试。
点评回复

使用道具 举报

 楼主| 发表于 2007-11-6 17:44:15 | 显示全部楼层
读flash id真的不需要设emi,不要配时序? 那版主请你解释一下为什么将读id的函数放到custom_setemi之前不能读取,而放到后面就可以了? 这个过程读id函数始终位于flash,并未拷贝到sram。

就算将该函数link到内部sram,也是不可能执行的,除非使用仿真器将其下载到sram还差不多,因为在mtk的codebase里,先是执行int_config-->custom_setemi,后才是进行数据和代码的拷贝:INT_InitRegions,请大伙确认了再发言。
点评回复

使用道具 举报

 楼主| 发表于 2007-11-6 20:22:39 | 显示全部楼层
将读id函数link到sram,在custom_setemi之前调用它,指向的只是该函数将来会装载的地址,此时该地址只是一堆未知数据。
点评回复

使用道具 举报

发表于 2007-11-7 11:22:44 | 显示全部楼层
再发表点个人的建议,后面就不讨论了。

1、我是站在flash角度上来看flash ID读操作的,至于有说,为什么在前面不可以,在后面可
    以, 那得去分析下mtk的程序的运行流程了;但这个本身和flash ID读操作没有什么相冲
   之处,我提出为什么要把这个函数link到cpu的内部sram中呢?其考虑在于:
   如果我们的程序已经运行在flash上了,然后再对flash去做命令操作,担心有些flash不支持这
   样的操作,所以采用程序运行区和操作区分开的方法,至于如果说放到一起,也可以啊,
   是的,也许是可以,但是你试过所有的flash了吗?为了稳定可靠,程序运行和度操作区分
   开是最好的方法

2、说到link到sram中不能运行问题,这个应该是思路问题吧,您现在是考虑改他的框架,
     应该说是涉及到他的一些架构问题了,难道这个时候还必须走它的流程?

3、再说下emi的问题,其实任何cpu在上电reset后,如果能配置emi,系统缺省配置最慢
     速度的。如果认为非要配置emi才能操作flash,那么请问,程序刚开始怎么跑到flash上
     的?

4、再补充下,lz的问题其实和mtk bb本身可能没有太多关系,关键还是涉及到cpu,
     flash的操作和运行机制,这种操作基本都是标准得。
点评回复

使用道具 举报

 楼主| 发表于 2007-11-7 11:48:10 | 显示全部楼层
谢谢楼上的讨论。
点评回复

使用道具 举报

发表于 2007-11-7 22:16:03 | 显示全部楼层
在bootloader中读出flashID应该就可以了吧。
点评回复

使用道具 举报

发表于 2008-12-19 21:50:56 | 显示全部楼层
这种有意义的贴子讨论的朋友总是这么多,好热的
点评回复

使用道具 举报

发表于 2009-9-26 21:45:35 | 显示全部楼层
请问现在有没有哪位高手给出解决方案?
点评回复

使用道具 举报

发表于 2009-9-26 22:05:58 | 显示全部楼层
早已经实现的东东,还在讨论?
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2024-12-26 08:57 , Processed in 0.046721 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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