|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在用海思的HI3515设计一款工控机,第一版做完后,开始开发第二版,主要改动是增删了部分硬件功能,DDR颗粒从原来的HY5PS1G1631CFP-Y5C换成了H5PS1G63EFRY5C。: r# q {" G& z m. `3 z
结果发现第二版的程序在引导过程中偶尔会出现Unable to handle kernel paging request的错误,且后边的地址经常会变化,并不是固定的错误。错误的引导信息如下:
- E; v7 _! x* f* jUnable to handle kernel NULL pointer dereference at virtual address 0000003c- U! g, {6 L5 s* l1 E7 s8 }
pgd = c1de4000- ?$ @9 \" z5 D0 J. G* |6 w
[0000003c] *pgd=c1de3031, *pte=00000000, *ppte=00000000; m0 C5 U+ D. P4 q
Internal error: Oops: 817 [#1]
2 i. r) P+ X2 u1 i Modules linked in:1 {" }9 t9 Y- d1 m
CPU: 0 Not tainted (2.6.24-rt1-hi3515v100 #24)1 _* l% D- s7 W" Y+ X* Y6 o
PC is at generic_file_aio_read+0x20/0x1a4
5 U2 @% {2 d3 i LR is at do_sync_read+0xc8/0x114
/ f0 K5 J3 O7 c$ C. J3 S3 E$ W+ v$ N pc : [<c0060904>] lr : [<c007cc1c>] psr: a0000013$ [; {- i4 ^: L( J( Q
sp : c1dd9d18 ip : 00000000 fp : c1dd9d60) X9 r& e% K+ m; n! h- @# D$ E& {) C
r10: 00000000 r9 : 00000000 r8 : c1dd9e50
, q/ f7 v/ A( n' ]/ H r7 : c1dd9d6c r6 : c1dbb660 r5 : c1dd9dbc r4 : c1dd9d74
* `) U) _# S, S- C8 [ r3 : 00000000 r2 : 00000001 r1 : 0000003c r0 : c1dd9d74
% m, u9 N* e) O0 i; o) I8 L Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
- D) w" W5 ^. o2 j Control: 0005317f Table: c1de4000 DAC: 000000172 Q9 J. G# X& f% [, L' R
Process rcS (pid: 219, stack limit = 0xc1dd8258)
/ \. v+ ^0 M& u1 J; m& K. A S Stack: (0xc1dd9d18 to 0xc1dda000)4 u. a2 C1 G5 ?6 v' }
9d00: c0093cc4 c00f95cc* S5 y: v" H! \* _) B
9d20: 00000000 c1dd9e28 c1dd9da4 c1dd9d38 c0085be8 c0093cb4 c1dd9d74 c1dd9dbc
9 K& T/ B3 q$ f7 M 9d40: c1dbb660 c1dd9d6c c1dd9e50 00000000 00000000 c1dd9e24 c1dd9d68 c007cc1c1 V! v" C" }" S( M
9d60: c00608f8 00000000 00000000 c1d6bdc0 00000080 00000000 c1dd9fb0 00000000! F, @0 b3 z2 d! @8 u& d# }
9d80: 00000001 ffffffff c1dbb660 00000000 00000000 00000000 00000000 c1c5c0e0
" H! h1 M. E1 e" R& E6 {; V+ T 9da0: 00000000 00000000 c1dd9de0 c1c5c0e0 c0049d48 c1dd9db4 c1dd9db4 00000000& X4 u5 |" S' i c& w; d8 L% @0 O
9dc0: 00000000 c0044454 c0044004 c1dd9df8 c1dbb660 c1dd9e08 00000080 c007bde0
% m+ |2 `+ w+ f 9de0: c0065b7c c1dbb660 c1dd9e28 c1dd9fb0 c1dd8000 c0294ac8 c1dd9fb0 000000808 n7 b3 y6 r9 W6 e
9e00: c1dbb660 c1d6bdc0 c1dd9e50 c007cb54 00000000 c1dd9fb0 c1dd9e4c c1dd9e28
. z2 O _" D6 g7 \- m! C 9e20: c007cd14 c007cb64 c1801b40 bf000000 00000000 c1dd9e50 c1dd8000 c0294ac8& s0 U" {# o( V7 C' i& o& A
9e40: c1dd9e70 c1dd9e50 c00814b8 c007cc78 00000000 00000000 00000080 c1d6bdc0
$ {. g8 n/ R$ A- { 9e60: 00000000 c1dd9e8c c1dd9e74 c0081d24 c0081474 c1dd9e98 c1d6bdc0 c1dd9fb04 y+ V9 u8 X/ Z& v! [/ K- a" T
9e80: c1dd9f30 c1dd9e90 c00ad608 c0081c98 c1d6bdc2 00000000 6e69622f 0068732f) H# S6 J% a1 v
9ea0: c1db2320 beffff7b c1dd9ee8 c1dd9eb8 c006e3e4 00000000 00000020 00000000# R4 t/ K, ?2 V# P6 R
9ec0: c1dd8000 00000001 00000000 c1d6bdc0 00000000 00000000 00000000 c1dd9f1c
( H& c. M; N* q* x/ L5 X/ H% c 9ee0: 00000000 00000000 00000000 c1dd9fb0 00000000 c1dd9efc 00000000 00000f7b
: y0 z7 w7 w7 q& W+ w/ L 9f00: c1dd9f1c c1dd9f10 c0294e54 c1d6bdc0 fffffffe c1dd8000 c0294e34 c1d6bdc0
% s% B7 j6 A& v 9f20: fffffff8 c1dd9f5c c1dd9f34 c0081fc0 c00ad3fc c1d6bdc0 beffff92 00000000
/ B6 f+ v. u: t# n8 t1 e 9f40: 001d7bcc 001d7bc4 c1dd8000 c1dd9fb0 c1dd9f84 c1dd9f60 c0082248 c0081f2c
: z+ e2 h1 G3 L# V 9f60: c1c99000 001d7bcc c1dd9fb0 c1c99000 c001ffe4 001c71fc c1dd9fa4 c1dd9f88
. p; N- ~# H8 p v. | 9f80: c00237c4 c0082124 001d7bc4 001d7ba4 00000001 0000000b 00000000 c1dd9fa8+ _# a1 l% r+ g: Q6 \3 u1 s! y4 h
9fa0: c001fe40 c0023798 001d7bc4 001d7ba4 001d7ba4 001d7bc4 001d7bcc 001d7ba4- _5 r" g& ^' H [/ A# j% D8 I/ ^; p
9fc0: 001d7bc4 001d7ba4 00000001 001d7bcc 001d7bcc 00000001 001c71fc 00000000
; v& Z; I, ^# ^2 K 9fe0: 400833c4 be813a44 00069d44 400833cc 20000010 001d7ba4 00000000 00000000
" P- g# O" L9 p# ^& w Backtrace:
6 ?$ _) r% G9 e" n# u- F [<c00608e8>] (generic_file_aio_read+0x4/0x1a4) from [<c007cc1c>] (do_sync_read+0xc8/0x114)7 C+ I/ D9 l) J4 }" K
[<c007cb54>] (do_sync_read+0x0/0x114) from [<c007cd14>] (vfs_read+0xac/0x144)
1 @- V9 [. p! A$ @! c) Q [<c007cc68>] (vfs_read+0x0/0x144) from [<c00814b8>] (kernel_read+0x54/0x84)
0 @+ A+ k% ?* ~4 I# S r8:c0294ac8 r7:c1dd8000 r6:c1dd9e50 r5:00000000 r4:bf000000
! k7 O( ]% q/ G- a2 x7 G! e [<c0081464>] (kernel_read+0x0/0x84) from [<c0081d24>] (prepare_binprm+0x9c/0x108)
. U5 s* N9 v7 Q r6:00000000 r5:c1d6bdc0 r4:00000080
4 z4 g5 S! k* _- j4 P& |6 H: X& p [<c0081c88>] (prepare_binprm+0x0/0x108) from [<c00ad608>] (load_script+0x21c/0x240): @ G& n$ l# k
r6:c1dd9fb0 r5:c1d6bdc0 r4:c1dd9e98! ^$ `2 K C) ]9 b
[<c00ad3ec>] (load_script+0x0/0x240) from [<c0081fc0>] (search_binary_handler+0xa4/0x1f8)5 s; |% e6 m% i
r6:fffffff8 r5:c1d6bdc0 r4:c0294e34/ h# y: a$ u! ?' {
[<c0081f1c>] (search_binary_handler+0x0/0x1f8) from [<c0082248>] (do_execve+0x134/0x184) f( ~* B$ f- G2 z9 g* i
[<c0082114>] (do_execve+0x0/0x184) from [<c00237c4>] (sys_execve+0x3c/0x5c)' V* V5 [9 [2 G( ^+ q" Y6 w
[<c0023788>] (sys_execve+0x0/0x5c) from [<c001fe40>] (ret_fast_syscall+0x0/0x2c)6 U" v* g/ Z- C5 X" Z# x
r7:0000000b r6:00000001 r5:001d7ba4 r4:001d7bc4
2 }8 e0 i- [* X5 F4 _ Code: e24dd020 e3a0c000 e58b3004 e1a04000 (e1a0a001)4 L5 f; l5 ~2 C6 m' t0 E4 N
---[ end trace e292f16b7bf51848 ]---
2 p- ^+ ~1 c. Z' l Segmentation fault6 F2 h1 U, n: y4 [
我先是把第一版和第二版上的NAND FLASH颗粒进行互换,发现新旧板上的颗粒在第一版的板子上都没有报错,而两个颗粒在第二版的板子上都会出现报错,初步确定问题是随着板子走的,而不是颗粒。
7 ]) n: }3 D! }) ~+ O, G5 n7 U 然后将第二版上的硬件改动还原,尽量还原到和第一版一样,然后启动还是会出现报错信息,说明外围硬件的改动没有影响到引导驱动程序出错。
$ R9 D( C1 Z* M4 j 现在在把新板子寄回工厂,准备把DDR颗粒换成和第一版一样,然后再尝试一下,这个需要一些时间。. _' N- d4 y; v. Q+ {$ b" x
然后比对了前后两种DDR颗粒的spec,未见明显的参数差别。
( g- k6 M) i7 q! d' l/ L; _$ U: H
1 @5 f* n8 I0 Q* [3 U" e" @/ H+ n4 u; q7 U- F! o. e: \1 t
PS:2 E1 ] ^" O+ n
这几天集中研究了一下这个问题,汇报一下:- @, g7 t& F5 O) f
1.启动UBOOT后,用网络下载后边的文件到内存中的方式来启动,问题依旧会出现,排除掉NAND flash的问题。1 o3 }; l f i+ ~
2.抓了1.8V,VREF_DDR的电压波形,没有发现drop和ripple.排除电压的问题
1 J* g' s, Y; ~! B8 ^" E% s 3.把老板子上HY5PS1G1631CLFP-Y5C和新板子上的H5PS1G63EFR-Y5C互换了一下。旧版运行到现在一次都没出错) k1 O& s5 \1 h- d1 X& u5 a
而新版运行到现在报过一次错。9 g" M5 a0 A5 \% }. [
4.买了几颗HY5PS1G1631CFP-Y5C(与原来板子上DDR比较少了一个L,原来的DDR颗粒停产了,现在这个颗粒IDD6电流略高,其他参数一样)换到板上,暂时还没看到报错,还需多跑跑看。
" c" H( V4 @' Y 5.基于以上的实验,感觉是layout的问题,查了新旧版的走线,是完全一样的,etch length和manhattan length一样。8 }7 s( C5 N( c% f1 D2 E, ~
6.准备再次比对堆叠厚度,因为前后两版PCB是不同的厂子压合的,板子堆叠厚度是根据我提供的匹配阻抗由板厂自己计算的。 |
|