切换到宽版
  • 33723阅读
  • 94回复

[SMI]花费一天整理的SM2246 闪存参数详解 [复制链接]

上一主题 下一主题
离线onlyu7302
 

发帖
395
M币
9839
专家
17
粉丝
96
只看楼主 倒序阅读 使用道具 楼主  发表于: 2015-09-13
— 本帖被 發騷友 设置为精华,作者+3000M币+5专家(2015-09-13) —
大家都知道2246en的闪存参数是放在工具目录下FlashDB\2246AA\Flash.SET 文件里的。由各种数字组成,并没有任何注释,咋一看很容易被弄晕。但后来发现是可以在config文件里找到参数对应的定义,经过这几周的慢慢摸索和反复实验对比,已经基本弄明白了其参数的定义,以及部分参数的作用,虽然还是有不少作用不明,但已经可以在参考原厂参数的基础下改出同制程的颗粒了。

分享如下:错误在所难免,也希望得到大家的补充和讨论。

镁光的资料是比较全的,其颗粒datasheet、编号规则等均能从官网查询下载,因此就以常见的镁光MT29F128G08CFAAB 为例吧:
花费一天整理的SM2246 闪存参数详解


这里提一下:整个1套参数是指颗粒中1个CE的参数,和这个颗粒有多少CE没有任何关系。工具是通过主控识别总共有多少个CE再根据这个CE的参数来计算总容量,比如intel pf29f32b08ncme2 和 pf29f64b08pcme1 这两个的参数就是完全一样的,2片ncme2等效1片pcme1。所以经常会有一个颗粒被工具识别出好几个型号来,一般随便选哪个型号基本都一样的,除非参数略有不同,比如jcme2和ncme2是有点不一样的,具体会在后面讲到这个参数的时候详述。

为便于解读,每个参数给予一个编号,带*号的表示这个参数非常重要,不可有错;带(Hex)的表示参数为16进制数值。
花费一天整理的SM2246 闪存参数详解


1-6:*Flash id 这个不用讲,大家都知道。

7:*BITSPERCELL  闪存类型 1=SLC、2=MLC、3=TLC  
你没看错,我在支持库里找到了一些TLC的型号,镁光、三星、东芝、HY的都有,而且在工具里是可选的,比如K9ACGD8U0A:
花费一天整理的SM2246 闪存参数详解


它是1ce的颗粒,常见的K9CFGY8U5A和它是一个id,理论上选它可开卡,但三星的TLC都是bga316的,我没有转接板无法开卡验证,有条件的同学可以尝试一下。
镁光的是B95A制程的MT29F512G08EMCBB,可能是较新上市的,没见过。
我对HY颗粒了解不多,但从参数上来看是符合TLC的判断的。

8:DrivingSetting    作用未知 所有型号这里均为 21(Hex)

9:DrivingSetting2   作用未知 所有型号这里均为 01(Hex)   实测8、9这两组参数我随便改为其他数值也能开卡成功,似乎和开卡关系不大。

10:Plane2  作用未知 所有型号这里均为 0
本帖最近打赏记录:共52条打赏M币+181专家+2
fsscjj M币 +3 優秀文章 2016-05-22
hfsp M币 +7 原創內容 2016-03-12
xm_xxc M币 +3 謝謝分享 2016-03-05
manzxq M币 +3 謝謝分享 2015-12-14
1988chg M币 +3 - 2015-11-09
81041227 M币 +3 技术大神 2015-11-05
bbctm M币 +2 認真發帖 2015-09-20
heiheihehei M币 +3 優秀文章 2015-09-20
549314048 M币 +3 優秀文章 2015-09-20
edit009 M币 +3 技术贴 2015-09-20
关键词: SM2246SMISSD
离线onlyu7302

发帖
395
M币
9839
专家
17
粉丝
96
只看该作者 1楼 发表于: 2015-09-13
继续



11:MINIMUM_BLOCK  最小块 这个参数和后面一个参数有一定对应关系,如后一个为4096,这里onfi颗粒大都为3996,其他的颗粒各种数值都有,一般参照原厂同制程的参数即可。
PS:原先以为这个参数和后一个参数的差就是ssd的 op空间,但实测并没有什么关系,这里随便改成什么数值都不影响开卡成功,也不影响开卡后容量,数值也可为0。

12:*BLOCKCNTPERDIE  指颗粒中每1个DIE所辖的块数,例如cfaab单个die的块数就是4096:



