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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑 ' F) B) j4 K' n. x- S; h8 \# {
' ~, E0 r3 m, w/ N/ [
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。
) g: T) c. I2 r7 S
1 J. _/ g% r6 r' M0 P+ j& J, T8 X+ @9 [7 R
: l+ t# f4 Y* B8 F
+ p$ F- p% O1 @5 d9 X1 f
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。
6 P. i% `# |0 i$ c  f% l* [' l; P
$ a% d& @4 k- j# I1 v
- _1 u- ]. y9 C5 L( b; q# U) W3 g$ K6 i0 n9 t: X1 ^

* c3 C3 |9 D- c# J4 i今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
# L( a6 O5 ^( z6 i+ Z' k6 ~6 g! j; \. c3 Y- X- ^, K9 X* c

/ k3 |; |2 u/ o" E7 N6 i% N% U) X
& {1 G# _" t/ a! x0 @7 ~* ~. u- j, I3 d7 P7 F

: u* E# y/ G9 y/ S
9 L7 @) ~( E2 Q* s
% |" t3 m) }( `) P1 u  R8 A1.“使用出厂镜像启动时发现无法正常启动”0 k! ~4 F# G; T7 i( N, P* I; O

4 {! c( t- f0 f( @9 |+ n
! ]) `9 c, l7 h+ g4 c4 Z
; H1 w# J7 G8 x4 y( @$ k/ X: K
9 N4 @8 o5 _) B3 x问题描述——/ r  D0 N( I8 b8 Q4 ]
4 ^9 Z- E' w$ g  x% @. e
客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
+ b3 ]3 |; k4 d
0 _! F! E* [" H% x# u3 k. b. P# I& n7 `% z" @
4 N! c4 m9 `: {
) x7 [: _9 i( H7 P  F, ~1 H. n
[backcolor=rgba(18, 18, 18, 0.5)]​
! m" q/ w) o% `+ N+ H6 j' b: E
% c& L5 I+ L! V% |( J7 j

7 v( w5 w$ Z2 x! e, i$ y! i6 ]. k0 z5 P% G1 Z0 C- w
! N8 q3 l2 c; D* K, D# T" G( ?4 Q- j
编辑切换为居中2 ?) }5 j/ i2 y+ t' r- B# r  j) \
" N/ I) g2 Z) d* Z: I
" Y/ y: o' L" D% o0 Q
& w+ h0 m0 n& [8 G
  J! o. O% z( ]+ a7 X* w0 c' Q
添加图片注释,不超过 140 字(可选)
% M. e2 w) K& j: k1 I) K
0 ?" M$ K8 e# v' A/ x! \' f
* \$ Q! F  W1 l# h, V! G, L9 _- i+ O2 T; D+ a

