|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑 7 ^, |) `! @9 d" ~' f
4 @4 D- Z% q" e- f; E0 a在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。
9 T- V, [" m. D! P$ v: {' f: X. U3 Z* U% B! Q% \4 j
# c% S" `5 C+ V4 Y2 ~4 K. o
6 v- ~7 u9 h: Y# v9 @1 `, J( K; X! f7 c; j9 P; g
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。
$ f) I: }; H( x. E
, L+ J# `6 W6 @4 p1 T$ e
' N; r N ~8 g7 [
' q' l( ?2 u h. D( Z6 Q
9 g) C3 P. G6 S今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
' `; `0 G; s8 U$ z+ x
# j+ |% d' H4 _, O+ T W
0 k$ a1 E: E/ ^( d
1 l t( y! Y& ]3 t8 X/ W/ F' @6 G7 X2 Y
" {) I6 Q8 K9 B" a/ {
' ~' Q5 y0 N9 ^3 e% ~* O1 Z8 C
; r* s! ?- r2 G) r5 ?3 i1.“使用出厂镜像启动时发现无法正常启动”
, G& }4 {3 r) {3 q9 w7 G1 U U
1 e, C+ A/ W& }- T" [" K! H7 S9 o3 a7 [5 G v4 \- t r
- `7 | q( C! Y
7 }& Y& {0 x* N9 W问题描述——: B7 Y/ h9 |& a0 Q
0 y; ]& h. {8 Z. g1 k
客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:, k! P: O& A& [" R0 Q; z/ a( [& X9 F, A* ^
a( ]/ l7 b" g/ t
/ h2 q! D( ]9 V( X: Q2 q
: C( m4 X. s$ { l7 ?# x
" i5 |+ w3 w1 Y+ C G$ y![]() [backcolor=rgba(18, 18, 18, 0.5)] 7 E/ l9 l" q$ S+ j* r3 n7 Z
! i7 @6 e. d8 z! B1 M( l8 s
) H! P( _/ G) V
, a$ o, I+ j, h7 H
( Q3 b. `4 X7 j- ?9 H' x/ t编辑切换为居中: I1 y4 |0 O5 N; a2 x. E" F- e
+ l6 p3 u$ Z& c; S! B8 l/ F4 ~
" R, B8 F. B. C2 L
; R5 C3 F4 B% K V
( Z y' Q! d$ s8 T0 w添加图片注释,不超过 140 字(可选)$ w1 J8 P- e, E$ G
9 g& O( z2 l7 Q- R, w- e# i: K5 G. S6 j
* Z u6 O+ N; ^: q% \
% @- g0 [ q: \$ j4 j
8 m+ ~& ?: U9 _' m! O& f0 o* {
6 C) H7 _0 `8 w( W5 w4 O4 }; A. J7 f' E0 N
产生原因——3 e9 d. i' i c* X9 }
! H+ C: Q$ S; P3 u0 {# |PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。8 d& l3 T, N" w3 p" R- x
6 [! G% j' B8 [( y- |. d7 O* a: w/ M- p# _2 V1 U: H
. g! P y$ `8 ]2 ^
& S l; \( a( t
解决办法——' J+ s h% V+ c ?* i+ @% ?: m
+ z9 ^$ ?* T9 y' ]/ h+ k2 H
修改内核设备树:
! a6 c& S+ Q. S; F2 R; r
, K8 U1 H8 n }8 ^7 x4 k! BviOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts; V* w* i. K4 F7 S! ]
6 p/ t- E7 O" V8 I8 m- M& L" U8 ?3 ]; q
9 [. d% B m& w1 U Q$ v8 @; ^
. l7 U: P4 A7 |3 I+ I9 y![]() [backcolor=rgba(18, 18, 18, 0.5)] - _. Q. H. {" q3 e% K( ^5 X
9 K7 w- O9 ]3 @2 x; A! S
7 q, m, z* ]8 w
# L2 a6 t* Z# W' y% h- D) ]$ r: r# l$ |0 [' B3 c) \) h
编辑切换为居中
( p' |! y& y+ g1 q& Y1 q' `' c) b" ]3 r" V* R& ]; Y5 \- i
- w; G' o+ M. M: i& ]
& q1 `% Y4 H$ Z& |2 U6 {7 t
# s/ d+ Z% ~5 l8 a: n8 X添加图片注释,不超过 140 字(可选)4 ^3 Z) s; p, a! J& r8 r0 N
9 D( g/ o0 C8 N* {
8 T! B7 I5 D& F1 Z) j. i3 d. b K4 Z7 Q8 D& B: [7 V/ T
3 b+ o; w2 E4 c _( Q2 f将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。" V1 \0 T7 p& S: B
" o8 v+ X9 b: H
/ U5 \( p" t$ Z; _$ h0 N3 O# Y" O$ N- q% x7 H% V, }
) N! G6 c3 q) [6 D5 [# d7 X/ y完成上述修改后重新编译并用新的镜像进行烧写。 ^) D2 ]& ~& _. b) o
3 H+ A- P9 X' A+ K$ n+ F
" Y' C3 [3 c1 M$ h) `
" l' g6 j8 Q% a c3 i1 U/ O0 K. t& T" N8 [/ A( a
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):) d3 {* E5 a O. ?# X8 A* r
4 R- h: n9 E& W ?' [7 N: y
+ H! y! S j+ D' \8 h' o3 ^/ A8 f. w5 K
+ E. I' _2 K/ b @4 H
![]() [backcolor=rgba(18, 18, 18, 0.5)] 6 N4 }. e7 }9 F. E% X
. e2 A( g% h' ]* p$ Z9 `9 r; b- U0 E8 V
0 p4 O' H) o+ u k. r/ Z9 _, A; e' L# j- z8 N8 b B" l7 e
B' c+ h; }) N6 e& K4 g2 T3 O
编辑切换为居中+ X0 [3 a) b+ I
8 V" ]4 i1 J+ P4 D' h8 ?% u- ~$ M) `7 g
2 T+ j, M+ R7 p( A- s8 g q9 K% {
7 q x3 Z5 j& |9 t! Q/ ]添加图片注释,不超过 140 字(可选)
3 A* x2 m* l# q" u; [ B6 b H, c0 V; g- P' u1 M
' ~$ L# }1 |: q6 a3 E* b% v: ]) M/ h) i) M( G
4 P: ?% |+ X, |4 B( S5 V
注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。+ a) D1 K6 S/ h# v
2 t5 k$ J* M8 F* J1 c3 r' W, T5 f+ o# i6 x% W+ q) l
/ ?9 ?* Z; ?- c5 h8 {7 C2 C
% M z6 Y3 o3 R' Q( N- X% q Y
& e9 M0 H; }% D% W$ e5 a: A. d( T' v6 y$ L! t9 [* ]2 b
2 o( W5 b% t+ b/ E5 ]' }/ O- a5 y& l
2.“使用TF卡进行烧写时发现烧写一半卡住”* q6 ]' M) y/ A! O( b) \/ w4 H
1 Y2 C& B# V1 @9 y8 p
9 [8 N! l. c2 H1 Q) r
u& [: v4 M. H6 a; a
; e1 k2 C1 d% C7 E2 l
问题描述——0 ^' l( L- B7 g6 {
/ H+ y& t) y: y7 l) F; }8 w$ s
客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:
7 t& | }" U( w( N+ s
~% C/ M- d; d. H& d4 _9 T* R' ~ w8 j% G- b1 Q7 b$ ^1 Z( `
' V- @+ G m- S. W2 X+ ?2 ~( J( p5 W
$ L7 c* x- e# K' T! q6 z![]() [backcolor=rgba(18, 18, 18, 0.5)] $ a, z, t" O4 ~6 t. ?7 r
$ U& D" R7 ]3 V& }( |+ i. R$ `
% _% k, Y9 S- V# p( }* |4 T) @9 v- r; |& {
9 y8 \! l* @- c3 \
编辑切换为居中" P& k$ F! ^! Z( w. V3 v+ O7 c
K v7 ]1 w0 f+ Z2 V* ~& A$ w
8 m, T$ ^9 P1 q. i Y% o+ k
5 e [) C/ v% [1 R x" T% O6 i/ W' a, m0 [" ]7 J& y: d- B: @
添加图片注释,不超过 140 字(可选)$ `9 x. i; K0 Z& C" Z9 {
8 L8 v/ I* s/ V( V; Q4 t+ F1 g% f
" V3 r4 m+ s; m$ Q( g
' A9 s* b9 Q: v3 R
3 Y- W( A7 X- G, j; Z, V* m注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。( y8 K- H+ o0 S; [
6 {" \ q8 Z& m( u
8 E$ H. h+ Q* q- `
$ g6 G1 x' O+ v" s- J. j: E; p& O8 |; N' L# P7 ^* x! B
产生原因——
8 I+ G( A9 W2 m6 s, p: ~2 |# z6 u1 ?( s1 O# L/ a9 h
烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。8 O; x/ }3 E# J! T& z% |6 Z
/ T% d/ c) s' z& [7 Z" v) ]
8 G3 f( S6 c! k' ~) A7 }8 Z" Y, \% \, r! U2 c! N
* i3 X* P. W8 m- i: _& Z- e解决办法——
) @: ^( ~% B% L) H6 Y( E. O; h$ x" f" F3 \' d" R( j) h" E
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:
1 H6 K7 o- P: |3 T
3 J/ p# z o" f4 W0 B3 \3 J: b/ D/ F
) @* Y& u: N, \- K6 ?8 J
- \! R! p" W% A0 F
![]() [backcolor=rgba(18, 18, 18, 0.5)] ' x: e( w ^$ c7 O
( f: c, m& J& L& I, } 7 `# f5 k) [" A! a7 N" |
. u/ K8 H+ {% e8 T' C0 e( {8 h& [5 C* u L K A
编辑切换为居中
6 i; J; k7 a6 x! P1 ]* k3 F* j6 j, q \( E
4 A, L9 @& q0 d( j: l4 N5 p8 \1 k- ?7 i( V+ d5 ^
' l. p6 J, ~/ Q0 E1 S+ ~$ g添加图片注释,不超过 140 字(可选)
0 a! @& X! j) m" c
2 y) H0 A; M1 S
. Y( p+ Y- S* k. V! b% }( Z6 H9 C/ M' R
; l# z8 i+ v7 k
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。2 u2 n1 S/ L# L! z L+ V$ H+ ~
" G( Q* _- z7 W! p* R6 a; L
+ W4 c+ |9 E7 ]
, [9 I+ M1 B3 ^9 ^
2 q2 n" q1 a+ R* S% ~8 \8 }执行编译命令,生成新的烧写工具:
' q# A. Z% F' T+ w7 w' D6 s! y* \* F1 s$ h0 p. _
. ] K( }$ v' T$ x5 `3 m' ?' P5 l' A; B- x- Y
0 L5 `- U, |2 t2 C, t
![]() [backcolor=rgba(18, 18, 18, 0.5)] ) ?" A1 Y# ~6 m+ s
( I6 j2 Y+ b7 O2 }& B9 C: ?# @0 X3 N/ ]
2 M2 `! Q+ h' q* \% w3 \# C! D" I
/ h8 T! o g& @/ ]0 A" H
$ u4 Z) d% j# K- `* R, i编辑切换为居中; g+ b$ p# \, q9 |
3 X* t4 H- H* S7 \
; s' M, o/ f$ C+ W
& v% ?4 m# g7 F y* E' i( W" [
; N) B4 I! N" u+ v ^添加图片注释,不超过 140 字(可选)
2 d- h" x& \) ?& z) e3 e% ^
6 K7 U; [0 E% |; C
; Z6 l; R- a! R* F! H1 I# ~) `9 X# t7 `4 c
. T, Z6 \1 L' l$ J n8 s
使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。! b# |+ q, m5 g+ ]$ L6 ?. X$ q) L! }
# Z m) i1 o7 A' \- |进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。# A" Y: P) g' X1 _! d. r! k) u
. ]' U) z6 o/ f- R( P2 r% ?# L3 v7 d4 U: j3 t) J3 L
* _- [0 L- G; r% c2 H
9 j4 M( U/ p4 a4 I4 @+ I
注意:3 L8 K3 M& _! g" K! W w
3 ` a. D, L4 p
- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。
7 w0 o) w) f( O% E# O 9 S9 c* s' \% e7 E( A
* p3 f$ ^. \ }0 m" h( j0 L2 h6 b2 n
上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。
- q% F2 \$ z/ Z2 c
& I# B5 z) A: p/ h' F! j; b v
7 d* D8 ^: R. ]
?& \# [( M" ~9 [! e当然,只设计了一路PCIe的情况也需要注意:0 `( @2 h3 r2 f2 z: h
0 `+ ]6 q( ^0 v$ c4 n! T如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;. L" w& @/ e# o0 ^! u& D3 u
p2 l1 D. H: g5 [ m! {9 E/ F, n. \* x
' X. w6 }7 m/ x+ G
+ a+ G- |5 z$ k- @4 K
7 v) ^. C7 q; X3 F7 D8 C' y如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
$ E/ c: e0 u3 y/ f" q: e+ ]: Y4 y8 c4 e* z2 C' S9 d; c
9 H6 j+ {: J- @( C
. G+ j V% N6 I
7 o; g6 T5 E2 I; B2 @, h! p9 g8 J3 U& t1 j. k5 o2 ]' V
|
|