|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在用海思的HI3515设计一款工控机,第一版做完后,开始开发第二版,主要改动是增删了部分硬件功能,DDR颗粒从原来的HY5PS1G1631CFP-Y5C换成了H5PS1G63EFRY5C。
) {! J" r% r& k$ A/ W 结果发现第二版的程序在引导过程中偶尔会出现Unable to handle kernel paging request的错误,且后边的地址经常会变化,并不是固定的错误。错误的引导信息如下:, i( h; T v, d# N1 z# |" d5 l
Unable to handle kernel NULL pointer dereference at virtual address 0000003c* s5 ?: ]* N) D+ w n
pgd = c1de4000
6 }) Y* b1 i, \& R1 p- A$ ^) x [0000003c] *pgd=c1de3031, *pte=00000000, *ppte=000000003 H8 v0 h2 u* d @
Internal error: Oops: 817 [#1]8 Q! s1 \9 h; M- w* C1 |# o7 O7 B
Modules linked in:
! z, P% H, H: t8 _& l3 n CPU: 0 Not tainted (2.6.24-rt1-hi3515v100 #24)% {6 }3 j8 L5 v4 j2 X
PC is at generic_file_aio_read+0x20/0x1a4
+ O5 [8 W4 z2 d& } LR is at do_sync_read+0xc8/0x114
( b8 M E$ C3 k( l3 L pc : [<c0060904>] lr : [<c007cc1c>] psr: a0000013 B! R8 C" q1 v. j: L- A1 g
sp : c1dd9d18 ip : 00000000 fp : c1dd9d603 N% B6 W' z# C* w
r10: 00000000 r9 : 00000000 r8 : c1dd9e50
3 @# c5 E' ]/ V r7 : c1dd9d6c r6 : c1dbb660 r5 : c1dd9dbc r4 : c1dd9d74" i- l/ p, ^3 V+ N! U. v2 x
r3 : 00000000 r2 : 00000001 r1 : 0000003c r0 : c1dd9d748 D; o' R! {+ w8 e
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel+ d4 q+ a' w. G4 o: |+ S
Control: 0005317f Table: c1de4000 DAC: 00000017
x9 B* Z- D0 y) }7 e* v I/ ^7 Y Process rcS (pid: 219, stack limit = 0xc1dd8258)& w5 l3 O0 ^8 w4 T/ }
Stack: (0xc1dd9d18 to 0xc1dda000)
* e9 e* [0 y- w$ U3 S 9d00: c0093cc4 c00f95cc. e! ^, K% V7 R
9d20: 00000000 c1dd9e28 c1dd9da4 c1dd9d38 c0085be8 c0093cb4 c1dd9d74 c1dd9dbc
3 a% ]- w1 @' A9 F4 W% {; w" _) ^ 9d40: c1dbb660 c1dd9d6c c1dd9e50 00000000 00000000 c1dd9e24 c1dd9d68 c007cc1c& a. Q. D# z+ h! a2 M3 F8 H
9d60: c00608f8 00000000 00000000 c1d6bdc0 00000080 00000000 c1dd9fb0 00000000, P) w! u: p4 V: o' l- K
9d80: 00000001 ffffffff c1dbb660 00000000 00000000 00000000 00000000 c1c5c0e0; n4 [ |2 Z, r/ P& O
9da0: 00000000 00000000 c1dd9de0 c1c5c0e0 c0049d48 c1dd9db4 c1dd9db4 000000000 m% W8 V( ~ q6 a9 z1 _4 v1 h; @
9dc0: 00000000 c0044454 c0044004 c1dd9df8 c1dbb660 c1dd9e08 00000080 c007bde0
p7 V6 T. h% ~ 9de0: c0065b7c c1dbb660 c1dd9e28 c1dd9fb0 c1dd8000 c0294ac8 c1dd9fb0 00000080/ m- a9 d3 u& m- B7 }3 q8 F2 Q) N
9e00: c1dbb660 c1d6bdc0 c1dd9e50 c007cb54 00000000 c1dd9fb0 c1dd9e4c c1dd9e28- a) N. y2 |- `- L9 d' T9 ^
9e20: c007cd14 c007cb64 c1801b40 bf000000 00000000 c1dd9e50 c1dd8000 c0294ac82 \5 ]) i4 S7 L
9e40: c1dd9e70 c1dd9e50 c00814b8 c007cc78 00000000 00000000 00000080 c1d6bdc0, T- C% P; g; B; ]
9e60: 00000000 c1dd9e8c c1dd9e74 c0081d24 c0081474 c1dd9e98 c1d6bdc0 c1dd9fb0) P) d$ { o& K* C6 I" i
9e80: c1dd9f30 c1dd9e90 c00ad608 c0081c98 c1d6bdc2 00000000 6e69622f 0068732f
0 S* Y. h% Z# C; ~6 y. L4 g 9ea0: c1db2320 beffff7b c1dd9ee8 c1dd9eb8 c006e3e4 00000000 00000020 00000000" V! N" W9 a# M' q+ ?
9ec0: c1dd8000 00000001 00000000 c1d6bdc0 00000000 00000000 00000000 c1dd9f1c: X1 z1 l* A4 j8 \" H. ?
9ee0: 00000000 00000000 00000000 c1dd9fb0 00000000 c1dd9efc 00000000 00000f7b
% X: Y& t; k) M$ j! B% H 9f00: c1dd9f1c c1dd9f10 c0294e54 c1d6bdc0 fffffffe c1dd8000 c0294e34 c1d6bdc0
1 B' R8 t% A: V: Z) A 9f20: fffffff8 c1dd9f5c c1dd9f34 c0081fc0 c00ad3fc c1d6bdc0 beffff92 00000000( q+ M5 k1 k) l- z5 y$ `
9f40: 001d7bcc 001d7bc4 c1dd8000 c1dd9fb0 c1dd9f84 c1dd9f60 c0082248 c0081f2c
- w# L( q4 K" i, W) @ 9f60: c1c99000 001d7bcc c1dd9fb0 c1c99000 c001ffe4 001c71fc c1dd9fa4 c1dd9f88
, }+ y: U6 x$ b, [- z' H 9f80: c00237c4 c0082124 001d7bc4 001d7ba4 00000001 0000000b 00000000 c1dd9fa8. W/ m! f% g M1 [1 e/ t
9fa0: c001fe40 c0023798 001d7bc4 001d7ba4 001d7ba4 001d7bc4 001d7bcc 001d7ba4
, B: k4 r- W% q3 A 9fc0: 001d7bc4 001d7ba4 00000001 001d7bcc 001d7bcc 00000001 001c71fc 00000000" H' c( l8 Q" N, e" {+ x
9fe0: 400833c4 be813a44 00069d44 400833cc 20000010 001d7ba4 00000000 00000000
7 G+ i2 ` F* z |& i! w Backtrace:
/ g" u- M5 @8 N: P [<c00608e8>] (generic_file_aio_read+0x4/0x1a4) from [<c007cc1c>] (do_sync_read+0xc8/0x114)) R: i/ ?3 Z+ b3 S: g. i; Q
[<c007cb54>] (do_sync_read+0x0/0x114) from [<c007cd14>] (vfs_read+0xac/0x144)
. o9 t) a) {+ A& R& ~ [<c007cc68>] (vfs_read+0x0/0x144) from [<c00814b8>] (kernel_read+0x54/0x84), }8 J; Y; P; @! P
r8:c0294ac8 r7:c1dd8000 r6:c1dd9e50 r5:00000000 r4:bf0000009 n- V' b; L( X, |
[<c0081464>] (kernel_read+0x0/0x84) from [<c0081d24>] (prepare_binprm+0x9c/0x108), }7 r& @" r0 u3 ]) {
r6:00000000 r5:c1d6bdc0 r4:00000080
! G2 i, M7 z6 w6 i; L* @' Y+ \. Z [<c0081c88>] (prepare_binprm+0x0/0x108) from [<c00ad608>] (load_script+0x21c/0x240)
3 l& W: L, F# p& _- H0 J r6:c1dd9fb0 r5:c1d6bdc0 r4:c1dd9e98
5 |0 m! ^+ c$ A, ^+ E9 ^ [<c00ad3ec>] (load_script+0x0/0x240) from [<c0081fc0>] (search_binary_handler+0xa4/0x1f8)
" m% z7 \/ l$ H* ?$ x8 x r6:fffffff8 r5:c1d6bdc0 r4:c0294e34
4 H) R9 |* |5 {2 q; G [<c0081f1c>] (search_binary_handler+0x0/0x1f8) from [<c0082248>] (do_execve+0x134/0x184)* q" |6 P, ?+ A* A
[<c0082114>] (do_execve+0x0/0x184) from [<c00237c4>] (sys_execve+0x3c/0x5c)0 {3 k+ g# K# H
[<c0023788>] (sys_execve+0x0/0x5c) from [<c001fe40>] (ret_fast_syscall+0x0/0x2c)
* b+ m6 w0 w& X7 E/ a2 n5 f! A r7:0000000b r6:00000001 r5:001d7ba4 r4:001d7bc4
, }; ?8 K3 @' e, j/ f( q1 {# Q Code: e24dd020 e3a0c000 e58b3004 e1a04000 (e1a0a001)
* l8 K( r( Y7 B( A ---[ end trace e292f16b7bf51848 ]---! B; d3 I" z4 v& P6 {
Segmentation fault; {' Z. K( u& _3 }8 K+ Y
我先是把第一版和第二版上的NAND FLASH颗粒进行互换,发现新旧板上的颗粒在第一版的板子上都没有报错,而两个颗粒在第二版的板子上都会出现报错,初步确定问题是随着板子走的,而不是颗粒。
j/ k0 Z7 _' I 然后将第二版上的硬件改动还原,尽量还原到和第一版一样,然后启动还是会出现报错信息,说明外围硬件的改动没有影响到引导驱动程序出错。
: ~$ c4 \7 {# G& M6 F4 _' d 现在在把新板子寄回工厂,准备把DDR颗粒换成和第一版一样,然后再尝试一下,这个需要一些时间。# j! T1 p& _3 Q4 r
然后比对了前后两种DDR颗粒的spec,未见明显的参数差别。- `9 x1 {, y# }, R2 j" u
* O4 |; G8 P$ F2 a, s
' O6 q- s( Y+ D, P
PS:
& n4 Q( T4 E. H7 |这几天集中研究了一下这个问题,汇报一下:
* e3 Z0 o$ E* P$ ~ 1.启动UBOOT后,用网络下载后边的文件到内存中的方式来启动,问题依旧会出现,排除掉NAND flash的问题。% \+ C6 g, J# l, _
2.抓了1.8V,VREF_DDR的电压波形,没有发现drop和ripple.排除电压的问题, i7 e6 j' l5 y9 G$ `) q/ C: H9 w
3.把老板子上HY5PS1G1631CLFP-Y5C和新板子上的H5PS1G63EFR-Y5C互换了一下。旧版运行到现在一次都没出错
& f- C+ v2 `; {0 {2 f c 而新版运行到现在报过一次错。& e+ a- ~; K$ l2 p- c) V0 D
4.买了几颗HY5PS1G1631CFP-Y5C(与原来板子上DDR比较少了一个L,原来的DDR颗粒停产了,现在这个颗粒IDD6电流略高,其他参数一样)换到板上,暂时还没看到报错,还需多跑跑看。
) d8 c& q+ F9 S4 U 5.基于以上的实验,感觉是layout的问题,查了新旧版的走线,是完全一样的,etch length和manhattan length一样。6 P4 z; c# k% `) c
6.准备再次比对堆叠厚度,因为前后两版PCB是不同的厂子压合的,板子堆叠厚度是根据我提供的匹配阻抗由板厂自己计算的。 |
|