0 p+ d8 E( A- a0 T, t! G6 p7 [/ L4 d$ q( a  h0 z

* K( `! c' T2 R! a9 @
" T" B4 @6 r1 ?/ N! R4 X3 Z- V- W产生原因——
, j3 h+ A5 ~' |4 p
2 p/ k6 b5 y+ L8 n7 e$ KPCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
" N" k% v, u$ K9 w/ n8 e
% Q9 J% b6 _" I4 x4 E  t
/ T* q- @5 z  m; L$ L
, g0 x7 A7 R& A, i2 @6 X8 c9 y  |" b+ w# j+ l
解决办法——$ p# y" f7 T0 A& k

0 A6 n* m: C) I9 [+ O6 O修改内核设备树:
6 [& E! l& b, t5 p" T2 G$ b, J0 e6 Z$ |+ q# ?2 w
viOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts
& z; W4 ~7 b( e, f- H) [% ]" Z; x5 V+ S! P/ ?
! ?* ]0 Q' y3 j& o- ~& K! t- `6 s
3 e$ l6 N+ K, m. K3 l6 t: o& o

! l3 a0 s/ A! Z+ y- ?
[backcolor=rgba(18, 18, 18, 0.5)]​# w( M- ^, V% a0 K$ d" Y

( p. P" k$ N3 v+ z

% y! w) K9 Y/ J' G) M* B0 Y, K) N( }; T) f' n$ J; ~

( C9 F+ M" X, w% U8 K编辑切换为居中
. _8 e3 g' ~& V3 o; g+ x& h7 e5 |3 `
, R% v4 A# ]9 Q' h

3 y7 k% Y5 L: _- i' V/ Q
4 [7 p% |, T. V8 N添加图片注释,不超过 140 字(可选)2 Q% I' }  ]' L0 c5 X

% ]8 d. @# ~2 r5 K) ]9 U
  {5 f  S8 R- C  f5 ]1 S9 q
4 n& A0 s/ X1 w" b- P! Z- N* B0 P1 J7 k  f: M
将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。! e! a  F8 L+ u6 y9 ^0 f
& T0 U. f0 h% Y; v& Q1 i6 x
9 E+ ]0 g* L/ d# j6 Q
# K7 l; D( B7 n; v# @2 M; b& T; P9 U
* k  P) p7 t' m  Y: _5 ~
完成上述修改后重新编译并用新的镜像进行烧写。
2 A& O  b0 q3 K- v
# q* }3 g& A6 k' @
& V9 z' `$ N3 g' F  R. ]6 W2 C
9 E" k* m6 }2 ?* R) i0 W# S; G) Z- n5 T/ |, }/ L! A8 ^. G
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):
3 |" l! c0 P8 H/ V
2 `, g' {& f7 n# q/ d
9 u/ I5 V3 a. l! n* v+ _& M7 H2 k9 F
+ |# x7 T1 C3 _5 z1 y
[backcolor=rgba(18, 18, 18, 0.5)]​7 w5 \8 C5 W2 I2 W, f

6 H6 X% Q" ]3 {/ O
  Q7 h4 c5 ~  I
% Y$ g: p: n" f/ r7 F

) t$ s2 E: N& K+ D4 l编辑切换为居中
" T1 m( G# J. J5 [; m  n! [
3 y# c3 A5 V* i$ I
& S) ]6 I# f/ k  N8 R1 Y7 z# G' |4 L4 h

: i: S4 A8 |! m添加图片注释,不超过 140 字(可选)5 \& ^4 u& b: t7 o6 Y% t

3 D# S5 `; a, }8 o5 _$ V% X
" @/ o* R  a/ l  M; g- Y6 e4 Y. i9 w9 f0 ]: ^: }; \7 `" w
8 D: j. H4 M; S9 u5 Z: D
注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。
0 s  B% M  ~) N# Q0 D/ K$ `5 i, z5 |8 D/ X; ^0 L& R1 w& _! [( n

0 M+ ?# e* J3 J& E
8 D& S! @" b* w0 Z, r' J# B, q& {! E/ _2 R2 |; R

