|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在用海思的HI3515设计一款工控机,第一版做完后,开始开发第二版,主要改动是增删了部分硬件功能,DDR颗粒从原来的HY5PS1G1631CFP-Y5C换成了H5PS1G63EFRY5C。
0 p2 @2 Y6 c T8 k 结果发现第二版的程序在引导过程中偶尔会出现Unable to handle kernel paging request的错误,且后边的地址经常会变化,并不是固定的错误。错误的引导信息如下:
O1 F3 y( d% C" C2 l0 o8 JUnable to handle kernel NULL pointer dereference at virtual address 0000003c
1 P# l6 E2 z7 K, { pgd = c1de4000
4 `$ f( G8 d( y. k3 ?# Z [0000003c] *pgd=c1de3031, *pte=00000000, *ppte=00000000; }; l# D6 w0 I% @, T; k6 b5 l
Internal error: Oops: 817 [#1]
+ v$ Y6 U( b" e$ u, p Modules linked in:' [6 e( \) `9 Z# U0 m5 ?7 ?
CPU: 0 Not tainted (2.6.24-rt1-hi3515v100 #24)
$ j* O1 K& z4 R- { PC is at generic_file_aio_read+0x20/0x1a4 @, D2 m% k X' s
LR is at do_sync_read+0xc8/0x114
% Z1 L5 d3 W9 j! J& ~% @1 a pc : [<c0060904>] lr : [<c007cc1c>] psr: a0000013
, k& U5 j+ @) D+ T8 j sp : c1dd9d18 ip : 00000000 fp : c1dd9d60
( u3 X2 h. C7 N9 ^ r10: 00000000 r9 : 00000000 r8 : c1dd9e50
3 r6 Z5 w8 D0 x4 N# F$ o) G r7 : c1dd9d6c r6 : c1dbb660 r5 : c1dd9dbc r4 : c1dd9d74" S9 v5 d" ^ i" C0 Y; M
r3 : 00000000 r2 : 00000001 r1 : 0000003c r0 : c1dd9d746 s9 o( d2 N9 f& I) b( k$ {
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel% t) _6 F" r+ F2 f/ I2 [
Control: 0005317f Table: c1de4000 DAC: 000000178 M- K% ?+ p% J6 c/ j0 g3 R
Process rcS (pid: 219, stack limit = 0xc1dd8258)
" K0 Y) x1 w* T( k' V2 N% p/ ` Stack: (0xc1dd9d18 to 0xc1dda000)
% R( E& b4 h( u9 F. l) k1 u 9d00: c0093cc4 c00f95cc. q) P3 Y7 g+ U9 Z6 p
9d20: 00000000 c1dd9e28 c1dd9da4 c1dd9d38 c0085be8 c0093cb4 c1dd9d74 c1dd9dbc
" |$ o! E" y5 n8 e1 u) S; e4 H) u( e8 L 9d40: c1dbb660 c1dd9d6c c1dd9e50 00000000 00000000 c1dd9e24 c1dd9d68 c007cc1c
5 B! U! E5 b/ f* k 9d60: c00608f8 00000000 00000000 c1d6bdc0 00000080 00000000 c1dd9fb0 00000000, V) V7 e- u) e3 E: B$ T$ f c
9d80: 00000001 ffffffff c1dbb660 00000000 00000000 00000000 00000000 c1c5c0e03 [! F* L) ?6 {! g
9da0: 00000000 00000000 c1dd9de0 c1c5c0e0 c0049d48 c1dd9db4 c1dd9db4 000000004 @6 F% m# C. V2 n! }5 X, |
9dc0: 00000000 c0044454 c0044004 c1dd9df8 c1dbb660 c1dd9e08 00000080 c007bde0 @' Q5 I+ b7 I1 r5 J0 M
9de0: c0065b7c c1dbb660 c1dd9e28 c1dd9fb0 c1dd8000 c0294ac8 c1dd9fb0 00000080
( T; H6 ?, `+ C) j! ] 9e00: c1dbb660 c1d6bdc0 c1dd9e50 c007cb54 00000000 c1dd9fb0 c1dd9e4c c1dd9e28
* Y# D& u" v4 L8 f' v1 o/ ^( ? 9e20: c007cd14 c007cb64 c1801b40 bf000000 00000000 c1dd9e50 c1dd8000 c0294ac88 F4 m; ?+ x4 b* j" z: S
9e40: c1dd9e70 c1dd9e50 c00814b8 c007cc78 00000000 00000000 00000080 c1d6bdc04 g0 n; O; J6 e; u V7 ]
9e60: 00000000 c1dd9e8c c1dd9e74 c0081d24 c0081474 c1dd9e98 c1d6bdc0 c1dd9fb0( j* a, ~, {' `
9e80: c1dd9f30 c1dd9e90 c00ad608 c0081c98 c1d6bdc2 00000000 6e69622f 0068732f
( z/ U6 B. R$ M$ F( O 9ea0: c1db2320 beffff7b c1dd9ee8 c1dd9eb8 c006e3e4 00000000 00000020 00000000
3 S1 [$ h- a* V( T4 m2 a 9ec0: c1dd8000 00000001 00000000 c1d6bdc0 00000000 00000000 00000000 c1dd9f1c
* L" p+ \5 C8 Q. n4 j 9ee0: 00000000 00000000 00000000 c1dd9fb0 00000000 c1dd9efc 00000000 00000f7b
: C/ V5 n% O p- G; U 9f00: c1dd9f1c c1dd9f10 c0294e54 c1d6bdc0 fffffffe c1dd8000 c0294e34 c1d6bdc0
7 ~ l( t# E* a0 }. ]2 l 9f20: fffffff8 c1dd9f5c c1dd9f34 c0081fc0 c00ad3fc c1d6bdc0 beffff92 00000000# b' u$ g# I4 D% Q
9f40: 001d7bcc 001d7bc4 c1dd8000 c1dd9fb0 c1dd9f84 c1dd9f60 c0082248 c0081f2c
+ |- ?+ U. ~6 d: Y8 F6 q) S% k) Q 9f60: c1c99000 001d7bcc c1dd9fb0 c1c99000 c001ffe4 001c71fc c1dd9fa4 c1dd9f88
* z$ N8 T, ]; ^# E+ `2 ? 9f80: c00237c4 c0082124 001d7bc4 001d7ba4 00000001 0000000b 00000000 c1dd9fa8
, w) I; ]8 T1 B! M/ q- c" _ 9fa0: c001fe40 c0023798 001d7bc4 001d7ba4 001d7ba4 001d7bc4 001d7bcc 001d7ba4
8 S/ y( d: [3 }% S9 {& \+ w 9fc0: 001d7bc4 001d7ba4 00000001 001d7bcc 001d7bcc 00000001 001c71fc 00000000
: l6 o6 v! L" n" C; L 9fe0: 400833c4 be813a44 00069d44 400833cc 20000010 001d7ba4 00000000 00000000
7 \. a4 A0 z& t; p Backtrace:
; Q& E' X( o- R [<c00608e8>] (generic_file_aio_read+0x4/0x1a4) from [<c007cc1c>] (do_sync_read+0xc8/0x114)6 d7 m4 J/ l9 u' V
[<c007cb54>] (do_sync_read+0x0/0x114) from [<c007cd14>] (vfs_read+0xac/0x144)
4 y$ ]/ ]' a! F$ r2 U [<c007cc68>] (vfs_read+0x0/0x144) from [<c00814b8>] (kernel_read+0x54/0x84)+ T: ]5 `7 U/ r$ L
r8:c0294ac8 r7:c1dd8000 r6:c1dd9e50 r5:00000000 r4:bf000000
# `$ m# t" M" M# X% x [<c0081464>] (kernel_read+0x0/0x84) from [<c0081d24>] (prepare_binprm+0x9c/0x108)" H, C: r8 [( d9 F8 T+ k
r6:00000000 r5:c1d6bdc0 r4:000000807 `6 N, m; ~7 |' v1 N1 ^8 z/ f
[<c0081c88>] (prepare_binprm+0x0/0x108) from [<c00ad608>] (load_script+0x21c/0x240)/ V2 v# M! Q0 z* k$ g. Z
r6:c1dd9fb0 r5:c1d6bdc0 r4:c1dd9e987 X2 V5 s# A, l) g# Y+ ], H+ ], \
[<c00ad3ec>] (load_script+0x0/0x240) from [<c0081fc0>] (search_binary_handler+0xa4/0x1f8)
' Q3 N1 g& i, x9 C' ? r6:fffffff8 r5:c1d6bdc0 r4:c0294e34
/ @, [9 Y0 s) u) C# e8 S, W [<c0081f1c>] (search_binary_handler+0x0/0x1f8) from [<c0082248>] (do_execve+0x134/0x184)" I! |4 f# G2 ^: W8 z. V! K
[<c0082114>] (do_execve+0x0/0x184) from [<c00237c4>] (sys_execve+0x3c/0x5c)8 z* z$ R/ g# f; w- x; B8 }: C
[<c0023788>] (sys_execve+0x0/0x5c) from [<c001fe40>] (ret_fast_syscall+0x0/0x2c)3 B% E% @# q8 X
r7:0000000b r6:00000001 r5:001d7ba4 r4:001d7bc4
! j) W6 h) [1 R4 N. P Code: e24dd020 e3a0c000 e58b3004 e1a04000 (e1a0a001)
! {4 u4 W4 J$ |& R1 u6 j1 _ ---[ end trace e292f16b7bf51848 ]---" C9 t6 L. F# h" n* e+ M3 `# `0 ~
Segmentation fault7 Y: V# `* O; e0 [1 O' w
我先是把第一版和第二版上的NAND FLASH颗粒进行互换,发现新旧板上的颗粒在第一版的板子上都没有报错,而两个颗粒在第二版的板子上都会出现报错,初步确定问题是随着板子走的,而不是颗粒。
0 M- g; H6 N1 g 然后将第二版上的硬件改动还原,尽量还原到和第一版一样,然后启动还是会出现报错信息,说明外围硬件的改动没有影响到引导驱动程序出错。& ]9 E" ? L: r C3 T
现在在把新板子寄回工厂,准备把DDR颗粒换成和第一版一样,然后再尝试一下,这个需要一些时间。+ |- U) }5 i7 l% @( C* E
然后比对了前后两种DDR颗粒的spec,未见明显的参数差别。
' R+ P2 i+ K: r4 w/ p6 ?/ i; O+ i! y9 ^& x/ b; Q
p9 X, G& B( ^# d
PS:
- y8 {( c/ {1 t/ ~# s; T这几天集中研究了一下这个问题,汇报一下:, p6 |: n1 e& F o
1.启动UBOOT后,用网络下载后边的文件到内存中的方式来启动,问题依旧会出现,排除掉NAND flash的问题。
% `6 W5 [- b- | 2.抓了1.8V,VREF_DDR的电压波形,没有发现drop和ripple.排除电压的问题( R; J3 x) _4 e4 L
3.把老板子上HY5PS1G1631CLFP-Y5C和新板子上的H5PS1G63EFR-Y5C互换了一下。旧版运行到现在一次都没出错/ D6 c% Y+ p7 P1 h' M
而新版运行到现在报过一次错。
0 ~7 W- H# M# y# j4 j8 i8 H5 R/ Z 4.买了几颗HY5PS1G1631CFP-Y5C(与原来板子上DDR比较少了一个L,原来的DDR颗粒停产了,现在这个颗粒IDD6电流略高,其他参数一样)换到板上,暂时还没看到报错,还需多跑跑看。
1 ^9 H3 f" m7 l 5.基于以上的实验,感觉是layout的问题,查了新旧版的走线,是完全一样的,etch length和manhattan length一样。
8 h+ j9 G/ Z4 c, ^* h 6.准备再次比对堆叠厚度,因为前后两版PCB是不同的厂子压合的,板子堆叠厚度是根据我提供的匹配阻抗由板厂自己计算的。 |
|