如图:cfaab的每个die 由2个plane乘以每个plane的 2048个块组成总共4096个块。


13PRETESTMODE  字面意思应该就是预测试模式,原厂这里均为2,实测改为013等也能正常开卡,可能有些特殊颗粒需要改这里,一般参照同制程的参数。


14PRETESTMODE   13#14#这两个参数很有意思,都是和PRETESTMODE呈对应关系,前一个为基础值后一个为补偿值,例如cfaab这里是2,3 config PRETESTMODE =16*2+3 = 35。各型号2,32,92,8各种组合都有,一般参照同制程的参数。


15StrongPageOffset  直译就是“强页面偏移”,作用不明,望指教。数值0-5都有,参照同制程的参数即可。


16*PAGEPERBLOCK  每块页数量这里的cfaab就是每个块有256页。




17*PLANENUMBER 每个dieplane  一般都为2




18*PAGESIZE 每个页大小,就是常说的4KP8KP16KP
  
19*SPAREAREA 直译“备用区 ”,其实指单个页的备用区大小。


如图,镁光l74a制程的颗粒,每个页由8192+备用448个字节构成。

[ 此帖被onlyu7302在2015-09-13 02:56重新编辑 ]
本帖最近打赏记录:共29条打赏M币+107
fsscjj M币 +3 優秀文章 2016-05-22
hfsp M币 +7 原創內容 2016-03-12
lzj_876 M币 +3 優秀文章 2016-01-03
manzxq M币 +3 謝謝分享 2015-12-14
zhangmin0909 M币 +3 - 2015-09-22
549314048 M币 +3 - 2015-09-20
duohaiou M币 +3 原創內容 2015-09-19
裤裆里有杀气 M币 +3 - 2015-09-18
灰大狼 M币 +3 看不懂,但是得顶啊!!技术资料 2015-09-17
千年之戀︶ㄣ M币 +3 - 2015-09-15
离线onlyu7302

发帖
395
M币
9839
专家
17
粉丝
96
只看该作者 2楼 发表于: 2015-09-13
继续


20ECCBIT  23为常见数值,参照同制程的参数即可。


21EXTENDBLOCK 扩展块 cfaab这里数值为0l95a等新制程颗粒这里是有数值的,参照同制程的参数即可。

22SDRFrequency (Hex)  SDR频率

23DDRFrequency (Hex)  DDR频率  和后面的另外2个频率参数不同,这2个参数似乎和开卡关系不大,我曾拿ncme2的参数(这里为:8F,27)强开cfaab23,27)同步异步模式均能成功开卡。又随意改为23,1F23,3F 也均能成功。所以这2个参数参照同制程的参数即可。

24BLOCKENDURANCE 作用未知 直译似乎是和块耐久度有关也不直接影响开卡,常见数值30100,参照同制程的参数。

25*INTERNALCHIPNUM 直译为“内部芯片数量” 其实就是DIE数量/CE数量的比值,或者可以理解为1ce对应几个die
比如一般颗粒都是2die2ce4die4ce之类的,那么这个数值就是1
又如nw5934die2cenw3888die4ce,那么这个数值就是2
有没有4:1的货呢?还真有!intel pf29f64b08qcme1就是8die2ce的奇葩,那么这里的数值就是4

26*CMDOPT1 (Hex) 作用未知  常见数值为1F2F535F等,参照同制程的参数。

27READRETRYTABLE1 作用未知 参照同制程的参数。

28READRETRYTABLE2作用未知onfi阵营常见为0toggle阵营这里各种数值都有,参照同制程的参数。
[ 此帖被onlyu7302在2015-09-13 02:56重新编辑 ]
本帖最近打赏记录:共21条打赏M币+79
fsscjj M币 +3 - 2016-05-22
manzxq M币 +3 謝謝分享 2015-12-14
zhangmin0909 M币 +3 歡迎探討 2015-09-22
duohaiou M币 +3 認真發帖 2015-09-19
裤裆里有杀气 M币 +3 - 2015-09-18
jqbf M币 +5 原創內容 2015-09-18
千年之戀︶ㄣ M币 +3 - 2015-09-15
85800662 M币 +3 原創內容 2015-09-14
huakun888 M币 +10 原創內容 2015-09-14
笑着无奈 M币 +3 - 2015-09-13
离线onlyu7302

发帖
395
M币
9839
专家
17
粉丝
96
只看该作者 3楼 发表于: 2015-09-13



