|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑 ( E1 u) D6 l& B3 C/ K' u
4 {/ k4 M; ^" ?8 c( t4 v6 s在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。" a+ |1 r3 l& \- d( K
! w5 G& D; d7 |& a4 X" |
8 _3 N$ k3 ?) F# x" @; m( o
" W2 F/ t% Q+ H% W' f' O& X
4 \7 I- m8 c5 j$ [3 `很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。0 O# c/ d* d5 s
9 d" i) \4 H0 W. T( x7 i$ t
* y+ w7 Q) J+ k4 I; Z
. z. L" N* b" i5 f8 ]9 D
5 f, E3 ~0 _& X0 |% Q' h+ n9 l9 `+ Q今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。! @# f1 W( Q8 d: d5 g2 b3 x
. Q3 ^0 i" u' ]" a* a* b. z( f$ F3 ?$ }7 o [' u
) c2 s9 B$ a5 B1 M+ [( ~
8 q! o! R& G7 t/ B- |4 a
; D3 q" F. x# s x3 K; J7 t: B) z$ C2 M: N9 I
* r9 n+ y1 o" y! _1.“使用出厂镜像启动时发现无法正常启动”
0 l) P9 B+ V7 V3 N, r. Y; c: Z$ m0 g$ {
; ?1 ~6 x5 ~( U8 w+ t5 w P- q6 M
5 h8 L/ a1 r: b" Q* l5 ^% l
$ \1 X$ o: N$ }) |4 i问题描述——
7 u9 G8 c3 N M* ~! c( R0 e4 s- W2 o5 q ?; ]; s
客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
! k: O2 t& |: ]) t
2 O/ t' T, K* h, H0 d5 W- l, N5 x' |* [! [( }& m' J
) P$ Z- @( Q& s- m" w8 r
8 {- y2 P$ k7 E; u& a+ d4 h9 A![]() [backcolor=rgba(18, 18, 18, 0.5)]
! {1 D) R' a6 f8 e
/ |* f2 g1 O& K- F% C- `, C! b1 c& _
t8 n; t) V6 l# F' k5 d6 e
3 ~5 g/ U- k' P* }( T( b* l
' h1 A$ ]; F, q0 B2 Y8 z编辑切换为居中5 G& l: h Y% W/ t4 n
; k# u- x' } M8 |+ \ E$ X+ c9 q- s5 W u' Q& e. F6 q
# g+ A: T2 a, m- O7 F9 H
9 U( f' L% d2 U4 H' \
添加图片注释,不超过 140 字(可选)
/ A; N4 N+ `8 P/ x: j# X' ~* Q9 u$ X5 I$ i1 r6 ^
, d3 V3 F' T- _) Y$ c! b* d
: r8 M$ u" @! e9 C- }" u( C# f( [# C
8 J4 \- {: O5 F6 J) i5 q' k
, m4 U5 F3 B6 Z6 e
2 |, }& x# ^. y+ ] u产生原因——
% y3 E$ T0 i/ Z, z1 ]
6 g, r9 \! W: E C6 `2 O- kPCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。" @; x7 k/ `9 ?# E: [; T8 |) n
6 r$ v* O* c2 o9 U: C
0 c( ~, ?4 k( M6 y% E
. G' @0 z& C8 N" U& o2 n4 b
6 p: a4 |4 G% g2 R& m解决办法——( P/ m4 o- ]6 M2 L7 A: o. K# H2 B
+ o2 c, Q" d* ?; X修改内核设备树:
- v. I4 g7 ~. p4 v& k7 E e# a. p* U
viOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts
- g, X- \6 f+ @! Z& ^
8 S! a1 ?. x+ M; q# C6 z8 e8 ^- r* N. [5 y
+ W" F; S8 f" [/ W, ?8 ]0 p1 ~: l9 h8 N4 B& O8 o: l d; Q
![]() [backcolor=rgba(18, 18, 18, 0.5)]
& ~$ I3 T- Q9 ^+ K) I2 `4 s$ @# T* _( D0 O+ @9 W
& a; ^& D, L# M W4 a
) L# v. f6 ?. W; B: e5 A
4 O& v, K8 R% A8 p8 q5 c) ]编辑切换为居中
O4 A$ K8 w# {% K( J' k0 Q9 n7 j: y5 K7 B6 n3 \/ x; L3 J' h# a
h, y. y, @) \2 g4 ~: `& B0 O' t5 v9 X4 e3 L# \; Z# F
- b$ j# h- V1 _0 D3 j4 H添加图片注释,不超过 140 字(可选)) R2 T; H# A! F' {
1 \7 y3 j7 @/ c
0 ?% w1 D, d: @+ f
# Z$ z4 z( B7 ]) s0 b
% w B9 @; u: m' l3 C- H
将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。
8 R$ o0 Q( ^( X/ X
% i/ D. O$ o9 l, V+ B' a# O7 I" Y% n/ y# Y# u- K1 _
. T- O; A6 B+ N. \8 b0 j
2 n: J+ D. V3 }; P4 m
完成上述修改后重新编译并用新的镜像进行烧写。7 {2 g7 S3 {9 @ h0 ^; O# L0 |
( A( [: t: u; i* }: p- C
' d. [8 Z6 P( R( W5 H" X6 `& E* i5 l; b" {
7 p- B8 F2 c; X }) c+ K
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):
2 g V4 A5 b' r9 I3 B* x
9 x/ i# }3 {/ N0 Q8 A& A( U
. c" p W5 f/ i5 W2 L- x# b
/ B) Y7 G9 v& l) X. u3 k' x e$ N6 ^4 d, d( b
![]() [backcolor=rgba(18, 18, 18, 0.5)] . E, N; y: }0 F4 e
! L+ {/ R$ o8 Z$ ?6 V( O
- E0 b4 q0 {! L( T5 t+ |1 J# C, I
! H# b8 V5 J2 I. m- \
3 Y8 B1 J4 C0 c6 S( J8 y7 Z编辑切换为居中
: ?6 g4 H" O" J
& q& W8 u/ J. ]1 c4 J8 m$ B2 r4 x5 x/ C% ?# |" M* r
# ]4 x/ b @1 _) x8 b
`) a2 T- L+ ^. |5 q
添加图片注释,不超过 140 字(可选)2 U0 p& H, D( U
) y& B3 z3 ]* }7 m* L
4 b9 I$ E" C. p. d
5 t. N0 T" e, B9 V/ T4 t; \7 P1 A
9 }0 r3 n1 O/ N7 L注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。
* E. R# B- G0 ]# e! W2 J! [
8 |0 C" S! z2 Z6 m# H$ F3 `
! h f2 k! e% a, e; \8 ?' T$ \: {; [' v% k, Q
y& u5 g% w& D0 u
5 f& A( K1 d4 x3 K- G( {) k
( s: V- [) y6 \8 W
& I5 O1 c# _: }$ p3 U2.“使用TF卡进行烧写时发现烧写一半卡住”3 Q1 q2 C k- V& @ S" K+ _( \: f* M: I
, n) f$ k, `7 A5 M% s
3 m ^, \6 p8 I& G% i
5 n& ]5 E& a- Q/ ]5 K) [ u; w: {2 q
) a, W# _, x9 R; D问题描述——0 U; `7 i |5 |6 ~. g) a8 r$ t
: Y% ~" V" L8 Y5 H& X
客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:4 q, _# ?& Y# o! k" ]
% W3 k3 P2 M; t$ a6 R6 B0 |
: |8 \* B. x6 J1 e4 G. N: U0 S
: H1 F6 K D0 k" e8 ]1 E- G [
# |/ n0 W9 X3 m![]() [backcolor=rgba(18, 18, 18, 0.5)]
7 |2 H0 c. i$ ?
: h3 J) w) a: _8 G7 F$ ~1 u 3 M# c/ \6 V7 \) f# A3 S
0 Q) M) u, V6 D* F% ~
+ y! Z& _! h: W6 {0 F; t( a& h* C编辑切换为居中
( Y' S! I% d; b' z7 w& B/ \. ]& z9 E9 k+ I0 j, B/ o; K
8 P# h! w' Y" h) Y! H$ y$ |' @
* [* o& i" |& w& M8 B, H5 t7 o
, }8 L ?/ O' V o1 X添加图片注释,不超过 140 字(可选)
* C: P m% V1 `
# b' _/ |8 k5 T5 r6 }
( U( L2 r, q( a. A. q/ }/ Y! |& e8 |! o6 v
; E& p* P" h, G( z. {7 ]; |. W6 s注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。
+ h" l. \7 N" ?5 e) W0 p0 `) U4 D4 r- E) x4 P
3 [, Y4 z( U' F8 a+ Q$ g! N) |: N/ J4 D& Q* b5 @- w
5 B. t. ~" R# r- C产生原因——
8 z8 A7 t' H% K w; f! e* V7 \# ?6 O+ d; ]' n! ^
烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。
( _% v- Y3 m+ u$ y2 }
5 V6 i! l3 r. k
" P% Y- A. M2 |
: Z; V1 K) ^& d9 S1 F4 d( X( i$ y" i( {! `0 t! O' G
解决办法——9 W$ p9 w5 P* f( L( H
% V0 P& g; @2 S" R; m# c. q/ a8 N
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:
) r$ i' e# K5 }* T
9 g* r6 Q5 B: [, G! ?; ~. u* A: n6 v; Z( v
6 ]( [0 s( z& A' a
) i! b' i5 y7 Y! \- {; T![]() [backcolor=rgba(18, 18, 18, 0.5)] ) t: K3 j% s" ^
: e @" v- z. T/ u5 J* |) s1 A1 d: j
0 a+ \ p) x3 S3 Y& o; u* O- Q' D. R9 E
. N. h0 X8 t2 |9 A3 i+ K
编辑切换为居中
p( l( a: Z4 C/ p% V+ T* T% L! V( Q* N& m" ^6 }( L# y# c
: W; q- c( D7 ]- N) n
& s! h1 V% k4 h8 J+ K
( f" P+ a! t' }8 x! X$ e3 @添加图片注释,不超过 140 字(可选)' h! W% U9 W9 P h( l5 f$ j1 I! a
$ r+ q( k9 e) ~) U) t+ H
9 P; U( N' O" ]' T# f3 K! V" ~# Y. _( J4 Q
' |- A) R5 Z7 Y8 A( z8 o: d9 J
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。
3 O6 w0 u6 V! n! O
5 L* L8 r+ q5 h
5 r) L$ d) n7 y+ z
! ~5 V+ a6 @! x% ^" U3 |1 V5 K Y P
执行编译命令,生成新的烧写工具:$ T; E( P- L! n) _% q
4 s3 N4 L3 T/ P
6 t) s$ t) @ Z8 c8 G& i# S& f4 b+ N" j5 H) O9 V% k! @
( {9 k* e7 K0 p8 t1 E
![]() [backcolor=rgba(18, 18, 18, 0.5)] ! N) R# W; `/ R: B& ~6 p
1 z* Q: N. k1 {4 `
_" g* T- p4 z* q! |8 q
: Q n+ T# ~9 @
( @: ?9 S3 ^- |: g) B* x编辑切换为居中
. x, }* r7 ?& a I6 o3 {
( g2 D' i" L6 M' \6 v7 o7 _: S+ p# f/ `0 I T- H( `$ h/ A
9 }& o$ Q, Z4 l( Y7 M& K
% g/ O8 }0 r4 v% n4 W添加图片注释,不超过 140 字(可选)
% G2 X: c$ _) O4 }: P$ G! T; j
) M7 s* D, ?( k' _4 M' `( }3 `/ @+ k4 q3 j2 M8 {& V( m' k
* n& ~) p0 a% E8 t3 D; N
7 W& T/ Y7 t4 v5 W0 ]
使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。8 N9 W* j% v! \( D+ T, A
4 b8 ]7 L3 p: Z2 ~5 J/ ? _进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。4 b2 q8 t" ?$ n! {; ?8 [8 ^7 Y
, b( N8 `- r9 r9 z
' m- d% w! k6 n* u' v0 [
: C% [* E2 w( a6 V2 t2 p+ ^; e: e, H
" z! D- L" p2 t注意:
6 ^6 r) d# @8 T' p# @9 U
$ |5 R. X( h4 c5 o( l& d9 U O- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。
0 K" [5 f6 j6 R% r( ` $ b, {2 o% ~1 k# P- N
1 U8 Z% M# V7 R7 }+ i! }! |- I0 N+ R4 \. b: \
上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。7 ~8 y* J: _' q$ z
0 c, H/ A& ^8 e4 O/ E9 `8 y" L0 r0 ^+ p7 n1 Y
0 _2 r- O+ I7 z% W
+ Q) E x4 L3 A
当然,只设计了一路PCIe的情况也需要注意:
* [; T' s: S+ s
, O+ D' s. K! u! M* |- q- |$ H如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
) J; t: M% r1 ^7 }$ d2 P- c1 |+ p+ ]& a; t# ?* h
0 `; m9 @+ I8 |% ] m" ]1 l( S( \6 i M% Y' J
3 A8 O1 q& l7 t& @7 J
如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。# ]3 }6 R s6 p
, O) u. h$ y' _" ?# Y% w' Z& {: m, \- Z1 p) I& D
0 F7 n0 ^4 I+ j" c0 j* G( X& }5 _& e" O- P1 L5 C! _- _! i
7 b& L v+ V7 a+ z" p" O |
|