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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑
. @  @1 G& J/ M+ K. e& U4 a% l6 J0 z  K5 x
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。! h$ _5 m, Y  b+ b8 ~
5 j; k+ A; Q6 @0 X" ?

. X7 Q' R. J5 u5 l- b7 o# v. W. ?) t! Y8 e
$ T# }& z" ]  {# n' Z; v; D
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。- g# G" V, l# v: Q

7 a8 Q- Y9 z& k. J! o) c" I' V( T* v

# i9 B5 O% m  e2 ^# L$ Z2 {6 H/ s3 m% {% |6 ]+ P
今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
) r! r/ _6 \* B6 r
$ L) Y3 D2 j4 f' N+ C
4 a" a5 v$ j  A* K( a7 n
, G" W  U1 N( q6 I+ {5 m/ |  |9 \6 z% |

$ d+ Q$ N6 f2 r/ X! _
) H: q  T2 y! ^# x5 L* z8 p: A6 |
# K  m5 [9 X* ?4 h" k9 |. R1.“使用出厂镜像启动时发现无法正常启动”
. x* o% j2 B* `8 W; T& V
$ S9 u1 [2 m" E2 _2 [
; g6 T5 |5 Y$ s; P* p8 o, u7 O) U& H, N2 @% U! j

5 }$ \& }1 \0 b, c- T0 k5 F9 i问题描述——$ G+ F; g& [% x" d$ K. m

" }* ^4 M* @7 E2 a$ o2 `客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
2 T" _4 D' j7 x2 R9 x" E5 d; i& H7 S$ e/ _" `- Y9 C7 M- ~
! j8 Q% Y, n  w  o

. C- b. S# ^" b; l+ J, R( k
! W, _0 y  O0 P) c- `! s: j
[backcolor=rgba(18, 18, 18, 0.5)]​& I9 A2 S5 ]" m) k- U. u) C' I

) a) i8 _/ h/ m6 m$ U4 R) I  o, y/ M

: n# i( h& E4 ~- l  g5 _+ L# J
. d2 @# h0 W. L! X3 K. ^
% n. L2 h0 E% B& j5 _" n编辑切换为居中
# q: m( {  k7 P5 i4 x9 u
7 X4 O! Q7 v' }& U! E
! p1 X# V1 c- [+ A. U
3 r" T0 K7 {! n6 w3 K( P% L; |5 b" m+ z. {; i$ s: ^: a
添加图片注释,不超过 140 字(可选)* R4 B. z) v& S. i# d5 k, ^
# V# ~6 y, L+ o. T: M, n2 g9 {+ o% s! |
0 H; P, o( D5 }6 U' E
% j: R2 r, u7 b" e. X4 a

% D3 Y: l: H  y0 S, V2 H
% Y- \2 b) D) f+ J3 \" x  M+ |* a4 ]  w9 T3 V% C
- ]1 t: }2 f6 t6 o
产生原因——: K1 @- q& }/ U8 |. v* {

) f3 b" E$ d" P9 ~+ U, U  ]PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
) d' s$ ^/ U8 I0 v% `. A5 `$ w. Q
- d/ X. }" r) g* G7 J( _3 }( s  \6 C: v) s5 X
0 K/ J' Y/ o  i/ ?4 I6 b
3 b; c- t+ _" b# v8 t. X
解决办法——1 J& t  Z8 ^' B. L% F* @/ I
# v. Q) W2 `" l1 I+ _  h
修改内核设备树:; S/ r# n+ B, q) y" o# S/ |