29PWRONINTERFACE作用未知onfi阵营常见为0toggle阵营这里常见为1,参照同制程的参数。

30*FLASHINTERFACE  onfi异步片这里为0;同步片这里为1toggle(包括异步)大都为2(这个阵营也有少量异步片这里数值为0);参照同制程的参数。之前的帖子说的拿cfaab参数改出的cfaaa两者唯一的区别就在这里。

31*TOSHIBASHIFT  作用未知很多颗粒包括onfi阵营的在内这里大都为1,具体参照同制程的参数。很奇怪,看名字明显和东芝有关系,可为啥很多onfi的颗粒这里的数值也是1呢?

32ONFIDrivingSetting (Hex)  作用未知,参照同制程的参数。

33ONFIDrivingSetting2 (Hex)  作用未知,参照同制程的参数。看名字和onfi颗粒有关,但所有颗粒在这里两个参数都是有数值的,实测和开卡影响不大,如cfaab21,21改为52,51开卡成功。

34FlashOutputDriving (Hex)  作用未知,参照同制程的参数。实测和开卡影响不大,cfaab这里的31改为51开卡也能成功。

35SLCCMDPATTERN (Hex)  作用未知,参照同制程的参数。大部分颗粒这里为0,部分三星TLC颗粒这里为DA;部分镁光TLC颗粒为40;部分东芝闪迪颗粒为A2;部分HY颗粒BFA2都有。

36R_SLCCMDPATTERN (Hex)  作用未知,参照同制程的参数。大部分颗粒这里为0,部分三星TLC颗粒这里为DF;部分镁光TLC颗粒为43;部分HY颗粒为BF。个人猜想可能和SLC模式有关。

37*ISFORSM2246  数值1为可选,如果为0则在工具里找不到这个颗粒。


38:VCTSUPPORT  作用未知,参照同制程的参数。大部分颗粒这里为0,镁光部分TLC颗粒这里为1。


[ 此帖被onlyu7302在2015-09-13 02:57重新编辑 ]
本帖最近打赏记录:共19条打赏M币+75
manzxq M币 +3 謝謝分享 2015-12-14
duohaiou M币 +3 原創內容 2015-09-19
裤裆里有杀气 M币 +3 - 2015-09-18
jqbf M币 +5 優秀文章 2015-09-18
千年之戀︶ㄣ M币 +3 - 2015-09-15
huakun888 M币 +10 認真發帖 2015-09-14
笑着无奈 M币 +3 - 2015-09-13
风间尘 M币 +6 謝謝分享 2015-09-13
dxtjc M币 +5 謝謝分享 2015-09-13
animefans_xj M币 +3 此文略叼 2015-09-13
12
离线onlyu7302

发帖
395
M币
9839
专家
17
粉丝
96
只看该作者 4楼 发表于: 2015-09-13


39HYNIXOPT1  作用未知,参照同制程的参数。从名字来看应该和HY颗粒有点关系,事实上部分HY颗粒这里为1,除此之外其余颗粒大都为0

40F_OPT2 (Hex)  作用未知,参照同制程的参数。常见为80,一些新制程的常见90D0。实测cfaab这里的80改为090D0均不影响开卡。

41SDR_DRVSetting1_SM2246 (Hex)
42SDR_DRVSetting2_SM2246 (Hex)

43DDR_DRVSetting1_SM2246 (Hex)
44DDR_DRVSetting2_SM2246 (Hex)  这四组参数一般数值都一样,性能差点的颗粒一般55,好点的7788,参照同制程的参数。实测改大改小不影响开卡,可能和稳定性有关。

45*SDR_FlshPLLFreq_SM2246 (Hex)  闪存SDR模式下的频率,较老的型号一般为0E0A,较新的大都为12,实测异步模式下读写性能与此有关,尽量不要乱改,有的异步片如cbaaa,这个数值+-1都无法开卡,参照同制程的参数即可。

46*DDR_FlshPLLFreq_SM2246 (Hex)  闪存DDR模式下的频率,较老的型号一般为181C1E等,较新的大都为26,实测Toggle模式和onfi同步模式下读写性能与此有关,前面提到的jcme2这里是1Fncme226,可能考虑tsop封装的电气特性不如gba,故数值趋于保守。


