|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2022-9-15 17:54 编辑 0 e. O7 |% N1 G
; A9 k5 _% X2 k ?0 ]
在飞凌嵌入式OKMX8MQ-C开发板上有两个PCIe接口,对应着两个PCIe差分时钟,两路PCIe分别用作了M.2接口卡槽KEYE(P37)和KEYM(P34)。3 F& B8 }1 ?. n" d0 O" i- m
1 d, u. I; D+ f, p2 _
很多使用FETMX8MQ-C核心板的用户在自制底板时会不做PCIe部分,故而不会焊PCIe的差分时钟,等到使用出厂镜像验证底板时发现会出现无法正常启动的问题。/ `7 Y' B$ l9 c
今天,小编将总结常见的2种自制底板无PCIe导致的问题及其对应解决办法以供大家参考。
! s8 i1 c* \5 O+ L1.“使用出厂镜像启动时发现无法正常启动”9 E: r1 P% l( k$ D) V
问题描述——
5 }" `7 |' }8 t. _' r. u! l# K& ]1 K1 K( _6 R# N. ]
客户自制底板去掉PCIe烧录出厂镜像,启动时出现的卡死信息:3 F5 U) w/ {5 b( a
% k, ?- ^2 F N/ u4 f# k1 Y/ ^4 |& O+ ~' j( ~# b& J" J% @
0 @5 E8 f+ a2 _. L& `2 J( y# Q
4 M/ q+ }, v! ^4 b% |" f% d* P4 }( H
![]() [backcolor=rgba(18, 18, 18, 0.5)] . X, ]3 h* F. ?1 I! D# t
: Z) }/ W6 J; r' f0 s6 E" D" _
; u) i$ P" o* O& l+ j
* |% K4 k& {$ c5 a' B1 J, T- j; X
K. H. ?0 U X; c7 t编辑切换为居中! g9 _, d9 w2 y- n4 K8 H
9 Y# F% m+ R( j* _0 \. A% |
: w. \" ~( O9 V; V6 ?
. G% s! V" A% s6 o: Z" ^! G6 S! |6 V/ Y9 p$ U8 i6 n/ W' \8 Y }
添加图片注释,不超过 140 字(可选)) t) C# { t* N0 N" F7 s
- I# P" _& V/ h% h1 T2 i6 K A* h7 S. @
产生原因——
, G8 T) t. s8 I% _, o0 b1 V+ S! g9 q! ?# |( Q, A; G9 f
PCIe影响了启动,需要在设备树里把跟PCIe有关的功能关闭。
. B, N( t, t9 S0 U( m/ ^+ E) V( X& n/ }4 u+ y+ G( \& z2 I9 x
解决办法——8 b. Z3 ?/ m4 Z5 \; l3 N
- Y; Q! A" }: V: D修改内核设备树:( M, j* I# E) e, n4 o% w
% C- n1 ?- u$ I1 s* M6 ^0 x0 `viOK8MQ-linux-kernel/arch/ARM64/boot/dts/freescale/ok8mq-evk.dts- _6 i0 L e% l
9 ~+ A+ M9 B7 Z' T
F7 T- L+ c+ ]8 A' R5 Z: l$ V
4 `& a. K! {/ X( K# [0 s
1 U* f- m# W) _) J
![]() [backcolor=rgba(18, 18, 18, 0.5)] + J$ [* U# \2 F, g0 I( \
- Z' f3 {; ? J/ m( \$ D # ~8 n d; C) [* [
+ v- W, a2 ?9 O1 z: Z5 ?2 L
/ ?% C6 T6 k1 p7 t* H& M% J编辑切换为居中9 h# D6 m) l3 e5 ?( O# K! T
添加图片注释,不超过 140 字(可选)! A7 ?: T8 ?6 n3 e1 `! j8 f$ Z
将设备树中的PCIe全部从“okay”改为“disabled”,重新编译。编译后会在/OK8MQ-linux-sdk/images/boot下生成ok8mq-evk.dtb。' X% T$ r, \2 \- X4 }
完成上述修改后重新编译并用新的镜像进行烧写。
1 ~9 |- d; ]2 J9 a: x& y/ ]. ]# s正常启动后打印信息如下(红框中是在上述卡住位置向后继续启动的打印信息):) R, p4 B/ c5 }. O4 f' g' S5 T" F
' ~. P( w5 _" h" c- Y' g![]() [backcolor=rgba(18, 18, 18, 0.5)] 7 j8 g3 H1 G1 H5 \5 |' w, |
; ^6 V7 j1 f5 V( U0 h
编辑切换为居中
1 m8 h0 O0 x0 I$ W# M添加图片注释,不超过 140 字(可选)
; O `9 U/ G$ l9 b5 j& t注意:飞凌目前提供的最小系统方案也是没有设计PCIe的,故用户如果使用了飞凌的最小系统方案,也需要按照上述方法进行修改。, P) v, b7 G9 N) o( P3 h9 A
2.“使用TF卡进行烧写时发现烧写一半卡住”( @# F* `; j9 J# D& B
: z' Y/ E7 b+ K7 x3 b; B1 j问题描述——
8 b: Q8 c7 G1 {+ v# P% N4 M9 `! A, V% M- t( u
客户自制底板去掉PCIe,使用TF卡烧写时看到命令行打印信息在下述位置卡住:; G7 [& ~3 C% p& L& c
& f$ h- r, @& B3 f( s" a
1 j( V; I6 F7 ^3 f8 @
7 p5 E7 b; z1 g d" {
. m: o# O6 h7 t) @6 T- U
![]() [backcolor=rgba(18, 18, 18, 0.5)]
6 J8 f3 ^* a. I9 c+ @
; S5 R& I: U; @' Z3 J 编辑切换为居中
' J! r% K6 Z0 j1 Y6 g. X) ~. Z! M添加图片注释,不超过 140 字(可选)- } D$ Q7 b% u$ i
注意:并不一定就卡在上述位置,但一定在上述打印信息附近,不会太远。
, m) b5 d4 V* B3 k2 J产生原因——
) N+ F3 N) l4 i9 x7 v6 Z9 F) b6 o" S- ?) y1 [! M
烧写引导镜像中的PCIe的启动影响了烧写,需要替换烧写工具中的内核阶段引导镜像。+ I/ ^, H2 G6 D: O) S/ }$ w0 y
解决办法——# N7 b: y. s0 P0 r. P! P
% n8 H0 {# f: w% M c# S
首先按照问题中的方法修改内核设备树并编译。进入“OK8MQ-linux-sdk/tools/update”路径,可看到该路径下有很多dtb文件:
- O* ^6 ?: T' R. I3 v; l5 k6 u0 H9 X$ e$ S, S( ^: r1 X7 N
8 F' `$ g. v, D2 B) T![]() [backcolor=rgba(18, 18, 18, 0.5)]
* D# F4 J' H Z8 T% R( w- B( q$ u1 a& J; R: V8 [
编辑切换为居中
& Q* P9 T) m) U) m) B8 i3 w8 h添加图片注释,不超过 140 字(可选)
b; D7 i, A* }# Z/ _& a用编译生成的“images/boot”路径下的ok8mq-evk.dtb替换掉当前路径下的ok8mq-evk.dtb。! n4 G1 c- X% Z! E3 |1 r
执行编译命令,生成新的烧写工具:
P# \& u. `" F0 k9 s& P3 B" f9 F
![]() [backcolor=rgba(18, 18, 18, 0.5)] ; _5 A+ [# {5 J9 Z; k+ m
6 d7 A0 E$ @5 H+ n0 y: T9 P 编辑切换为居中" K) Z( ?# @2 P- f
添加图片注释,不超过 140 字(可选)
, N9 p" V7 d: l8 Y, \" |( f* ^使用新生成的update.itb替换掉完成制卡后TF卡中的update.itb,正常进行TF卡烧写。& k! K# @2 W" s3 l# b2 }
: t( v3 I8 p! m) _
进入OK8MQ-linux-sdk/tools/sdfuse路径,可看到新生成的烧写工具update.itb。
2 \; U% y; I% J l注意:
, O5 H2 _! r" N' t4 @) D1 i; l; ?! t* V' Y# i% p9 i' h
- 我们的烧写工具部分源码是不开源的,若您确实需要做相应更改请联系您的对接销售,由我们帮您修改。
- OTG烧写不会因没有PCIe而受到影响。
: k6 @& d. \3 m, n: C% O$ s 上述的两个问题就是用户在自制底板去掉PCIe时可能会遇到的两种问题。
: O5 i0 S& E' ?1 o$ G当然,只设计了一路PCIe的情况也需要注意:; F2 E6 s: o4 ^6 i% H
Z2 v7 S, T, E$ I/ t如果自制底板只做了一路PCIe,只焊了一个时钟芯片,也是会影响启动的。那么也需要修改设备树,关闭未做出的那一路PCIe;
, f5 E1 |. O5 ]7 w! S6 H2 L8 B. h/ B8 S% R5 ^/ J
如果自制底板只做了一路PCIe,而差分时钟焊的不是与接口对应的,那在命令行用lspci命令查询就会找不到设备。
; O" ] ]3 E1 v s1 k1 g8 ?( }3 B& S8 Q) n+ S
以上就是OKMX8MQ-C平台目前针对底板去掉PCIe存在的问题提出的解决办法,可供大家在设计i.MX8MQ的底板时参考。8 t* Z! G, I/ |$ j5 f* Z9 [6 s
5 Y" k2 r- b* T x; s
+ t* J2 B/ g$ j& Q. G' e4 R
|
|