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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2022-8-23 17:32 编辑
: o; F0 i; ~6 ]' @% `0 E7 k
  q$ X, Z% W$ L$ l% }' [在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。$ B8 e: W( f, C! A; |: r
% k% G, R7 \2 k7 {# c% |

* W) ^0 ]+ o  V$ _- q! m1 Z4 i/ w9 y6 }* L( G
2 o8 o7 q. {4 F9 ?
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。
5 c! Z# v4 d# a6 z; @' t! G
; L- L$ V" t; T& @
) b& \# \0 X4 O8 L
' Y0 p$ p7 M% o
/ \, K. r( {- L  ?" w& T今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。- Y& S8 |/ E; n9 n5 x

/ ^1 U# V- B5 c* S  P4 ]4 l7 w% i  ^- c. Z
7 z9 _: i' k3 @+ w2 I# H/ f

2 r" L+ }. B* i. G* e8 Z8 {4 |: k8 H2 I" b+ `

$ M8 L% r  ^) E$ ]0 s7 Y0 E. x$ {& ?. R, r. p' |
1.“使用出厂镜像启动时发现无法正常启动”! w! Z% C+ `, ^. T/ e

/ B8 m/ {& \0 d- `1 T* I) j/ H  c5 Z; ?' P) e8 i/ \5 M% e( h
3 T4 ^. X) ^6 P& H( n
. Z; S; a( ?8 T, ~
问题描述——
& D8 H. ^3 G$ r/ ]- j1 `9 t) c
, c: T; z4 d% l0 A* b0 ]客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:6 e6 X3 A8 z$ g3 U  P

9 V  F6 Q! W9 i1 ?% o' g* s0 N3 q+ L; D% s. s  L4 m; v

: L5 j: v$ Z" D0 {5 s3 A3 k7 j+ X0 N1 p, i! @' `. Y6 b
[backcolor=rgba(18, 18, 18, 0.5)]​
) B+ f* F; m; L; [# r+ g$ s' H: X' Y& m# H

  H/ z# m9 L% ^7 U. K+ ]1 E& u& e1 L0 v9 [. Y
  G4 ~4 i$ N! u. x& u
编辑切换为居中3 h5 A: [. W4 j, `7 n$ W/ ~4 Q' o( R! J

7 D# O$ I3 Z; P$ W5 ]2 r: y; v! ?# l! y$ F$ G7 ?9 n% C2 Q
& S+ x# F% E2 J6 [( C

1 B. d, y8 |- \- c3 s添加图片注释,不超过 140 字(可选)
, o' l: F" W  T; J% t- |+ ]
! ?: @8 y# q5 g! \8 U0 `% J
2 h2 L" j' Q% H, t. i8 q  `0 ^8 b, v6 c$ C. P
5 ~4 n; s5 Y0 @- l6 ^
  B2 V& t& Y' @* `4 @% W7 M7 a8 C
$ V( e3 X9 I& u* I4 u
" @9 `. I' @, x- u, Y+ f. L
产生原因——
" X% c1 E" S5 a& B% K. O+ O4 m( F; G! V8 U- D
PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
! @5 _4 j: N4 ~% Z! \0 F3 d, A3 y# T' C

/ W. _; A5 L; H7 C0 W6 M7 d& m, p+ n* {

3 l0 R" [6 U5 Q1 {( I& D+ D  @2 z解决办法——! F; H2 b  ^  C, R. s/ n

) D0 A* T$ Y$ ~) U7 U" F修改内核设备树:4 D/ M/ k+ Z. C: w% m5 {% {4 O- `

% I" E" j5 K  H; v1 fviOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts- r2 ]" e$ c+ U1 ?
2 B) B7 Y. w  y5 B$ t, B) q

- C1 Z2 n( F: |" M1 V: X* z6 u2 k; V6 g! C' C6 _& r* f% Q, u9 o7 X: z% Y0 W
4 s6 Z, `5 N  N5 @3 O
[backcolor=rgba(18, 18, 18, 0.5)]​
" C0 C" T# {1 T+ J0 L0 [% A6 K& y6 p. j. h) ]& @9 E
3 t/ B) D1 P( P% P3 v. N# Q9 [

, V5 B0 P9 p# d! p* z9 w5 r9 X4 ?2 O+ Z
编辑切换为居中
& T+ P/ r6 v) l, ?, N6 N* j: ]; O2 ]5 z$ U4 Z2 d! [9 g, k9 i0 E
# e( m. ]5 k$ g! d/ S
7 n5 S, m/ ?1 N0 C6 n2 J

# E* }& T! \0 [添加图片注释,不超过 140 字(可选)
) A% F* j' {+ Z/ s2 U9 s8 y; d/ o/ W
4 `4 c7 G5 v7 N5 w9 ~) c- @5 g( h: k1 i. I$ f. e  A5 w% W
' g" k8 ^2 r( q- R2 g3 @+ l, X

3 k+ ?& ]3 U# I4 \6 a: a将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。8 A( K0 k( e6 i

) e, b( A, k) ]3 W! z9 |* X" L2 n! f4 f
% {. Y- {3 c% {; L

" O$ Y! y3 r, o/ }5 ~3 |完成上述修改后重新编译并用新的镜像进行烧写。
/ I$ S% r$ I1 @# a
; ?! F7 ~* z: L/ O. r" Y1 K6 [  x4 Q+ `  x. L
* O. p- X- E9 `6 ~2 v* W
: S" Z- P# K) W7 Y) U% g
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):/ Q. t$ T' d) J! v# W

9 x3 b5 r" r( u. q6 |4 N0 Y& {' ?4 E3 c" f; d/ i( D

. p5 x# y  L7 A6 G7 a( Z8 T$ b
4 d; b4 j* T/ q1 x! |% K
[backcolor=rgba(18, 18, 18, 0.5)]​. o1 c* S: l1 N1 x% k& i

, D/ J7 J* r8 _% T  Y( {& w

0 A" _  _, |% U- m& l. D% W, t6 |" t; J; E# \* v

) q9 J3 J' R2 y* o, H: @编辑切换为居中9 j6 T" u2 j+ Y/ l) |8 h
0 D2 k3 b. k1 B4 j7 \+ I6 E
0 ?+ h( t! K, o( |1 B2 e0 D

9 D3 B8 N+ B! F" {! z
! E2 A) v' v( h$ A添加图片注释,不超过 140 字(可选)* ]2 {* Q1 d7 O5 U* u/ J  N
+ N6 L+ v( n* q- x
/ |* R4 Y3 _  p9 l4 ]

5 w  T% N& K; b$ Y  P6 l
$ q- p- J, |5 T1 I注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。
  S+ A6 i+ s; O6 D" x# o7 ]. P, l/ l) a7 k0 }' g4 W
# }, R% P  t( C
' Z+ }% U8 ^# J

7 t& w3 H3 T4 ]0 ^4 m( n- v
' g, x9 T# n2 A1 E6 u5 M: D% F8 r& r
: x2 w9 Y+ y! Z4 s5 s% N, ?8 K! R7 `
2.“使用TF卡进行烧写时发现烧写一半卡住”
: B! O8 c. W" B5 R0 t% p8 D; q9 y  L0 c8 K) V) N& W! l
/ {$ I& [+ `) {

9 u6 l9 I# w& ^! M& @- D0 E. }
, i$ B' B; I; w  {/ D- l( Y6 W问题描述——9 @7 @- z1 A! `# w* }$ G
- Y, X6 [& T7 g( `9 Z
客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:/ T1 ~) O3 g; I: N2 L( Q9 p

+ x: ?  e" b8 C; G6 z& W  c2 J4 ~0 O7 k4 v
! O, p' Q  [/ Y/ T

6 M* J8 @4 }4 B+ n4 v
[backcolor=rgba(18, 18, 18, 0.5)]​
$ v$ C- G' T7 d
* h7 x9 b# m; P+ P$ _! P
1 \+ K5 H, {2 H6 o' L7 \

, ~' B9 \9 a+ H" C2 N1 ~" ^  x- Q( h8 [0 F  g
编辑切换为居中1 q0 u4 t9 F: ^- o, \5 j+ y% l. ~
$ D9 m  {2 y. t
, j) f- z& u' [- B$ W' n

) P1 y8 B4 x8 C* T- s/ ~# b
& M2 o8 {% W9 C. X添加图片注释,不超过 140 字(可选)
0 b: D9 t% a; s# y) Z
7 t1 u5 ?# v8 l3 g/ R1 u& e/ Y
# q3 q# u6 i( x' R% e: ~+ ?6 m' t2 y* s  G6 F% F
/ e4 k% ]' O/ ?1 b2 k
注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。: T* l# J5 D' A) u; a$ ^
, y0 |! ]" A- G( W$ z

7 S- V( O, Q+ p- A. I5 h$ J8 v- ]0 E: T4 A+ X6 R0 \
$ `( i  B. r/ @
产生原因——" z' x: U$ C; y- b- o7 N

' N( g- l  @" C4 J& i8 v烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。8 {+ X' O5 M! t

: Y+ l/ ?: D3 A3 {
5 \' J8 D3 Q) g; G" ?
+ o' p1 Q% V1 p, @' i9 d4 {- j' d, u; [, F# |$ b6 n% m
解决办法——
- s9 }& ]2 H& i) A3 M) I4 @# L9 k* p' V; v4 o; I
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:/ v, `1 \' r! C& N
. x- A0 m( @9 C( z) v
3 ]* n& @$ Z' ]% Q3 M/ D+ e
* r8 Y$ }  E$ g

- n& k* {  D; f7 b4 a$ X0 Z
[backcolor=rgba(18, 18, 18, 0.5)]​
6 N( b7 E% K7 G% _3 `) J6 g0 k" B5 j3 [# U, @4 L8 |+ X
# Q/ i$ n9 j: o. W# J+ L6 ?% b
3 L5 z0 p% T/ R# `% D

! [3 f# p! H" Q* O  H编辑切换为居中
' x6 o: \) s; w1 e9 [8 J8 U* |  e8 H; m( W3 b* ]. P& g/ f

& }# |7 x% t$ m: e5 H0 s1 Y
% A- T/ d1 N+ j8 ~8 _2 m" i% L! G) q7 |
添加图片注释,不超过 140 字(可选)
5 a8 l/ v; R1 D3 O
; R. ~6 Z" u  H! Y
+ H6 V8 o- e3 @# e
6 {$ Z# B% b6 m
3 d4 Y5 y6 v9 d0 u* h  [  Z- r( e用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。
/ ^  @7 k/ J# q; Y4 D1 }- L/ `% {0 W  n
( s2 X$ ^9 l( R7 Q- r
+ m' l" t. x; q/ {

/ k  \& [" g) L执行编译命令,生成新的烧写工具:
0 i& t( G2 R' H. @
* f7 @6 Z" m' i! G6 A, H0 [2 I7 `# \+ u* t' b: {
3 @3 e% c8 X7 r; I1 i6 p% w

9 p4 V1 j7 f9 m. I3 h
[backcolor=rgba(18, 18, 18, 0.5)]​/ l) z4 R. I: ~: I& b! d- @# s
" [9 F" V9 f" r% v8 ~: [* }  n
+ g8 b. [0 K  D

5 x& |8 k4 w- I) r6 }
+ N9 k! C( D# N0 R编辑切换为居中
' e; o" j& w1 I, \* U. U/ \
9 K- `, z3 u3 n' a- \  n- |% o
- |" X  H* A& t0 }) ]9 `" S/ k
; I+ C( b7 P1 l5 X( T/ b
. [8 Q( B. b! H8 ~3 V) `添加图片注释,不超过 140 字(可选)
+ T$ W0 E* \: b- ~5 f0 W- F' D# V" P" d5 f% z
: B; m# @" X9 D) r' f6 x
# C5 J7 s, H2 j

4 T, i4 o# _; S; T使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。
. d5 A/ D  c; v2 M. K4 v: v& C2 z
2 U- k8 c# g6 [) ?' O9 k进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。' f2 l7 |! |; M, C& O$ |' N

/ V* L$ J: {2 B! E
7 J) D: v/ C# H
( k/ c( Q6 S7 k" i( b7 K7 y3 A) @: T0 A! m5 W& \0 R
注意:
1 O0 j$ Z$ O4 e0 n9 A" n  N
$ a' E$ b# r1 u+ s( y! B" G
  • 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
  • OTG烧写不会因没有PCIe而受到影响。
    $ m& f, c3 }! z9 v& a
# T; G1 b; C' ], m- `* K: d
3 Q6 n% C. ^0 Z" u0 N
4 ]) L) p: B- ^8 q( |4 }
上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。* M4 S; q, A7 K$ m' G& B

3 N4 W" J4 U$ e: C9 R% w: h. |8 d$ t0 ^
# D* y6 F" w8 H- a: s; Q+ O0 g
/ v) W  ^4 m; y; P) M
当然,只设计了一路PCIe的情况也需要注意:1 {- P, a, b' n$ h

) t/ V2 v4 H! [# l  N" x0 P如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;; h6 ?! i" K/ j0 E5 {8 q! C
6 ?1 ]4 s% A8 N: F% |' G9 c
$ n; s6 D% r; S( t( }6 w& E" U
, H( s5 r! b/ F

- L* }3 {8 }. m" g1 A/ U. x: F如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
) D2 S7 R' N6 c- A; v0 r! n5 n- {. Q5 O4 N
) z$ {9 \4 E2 o) y
4 I. K5 ~. ~+ G5 r- V5 D# P
: S; y$ N  D4 R  Z

! X# [3 \- n5 l% s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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