|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑
: | b" C6 f: H; ^) u. Y" B& l2 t7 ~0 l( D& A
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。1 Y/ n" j3 A* I* w. F$ Z
9 ^ E) q/ @ `4 i
8 k- E& h6 }& v6 D/ `; I' l3 M; R! ?* f4 m
. Y9 j1 u9 i4 h6 W# F C; x9 h很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。
1 y0 t9 ]# w5 N; K( Q; E, u* @% k+ |- j: E/ C8 v4 C
1 T" ?7 P( ^9 n( m$ r. b" v+ ^2 P
1 ~7 \5 w# T V" E3 W
: p1 ~3 Q5 _4 u; Y今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
0 _5 l3 d* e3 W* a# V# J6 L( @' ~( q( G6 c
. O- Z9 w" N* w9 |1 }' }/ }0 x' U. G
" Z- @$ a! I, B8 |5 W1 z
/ H2 y- n$ `& u' o. h, G8 M2 W k" Y, @$ ?3 i4 r' W3 h! [
6 i7 {: g1 h9 m6 X
1.“使用出厂镜像启动时发现无法正常启动”' l3 I* E+ t7 ^7 f
( c2 \0 m) Q' a% m1 a3 K2 }
% e+ J- q# N; @3 w! S( q: ~" y( k9 j
9 [8 A7 ?- M. R; f3 q
问题描述——3 o! s5 m$ ^# I. ?
$ m& g3 k- n. K* g& c* E5 W客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
4 }: S+ i) ]4 Y/ A3 d6 R/ e N) T. _
4 n" | D) }& r2 k, t( X
) Q# u' H9 O4 [" W
( n/ f5 j% u+ ~' u+ ^8 Y
6 x3 n6 y) W+ P ~# ?![]() [backcolor=rgba(18, 18, 18, 0.5)]
n) u' y' U# y4 ` C
+ @2 H! }) q u
+ g8 Q$ U! o& b7 E& I9 g5 f! T3 G) P H
- u: Z) E1 q0 l6 [& H0 \: ]编辑切换为居中
$ Z+ T" ]9 j9 n1 }) r% H! N5 G% [# f. o$ y' g0 x* P
/ ?3 w4 }. u8 I& I W! C
7 D1 N- r3 `+ ~2 g* a: C" ?3 n6 X1 |( C1 U `. F
添加图片注释,不超过 140 字(可选)' O2 u0 {( W4 [8 a* ? Z% b5 |
0 t; K, Y! t. A' P+ k) \
! p. p7 |& l m1 T5 i3 K/ z, u% m+ r
$ \6 y$ Q; |4 t6 ?( |" v
, H( G7 t3 h: o$ o9 R' W
' x8 l4 c6 J5 o) ]) R
# y0 L" W1 a3 B6 q! Z. p# o s产生原因——) {8 D1 a- B. }( f" @( J3 }
' X# C" Y: j! d) f0 z. ]PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
3 L# V$ k1 g$ o9 ?5 `+ u; s4 z
3 G6 D. _1 |8 ]- D
% R3 \) |9 T2 V6 x' _3 k/ m: {0 r. E, t8 {
/ k, k" W% L! K( t解决办法——
( r8 {; Q& u- G5 Q8 H1 M! D, c
0 w7 s4 u" C R5 }5 n- ~+ c修改内核设备树:
3 U! i. y; h0 B* @/ Q- }8 O! ^" U1 O/ O" O
viOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts7 j5 L& \+ h- G! V6 U! z! g/ _
: d+ v- `; P! ^2 u) X) ~2 S) P
9 q/ p0 }: t9 @ E1 u0 R; C( ]2 e. @, Y% G/ j0 E% Z9 S
+ |# x0 `# H$ o+ a ?![]() [backcolor=rgba(18, 18, 18, 0.5)]
- X4 z: F" `0 l: b8 x! T( L9 Y
$ Z( {2 o9 z. u' {
& K9 u- y7 r; Z- h3 _
) I( i s* o% y) W/ p0 \3 K% C5 t/ h& H E, L- O+ t
编辑切换为居中
$ N& R. Z# `: }: M, v7 @+ g' X0 L8 p, D' b- |) T* u
6 |; @4 j( ~+ J( s* L8 ]% J6 D7 Y/ M/ D
8 N" a( J% F6 }2 K" G
添加图片注释,不超过 140 字(可选)
8 N1 p: y/ l( n
0 C" J/ A7 J6 v' K
/ W8 ^" v! J6 y; ^& z5 U; q* w; H; g; n ~6 p3 F
+ d# W5 t9 g- x6 B$ w, L; Y
将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。, [) k; ?* r& H4 {9 N
% N$ F) u: }) M8 J @3 q# R: l
, `0 u& P0 ^( ?- w+ m
2 e' I- @7 b' ~; H" u4 O& A* z( M6 O$ J
完成上述修改后重新编译并用新的镜像进行烧写。
! W4 p ~2 R0 S5 b9 F$ j" w. G c+ M" E/ n3 e e8 X
; H! y: v& Z& k9 P7 U, o
7 U6 l4 V: r! X' X4 k) S7 M# j `: n }5 c9 }$ Z
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):
& _1 }# `- _% q, d, \) k
8 h5 U2 ~; W* L" E, W# r: M( g. x$ e$ g3 K1 S
2 v: v( B$ ?5 w# {0 ]' a8 A( O9 ^# Z* i3 |
![]() [backcolor=rgba(18, 18, 18, 0.5)] 9 `6 S5 v( C0 e3 c1 [7 r. V
8 S6 k8 z2 c n* b( }" t3 x' D, H 6 \: u- L5 {. D2 ?
" a7 P# B* p2 D1 i; z% C. O. l4 [' c1 Q) P4 k3 i8 g
编辑切换为居中
! C, d, c D$ c9 v5 a" @ {8 q% X; m) d
5 ?* J0 m" P( v
; O" e7 L0 Q& E9 V
! q/ ^0 g, q1 ?) u) |
添加图片注释,不超过 140 字(可选)9 W0 ]1 q4 i0 u6 `8 o6 j6 Y
Z; I1 y8 f: b* _+ q
! U$ u5 ~$ H: F
S* [8 L$ x% _" h
' N- k& C7 y1 ^: ]/ a; h( S& r$ c9 J( z注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。
! i6 H$ V, W& s, r' o" t ^. G8 {( c# Z5 e8 e8 p
$ s# h. y+ p. ]3 Q$ _/ z) ?
1 j5 O5 k$ G9 G3 f* X
0 f- W6 M' {2 Y( x4 J
# a# D x; \" u: \ s
1 h ^- Q5 N# R) B0 q' }) H7 Y' a" M/ O3 y9 X' {
2.“使用TF卡进行烧写时发现烧写一半卡住”
; D. t/ W1 Q$ E6 r( N4 H$ B, w
/ j8 D, \5 @$ n7 Z: V$ k8 h" b' G8 n2 K7 L1 F
) N# T# w8 x( D1 @. u
3 D; Y. p7 ?7 S/ Q$ z* J1 \
问题描述——4 Z. }" X' j( n
7 M& _* p, b" B: U2 r# ]客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:: W1 A. W2 l4 S5 o( \$ J6 ]2 |
0 [8 P6 j/ }3 v/ X$ W( S+ s
6 k: |) Z( W! o% ^$ D
0 K( {+ ?. j( H H; e: X+ v5 W' U6 i
$ b b/ [$ e3 C% _+ k- Z![]() [backcolor=rgba(18, 18, 18, 0.5)] * w& U1 O+ E7 b& g* n: n" ?, R4 y. l
, S' H1 S+ P0 ^3 a* t3 I
) b% k" t3 c- Z6 o6 X& @
- ^8 C4 {1 e* Z& _ ?" k
4 q! `! M# S2 `- E编辑切换为居中
. N# N" X1 ~3 E! ~) u* H$ l1 V% B. m4 M/ _
5 _, {" A/ {- I8 \$ r9 l d5 M3 b4 ^. i- _( W4 D1 T* H, a$ e
. U1 }: s5 j+ Y W* F
添加图片注释,不超过 140 字(可选)
" }& _# G! P. j% u! }. `8 \) k0 U# f: t. e; N
, E) @0 K* [" h6 ^# t4 k4 X- w- B) b0 ~
$ I& Q( k7 x0 S) q; l/ c n$ B8 e注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。
: h( {, B% X% o! G1 U0 c
9 q: M" m3 a9 j3 l( x6 _7 m+ } L' ~
5 W" e4 K& @2 X8 @: ~/ w1 j4 G. |: s2 q2 k. C4 O S. z
产生原因——7 ~! ~% L# u0 r! |
0 I* n2 U$ I" l" D% `& P* g9 L0 I烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。% W% x( l+ \' }* e9 o3 l
0 \2 J/ H$ o% {- d! [. y0 {: o$ d( z* w9 X# w1 D/ U
% E- E# c- ?8 E+ N# D' W0 N- F- ?0 i$ n' j5 W& v) y5 Q
解决办法——+ b5 k" w( p q4 p# g4 i7 a- u
& r0 v; m5 J; Y) ^( c& O
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:) J1 e% G6 h7 ?7 W0 \% [
- ^3 K& H# x- Q$ J4 J7 m1 h
' ?; l' w) l' i
$ r$ y6 |6 M r8 w
) @, S' J# r% K( G' V
![]() [backcolor=rgba(18, 18, 18, 0.5)]
2 m% \& `. X# W& f; g
3 L; [7 ^1 B4 B2 A; v' h/ V
# [7 K1 Q p8 D- } m, W$ S9 t
9 Z; l5 ~' k1 V v& s" N/ P# L8 w+ I" l% \7 i% o+ s/ n4 i$ R0 h
编辑切换为居中
) B4 }- u/ n+ S) O/ E0 Q' \
4 Y, y1 i1 Z+ a d9 K; }( h; |4 x4 |
1 o# l' {. ?# I+ j
" M% p7 g! k, J( H8 n( a' n; F' U添加图片注释,不超过 140 字(可选)+ J$ W8 q3 Q- p* t( h
2 v$ @/ h# n0 h/ z# i
. I3 _" @3 _1 x' X6 h0 f0 j" G s8 D* B
+ f' @2 }7 v) _7 _
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。+ H7 l9 ^+ I. i& @8 O1 p
6 j$ d9 U9 R; `2 ^, a2 k' ]$ U
9 p3 p+ `0 S( u& f! x2 u( c
. k9 V3 l( B# z) q6 \! i
! ?3 s" _) _+ g( M9 z执行编译命令,生成新的烧写工具:# A% `: n) l% \" s( y/ }, U
$ x$ l2 ~3 n9 u
1 |' n3 W+ n9 s. p
: Y+ w0 b) o, j: f) R- b2 f- Z, s6 N G6 P' ^ v+ @
![]() [backcolor=rgba(18, 18, 18, 0.5)]
# I+ M' d ?& B8 a4 E/ E0 U2 e3 q1 C4 U, f) `; {7 ~
" T" R; |% q) o; x9 E& O" S; o, g% w
3 k/ `9 h! r4 d: G$ Z
编辑切换为居中4 x5 X5 Z/ V/ B( ~
5 @2 w! [6 d3 Z5 j- q& h8 V9 A$ p5 T: R* f* J3 c
; {: z7 U9 P! I: g4 x' t5 ~2 _
/ G2 s* j( Q4 `3 Z3 b% U+ ~7 m
添加图片注释,不超过 140 字(可选)6 E) [5 s$ z5 \
' y+ `3 u7 x) U; `$ b
# D" e) Y# y( E8 G
' {2 R, q8 M" Q6 K
9 t6 X+ [1 h$ U; s6 z' y使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。
% [! t( E& U2 l
3 G# D t( L1 Y; [6 I进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。! L: |! G! g& R# S
5 L# k C( _% @& u
( U- i: J" i* F" ~
3 x2 t' z+ |% u. P( n! Q2 E5 h8 C
注意:
: a* k- X7 K. B7 n; i+ j
0 P4 \0 W9 Q( b7 M, e* h6 J, W8 V% R- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。
2 Q g! O1 U. n; s' g8 e% C; J
5 c/ {0 z/ G8 P8 K" n4 C/ ?: T! ~$ ]0 u U
$ N" D2 w! J8 N0 ?# Y/ Z
上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。2 T v6 j) g. n. y' v
! G. r. E4 u! Z$ @( y; J) b. |8 u8 T3 w$ f
4 y6 O# p8 w5 ?8 R2 q
2 w( k6 Z. I9 {当然,只设计了一路PCIe的情况也需要注意:
% [8 o' q6 J: B+ Y" k6 s+ B: D
6 f5 y* W5 ?, ^1 G5 v$ R如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
$ a/ h0 `$ N3 a: O1 D6 M2 t& i6 u# {: C, a3 l) G7 W* I7 k( f
8 d" F) z8 a' |" y. x6 }
% H3 [5 T9 c9 E- {9 P" i. j6 t4 ~0 l
如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
( Y7 B% i3 T6 W2 h; o# M) ~
7 |& B5 P: }+ b0 T* J! S# m8 r+ [. O d& o5 l _
G4 z" V0 p9 K3 D9 A" m1 B# I
$ }* x: u; r/ f. j6 Z4 a% k4 v$ ?
|
|