|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
最近在用海思的HI3515设计一款工控机,第一版做完后,开始开发第二版,主要改动是增删了部分硬件功能,DDR颗粒从原来的HY5PS1G1631CFP-Y5C换成了H5PS1G63EFRY5C。
+ X* f" i2 P! b! G5 y! Y- `1 O 结果发现第二版的程序在引导过程中偶尔会出现Unable to handle kernel paging request的错误,且后边的地址经常会变化,并不是固定的错误。错误的引导信息如下:9 V5 w, [ u0 q/ q W* Z* m
Unable to handle kernel NULL pointer dereference at virtual address 0000003c
* |) J- Y4 z3 k3 A) f3 S9 ~4 p" T pgd = c1de4000
" K- s7 w/ B# ]- t' \ [0000003c] *pgd=c1de3031, *pte=00000000, *ppte=00000000. Z' J% F2 j; h6 i1 R$ v* A" w, s
Internal error: Oops: 817 [#1]
, v& |4 @9 `8 X$ K, k. d V8 K Modules linked in:0 J6 D- g8 l# Q# B* q
CPU: 0 Not tainted (2.6.24-rt1-hi3515v100 #24); v+ J$ H3 o8 ^# K# s9 d, D
PC is at generic_file_aio_read+0x20/0x1a4
1 S( |1 U7 r3 e: | LR is at do_sync_read+0xc8/0x114
" P9 b0 d+ g* N. j pc : [<c0060904>] lr : [<c007cc1c>] psr: a0000013
U# Q6 {# {; w sp : c1dd9d18 ip : 00000000 fp : c1dd9d60* A7 @" u5 ]9 ]5 X7 {
r10: 00000000 r9 : 00000000 r8 : c1dd9e50
7 o! w. Q) @& B# k r7 : c1dd9d6c r6 : c1dbb660 r5 : c1dd9dbc r4 : c1dd9d74% |! v! b2 Y1 q& `* @0 H
r3 : 00000000 r2 : 00000001 r1 : 0000003c r0 : c1dd9d74
, V% Q. G- |9 Y% y. n4 J Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel5 Y; n: v% S( R
Control: 0005317f Table: c1de4000 DAC: 00000017' e$ P/ b: x3 m8 t5 J
Process rcS (pid: 219, stack limit = 0xc1dd8258)
4 x( v1 V# ]* W, T Stack: (0xc1dd9d18 to 0xc1dda000)
7 Z/ Z0 E% e, C5 [) W 9d00: c0093cc4 c00f95cc; V [; E) L. b- x2 n
9d20: 00000000 c1dd9e28 c1dd9da4 c1dd9d38 c0085be8 c0093cb4 c1dd9d74 c1dd9dbc
% @" }, `6 W+ d7 n 9d40: c1dbb660 c1dd9d6c c1dd9e50 00000000 00000000 c1dd9e24 c1dd9d68 c007cc1c
4 X3 n$ G+ A& E 9d60: c00608f8 00000000 00000000 c1d6bdc0 00000080 00000000 c1dd9fb0 00000000
' V! i0 `2 }, b 9d80: 00000001 ffffffff c1dbb660 00000000 00000000 00000000 00000000 c1c5c0e0+ M. u# i! t5 ]8 o }& @8 Z1 B
9da0: 00000000 00000000 c1dd9de0 c1c5c0e0 c0049d48 c1dd9db4 c1dd9db4 00000000
; h g+ I! M* ~4 y( ^; a 9dc0: 00000000 c0044454 c0044004 c1dd9df8 c1dbb660 c1dd9e08 00000080 c007bde0* D1 D/ {4 S8 H) s0 t y
9de0: c0065b7c c1dbb660 c1dd9e28 c1dd9fb0 c1dd8000 c0294ac8 c1dd9fb0 000000808 [9 y/ Q8 r6 r# V+ [
9e00: c1dbb660 c1d6bdc0 c1dd9e50 c007cb54 00000000 c1dd9fb0 c1dd9e4c c1dd9e28
. W4 x! V0 j8 J5 @! k 9e20: c007cd14 c007cb64 c1801b40 bf000000 00000000 c1dd9e50 c1dd8000 c0294ac8
* A7 O, Y4 G4 h% r! t 9e40: c1dd9e70 c1dd9e50 c00814b8 c007cc78 00000000 00000000 00000080 c1d6bdc0* f. k& r7 V, `3 X( m+ i6 F4 k
9e60: 00000000 c1dd9e8c c1dd9e74 c0081d24 c0081474 c1dd9e98 c1d6bdc0 c1dd9fb0
7 J0 g6 D \( a7 ~. X 9e80: c1dd9f30 c1dd9e90 c00ad608 c0081c98 c1d6bdc2 00000000 6e69622f 0068732f
9 X$ y0 K4 |% s5 K5 o 9ea0: c1db2320 beffff7b c1dd9ee8 c1dd9eb8 c006e3e4 00000000 00000020 00000000
) q3 `$ B5 L- o4 Y 9ec0: c1dd8000 00000001 00000000 c1d6bdc0 00000000 00000000 00000000 c1dd9f1c! D% d8 Q0 z3 J# x- |" l
9ee0: 00000000 00000000 00000000 c1dd9fb0 00000000 c1dd9efc 00000000 00000f7b
- I) L8 v, ~1 {; U/ [! n5 H' G3 p 9f00: c1dd9f1c c1dd9f10 c0294e54 c1d6bdc0 fffffffe c1dd8000 c0294e34 c1d6bdc05 O& v6 i9 b& w( R# {" H; p4 J
9f20: fffffff8 c1dd9f5c c1dd9f34 c0081fc0 c00ad3fc c1d6bdc0 beffff92 00000000
7 H& h- B# j' n0 k( T; @8 d# U 9f40: 001d7bcc 001d7bc4 c1dd8000 c1dd9fb0 c1dd9f84 c1dd9f60 c0082248 c0081f2c0 W: C, W9 d& l$ N& I
9f60: c1c99000 001d7bcc c1dd9fb0 c1c99000 c001ffe4 001c71fc c1dd9fa4 c1dd9f88
/ O; @# Z7 w* b* Z+ S 9f80: c00237c4 c0082124 001d7bc4 001d7ba4 00000001 0000000b 00000000 c1dd9fa8/ i f" q7 G% v: k" j3 b q
9fa0: c001fe40 c0023798 001d7bc4 001d7ba4 001d7ba4 001d7bc4 001d7bcc 001d7ba4! l, Y/ h& q7 s, c' r4 t
9fc0: 001d7bc4 001d7ba4 00000001 001d7bcc 001d7bcc 00000001 001c71fc 000000006 I0 _/ P$ F: n% _4 E* _
9fe0: 400833c4 be813a44 00069d44 400833cc 20000010 001d7ba4 00000000 00000000* R ^0 {' h8 J
Backtrace:
4 `' T4 A1 q( g$ H$ ] [<c00608e8>] (generic_file_aio_read+0x4/0x1a4) from [<c007cc1c>] (do_sync_read+0xc8/0x114)3 d3 W5 v4 R/ T4 r! y4 K' ^. l0 t4 n
[<c007cb54>] (do_sync_read+0x0/0x114) from [<c007cd14>] (vfs_read+0xac/0x144)7 E C( p( l9 }9 C8 F0 M% B4 J
[<c007cc68>] (vfs_read+0x0/0x144) from [<c00814b8>] (kernel_read+0x54/0x84)
& K5 u* K6 c5 Q5 Z$ z r8:c0294ac8 r7:c1dd8000 r6:c1dd9e50 r5:00000000 r4:bf000000
# y; u" O1 a, v [<c0081464>] (kernel_read+0x0/0x84) from [<c0081d24>] (prepare_binprm+0x9c/0x108)
& R) Y- T0 w' A r6:00000000 r5:c1d6bdc0 r4:00000080
: ]1 K$ ]* Q9 I, V [<c0081c88>] (prepare_binprm+0x0/0x108) from [<c00ad608>] (load_script+0x21c/0x240)
% k4 |) N$ C2 h. u r6:c1dd9fb0 r5:c1d6bdc0 r4:c1dd9e981 i$ c2 R- H S/ o/ K" P
[<c00ad3ec>] (load_script+0x0/0x240) from [<c0081fc0>] (search_binary_handler+0xa4/0x1f8)
" h$ T3 v* m. p- U r6:fffffff8 r5:c1d6bdc0 r4:c0294e34+ |3 F, l& ]8 u6 i7 j4 e4 M
[<c0081f1c>] (search_binary_handler+0x0/0x1f8) from [<c0082248>] (do_execve+0x134/0x184)
5 D: u! n) i! a0 W [<c0082114>] (do_execve+0x0/0x184) from [<c00237c4>] (sys_execve+0x3c/0x5c); x2 H2 l0 `' l; z
[<c0023788>] (sys_execve+0x0/0x5c) from [<c001fe40>] (ret_fast_syscall+0x0/0x2c)0 B. L* b B; z1 e
r7:0000000b r6:00000001 r5:001d7ba4 r4:001d7bc4
1 F" }, L! e: M( a Code: e24dd020 e3a0c000 e58b3004 e1a04000 (e1a0a001)
( n' f/ Y, b1 M+ n( Z0 p ---[ end trace e292f16b7bf51848 ]---
5 J( ]( |$ r, C4 x3 B: p. M; r7 s Segmentation fault
7 X' I3 L3 s4 p3 \; l# W我先是把第一版和第二版上的NAND FLASH颗粒进行互换,发现新旧板上的颗粒在第一版的板子上都没有报错,而两个颗粒在第二版的板子上都会出现报错,初步确定问题是随着板子走的,而不是颗粒。) @' `& D/ J9 N$ Q, _
然后将第二版上的硬件改动还原,尽量还原到和第一版一样,然后启动还是会出现报错信息,说明外围硬件的改动没有影响到引导驱动程序出错。: p8 q/ U% g0 R: s, N! X
现在在把新板子寄回工厂,准备把DDR颗粒换成和第一版一样,然后再尝试一下,这个需要一些时间。2 a7 i2 z/ V. ^6 c7 d# j
然后比对了前后两种DDR颗粒的spec,未见明显的参数差别。
$ {/ D, b0 M9 `) z# U, p
t/ s/ v' C- [, U# E5 u
' m& Y/ l) K+ M4 g) f4 iPS:6 d+ f' |2 s% O' U
这几天集中研究了一下这个问题,汇报一下:
* u' _: J% k p" y 1.启动UBOOT后,用网络下载后边的文件到内存中的方式来启动,问题依旧会出现,排除掉NAND flash的问题。
, u+ e& ]# F+ n& [7 \0 K' F 2.抓了1.8V,VREF_DDR的电压波形,没有发现drop和ripple.排除电压的问题+ A4 Q! G; }$ Y" k$ @
3.把老板子上HY5PS1G1631CLFP-Y5C和新板子上的H5PS1G63EFR-Y5C互换了一下。旧版运行到现在一次都没出错% S) @: `$ [1 J {0 c% k
而新版运行到现在报过一次错。
4 @2 u8 P3 C* V; P/ w" s3 I7 ^ 4.买了几颗HY5PS1G1631CFP-Y5C(与原来板子上DDR比较少了一个L,原来的DDR颗粒停产了,现在这个颗粒IDD6电流略高,其他参数一样)换到板上,暂时还没看到报错,还需多跑跑看。
- d) ~4 I5 K( o8 d8 G 5.基于以上的实验,感觉是layout的问题,查了新旧版的走线,是完全一样的,etch length和manhattan length一样。
- r5 O3 C$ M3 H' Q" {5 j1 d h 6.准备再次比对堆叠厚度,因为前后两版PCB是不同的厂子压合的,板子堆叠厚度是根据我提供的匹配阻抗由板厂自己计算的。 |
|