|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-9-15 17:54 编辑 M$ H1 o3 x. r; j* Y" `6 e
0 q/ c7 [# N- S
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。
! H" I* X \6 L4 g6 M' Y
$ M7 K. o( W1 q, m很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。
, ?/ W X, E6 `% d% G今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
# g8 z8 W+ z$ t& l9 |$ o" Q1.“使用出厂镜像启动时发现无法正常启动”, `5 b# i' I, M( R, T% W2 a
问题描述——+ p* k1 k0 b. t/ i
6 E' x7 J+ Q- U& z |客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:
; f+ S- l7 o% p8 C2 |8 K$ ~2 o
4 `) }: l4 ?9 n$ t- @( E0 C2 x- g
( U! ^* `/ i1 u& Z1 t0 x& J
7 W" B/ ^2 \; ]/ K
6 X' n5 n8 h; {6 E9 D![]() [backcolor=rgba(18, 18, 18, 0.5)] - F% Y' o; b6 c% B& v6 d5 d
# g* K: a: c' f, F0 D; ~
- \! Q1 m1 f1 p5 x
3 Q# G3 j) U/ o5 A1 R2 N. B0 e: c* z: W5 U4 V$ P. v8 J
编辑切换为居中
' k( \/ S2 y/ n$ N* Z/ r+ }! j
/ s) G5 i% k6 B5 A. a. p2 B- h4 Z, d' ]# ?: e8 r$ t
& l4 ?5 ?, H, k* v g6 K6 m
3 z; d% M# @2 E3 t
添加图片注释,不超过 140 字(可选)* x5 P( A5 ~; V* g: L$ g% p
/ z1 X r# D# k8 @产生原因——
& w* }9 K1 z% ^! I2 x4 w. v3 L0 S4 j2 S4 ^# u
PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
9 v; }3 v7 S9 Q7 n4 _9 o' j' U' a6 A& T% ]+ }
解决办法——
$ k" f+ D% r# j6 k( s( P' o3 ~9 M
& r# F* B( p1 u- m2 w* _% a2 y修改内核设备树:
" {3 J7 g2 v8 x7 J! X9 `' Y
. U. v; S3 ` F# C5 NviOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts1 U/ C& C; y* |8 |2 P
. Q( m7 H/ N" H" f: M& c, J- Z
4 R Y/ v3 F0 N: v
# y* D& v, w- e: ?: s' {% @- e6 l+ E& a/ v$ X' }+ }
![]() [backcolor=rgba(18, 18, 18, 0.5)] 8 V* B4 B p# }6 J" w. b
* Y9 H! p* T0 Y, W l* b7 ? m P) Z! p7 z6 b, X) s
! T& C% R* z" }9 S
- k+ g# C2 O) _/ y7 R% n; |
编辑切换为居中5 q3 i, u H! d- Q9 \2 F
添加图片注释,不超过 140 字(可选)
5 ~) x |+ S7 u& f3 m* T将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。* h* l6 G8 v5 Y' Z3 E" d8 J6 \
完成上述修改后重新编译并用新的镜像进行烧写。5 j2 y; h: j, K1 D" x; S
正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):# d" G2 y2 l+ h- e: ?0 r
2 x6 Z I' b" _0 k![]() [backcolor=rgba(18, 18, 18, 0.5)]
+ ^. U' }9 w y+ ^- l( {2 a: k) B: S$ O9 d
编辑切换为居中
; }0 I" r/ b- X4 P7 m* B/ p* u: l" R添加图片注释,不超过 140 字(可选)
: {6 h4 s2 o! v; j) |5 E注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。
: s W* }- h# M7 R& `1 T2.“使用TF卡进行烧写时发现烧写一半卡住”: \4 N& z+ f+ p) \8 Z S3 j: u
2 V# F" {/ Q; a6 p0 {问题描述——
- I3 w0 G2 R2 E5 ^+ y& ?0 S8 [0 u. ^8 \+ L- {
客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:$ L' i0 L9 J# o: q0 K- j2 _8 Z% c" t
4 c1 b& i7 G" P# K! H' j- q/ w# j
- s; O! {- \( U. J Q
* A3 s* X$ y5 V: [9 L
- S; }8 g3 P8 p* S
![]() [backcolor=rgba(18, 18, 18, 0.5)]
$ G$ u X; a2 [, M' V
" K9 X& k8 t2 t 编辑切换为居中: r9 K2 z6 S6 y/ P, x7 z1 h3 H
添加图片注释,不超过 140 字(可选)
4 _( Y" m% R, r9 n注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。
9 H& q) f$ N% @% k1 U8 i) w& p# r产生原因——0 z2 D& r; b. i8 H6 J- _" }6 D
( X. _7 a4 y7 ]9 p8 C9 W2 V4 S C烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。) w0 J+ W0 I; \5 F' {, M9 k
解决办法——
$ k4 D! {: a" @' j/ D# E) J
# [, i9 C% q2 v首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:
! \# i, a) }* ]8 C- T
7 A1 v. C9 B9 ]) V# l+ ~" s* H% A3 \2 f! Q6 L3 s& K
![]() [backcolor=rgba(18, 18, 18, 0.5)] 1 E( j' B6 E6 Y- u% Y8 f
! P: H$ q4 T2 x$ ~# j% O
编辑切换为居中
* d1 u; W( l* R( Q2 P添加图片注释,不超过 140 字(可选)( R- r! K( A( ~) n% a* V
用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。3 Q# B" c. N1 }7 K" F* e! i
执行编译命令,生成新的烧写工具:# E: R& q3 v5 @8 `$ G
* }" c7 g" Z9 v0 z0 z. Z
![]() [backcolor=rgba(18, 18, 18, 0.5)] 9 h# R9 }8 d; x" \9 j* F" O2 ]& y4 d
+ M; Y0 B2 a8 X2 G5 o5 `9 y 编辑切换为居中
( L9 ]7 t1 v, K+ `7 I, X添加图片注释,不超过 140 字(可选)) j$ i2 ~; J7 s9 ~
使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。
- G1 Q' }0 K. L4 m2 w: ~5 _. o, l, E* b
进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。, B' H3 w" y8 Z+ ~ e
注意:) w' _% r* T( X3 _
4 r% Y% K# T* T* E' q1 l- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。
/ ^& A* U; Y$ R$ [8 Y 上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。% W H9 Y5 h4 k$ p! N) a
当然,只设计了一路PCIe的情况也需要注意:
; P% B: W' p2 R8 T2 ^
# U% @! V7 T& ]! v: W6 F如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
7 ~8 M" g9 t6 i1 R9 [! e( ~; H' x- y+ S# |/ o% j$ R
如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
+ ]- I' R) j$ ?3 z/ a$ |& n, b) r% t: S
以上就是OKMX8MQ-C平台目前针对底板去掉PCIe存在的问题提出的解决办法,可供大家在设计i.MX8MQ的底板时参考。
5 k2 q+ J' A% }, O+ N' E) A! {8 g' L; V% |4 r6 s4 X9 T; z' [
. P8 h5 S" o0 l: E* \3 D' J
|
|