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

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

[复制链接]

该用户从未签到

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

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$ ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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