; h9 R# t1 ^8 h1 l3 |viOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts
. M$ r0 _& f) m$ s# a
, V; M7 o' q* w2 z9 A/ A* p* ?* g  b  k" D6 F- w
$ }0 e4 P3 j7 u5 ?  E
: R& U" Z. a! {3 P
[backcolor=rgba(18, 18, 18, 0.5)]​; x3 y( c& C5 X1 I+ e

8 G( [; C3 Y8 w5 B

! B) D# f% ]' f/ {4 T& c; z) B$ E2 F5 ^2 [- ?1 m
" m& W$ @& m1 g( P3 W8 j
编辑切换为居中
* W! O  w, w! V( @+ b! p8 S
- y; V$ O  C2 l! O* j9 d! F# w7 W, ]3 [/ y; z
0 Z- a" A; p) H. X
/ n  s6 d& z0 ?3 ~- f
添加图片注释,不超过 140 字(可选)
, H5 c2 f9 p+ G" o3 L2 {6 h# K1 U. z' q$ F4 M. E% L' Y

5 n) _( }4 c6 d% k  u; J( P
, u$ ?( ]' [6 s/ E$ s
( G- a, ]7 O, u将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。
! p" `' A" f- g- Q/ \
3 ^" m2 w% S4 A7 o7 A. r$ z4 R. W5 j1 v' ~" F* K
" O& \+ I+ ?' U# k) q. `
, `0 f/ Y0 l: R/ w
完成上述修改后重新编译并用新的镜像进行烧写。( C, I8 S5 F6 h# t& t9 |1 p6 W  m

0 d! P/ R6 w' [: I4 J5 ?' [5 o2 a3 Z  H
% x0 t' @" ~6 J2 e7 Y: o

& j$ W) m6 J$ v  E$ w4 G正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):0 ~- v7 d( K9 i
; O2 @/ w% ]/ b2 ]

% I3 B; D" {( i* F7 z) g. t8 |6 m4 ~
: @$ @, c- g. G' H9 z) e- m8 D/ R
[backcolor=rgba(18, 18, 18, 0.5)]​. X& M$ ?# B% [/ s- h) k5 E
" U$ ~( o/ d0 H3 ]

" C  L( |- T& L" s, z# E9 T4 v; f, @* ^% g/ z

! y. n% X2 R1 Z& o9 K) s编辑切换为居中
6 q3 c! p( P* S6 X/ R
8 Q0 E% S8 l  B0 Y) u# R* p) W. v2 C& m1 ^; d2 M
, R& C- T6 v5 s) F! N

( O5 J6 e4 s: U$ q& |添加图片注释,不超过 140 字(可选)
7 a# y9 X# c! K4 i2 A) y4 T9 h7 h. z2 p- w4 D5 u, z% {: K

7 p0 E9 b' O2 W7 u" D) W
/ Z% Z& z9 |! L) S! n; ~* y" S, A0 b5 U# l
注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。- I! N6 E: N" M( I# j1 p* ^
" ^) l- h9 }7 e
$ |, q2 ^9 b7 T) o( G
$ t1 X+ ~* H0 s* V/ E9 B& z
; x0 s8 p. o) v+ g
/ J, t/ J/ Z! L! y% Z4 ]) W
" V! K7 z& R& p  ^

; ]6 w! H: w% k2 X) e, j* Z2.“使用TF卡进行烧写时发现烧写一半卡住”
1 ?8 o8 M5 u& h2 F" Z. a
- y; q# `3 A0 S# I* K- Z6 I& L, Q9 E/ B
, F2 f, i+ @" Z$ n
" B& Y3 W5 M6 g* q, ?
问题描述——" x5 G8 `8 y3 i2 K, P; h; A5 Q9 ]

( |2 a' T# l$ a4 x  b# x客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:
( G: v( B/ y% e5 X* Z. O1 n7 P1 j+ M* B

3 w! G) Y% }; j2 N- l4 q4 Z" q+ N. \4 O) n" C8 Q' J9 k" c

; {% a1 [* Y2 T
[backcolor=rgba(18, 18, 18, 0.5)]​7 j- K- r3 V. H2 L
2 Z4 ^& _& G0 _; d
* b8 O4 J* ~1 B- \* l/ C

# s* E# N7 {" ?+ b+ j
: q) ?, T2 `6 ?编辑切换为居中
$ C/ ?& ~) w+ B( |$ T, L9 A4 z8 l2 K6 N4 s7 _6 r8 [& s

8 k: A. f" V; [9 h
& c7 g! i) D$ S! u7 b( [" \. Y0 b$ d! e; S2 p$ Y
添加图片注释,不超过 140 字(可选)0 y- U9 \* H4 v: |
2 O6 w$ B' |7 W! m8 S+ h' E6 Y

* A6 _/ H, O/ f3 c
2 {7 }/ O7 j$ w2 B- B! M4 c7 P4 ^: k+ K
注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。
. G6 y* E" y7 f2 L. j7 `3 k
" _9 j4 Y8 w& v# \3 @3 r& [
$ t0 S% @6 c/ C1 B3 |$ f9 J; c) x2 Z4 F+ i; {4 E& g

* ]  l" X; g( t$ J+ J$ y6 v产生原因——0 z6 y6 U1 I3 |5 k

3 m6 x" j2 i& K/ n" s! v烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。) [2 b3 o2 j) N) B; U
" I6 G2 `( H$ x  m
. w7 p  T6 E7 l2 K

" m* S: s; e3 j
( r) @1 @5 x3 w. [解决办法——, }# s: W! C9 N" W9 e

1 `. V2 S- |7 m首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:
) x; @& G  C, n) {3 O/ q- u: e* J! J+ h
2 ]% N6 ^5 ?! K

8 i  m' V/ r/ @2 O
8 K; z$ @, j/ _, ?; {% o
[backcolor=rgba(18, 18, 18, 0.5)]​
- s" a- l( n, {# s0 k9 {3 I" A8 A3 }! K6 P: b' M
5 R: x6 g" K0 c! `) I9 u/ P

3 K& |/ q/ {) B& X9 ^
4 J& i2 `5 d, y' n* g& Q. E编辑切换为居中3 p4 i$ I  a, D) h  k

( _2 t: x7 h, T2 p, P
& |7 u! j0 |- t! [  g/ S9 }# D8 _3 R0 K8 T# p' \# B2 ?

# M+ |6 T0 S" U# }添加图片注释,不超过 140 字(可选)
- F$ c  p& _) g5 p, L
# Z+ G) C& m  {7 V4 H& G" z* J+ R2 \

" H: u- h3 R0 V+ Q) ~, i
2 D) u$ U7 C; Q8 G用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。; O. X$ d5 k3 D; e

5 j- y" V6 Y6 L) c( w( L; r; _
5 s2 U" v( I1 c6 K
9 D9 G$ d& r! L5 D% A4 j& D9 [. K: o& D9 w2 O' }2 W
执行编译命令,生成新的烧写工具:
& K3 \# d: [/ a6 W( I: Z) F1 }  p! R2 b4 Z4 A* i

9 c, b" \- Y7 O8 W# G+ F. T) z1 t

! m7 [! r- \* a7 O1 w* S6 k! f8 `- b
[backcolor=rgba(18, 18, 18, 0.5)]​. d; \1 [# b5 h5 R- T9 B
+ [9 J6 X( D" o' j+ x0 v: J

1 R2 @! u5 ~7 w6 n8 @1 [" s0 Y, B* I5 s
( j9 O* k- D3 z8 A/ |8 s8 R, T
& N5 d& P% c* D2 M# z* X: W编辑切换为居中, f& a: I( g3 }

+ b% ]& W, V  D- ?; _( B/ w) n5 C( u, h; q8 F* H/ q
, J- W2 v2 D* U1 D

; E3 D0 ^! N& d添加图片注释,不超过 140 字(可选): R! ]0 `+ C$ F6 d9 \) f- t
  C9 J5 T7 [' e- F9 Y

/ Y5 ~0 [/ f7 J* R  h- P# s1 M( c) ?4 Y+ N' m* B

. e# q9 X1 y. l! h, _0 S" M使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。2 {0 l' K/ ^# Q& d/ I& ~
: Q- v( b0 x& t- `8 Q! }5 N) L
进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。
- ]. u$ P0 l: K2 Y! p8 x$ D/ i; [, }% F" e3 v& {" x9 u; n, V
6 e& x7 {/ f8 [& C

' J) e& [) x: U/ m  z& ]5 m5 W9 b9 J+ m9 ]6 Y) Q) {" M
注意:" ]/ {- A4 v( L  e2 m

* D) r1 L; x9 x- [* v. `
  • 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
  • OTG烧写不会因没有PCIe而受到影响。8 u; J* @" H6 T* |0 l7 B! e
# P- `6 ?& u! l. E9 u: c, }4 v
% k% C: f; X/ k0 Q. Q* n  s6 k& R

  G, `3 O& `, p! o5 @$ G) _5 y8 \上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。9 s" U0 _( s* c2 T# S1 j) Z

, F, [+ C/ S% y4 q
& b; D: i* f% N# t4 H+ g2 x2 d

+ R5 d5 F4 {1 Y0 O# p3 p/ @8 ~当然,只设计了一路PCIe的情况也需要注意:9 v; a: Q  s+ z# m4 B6 P# u
  J$ o, B8 \( Q# m0 Y* A
如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
! r  I) f( j# d; ^
8 x# p) i; I6 ]! r9 r3 C8 j' R- @% z" p3 f) w  C1 n

3 u9 @  n$ V- C$ t& P
- v9 h( ~% p( S. ~) k& H5 X) i如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。+ C  i' |& C8 o6 i. r: E& ?' d

, f: Z  }$ b5 b2 a
$ i( x6 j! t2 e) @9 w
: z* k  P, H3 H8 s
; K+ p; z& t' Q$ l9 U
% I5 T% O+ x' G% R, ^; B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-17 17:50 , Processed in 0.078125 second(s), 24 queries , Gzip On.

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

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

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