TA的每日心情 | 开心 2019-11-19 16:20 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 meng110928 于 2017-8-8 12:52 编辑
' t0 N/ W# X! U" _; ]' `5 f# j
楼主大前年画了一个PCB,出现怪异情况。7 P0 x/ x6 R) r4 ^8 o, H
1:程序全放在TF卡上,隔夜有10%开机困难,多次摁开机键才正常开机;放一两年后充满电90%以上不开机;* \( d$ ]0 K5 {' {7 q8 `1 }( |, F
2:电路是 PMOS软开机电路+ARM9内核主控+SDRAM+SD卡+SPI外围+ADC按键 等;
- j3 d! r% d9 s2 Y5 I% @8 {3:SD卡单独LDO供电,上电先于主控,纹波可控,当时怀疑此处问题,加胆电容无改善,排除此处问题;
$ B3 \5 e: ~; a1 W. I4:走线长度5cm内,等长,过冲振铃不超过0.5V,TF卡串22R电阻+上拉电阻直通主控,;
1 M ?2 H* [( @5:时序正常,时钟20Mhz,TF端测量,读取时data较CLK延时5ns-9ns,卡的一致性较差,但是符合SD2.0协议14ns以内,信号维持时间符合SD2.0协议;- o8 { `5 @& ]2 ]7 t* s
6:板子是锂电池供电,开机键电路比较经典常用了,摁开机键拉低PMOS,然后3.7V锂电接入各LDO供电,主控用AAT3524复位,开机电路如下图,
5 L b& c6 t4 [1 s' n$ _8 Q7:出错时,主控串口有打印信息,如最下;
* [7 P! [+ x9 `- N0 W! U8:用逻辑分析仪抓了开机时的SD数据,查看软件及抓包见附件。 查看软件 链接:http://pan.baidu.com/s/1jIJwMFG 密码:8awp9:下面两个链接,为关联贴。
) y) y4 G! ]$ i' y. `10:设备类似一个儿童学习机,加一个SPI boot,开机再无任何问题。所以其他部分问题应该可以排除,问题就在SD2.0这里。# I9 N! E/ [7 u8 y
11:曾经将设备通过USB连接电脑,反复从设备TF卡里拷贝内容到电脑,重复上百次,哈希值未出现变异,无错误出现。
% x; W# y0 M( G: G12:以上供参考,这问题悬疑几年了,最近空闲特意测试跟进,顺便发出来看有没有灵机一动的大师,把此问题破解。! p% ~) `+ ^; g& y* ~8 n5 r
13:主控原厂当年不太配合,负责人目前没换,所以这问题不打算再找原厂。
, K, H% R6 @9 _" Z* V S* D; y
7 c' O" Y2 _7 @1 Thttps://www.eda365.com/thread-150215-1-1.html
1 b0 \. D% j; Chttps://www.eda365.com/thread-117688-1-1.html
7 d( l% `: l0 X/ Z- f/ j' O" t. s
抓包数据.rar
(4.14 MB, 下载次数: 0)
- X$ z4 q2 q: z. z r; l! {9 U, A. H: i7 ]/ f5 C
1 p% K" e1 Z2 F* H- D8 c' d+ b+ P
6 |5 L7 s8 k" l1 k1 R$ u
8 B$ I6 u# L9 j5 N) l
load bios 0x30500000...4 s7 m9 a+ H3 Q1 W3 O. Q, `: A; z' I
read sector:128 fail, try to backup sector:19863 r- x: m8 L2 M0 j+ Q' H1 p
R F4 ]( B7 s8 V8 a
read backup sector:1986 fail
. _) A) \1 e" u2 n5 [ing2 K6 f$ @9 K* h
: U! }* f1 b, Y......................................................................................分隔线..........................................................................................................................
2 ]/ y) R! \0 U4 N1 b w
' B3 \+ g6 q. y) G
8 g, s0 k/ ^, O1 U. z7 S8 L问题应当已经定位,是主控的操作不符合SD2.0协议' Y! m; }1 A) M2 |6 C% f4 r& Q' ?! I
7 K. Y: l2 B: z' u% a对比NG采样数据和OK采样数据发现,在NG机启动过程中,Host 下达 cmd18, 但并未使用 cmd12 去中止, 却又下达另一个 cmd18, [color=inherit !important]造成当前异常, 可能造成 SD 出现无法预期之错误;
6 H, J4 e1 A2 K/ \1 a1 y( f8 ?$ O
& k: |. _2 Y! |* B; ^, w9 {: i1 O1 y$ V) D( |& o8 `
- SD2.0协议第18页; j& n& @) n# }% y- b
! R! p1 A l+ N1 a* B/ |9 g9 H
- [color=inherit !important]READ_MULTIPLE_BLOCK(CMD18) 代表读取多个连续的块。块会连续的传输, 直到
% ]* F( m g- Y - [color=inherit !important]STOP_TRANSMISSON(CMD12)命令发出。因为连续数据传输,停止命令会有些执行延迟。数据
- [color=inherit !important]传输会在停止命令的结束位发送之后停止。
- CMD12 STOP_TRANSMISSION Mandatory /* 停止多块传输操作 */
- CMD17 READ_SINGLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取单个块 */
- CMD18 READ_MULTIPLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取多个块,直到收到CMD12为止 *
. k) a9 e% T5 ~ - x% d! M4 G5 p) {9 T
A7 J W7 |' f# L- p
L5 R/ m* b* m4 ~# T
+ {8 E2 }! a& s x3 i8 W
, H; M. n2 u; G
下图抓取的NG采样数据,02紫色为CMD,03红色为CLK,其他data。深色部分为第一个CMD18命令(568ms),右侧为第二第三。第一个CMD18后,TF数据(兰色)吐出,但未使用 cmd12 去中止, 却又下达另一个 cmd18,致使TF异常,所以第二第三CMD18后,TF再无数据吐出,data为直线
8 J" q1 X' c2 b* Z+ }* J" G
0 r% @* C* I o6 B" s& G4 e
# u, q0 m- H% p) h- C$ \下图抓取的OK采样数据,02紫色为CMD,03红色为CLK,其他为数据。对应时间轴,495ms出现CMD18开始连续读取数据,TF吐出数据(兰色);517ms CMD12>命令CMD18,读正常;539ms CMD12>命令CMD18 读正常...... 最后正常开机。9 o q/ P- ]) d$ n: x
+ Z+ Z+ q8 E/ }
: E: N: u6 J% z, {3 y
5 C: I7 f# U- _" {$ n0 x- G2 ^/ w9 ^" s& i( R" t
3 ^$ e5 R( Z6 W; L6 Q6 C
2 J3 m: y `. P. A! ?- \
+ Q+ q5 z" ^4 K% h. z' {2 B8 b" R% z, |* S
补充内容 (2019-8-2 15:34):/ }( K6 P8 I) }. i P* O3 N
我估计是卡放置久了之后,存储的电子流失,修正数据需要一定恢复时间,这个时间内会对主控报fail,导致程序不连续开机失败。 |
|