找回密码
 注册
关于网站域名变更的通知
查看: 197|回复: 0
打印 上一主题 下一主题

i.MX8MQ自制底板无PCIe问题详解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-20 14:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑
% H1 F- z; s+ D0 B: h$ w* q2 R; z' E# g+ g  s3 ^
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。: r/ ]; S+ @, M

9 s) }& h! R( x6 T  X& \! q+ p) v$ {
+ G, U( }6 ^% c
3 q" _/ ^0 T; P
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。# v; c! ?' p. m( G6 _2 k- ^, m8 B1 ^' y
  y" P5 r  {+ y$ q& A
% F0 j# Z2 `2 {" M& `9 z8 i
+ V  N1 ?1 Y4 {, B! X
9 q( Q. {: m: q# C
今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
! E8 \5 S+ [2 M5 S* T4 G9 [# U
& P2 R$ Z" J  z4 J( ^) n# k4 Z6 J9 O

. p  G7 v: e+ t% D- E7 P( e
4 B, j( ^* s* k. s! s. S/ D
' Q# m3 a9 c; h8 W% H; m% g4 W0 b) _6 j

8 k; I, ~8 L- j4 d7 h1.“使用出厂镜像启动时发现无法正常启动”
! H& n' h6 a3 B. X+ {" ~8 z& z
: U8 O& O) ^- p' f4 i7 c$ ^6 g1 `9 m- A" F" g* D: t
5 L1 e8 P3 O* L% w

! P& o1 u3 U+ p6 z0 [# e! Z; @问题描述——
) r7 t; R+ h& j+ k* J. `# `9 ~9 u) V# Y
客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
% d2 X& a' v! B4 F8 ]8 p+ ^, F% c$ `+ v# [! [- V( i

+ r  p' {9 ^/ |2 s+ H$ M% t
2 `8 _; A" D+ M0 p2 m
- B% |5 E' S8 L" U1 u
[backcolor=rgba(18, 18, 18, 0.5)]​3 F# P3 [8 g2 k& u; t: _
1 }8 o5 }: |9 ?* q- T
  G/ ]% G6 ]+ }# b; q0 c

6 P8 k1 @) K8 q1 f- R, ~) I* k' F+ u2 D6 l$ j
编辑切换为居中
5 Q/ \6 i) I; ?8 k4 w7 s
+ b: _5 p" i% g! j& M
& Q& b0 T# _9 D4 X  k* }/ f; k  _6 e# p8 e1 X

' @* e" I+ R! ]% N添加图片注释,不超过 140 字(可选)9 E/ a' H6 [. ?# M
& K! o9 Q4 ], @1 t% c9 R! R- x
9 O' Q% }5 i# U, |* e4 j8 j
& {# W) U( v% s# i

5 Q' F  i$ y& N7 d3 |% V& U: g5 V

5 I% N1 B5 C; K# ^8 k/ M# [" d1 U6 ?9 X
产生原因——- ~/ F0 x6 e! a2 M/ x% E" P
. n- w* x5 l0 d1 E. `1 _
PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。% l2 K! s" V9 j8 A; ~* D$ h3 @* N1 o8 _
" v- i1 K' Z: w5 m+ `# S% K
( G* T; _1 {" U' x. h+ k

" p7 C7 Q* G+ E. `: y+ [, D! T5 }) D: _8 `" B6 c# R+ p
解决办法——% c  E6 a+ v7 T
( U2 j3 l- F, u
修改内核设备树:
2 i4 M) @% L: ~' T$ o
% W5 B/ j( }& i  P/ t! |2 zviOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts2 @9 V$ p% J( j, y/ W5 S; W

+ o7 M  A* |8 M$ P/ ]# p, J" _
# V/ L2 p" Y( S* e
$ a# `! ?3 s  z$ F2 b
' L, Q- K( S* Q+ M
[backcolor=rgba(18, 18, 18, 0.5)]​( [& t6 `" L" |
' U% t6 H2 P; `8 Q$ d
% D5 X' ?& S' K& v# c( Q

2 z1 y4 U# }# K/ n
+ @1 V- L2 }. u: z/ C0 L( T6 T, K% {编辑切换为居中5 Y; J1 V9 i$ g- H# x- E/ d7 [, f8 l8 W

( }$ `& p  T( J) b; Z# l
. Y/ @. Z' s8 {: ^5 j3 S7 n, j% I5 K" ^; H
1 z# ~/ L: ]% H
添加图片注释,不超过 140 字(可选)
2 {  W8 E, N8 E5 w, D! v2 R- i
7 D' |" S, C6 ]6 P, h7 k4 n: ~+ ]4 ?: C* b1 J* a+ F. u9 Q; U  ^

7 p( q, f; c" J  ^6 O  h. g4 C& E* W
; E2 D& ~% @: _6 H- s! d将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。# A9 y4 c  @3 a8 o  p: q$ r- b( i
# x) p0 P: }$ I4 }
8 ^2 A2 ~) P/ c  h# m- o% F
4 g; \" |' D2 N0 n. j7 i$ I
' [2 q. ?) k& P  R9 y/ ~3 m% [$ g- y
完成上述修改后重新编译并用新的镜像进行烧写。  K( N3 O1 m# G/ _3 {
! W' q6 p* R  S9 [. w2 R  h7 @( t
5 t' H+ P; E) B% q8 A8 _( t0 M
  D) P4 t' a& V- h
/ n$ z! \* z& }- ~: {2 m+ G$ t
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):1 I. V: v/ ?3 ~
1 a" b: h1 Q# z( I5 c. g

/ f& e( b- B- s4 y( W7 r  Z! J: _/ ^7 |5 ], }+ N

3 e' [$ t* Y0 k' `- K
[backcolor=rgba(18, 18, 18, 0.5)]​
: O1 K+ O5 @4 z
+ w8 ^8 Q; S2 I! S' N& p* @" Q

8 N4 ]5 q: \" l9 S: B1 e1 [+ X8 W1 p4 B  \; j7 Y

4 y! h# V' t- B- K& A: e; D编辑切换为居中. p7 O3 \6 z3 Y: b

1 m+ _( J* y& n9 [. _
2 y7 f6 J$ {2 o; x. d8 W  |- a, W. X( ?0 ?  W* f# v) a

8 z# o% }1 o+ L! j添加图片注释,不超过 140 字(可选)
" r7 C8 ^+ a6 ]* L0 K7 z- v1 `+ ?& n6 v4 d

. y$ v! E& ^( Q& X7 g% V
3 ~3 ^2 [; c4 @. b( v
5 O* S( d' l$ J& P注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。) q% B' L6 X# H3 u2 m  B0 {( i- Q

1 Y' N0 \! I2 _! t  C4 [* s
2 I* i0 T' X; r8 ~6 D& l
; a7 b; |  {+ b8 L" T; Y4 E  C0 H. k

% T' x" {  E$ Z3 H% `) x& }; S3 v3 {7 n- ?4 ]- z: T! ?
5 v# G+ w9 P' R7 l1 F4 V2 E: Q. B
2.“使用TF卡进行烧写时发现烧写一半卡住”' B+ t( {6 v* w9 v) [$ o

* i- W: c+ p% ^3 c# V1 P
$ {# K* l: G7 @# t. g5 N* V3 {9 _( G  ?# S$ j! E; G6 f8 ?# q- H2 B8 m
5 @! N( U4 p9 O$ O+ o" Y" t% H6 l
问题描述——; z2 T" N9 [5 r' D
2 ?( k0 m# a6 N1 k0 |( u3 [
客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:+ N2 T7 K0 P  a' Z! c
; u0 b3 }- g1 ?% r6 W# A9 V

8 o! C3 M4 y0 T7 y( w! U/ k  y" c, b3 v/ `9 |
2 y/ D3 Z5 ]' k) w& s/ S# P- R9 b# e* V$ l
[backcolor=rgba(18, 18, 18, 0.5)]​
% W7 p3 r: W) Q* j' m$ e+ r0 X' C3 y, x( Z% ~
% C; z! ]  i- M7 z

6 S2 \  U: [5 E) Z# @8 \# G: U* x+ I3 P$ e/ Y6 ~1 B  x
编辑切换为居中
+ q/ A' S& @3 t2 z. f" C
1 C3 w) e* q) v# U9 q0 X
* {1 W5 A) z9 J5 Y$ @
8 Z+ _1 l4 c6 a- w6 b- R2 R
1 G/ L, C) }7 i) Y7 i; ]添加图片注释,不超过 140 字(可选)
, _: A1 C- s" t; \$ \/ L2 [- T# A$ v8 t7 y! ~6 H
! W0 F' _" U7 c9 w
2 [+ V" |2 N- Y) G: ?

9 H0 e6 w1 O- h6 _$ |注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。
- A; c( x- s  r- e/ x8 g* L8 }; ?4 |5 M

4 h9 R9 h! H- K& t* L! O, e5 f
. n" [1 }2 @0 K* P; c  K& C1 ~! v: y8 P. R8 s% s+ U
产生原因——8 R' @- l) b. t4 g6 a4 ^

5 M! {. i/ w4 H* u& p烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。
: @* j9 v# ?% V. l2 H  Q( o( m0 J; B: D

- d8 u4 I- W+ A, r' Z6 n1 J! p4 l- C3 b1 l+ d

. x6 W: v. K; T+ s$ u# v) G. c' _解决办法——
  ]6 t7 M; I* {' @5 j+ T; v( Q7 [# e6 ]8 @
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:' `* e/ B: m. A* S$ `* y8 C* ~

4 D7 O$ @5 V" u- y3 i! `. t' y0 B5 d7 P; ^4 U, g

1 m0 I4 D0 f7 A2 ^* X" p! `( E
7 ]# G* J9 {/ c" z0 K6 r, d; k
[backcolor=rgba(18, 18, 18, 0.5)]​# u1 a, @2 o5 n2 k* q
& R& F) W7 n  ?" i/ Q

5 _8 ], g) q5 i  O% E6 _  m
$ H0 ~9 }) _5 _- G
, K# D! [1 `! j4 o9 ^编辑切换为居中
1 g& A) l) l! v  m! i2 z1 {: v- ?1 H' O* o! w1 ?3 K  }
; V8 x3 V8 A: I- O5 q) ~
0 k5 Q+ _$ [+ H* ~8 a4 K, q( X+ r" K4 J
  f. l* c5 Q, @" D$ m
添加图片注释,不超过 140 字(可选)* R3 W2 K% I" n& M9 q% u& R

2 |) ?  H! S5 c2 j6 n
6 O6 z; ?% D& B& _6 [9 I7 S7 N2 y
. F, ^; C9 f  [& t. t  H  d# F% U+ _& c; Z4 T
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。
& h2 H5 m! l% K. q1 d5 m
/ l" l5 Y3 o" u: d+ O# Y3 s1 K8 `$ D8 ?* Q% m- I. @

# q6 H# g6 B9 q7 i8 b9 ?- p6 f: J1 G4 a) S- N+ O, M3 ]
执行编译命令,生成新的烧写工具:
' t: N7 u# K+ B7 h$ X6 Y, d# h5 V& B- p, Y2 \6 _$ F
& r* P: `$ a2 ^- y- h* k5 S

1 Z- g. F1 C& N: Z& Y
! `* v& W) N+ \' l
[backcolor=rgba(18, 18, 18, 0.5)]​
+ [5 K4 C( T/ L8 r4 E
2 ~+ w5 d, W' Y6 l7 r& y

$ ?9 |% R8 h( k( ?/ z8 P1 \, k7 F( W: S( h/ c. ^) c
% O5 v7 t0 R) q( Q5 i7 n$ N
编辑切换为居中8 h, D# l4 l( x6 N! M
/ |$ Z% l7 N/ r( M: }
1 P# z3 y9 }3 b# f

6 \- w# W, e9 l/ A0 @% A5 w0 @; g' Z* W6 A3 i
添加图片注释,不超过 140 字(可选)7 M, C/ a+ d6 Q& t5 t
+ V! V2 s1 ?- y' Q6 ^
9 @' L$ X" a. [1 K. |; A0 T

4 h8 j/ I  b& m9 W. h8 F3 V0 [7 ]! ]( U8 B0 o
使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。
+ R3 B9 u# j- ]
' o! m9 K3 M8 K( {* Y) \1 I进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。5 d4 h+ b8 ]& B  _' g

, o6 n$ E4 S/ ]1 S- S  X, C* K! f/ Y8 o8 u5 h- T

+ a/ q9 ~5 y$ [; Z2 X: x& a- ~# e" w. ]" ~6 [' I/ D0 t, E* s2 q
注意:$ H7 `+ @0 m3 i, W- e, D
% k& N! I, R2 O% o
  • 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
  • OTG烧写不会因没有PCIe而受到影响。7 \- [+ u# |3 E( Z9 H4 P

5 b. ^- ?! y! }% T+ k/ z9 e6 |/ L! f7 u5 O3 @, H- n  m

( f1 a0 g7 V3 O6 @& R上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。
6 Q5 v# l2 M( N( q1 Q+ p0 ~( P  N" N+ L, G! e) r% V
) d/ b2 W, F6 |' \
1 F# H- x5 G& x$ w4 _$ u1 H0 H
1 e+ h- j- r' [
当然,只设计了一路PCIe的情况也需要注意:8 L: f2 Q8 G& R8 S9 G; f9 v

/ q1 c! ?# n$ I- z9 G7 W" @& {$ b* r  G如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;$ C( V7 ~' g6 }% R

2 x: ~' s  v% D7 O' }) @" e5 {" l7 }- F

9 I+ x) K# F$ d; ^( ^8 v7 Z! F& `1 q& n$ V  d$ O3 `! h
如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
# O$ }, `: {1 @( a6 l+ c& E: v8 X& m7 `2 g: o; Z8 c) i% w

- Y  r5 q- n3 _- ]* N) z. R
; h" e. i5 e# o8 c2 N% ]& H# ~& g1 E* N: |: [: o
0 d5 E* `7 {- ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 22:58 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表