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

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

[复制链接]

该用户从未签到

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

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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