|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-9-15 17:54 编辑
2 B; v- ^. o! h) @! y% D8 e# G8 r- {- H L9 I* \, P3 D
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。
3 y0 D* L+ s& s/ Q& P5 D
; i7 q9 D) s0 k很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。
" Q7 U9 r! A' q今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。8 p" ^0 d/ S* i: W( E
1.“使用出厂镜像启动时发现无法正常启动”
) t2 @$ F) s9 s7 u" K问题描述——
# w8 V( u2 z1 w" t2 s, N& z
* @# C. a4 h9 y+ Y/ N客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
& I- Q; U+ s. L8 [% Z7 O( e) ^. }7 L( N, o
$ {% p) P0 Z6 @$ _: I7 e+ z9 s! s
& ~5 h' q, R( y: {4 p7 m. f
" Q6 R+ o, q5 A- p" ?
![]() [backcolor=rgba(18, 18, 18, 0.5)] % w" H6 H8 L+ X( E8 n! [9 c
+ ]. P1 J1 l. W+ G& W
9 A# Q+ J, a9 U2 g/ b* f9 {. d
$ n- N$ x6 @8 @# L; X
9 _: B2 z. j- i y2 j q编辑切换为居中
9 m w3 E, Y! K" ~: r, Q# Q- E( o8 j0 a: {: `
2 S w9 f0 S! t, ?
) {4 _: V- [ E: J
: i1 O6 B- l' B4 Z8 f: Y" s. n3 C添加图片注释,不超过 140 字(可选)
8 V& K6 w8 b; ~( W$ F0 `( Q
) h2 B" T/ b) u产生原因——1 S: M. G2 x6 _: S2 A- A2 R5 J& W
# \- [3 k5 `2 h7 V. S
PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
+ P4 H1 o+ j0 C2 t& [+ ~6 T
' d/ \' b$ z* l# m& v& W; ~3 `解决办法——7 x( c G4 v9 T/ w* u1 a! X
, K) H y [, N3 ^0 g& y& g t修改内核设备树:
# L- D. D* ?6 e# P
. w. {/ a& ]8 K2 S$ s Q/ lviOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts8 P' ?1 }2 V2 C$ U- C
) l* F6 W2 e4 d) |9 T
3 i! w" A) Y/ N5 H* s
7 ` s3 N! U$ F7 \/ I6 c# X, T
8 z( I0 X7 B Z+ X9 `- S/ X![]() [backcolor=rgba(18, 18, 18, 0.5)]
# l5 n7 r! l9 S5 N9 `2 W, D% r5 o) {0 e# {3 p
" S0 B$ m2 C) U4 _1 W. L1 k7 a. E
8 _3 Y @9 o* u0 c4 l1 p2 o( R# i2 L! G' M3 k
编辑切换为居中
: H" P$ V H Z k: l$ I添加图片注释,不超过 140 字(可选)
# s4 I( N' g+ U% b+ }' u将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。: q3 s9 v, p e/ x0 a! p- ~8 H- |
完成上述修改后重新编译并用新的镜像进行烧写。% Y. _* l; `; q; V
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):/ T- F" u! m) f$ j
' l/ N4 S* P( q0 k8 E( Q: B$ x9 `![]() [backcolor=rgba(18, 18, 18, 0.5)] $ m3 S5 [) ^3 V! z3 Y
, D, c2 J$ v$ I( t% h+ E! }1 r) \
编辑切换为居中5 Z/ B: y* x+ {# L9 y
添加图片注释,不超过 140 字(可选)
( L0 Z2 A! ]1 }6 a, l# ]2 @注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。+ J' `$ E3 `) T4 J; q
2.“使用TF卡进行烧写时发现烧写一半卡住”' s5 S( h/ o; ]/ C" F
* v3 A; v& [" S6 P. X
问题描述——
# m. Q6 R3 d) i0 m1 M
$ e/ q1 H- c4 K: e" a, u% d/ M客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:$ i8 ?5 W4 W9 |, f4 V5 x) }
* Z/ N! D, Y. l; |0 q
+ E5 O+ O! G3 F0 c' {7 B' ~) Y0 |, c
$ f, U4 o& Z$ L) o: W
# S% r8 \6 Z: M* i3 G- Y+ Z1 c![]() [backcolor=rgba(18, 18, 18, 0.5)] 7 B y1 g: O# y9 k- g* d# f
# \! C: j( X" g& T! h
编辑切换为居中
9 {5 C3 m! V8 \; F$ D6 I* Z添加图片注释,不超过 140 字(可选)
3 j6 d! ^# H+ T$ b注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。$ ~ R* |. k, C) a
产生原因——
; u9 y1 l0 c7 k2 |- }' c6 m/ G5 m' K$ h& b6 B% a. H5 ~4 U
烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。
2 [: L6 G0 _$ E2 r4 e解决办法——7 l7 o5 j5 ^/ H' q/ E5 t; q% u
; _4 F0 A' v* F" k8 y) X3 \( n. y首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:
. K9 C/ D, ^$ I% ^( T
$ j8 @0 H. I+ r2 d' h9 X
3 B, T4 h# {; ~9 x1 z; X& T9 D F![]() [backcolor=rgba(18, 18, 18, 0.5)]
5 v P4 C: U5 M* S, H+ u- ^- D0 t. ]' a* K- q
编辑切换为居中
+ `6 e7 T6 g0 `5 I3 p: \添加图片注释,不超过 140 字(可选)( U k/ b. D3 J
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。
' u0 k) ?. G- {执行编译命令,生成新的烧写工具:! k* @ w4 Q! C; f
5 u ]" \7 ]0 a" \ [
![]() [backcolor=rgba(18, 18, 18, 0.5)]
3 o7 n' }( H& m/ _1 a7 a! J! f) B
编辑切换为居中9 O) _, c- z( `
添加图片注释,不超过 140 字(可选)! i9 H6 b* h4 W- c
使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。
+ ]% z- Q0 f% S+ z: u' U0 [% ^( ^
3 _) R5 N# L! {) p) N! _进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。2 z8 d4 h- ]+ g( E* U
注意:8 L0 H6 P0 E/ g' s+ { m( F
' a+ \9 r0 F, Y9 ^
- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。1 I2 y6 x V3 k9 C& v
上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。3 L, a5 z" {7 ~/ m0 ]6 W
当然,只设计了一路PCIe的情况也需要注意:( B! b+ j! f% N9 e
! q0 R$ f& @0 O- d# W9 k: R
如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
: e( |+ B' m/ O, R+ Z; J+ O3 y8 E. r: K' u. D9 `" P! M6 i2 N' ^
如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
9 n! a. d# P. \$ J
, h! L' C' Q- B8 A& O* b以上就是OKMX8MQ-C平台目前针对底板去掉PCIe存在的问题提出的解决办法,可供大家在设计i.MX8MQ的底板时参考。0 E; H1 I- [0 m/ |2 s
! d& x7 b- {. u3 U
7 s8 @( j7 e8 [' `) A |
|