|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 meng110928 于 2017-8-8 12:52 编辑
b, {, e8 |8 _/ O9 j: E
" }5 h# P# y* Q8 w5 ` [楼主大前年画了一个PCB,出现怪异情况。
/ }: M& O# V, l( L1:程序全放在TF卡上,隔夜有10%开机困难,多次摁开机键才正常开机;放一两年后充满电90%以上不开机;. X1 ^) |% H6 U% G4 x
2:电路是 PMOS软开机电路+ARM9内核主控+SDRAM+SD卡+SPI外围+ADC按键 等;! ^, {6 {: x) K: j" D
3:SD卡单独LDO供电,上电先于主控,纹波可控,当时怀疑此处问题,加胆电容无改善,排除此处问题;
9 s; ^/ }% j$ J1 t( H4:走线长度5cm内,等长,过冲振铃不超过0.5V,TF卡串22R电阻+上拉电阻直通主控,;; Y/ l( J- H( c( p! L! q
5:时序正常,时钟20Mhz,TF端测量,读取时data较CLK延时5ns-9ns,卡的一致性较差,但是符合SD2.0协议14ns以内,信号维持时间符合SD2.0协议;' E' ` f( e, W& a$ j+ D6 h" d$ Y
6:板子是锂电池供电,开机键电路比较经典常用了,摁开机键拉低PMOS,然后3.7V锂电接入各LDO供电,主控用AAT3524复位,开机电路如下图,, D6 \7 p, n7 Y$ [& ~2 D
7:出错时,主控串口有打印信息,如最下;* d+ [0 z r# e# t0 r1 S
8:用逻辑分析仪抓了开机时的SD数据,查看软件及抓包见附件。 查看软件 链接:http://pan.baidu.com/s/1jIJwMFG 密码:8awp9:下面两个链接,为关联贴。2 K) @5 c5 T' m: P
10:设备类似一个儿童学习机,加一个SPI boot,开机再无任何问题。所以其他部分问题应该可以排除,问题就在SD2.0这里。- K% z6 }! t% z0 c8 \# J
11:曾经将设备通过USB连接电脑,反复从设备TF卡里拷贝内容到电脑,重复上百次,哈希值未出现变异,无错误出现。5 I9 K G$ p, l* q% R+ h& k B
12:以上供参考,这问题悬疑几年了,最近空闲特意测试跟进,顺便发出来看有没有灵机一动的大师,把此问题破解。
' N1 H& A0 M7 ^( r13:主控原厂当年不太配合,负责人目前没换,所以这问题不打算再找原厂。
& Z3 }5 C) r7 f5 L* }
* N. q) S) m5 g9 O$ chttps://www.eda365.com/thread-150215-1-1.html
/ I; G5 ?) r: o# I; zhttps://www.eda365.com/thread-117688-1-1.html
$ g& Z$ [& X$ Y e/ C. }# H1 J
: Q9 o" A* v, a0 ~( j
抓包数据.rar
(4.14 MB, 下载次数: 0)
1 i' W! ] a- H; D m) c& p* N: t
, g# [* m+ T# o: r8 v
+ Y2 y: D$ f$ Q7 {. I. T) {0 |
) n3 @1 G" |: G- V/ z# Bload bios 0x30500000...
. K4 Y- {6 M$ Zread sector:128 fail, try to backup sector:1986
4 E" W( g% J# IR F4 U% x# h, {( |2 g. B
read backup sector:1986 fail
6 v& ?& _. b i0 }( l7 Iing1 t6 S! x {( d' @4 v9 H8 W
2 i( n% W6 Y: U' Y0 U+ k4 O1 }* L......................................................................................分隔线..........................................................................................................................
2 A. B, P4 V$ g5 p9 d$ i# u; N X6 d' m7 S* M9 v
4 @) a0 }/ E% q问题应当已经定位,是主控的操作不符合SD2.0协议; C0 h9 ~2 [/ D. b& o. Y% D
6 Y H3 Q5 T! ^6 G! S! a" V0 b( Z
对比NG采样数据和OK采样数据发现,在NG机启动过程中,Host 下达 cmd18, 但并未使用 cmd12 去中止, 却又下达另一个 cmd18, [color=inherit !important]造成当前异常, 可能造成 SD 出现无法预期之错误;
1 L4 F0 P+ K! w X/ f" T+ Q' [- ^! R7 J$ r6 E' f
, u5 q; V1 Q. T' @
- SD2.0协议第18页
/ _& a9 c6 T: g' F' S# o; F2 u8 Y7 m7 E; Y O0 ^/ Q! ?7 ]/ q
- [color=inherit !important]READ_MULTIPLE_BLOCK(CMD18) 代表读取多个连续的块。块会连续的传输, 直到" v5 h8 v( t8 f/ _# F2 L' Z
- [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为止 *
# V8 ~ F- {7 }" P- ]$ ]. J" V5 k
. ]! T; q& F6 ?. D/ Q$ Z' R. r& G0 d3 A( `* o1 m6 I
' W" y4 G* \" b' T
/ z8 f: f' X" Y6 }) g, e2 I4 a$ D6 Y0 j0 v2 a8 M' u: l' r
下图抓取的NG采样数据,02紫色为CMD,03红色为CLK,其他data。深色部分为第一个CMD18命令(568ms),右侧为第二第三。第一个CMD18后,TF数据(兰色)吐出,但未使用 cmd12 去中止, 却又下达另一个 cmd18,致使TF异常,所以第二第三CMD18后,TF再无数据吐出,data为直线
3 Y" D: l# d5 B! J$ ?* i1 C% l
; d4 C2 n& V2 v) f; w
; ?. `2 a1 q) ?4 q下图抓取的OK采样数据,02紫色为CMD,03红色为CLK,其他为数据。对应时间轴,495ms出现CMD18开始连续读取数据,TF吐出数据(兰色);517ms CMD12>命令CMD18,读正常;539ms CMD12>命令CMD18 读正常...... 最后正常开机。
3 o- y/ }- O8 k1 X* A# ?) |- z a7 g2 _' P2 O; l* W% ^$ e Z
+ a7 O" Z1 [( H. u' I! [9 D
( ~* }" w- a) T7 R; G- T2 U, J
% u; Y+ l9 w( O! e$ U
% p4 c5 T* A1 q& D3 ?/ ^; H
2 z" B d0 Q/ X0 A( U |
|