|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在用海思的HI3515设计一款工控机,第一版做完后,开始开发第二版,主要改动是增删了部分硬件功能,DDR颗粒从原来的HY5PS1G1631CFP-Y5C换成了H5PS1G63EFRY5C。7 Q' M9 M8 e$ i3 G# ?
结果发现第二版的程序在引导过程中偶尔会出现Unable to handle kernel paging request的错误,且后边的地址经常会变化,并不是固定的错误。错误的引导信息如下:
0 R1 ^. I$ T- \; H5 v- }: G1 ZUnable to handle kernel NULL pointer dereference at virtual address 0000003c
" ^1 n. K! V; L, a; N1 \ pgd = c1de4000
0 M0 ~/ k& D/ O9 b: @& B: D [0000003c] *pgd=c1de3031, *pte=00000000, *ppte=00000000# o4 h, W" e U
Internal error: Oops: 817 [#1]
X& i S9 E$ y5 n# @" L0 I Modules linked in:
( X* s' G3 m/ L0 g CPU: 0 Not tainted (2.6.24-rt1-hi3515v100 #24)( K m$ ?$ |" [- Q1 c
PC is at generic_file_aio_read+0x20/0x1a4
1 \% X0 a. \; J$ I3 ` LR is at do_sync_read+0xc8/0x114" `7 _5 M' T5 R9 e1 D0 j* y2 A
pc : [<c0060904>] lr : [<c007cc1c>] psr: a0000013* o1 j- c3 z; i8 c
sp : c1dd9d18 ip : 00000000 fp : c1dd9d60
3 z) K( j& H! \- E r10: 00000000 r9 : 00000000 r8 : c1dd9e50
% `3 l3 R# F9 T9 q- R r7 : c1dd9d6c r6 : c1dbb660 r5 : c1dd9dbc r4 : c1dd9d747 v, c" f6 B- t) l
r3 : 00000000 r2 : 00000001 r1 : 0000003c r0 : c1dd9d74) l3 Q* l0 O/ a3 i/ s9 l' `/ |/ q) K
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel# M* d" _3 a8 Z$ Y& c
Control: 0005317f Table: c1de4000 DAC: 00000017
8 H/ J, t) s$ i( L/ c Process rcS (pid: 219, stack limit = 0xc1dd8258)# K/ o, ?4 p- G$ ], t) a+ C- m4 f
Stack: (0xc1dd9d18 to 0xc1dda000)+ f7 K* u* K) X
9d00: c0093cc4 c00f95cc
& }; H3 U! h: j9 @% H" } 9d20: 00000000 c1dd9e28 c1dd9da4 c1dd9d38 c0085be8 c0093cb4 c1dd9d74 c1dd9dbc! h; u" Q/ {+ h) e$ w% @
9d40: c1dbb660 c1dd9d6c c1dd9e50 00000000 00000000 c1dd9e24 c1dd9d68 c007cc1c
; e% |2 H" _ p' Q 9d60: c00608f8 00000000 00000000 c1d6bdc0 00000080 00000000 c1dd9fb0 00000000& K$ R) M3 o |2 a5 o# ~
9d80: 00000001 ffffffff c1dbb660 00000000 00000000 00000000 00000000 c1c5c0e0) E% w6 ^( T- h6 ]1 o
9da0: 00000000 00000000 c1dd9de0 c1c5c0e0 c0049d48 c1dd9db4 c1dd9db4 00000000
* |( z/ G/ I& O- C8 q! G 9dc0: 00000000 c0044454 c0044004 c1dd9df8 c1dbb660 c1dd9e08 00000080 c007bde0, u8 ]# I! c4 u% t4 ?$ N, y
9de0: c0065b7c c1dbb660 c1dd9e28 c1dd9fb0 c1dd8000 c0294ac8 c1dd9fb0 000000803 L7 t+ Y" X; U& _& H
9e00: c1dbb660 c1d6bdc0 c1dd9e50 c007cb54 00000000 c1dd9fb0 c1dd9e4c c1dd9e28/ e( O; u; i7 p9 A
9e20: c007cd14 c007cb64 c1801b40 bf000000 00000000 c1dd9e50 c1dd8000 c0294ac8: k6 y4 o9 X) r6 }
9e40: c1dd9e70 c1dd9e50 c00814b8 c007cc78 00000000 00000000 00000080 c1d6bdc0. s: x4 n& @8 v1 x$ o
9e60: 00000000 c1dd9e8c c1dd9e74 c0081d24 c0081474 c1dd9e98 c1d6bdc0 c1dd9fb0
' v' \4 q% d' A9 { 9e80: c1dd9f30 c1dd9e90 c00ad608 c0081c98 c1d6bdc2 00000000 6e69622f 0068732f
" E7 B( w& J# ~ E/ {& ? 9ea0: c1db2320 beffff7b c1dd9ee8 c1dd9eb8 c006e3e4 00000000 00000020 00000000
3 j& p6 m% L2 F4 f 9ec0: c1dd8000 00000001 00000000 c1d6bdc0 00000000 00000000 00000000 c1dd9f1c
( [, h1 d3 R7 ?9 Q; F5 `; \ 9ee0: 00000000 00000000 00000000 c1dd9fb0 00000000 c1dd9efc 00000000 00000f7b
6 O/ X: r% ?8 A6 M9 \4 Y# ]2 d 9f00: c1dd9f1c c1dd9f10 c0294e54 c1d6bdc0 fffffffe c1dd8000 c0294e34 c1d6bdc0
) f, W) R- e+ V6 A4 b! o% l9 K 9f20: fffffff8 c1dd9f5c c1dd9f34 c0081fc0 c00ad3fc c1d6bdc0 beffff92 00000000
" Z8 i( `! ]! t$ T 9f40: 001d7bcc 001d7bc4 c1dd8000 c1dd9fb0 c1dd9f84 c1dd9f60 c0082248 c0081f2c& _: k) d3 ^+ E. G% P
9f60: c1c99000 001d7bcc c1dd9fb0 c1c99000 c001ffe4 001c71fc c1dd9fa4 c1dd9f88 x# N7 y' A5 ~ i( T
9f80: c00237c4 c0082124 001d7bc4 001d7ba4 00000001 0000000b 00000000 c1dd9fa8. B. E; i3 H# Y P4 Z" v
9fa0: c001fe40 c0023798 001d7bc4 001d7ba4 001d7ba4 001d7bc4 001d7bcc 001d7ba4
. \& \( J# N( i; Y+ h. D 9fc0: 001d7bc4 001d7ba4 00000001 001d7bcc 001d7bcc 00000001 001c71fc 00000000
9 l6 s* H( U, _- ?) [* ] y 9fe0: 400833c4 be813a44 00069d44 400833cc 20000010 001d7ba4 00000000 00000000
7 J q( ?. y6 A% o }8 W Backtrace:
& Q8 m/ T" Q/ b7 N [<c00608e8>] (generic_file_aio_read+0x4/0x1a4) from [<c007cc1c>] (do_sync_read+0xc8/0x114)
; w* V4 h! A4 l9 {0 ?$ K [<c007cb54>] (do_sync_read+0x0/0x114) from [<c007cd14>] (vfs_read+0xac/0x144)7 i. K" A/ V; N# u. b
[<c007cc68>] (vfs_read+0x0/0x144) from [<c00814b8>] (kernel_read+0x54/0x84)) @ A& g/ z; b8 V V
r8:c0294ac8 r7:c1dd8000 r6:c1dd9e50 r5:00000000 r4:bf000000* ~2 |6 }6 j$ A# R' F @
[<c0081464>] (kernel_read+0x0/0x84) from [<c0081d24>] (prepare_binprm+0x9c/0x108)
X/ s7 t+ t% o8 r0 K r6:00000000 r5:c1d6bdc0 r4:00000080! J6 M7 ]/ [4 n' I2 a' E( b
[<c0081c88>] (prepare_binprm+0x0/0x108) from [<c00ad608>] (load_script+0x21c/0x240)& ]/ U3 I6 y7 v& W, B0 y
r6:c1dd9fb0 r5:c1d6bdc0 r4:c1dd9e98
$ L( E. l S, C1 o [<c00ad3ec>] (load_script+0x0/0x240) from [<c0081fc0>] (search_binary_handler+0xa4/0x1f8)
0 g1 L5 b7 b( C; k& w0 t r6:fffffff8 r5:c1d6bdc0 r4:c0294e34
; S' J+ E5 G( M6 `, Q [<c0081f1c>] (search_binary_handler+0x0/0x1f8) from [<c0082248>] (do_execve+0x134/0x184)! \0 @, a& {- B" j4 e. X% O6 M
[<c0082114>] (do_execve+0x0/0x184) from [<c00237c4>] (sys_execve+0x3c/0x5c)1 K Y: m+ }: i7 N: ?6 J5 w
[<c0023788>] (sys_execve+0x0/0x5c) from [<c001fe40>] (ret_fast_syscall+0x0/0x2c). r! D$ L8 v) r9 _6 B( P: b* l* a1 p
r7:0000000b r6:00000001 r5:001d7ba4 r4:001d7bc4 C0 n* G9 ^7 R! n% q: I2 Z
Code: e24dd020 e3a0c000 e58b3004 e1a04000 (e1a0a001)' Q# U1 ]8 A1 M: N8 i
---[ end trace e292f16b7bf51848 ]---- x/ j+ _% J: f6 I+ B$ t
Segmentation fault* W' |" x6 o" s! D! e
我先是把第一版和第二版上的NAND FLASH颗粒进行互换,发现新旧板上的颗粒在第一版的板子上都没有报错,而两个颗粒在第二版的板子上都会出现报错,初步确定问题是随着板子走的,而不是颗粒。
. L& k, d+ m, L8 ^0 I- _; E 然后将第二版上的硬件改动还原,尽量还原到和第一版一样,然后启动还是会出现报错信息,说明外围硬件的改动没有影响到引导驱动程序出错。% y9 {- B1 z7 q' ~
现在在把新板子寄回工厂,准备把DDR颗粒换成和第一版一样,然后再尝试一下,这个需要一些时间。
( I) x4 i4 l2 @: V) P 然后比对了前后两种DDR颗粒的spec,未见明显的参数差别。
9 t% s5 s& V) C# @# H) T. Q- p8 b" S5 g2 }
0 t) p) D9 N7 H* `
PS:
- D) G7 Y+ ~( Q9 }# r8 k这几天集中研究了一下这个问题,汇报一下:% T* i# ]- I9 ]1 a: n: a, n
1.启动UBOOT后,用网络下载后边的文件到内存中的方式来启动,问题依旧会出现,排除掉NAND flash的问题。
/ F8 }' R. R3 J' T3 V& h# D 2.抓了1.8V,VREF_DDR的电压波形,没有发现drop和ripple.排除电压的问题
7 H2 z# g$ G4 O/ K; y 3.把老板子上HY5PS1G1631CLFP-Y5C和新板子上的H5PS1G63EFR-Y5C互换了一下。旧版运行到现在一次都没出错6 X0 ^2 V# n% k: L) J7 Q- a
而新版运行到现在报过一次错。+ I1 m! x* p9 `& ~9 c# r
4.买了几颗HY5PS1G1631CFP-Y5C(与原来板子上DDR比较少了一个L,原来的DDR颗粒停产了,现在这个颗粒IDD6电流略高,其他参数一样)换到板上,暂时还没看到报错,还需多跑跑看。0 v+ X( G) m& _5 {' v! b2 {. h% J% X
5.基于以上的实验,感觉是layout的问题,查了新旧版的走线,是完全一样的,etch length和manhattan length一样。
% S h" J- ^" h 6.准备再次比对堆叠厚度,因为前后两版PCB是不同的厂子压合的,板子堆叠厚度是根据我提供的匹配阻抗由板厂自己计算的。 |
|