. u4 ]/ n4 }' f$ J7 b% ?
' U- |: U7 t& {* }% M3 Y( p
( V1 ^8 v3 y7 q) z' u9 Q2.“使用TF卡进行烧写时发现烧写一半卡住”# Z7 M+ P/ B( `# k: k
3 A5 `% _' |& W+ s0 Q6 K

; @+ L* r8 p# k; w! V: x% k5 z% n2 `# I" L* w
! w' T5 v4 o0 q, _
问题描述——
. B( u& l1 x2 l
+ d  ^! n! c# e  h0 N' T# {; N/ T7 F客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:6 c1 G) G# L+ X
3 S' K% L4 n+ B5 f, S8 ?$ f* S
* b( }' E0 q; Z9 [8 F7 J* f' c1 r

$ j4 J' _" [3 B6 Y) Q" ^# t( `
8 d) Y- W8 \. W
[backcolor=rgba(18, 18, 18, 0.5)]​
& S6 _, Z, ~; i& V  B) S7 b/ i3 f! F+ [5 U/ g0 A* Z  T! I6 W

4 q  C( H* U6 {/ H" @- t- }5 Q4 S& C

/ t+ B8 t! q2 h7 C# q8 {编辑切换为居中( j4 Z" ^( S5 D( J5 J

. r+ f0 ?$ w: M  m% u! i' K: ]$ n  {  l( o' j
7 N$ c$ d0 @6 W! p
& S" x  A+ J) e! r* S7 i" o4 s
添加图片注释,不超过 140 字(可选)
9 `& v# B! g: s, L. o% s. Y' ~
5 a3 J" U3 R* u; M4 s0 R7 k

! \% D* J  r1 _) f* {$ x
( e3 f* D# i6 y) q注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。: V& e4 T- L; h4 f
8 j. r7 C7 D* U9 v& }5 M
" W6 @" _0 ]1 u: f! t( W5 z+ d
7 h) F5 y; Z* [8 x

; Q/ T1 d$ @$ e) {产生原因——
1 U8 D: Y4 P1 c+ f# \' `- p+ C: }- C! [3 ?
烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。
9 V" L  {. \& e# r  W. y* Y" G. r+ D4 X$ ?! `8 [

" g5 Z: L* v  h3 u, U# b1 _4 }5 A3 U# d( B1 X2 @
8 \- O/ @2 Q' a8 a1 d, V
解决办法——
" ~, f' x- Q9 X3 _" A0 @- t2 X, n  A: z( R0 a
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:4 [. {, _2 a& @0 y3 ^

8 h  j7 m" V0 W) z4 K& Q
2 s* d+ R& f" @* g
) D, p. P. V$ r' w* N% _( p( ?- C  _: @. c% D$ H1 x
[backcolor=rgba(18, 18, 18, 0.5)]​: e. q( a: u' L# V8 s% g

" Z3 t# U$ g1 R) k" D1 ?/ P

. V. ^4 g- H6 j9 n: x* X; Q- x, p7 T' J/ l. `  _, y

6 H% q8 j2 x3 G( V$ _编辑切换为居中; b# n" r! e, x# v

9 |$ ]) {0 {0 s9 n) B+ L
, t1 w* y9 l% Y0 t- |
7 K, M) t1 S8 ]: z0 U- e. F& N6 k, n) U
添加图片注释,不超过 140 字(可选)  ]0 i- V" Y; Z* u) u, u
7 e9 t2 g9 J9 t
! F4 {: t6 y  j" C# X0 B# X, L3 R

% {* A5 m. C2 [2 k3 s- O( K' `; {- m) G
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。
9 a7 a# A$ Z4 q
: G# V& \0 Y+ w' O$ w
: E' d0 q- U" i" t* K$ P5 Q
% H# v; |! N& t' w5 d% z/ ?( Z' v! y6 w) S( Y& E2 Y+ ]
执行编译命令,生成新的烧写工具:
9 O# }5 A- I6 B* O: v. B, k; ~7 r: d
2 |7 {9 t; Q" c5 N* Z7 c

! j5 j- {" p, A
, i6 a- M. S( w
[backcolor=rgba(18, 18, 18, 0.5)]​
; G4 [( E+ ~/ {% Y4 T/ S
2 A" ^7 F. P/ B: @" m

1 d* X& a  A  u% \; F$ Y5 Q8 x; W+ L# K% ?
9 ^: v* U3 t5 B( Z5 h; n
编辑切换为居中
2 E* H" t+ `  @" n
2 A, q& m# T8 R; Z6 u
- L) L% z% D1 R
& Q5 o8 c/ v; j+ n
" R  x- o8 c$ A1 a7 Z! z添加图片注释,不超过 140 字(可选)
) X3 C, O0 f0 o: M% R
, i& e; C8 o' F0 h  ]% ?  |+ n& O+ s9 s8 C5 [2 H' G8 U
* S+ k! b. F9 J  ]- @$ ~# r. S# A  s

* y" h9 C! H" A- }使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。
0 o' C; \+ c3 S/ o( g
* V: A, @$ v; @, j1 c进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。
% S% J4 K; p; f( X. b! V. T% ~
, t' s' S3 C. R' o: j# G, w" G8 ~8 W, C' o/ p
# \- V: I$ f& B9 l
# C; J6 m! j& s7 Q0 z# m
注意:
- S* H) [$ n) S% t! t$ z) h) G2 g/ G' c" y9 Y
  • 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
  • OTG烧写不会因没有PCIe而受到影响。, u+ l/ v$ n- d' A! A
9 r. H" t7 L2 ^6 G% _

8 F- h; d# A6 W. ?
# N6 R6 j) b- P6 f0 I4 E+ R" H上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。
+ L% r: k5 B4 e. r3 ~/ q+ R
+ b7 t" K/ g% g9 a2 D7 ]4 D- b* M$ d7 _

' r$ q0 k* K3 u% b) \, e8 r/ S6 w; d# z' b7 R2 O" j& ]( W9 c
当然,只设计了一路PCIe的情况也需要注意:
, T! P6 ?4 {/ a$ \# q7 S$ i9 K! J- ]: W) H) T
如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
5 E' }# L& `- V& b
. H# j0 X! |) L* `8 W9 y5 k+ M0 ^
) V2 ~. J4 ?7 m/ S5 w5 P' C

9 u7 e* k* M& U3 }& [如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
! i8 p, `' ?' `( x
- U; R8 \6 L; I7 I0 o0 R- ~
; Y* p' b8 U; O( U; F3 |$ ^
1 @' V* s! g0 D9 G  Y% |  I
" u/ X( P: f: F( ?+ ^$ z2 x
  z; Y+ i$ \$ P5 P/ u' ?, X
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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