一般实际开卡中如果遇到adj错误,可能是由于各颗粒个体差异或者pcb板子电气特性不佳造成的,这时候可以考虑适当降低这个参数来通过开卡,如果你的颗粒是onfi同步片或toggle片,那么只要改这里的参数,45#参数不用管,当然代价是性能降低。
以前有人反映的4k9pfgy8u7a16cjaab开卡时adj错误我觉得可以尝试这个办法解决。
[ 此帖被onlyu7302在2015-09-13 02:57重新编辑 ]
本帖最近打赏记录:共22条打赏M币+84
64shanda M币 +3 虽然我看不懂但是好像很厉害的样子M走起 2016-03-07
manzxq M币 +3 謝謝分享 2015-12-14
duohaiou M币 +3 謝謝分享 2015-09-19
裤裆里有杀气 M币 +3 - 2015-09-18
jqbf M币 +5 謝謝分享 2015-09-18
千年之戀︶ㄣ M币 +3 - 2015-09-15
asusyt M币 +3 謝謝分享,看起来好牛的样子 2015-09-14
huakun888 M币 +10 謝謝分享 2015-09-14
bennyray M币 +3 - 2015-09-14
笑着无奈 M币 +3 - 2015-09-13
离线onlyu7302

发帖
395
M币
9839
专家
17
粉丝
96
只看该作者 5楼 发表于: 2015-09-13

472_5Inch_DRVSetting_1 (Hex)
482_5Inch_DRVSetting_2 (Hex) 这两组参数的数值和规律一般和41424344号参数一样,不详述了。

49mSATA_DRVSetting_1 (Hex)
50mSATA_DRVSetting_2 (Hex)  这两组数值比前面两组要低一些。

51NGFF_DRVSetting_1  (Hex)
52NGFF_DRVSetting_2  (Hex)  这两组和上两组一般相同。
可以看到:msatangff的参数比2.5inch的低一些,可能是这两种pcb2.5的布局紧凑,考虑电气特性,因此保守些。


实测选择这三种并无太大区别。

53FlashOutputDriving_SM2246 (Hex) 作用未知,常见为0。部分东芝颗粒(DDK)这里为62;部分HY颗粒为82;镁光部分L85a,L95b颗粒为1

54TLCTYPE  看名字是和TLC有关,常见为0。三星TLC颗粒常见37;东芝TLC常见18;镁光TLC这里为6,有部分HY颗粒这里为5



整个一天花在这个参数上了,看在我这么辛苦整理的份上,有分的就统统砸过来吧,在下一定笑纳。


完结撒花!累死碎叫  顺便求精、求专、求m



本帖最近打赏记录:共48条打赏M币+173
64shanda M币 +3 原創內容 2016-03-07
右走 M币 +3 優秀文章 2015-12-20
qkwu M币 +3 優秀文章 2015-10-02
redsea M币 +3 - 2015-09-23
dooeha M币 +3 優秀文章 2015-09-19
duohaiou M币 +3 謝謝分享 2015-09-19
裤裆里有杀气 M币 +3 - 2015-09-18
jqbf M币 +5 認真發帖 2015-09-18
jxzhuganwei M币 +3 虽然看不懂,但你的这种精神是值得学习的。 2015-09-16
千年之戀︶ㄣ M币 +3 - 2015-09-15
离线xielc

发帖
1963
M币
1290
专家
1
粉丝
61
只看该作者 6楼 发表于: 2015-09-13
学习了,好详尽的分析。

内容来自Android手机客户端

本帖最近打赏记录:共1条打赏M币+3
onlyu7302 M币 +3 歡迎探討 2015-09-17
离线ziyangqiji

发帖
2149
M币
63
专家
2
粉丝
355
只看该作者 7楼 发表于: 2015-09-13
虽然我看不懂但是好像很厉害的样子M走起
本帖最近打赏记录:共1条打赏M币+3
onlyu7302 M币 +3 歡迎探討 2015-09-17
离线lozy3

发帖
1392
M币
5424
专家
4
粉丝
40
只看该作者 8楼 发表于: 2015-09-13
楼主大爱,收着了。
本帖最近打赏记录:共1条打赏M币+3
onlyu7302 M币 +3 歡迎探討 2015-09-17
离线衡水家维

发帖
6006
M币
13606
专家
36
粉丝
170
只看该作者 9楼 发表于: 2015-09-13
真心的对呼噜娃说声谢谢,学习了
本帖最近打赏记录:共1条打赏M币+3
onlyu7302 M币 +3 歡迎探討 2015-09-17
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个