|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-9-15 17:54 编辑
+ q. A6 f; t m5 i, P4 D4 S6 C& I1 O" g( E
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。
- _2 H4 Z; o$ N) y0 j8 L# c3 M) N1 q _8 Q! f8 r
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。! p2 _ l) R9 f: O7 G. ?0 t
今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
# @2 t2 p8 D2 Q$ y& x1.“使用出厂镜像启动时发现无法正常启动”0 U9 a: J& N- U+ n
问题描述—— ~4 _- o! A9 L$ i+ J
4 {; V7 t* \' K5 s- r% c/ P! q5 q客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
" l" {+ }3 J/ l% S$ p+ h: D( A$ X( d$ W2 u$ K. l
, W6 D# e9 _6 N' O2 W4 |2 s
" V8 @3 j6 l. w8 H" c+ H- N3 x" u5 T* y9 ^/ \/ r/ X5 a$ n& Y
![]() [backcolor=rgba(18, 18, 18, 0.5)]
) v+ \4 K% V' A$ O2 l- e) F$ X( \$ C# p- o
+ i/ O6 B/ B( j3 k/ E; }( z( i
# z0 W5 ^) n" z' q; V/ A2 q
8 b1 i& L/ B. y9 y; d- A7 q编辑切换为居中2 L( ]1 x- j1 @' N5 _; J8 _1 t
& W# j$ ? _1 z+ t! ?
T; Q/ V) h& x+ P; v( c
, K( w. h, `7 S7 q1 A
) @& ?! z, A' Q( s" ~添加图片注释,不超过 140 字(可选)
; _( F! t. D2 i- l& k
( p9 z# J; l' z/ u# t( A产生原因——" K$ a* I6 V/ J- r8 ]
% y% ^! E# p# L( n& \! l* l4 H
PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
, r1 b. I/ x4 T. |2 T$ \3 E5 R% b5 M$ _, H1 ]
解决办法——
- E$ [% n m$ N& i! }3 D1 ~) k- S4 i
9 @( T6 {! E6 n8 g- A1 o2 [8 k4 {( L0 Z修改内核设备树:
9 f. L$ ?5 ~8 z' A2 [3 p
0 s7 u0 N1 q7 M& J* B3 s4 iviOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts
7 B6 l: P! K- D/ Z# n
- F7 Y5 g7 u) ^! q0 ?8 k' l% ]* e( G2 n& A+ m
2 ^+ J- I- J7 K5 ^& E' k1 E. ]& H$ x0 z; v: w
![]() [backcolor=rgba(18, 18, 18, 0.5)] 1 y# x2 L5 |# x+ s( S1 I; H
\* A- }# k c( j, O3 O
# ]+ n" |7 z4 I: ^, j( O
, Y# L9 x% Z( I% H5 l/ L
% l3 a6 p" b+ ~8 @: M( |" E- I* T编辑切换为居中5 l( m' `5 V) q7 G i& e
添加图片注释,不超过 140 字(可选)
# e; w: t/ X* @% M/ J将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。
P# r+ M' t. \4 a3 j" B- N完成上述修改后重新编译并用新的镜像进行烧写。
0 W0 Y; [$ Z: G: ]; [& K正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):; q' v8 M/ c5 t# x3 X4 E. `) \! @
8 }! s) M. F# Z0 T' v
![]() [backcolor=rgba(18, 18, 18, 0.5)]
: ?% M$ z" q; x8 F. e: p" W1 `' K
编辑切换为居中
" O2 r- A7 A9 u# v3 Y1 @9 q, Y% t. Y添加图片注释,不超过 140 字(可选)
& j8 x6 K3 W: g8 M注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。' b4 s. Z# {$ Z4 A
2.“使用TF卡进行烧写时发现烧写一半卡住”
, \5 o! Z( L4 {/ t0 r: c
: t ?9 T/ g) i7 K9 _) R6 e# }问题描述——. `4 t2 ` t2 _: \" B$ k) a5 x
2 e4 t6 {/ y( N. B2 X客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:0 c* Y h) U+ r P
" @! R* F& ~3 N) O, ]( i
, q$ O$ Z' J; o$ q
) ^9 C: c b5 d5 i
! b( J! T$ k! ]* A![]() [backcolor=rgba(18, 18, 18, 0.5)] & Q) N/ B) | t6 E
3 m! K/ M6 U3 B& [7 e4 R 编辑切换为居中( I, m7 b7 {2 i6 y
添加图片注释,不超过 140 字(可选)4 [ ]% H: O8 t$ l
注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。8 p1 p' x( q9 q7 R# X
产生原因——- T3 _: K' R. m" }. P
2 C( _& W2 o9 y( ~
烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。
7 p9 ?$ q4 Q4 O9 j# D+ h) }解决办法——
8 E/ I) l5 m0 u( z- O4 r, j
, ]1 h2 m5 n) a8 ~ s首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:& b) |! u; Z! Q% }) P: G3 _& Q/ m
; H& E2 w2 \- u0 p! n6 b" Z" D4 v8 l- ]# h# N# k5 G2 q* o
![]() [backcolor=rgba(18, 18, 18, 0.5)]
# H+ g% b. S4 j1 r% ^1 b
5 R2 B. Z, b$ ]/ o% Z+ O 编辑切换为居中7 S' J }4 o+ D6 ]. v* {% n! U* `
添加图片注释,不超过 140 字(可选)6 {& w* U* p; q' p
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。
& }1 q2 D( S9 d g执行编译命令,生成新的烧写工具:" q9 p! c3 I) d' G- }# m9 f& p# c
* b, F4 M1 E; E
![]() [backcolor=rgba(18, 18, 18, 0.5)] / w% p0 N2 l7 e- {" c
3 a8 E8 h" m* O( A6 ? 编辑切换为居中
3 a3 M. x0 c7 X1 P添加图片注释,不超过 140 字(可选)
$ x+ A! w0 h8 l; |5 W. Z使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。+ o$ f: t* m# y. u5 ~" V1 Z
1 e' C6 L& p& M W7 {, ~5 E/ o8 g进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。" ? _1 i0 v. }: g' ^$ Y# H9 j( w
注意:
5 g- t, e9 ]# I; ~# F4 A: G/ W% p; W; c# ?, S- h& u. T
- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。
* D( T. y& z# ^; V |# Y* w 上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。
8 ]# t) U; }. F& n! X' E8 z. g' _8 P当然,只设计了一路PCIe的情况也需要注意:) l3 x. j: r$ b* r2 l+ n6 y& p+ n
- l# m7 h9 g4 Q h( O" N如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;7 i5 I! \- z7 t# R* f* B' @
8 }6 W7 t* w4 U$ J$ O& r9 ^8 T+ N' N如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
' N* m9 \" K: P; _" j. X
, i+ ]$ t4 d+ g' Y" N# T. b" v以上就是OKMX8MQ-C平台目前针对底板去掉PCIe存在的问题提出的解决办法,可供大家在设计i.MX8MQ的底板时参考。" U, h- V/ z ~: F$ w5 w6 j2 K' j
: p- c, v, [+ {" u2 i/ Z1 j" t, w C, d0 B* n
|
|