STMCU小助手
发布时间:2022-9-30 18:13
|
1.实验原理0 J l9 h( |, x# D, J DSI(Display Serial Interface),是有MIPI联盟定义的一组通信协议的一部分,MIPI DSI主机控制器是一个数字核心,实现MIPI DSI规范中定义的所有协议功能。它提供了系统和MIPI D_PHY中间的接口,允许用户和符合DSI的显示器进行通信。STM32MP157A系列芯片集成MIPI DSI主机控制器。 MIPI®DSI主机包括内部连接到LTDC的专用视频接口以及一个通用的APB接口,可用于向显示器传输信息。8 M' o) H8 s' C: ~
, q. w, Q& n e- t FS-MP1A提供两组LCD显示接口,分别是RGB和MIPI接口,本节介绍如何在Linux中完成MIPI LCD的支持。
' r; n, h ]% U5 I( ~ 上图为MIPI LCD的接口,接口信号线分为两组,分别是由DSI_D0P、DSI_D0N、DSI_D1P、DSI_D1N、DSI_CKP、DSI_CKN、DSI_TE、DSI_RST、LCD_PWM组成的LCD接口和由I2C2_SCL、I2C2_SDA、TP_RST、TP_IRQ组成的触摸屏接口,本节介绍LCD的支持。! R9 f0 R' ]" g; x* `# w9 Z9 U2 B 3 ]2 B6 ~1 ?1 I& _ DSI_D0P、DSI_D0N、DSI_D1P、DSI_D1N、DSI_CKP、DSI_CKN是DSI-MIPI的信号线,DSI_TE未使用,DSI_RST是LCD屏复位信号LCD_PWM是背光控制信号。! ^8 l9 k9 W8 F; j MIPI LCD接口管脚对应关系:5 v B% v! Q0 V ! x) M0 D) e7 B% [ P' v
. F; ?$ J& ~* d* o2 _8 t
+ [8 u, R5 s( [: P
0 _. s* O3 M) a7 _6 v 1.PWM设备节点; c( O. h3 v/ v) x/ b+ P g 1 e" o$ f; r9 ] 内核中ST对STM32MP15x系列芯片的设备树资源了做了定义,可参见: 4 ^/ F8 g. {& B1 c% I arch/arm/boot/dts/stm32mp151.dtsi+ [0 j8 R9 p9 S$ g6 n0 J% t stm32mp151中timers2定义如下: timers2: timer@40000000 { #address-cells = <1>;8 [! i& l) ?2 _$ q9 i$ k, E0 | #size-cells = <0>;/ q: W7 [: ]& L/ ?) X ; h9 r' H1 A7 }, | compatible = "st,stm32-timers";/ d2 [% y( L# H& v : ?0 v$ o/ Q2 Z# ` reg = <0x40000000 0x400>;+ T" p# m5 @+ V9 V4 M; N- B1 ~ clocks = <&rcc TIM2_K>;4 W% ^$ x2 z/ L: x& ]/ `$ `9 k $ k# H6 i" [, S$ N5 G' b5 i* L clock-names = "int"; dmas = <&dmamux1 18 0x400 0x80000001>, 4 r7 H( z$ W3 Z! l8 r4 p <&dmamux1 19 0x400 0x80000001>,1 ?9 F& d5 S/ {, s- K% ?( f/ N <&dmamux1 20 0x400 0x80000001>, ) m$ K+ J* Y+ J7 B7 H1 i <&dmamux1 21 0x400 0x80000001>,( m2 M7 E3 d$ F <&dmamux1 22 0x400 0x80000001>;# k. Q) F: N7 Q5 r - d& ~* d- [/ Z! O7 A& ? dma-names = "ch1", "ch2", "ch3", "ch4", "up";4 o. l* F: N6 R( X3 E* | 2 n2 X5 D6 B: |+ @; {+ o! O, G3 Q. } status = "disabled"; # {! d* a! p5 ~2 |" |. k8 q& [ pwm {% L- ~* k( ~* e/ X8 j8 i# A compatible = "st,stm32-pwm"; #pwm-cells = <3>; / u- x* N* q+ z/ F# ] status = "disabled";- _. g& \3 ?1 i$ I+ L \ 7 U. g' Y! N+ L I5 G }; 2 }3 ~8 g4 ]. I; x6 C/ C0 k timer@1 { compatible = "st,stm32h7-timer-trigger";; x1 I6 m7 }& k. d- | 8 W0 [; D. i6 g% b3 R3 Z reg = <1>; ( V0 r0 k" |! @' Y status = "disabled"; }; 5 A3 ^1 j' d) X( A! P: I counter { compatible = "st,stm32-timer-counter"; 6 i' m: W- x2 z/ _2 @$ X/ J status = "disabled";! m" v; \( O; F5 M* x! E- G$ N " S$ }2 A! f0 ~( N5 R };) o2 `" L# C6 ]" L) s% j * [; G7 E% i- N0 ]4 H# } }; 上述代码只对timers5做了基本的初始化,并没有针对不同的硬件设计做适配,所以需结合硬件补全设备树节点信息。- {# }" P8 q% m' Q$ O$ k ) V4 q$ `+ Z9 t0 y( `( K T 参考文档或stm32mp15xx-dkx.dtsi对于i2c设备节点的描述,增加timers内容如下: &timers2 {) z7 `7 v0 L: L; t2 E( \ /* spare dmas for other usage */ 2 H: y: }$ A4 r /delete-property/dmas; /delete-property/dma-names; status = "okay"; pwm2: pwm {* `5 F: A1 u- E- e; K" N# X5 | * I0 ^* y2 E' U2 `$ o pinctrl-0 = <&pwm2_pins_b>;$ Y8 @' a/ P& ^9 l. z' M- Q pinctrl-1 = <&pwm2_sleep_pins_b>;: i# c4 I; z9 x) { pinctrl-names = "default", "sleep"; #pwm-cells = <2>; status = "okay";9 L" ]4 T" P+ w1 m, Q h! _% @ };( i, V* K) w0 V, m( q9 r" _ timer@2 { status = "disabled";; h! j( |6 n3 u, w- s0 {$ X }; 0 V( n2 S* W* k* t$ E' m6 B };2 k8 D: O8 Z4 V/ n2 g& Y stm32mp15-pinctrl.dtsi对于pwm2的描述与FS-MP1A所使用管脚不一致,所以无法直接使用,需参考其增加如下内容:& Z. A% e# _1 @3 n' _2 c : U/ Q1 V1 Z3 P# M' H- A pwm2_pins_b: pwm2-0 { 5 s9 o9 ^) ^0 p# N! P1 h4 q4 K2 H# c pins {( w+ A. z$ b5 E1 S! T; } 4 m1 T0 J; ]1 Z$ e8 K2 t+ p+ R9 \+ x$ K pinmux = <STM32_PINMUX('A', 5, AF1)>; /* TIM2_CH1 */% J6 x- f1 {8 [* S0 m- W bias-pull-down; 1 Z+ i4 N" u. s, @6 i/ S drive-push-pull;+ p+ Z' M1 Z7 w& F4 _ ' H& ~' t! m# Z6 {# T, ? slew-rate = <0>;" W6 V4 I3 V/ A# V4 a* @3 ? };- Z7 C2 J& {( a S; I }; * s& W+ @/ [7 Z8 W5 {: F pwm2_sleep_pins_b: pwm1-sleep-0 { $ ]: C8 o. [( C8 q pins { W! O. ]) W+ F6 m$ w" d d+ K$ y! ]& o% m0 C! s0 t pinmux = <STM32_PINMUX('A', 5, ANALOG)>; /* TIM2_CH1 */; }0 I7 m9 t; H. P+ |4 j( z8 Q }7 k7 T/ D# @0 W, O$ B/ O }; ; P v; X$ @3 S0 S }; 2.背光设备节点1 \" C% W( {1 C. F9 r FS-MP1A背光可以通过GPIO驱动也可通过PWM2的通道1驱动,可以对比参考文档或内核中其他设备树关于背光的定义。 ; H% N9 `$ ?- v' _! Y t8 U GPIO驱动背光节点内容如下:3 X! W8 ^( A i6 E- R' n! }3 M panel_backlight: panel-backlight { % `+ \. f# q* _* n compatible = "gpio-backlight";$ g5 N$ L" \5 l- g. G / V( y# C/ H0 v/ D. Q gpios = <&gpiod 13 GPIO_ACTIVE_LOW>; ! z, A R. B$ t default-on; ( A C- }$ ~/ Y' f status = "okay"; };* Z: b1 m) i& t; i 6 L& n, `, W! _! b) y! w/ \* { PWM驱动背光节点内容如下:8 ^0 w5 g. n9 S0 ^% G0 y panel_backlight: panel-backlight { compatible = "pwm-backlight";5 g# ^9 U. O) w & @4 I' g# ]8 }) N# j6 _4 \ pwms = <&pwm2 0 5000000>; + }% O4 |) y! ?2 P, N g brightness-levels = <0 4 8 16 32 64 128 255>; $ q5 \4 W) |0 C* | default-brightness-level = <6>;8 V) F, w. ^, P+ ^, u: G9 h status = "okay"; 9 S+ L, X" _" _6 \ }; 3.LTDC设备节点- P/ r) e" l4 n7 T! h5 d 由于前面章节已经对LTDC做了讲解,并且已经增加了LTDC的设备节点,本节只需在原有基础上增加DSI对应的数据通道即可。 <dc { 9 N' }0 R' k- B status = "okay"; port {1 Q. T) z! {0 N- r9 {9 l #address-cells = <1>; #size-cells = <0>; . Z6 e( R4 D: |# q3 R ltdc_ep1_out: endpoint@1 { reg = <1>; 1 y, _/ n% h" t; V remote-endpoint = <&dsi_in>;- y9 p2 m$ _' G6 Y; T7 q1 z1 @! z$ a }; ) M# d. G9 R1 ^& e };, P/ B7 o9 i0 D; L* [- _ 3 L) I9 C+ L" i& { }; 4.Panel设备树节点 结合参考文档及内核中STM32MP157其他设备树文件,Panel设备树节点为: panel: panel@0 {0 ?1 k& b9 V8 ?; F6 B* | compatible = "sitronix,st7701";$ U. \! |- s2 x( F, B; U " | |2 o" N" l6 l0 |% B reg = <0>; t/ i/ M5 N" N3 J& p! D/ Z6 i / |& q( ~8 O* L+ T; R* S7 r reset-gpios = <&gpiog 9 GPIO_ACTIVE_HIGH>; power-supply = <&v3v3>;+ v$ \" H! ~5 `. S status = "okay";; A4 E# G: \) H& J- U7 A% X1 G, t port { " m, @! U+ L, u/ B panel_in: endpoint {5 k( Q; O( V* i, O* w remote-endpoint = <&dsi_out>; };3 ?, K9 k- l: o; [+ U };( _9 L/ i2 ]% S5 N, I V }; 5.DSI设备树节点& T6 y, H* x* x& Y! ? ; G0 ]9 h1 p7 J" v. R/ O3 I1 g8 N 内核中ST对STM32MP15x系列芯片的设备树资源了做了定义,可参见: * |" l: e4 P# E' b4 c arch/arm/boot/dts/stm32mp157.dtsi & U# W$ Z @% d# C# P stm32mp157中dsi定义如下: dsi: dsi@5a000000 {; y Q% O$ L8 J1 I/ R' p1 A compatible = "st,stm32-dsi"; ! `3 ~- v! q, `0 p reg = <0x5a000000 0x800>; 2 w' J9 v) ~. [) F: b( ` phy-dsi-supply = <®18>;+ N$ N4 D& s5 E& A2 b clocks = <&rcc DSI_K>, <&scmi0_clk CK_SCMI0_HSE>, <&rcc DSI_PX>;& [) q2 m, W; @" f# n3 h0 p) A + Q- ~) l- ^9 C clock-names = "pclk", "ref", "px_clk"; resets = <&rcc DSI_R>; # n; E) N/ d2 x8 b reset-names = "apb";, I9 s) h' S" l# S0 \+ E0 g" b% `3 y status = "disabled";$ r* C8 t7 ^- {0 _5 |* Q };3 x8 \1 z( ?" _2 H ?. L 上述代码只对dsi做了基本的初始化,并没有针对不同的硬件设计做适配,所以需结合硬件补全设备树节点信息。补齐后内容如下: ! q0 C) l! L' Z' { ] &dsi {# F( o( ~9 X* `, I #address-cells = <1>; \: q) W3 z [3 {* ?$ P #size-cells = <0>;2 {7 y* M$ R r0 j4 [ status = "okay";* }; m' k% A6 l' N* @4 f ports { : J w6 f$ i8 q6 `' {7 b #address-cells = <1>;& b5 O: D: q) _5 U- ?+ w% n #size-cells = <0>;/ v) f* s/ ^% y0 z: Y" r0 E4 ~ port@0 { ! g; G3 x8 V7 G) X reg = <0>;" e1 U d7 C* M" J! F! F w; m# i N. [7 r4 w) ^ dsi_in: endpoint {3 ]% X7 I* ?0 E; L b$ A 9 B ~2 h$ Q& n4 t, I remote-endpoint = <<dc_ep1_out>; . b1 R5 B$ }, i };1 u5 l- B. a! P& I }; % k" V/ C _" J/ X3 V port@1 { / m o9 q& ~ @0 ?% K+ c reg = <1>;2 e' [5 d/ W& B0 p$ [ dsi_out: endpoint { 0 f/ g7 r& C$ j! B3 O remote-endpoint = <&dsi_panel_in>;( s D7 g& v! h( M: ?" n };9 @9 z( f8 x" N3 I0 w& [: d5 u 3 ^/ X* j6 g% [7 l- I4 ?, ? }; };7 |0 B- M9 x( O# e! y% N& ^ % l$ {5 w: M- f9 D panel_dsi: panel-dsi@0 { compatible = "sitronix,st7701"; - C# m d5 S6 [( M# Y reg = <0>; ; B( R0 e. r# [4 L reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;) A# k1 J5 s0 q$ ~, C backlight = <&panel_backlight>;% n/ M( T$ \; p \ ; Z R G7 Q! L: } power-supply = <&v3v3>; status = "okay";, T4 k0 l! N( D4 ~; u' W# r / ~$ u9 S, q5 O- ] port { dsi_panel_in: endpoint { remote-endpoint = <&dsi_out>;3 v! X& O. K) G7 G$ t ) u i; G5 ]0 i8 E# e$ U: v0 Z };! c' g3 R& V- X" [ 8 \7 k) Y2 m0 u/ u' p4 W };0 y9 o3 l, `- l . L3 v1 s; g4 x# S' J5 P };, L N6 R( {# [2 y7 h }; 1 d8 f7 A$ t, L, s) Z 2.实验目的 熟悉基于Linux操作系统下的MIPI-LCD设备驱动移植配置过程。7 x; L+ c' d/ a- n2 B 3.实验平台 华清远见开发环境,FS-MP1A平台;! R9 h8 B! K" F* ^ * v6 G/ Q( V5 w* j2 d 4.实验步骤 1.导入交叉编译工具链9 m4 M0 X! a& f. _* w linux@ubuntu source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi2.添加MIPI-LCD驱动 FS-MP1A配套MIPI屏幕主控芯片是st7701,内核中并没有提供其的驱动,所以需要移植st7701的驱动2 t- }) I- |/ H8 b 将下的panel-sitronix-st7701.c复制到内核源码下的drivers/gpu/drm/panel/目录下。 d- Y1 ?7 V9 ^( J$ V3 n7 U' D linux@ubuntu $> cp panel-sitronix-st7701.c drivers/gpu/drm/panel/7 ]. N& z# D. u 3.添加pwm2内容 修改stm32mp15xx-fsmp1x.dtsi,在stm32mp15xx-fsmp1x.dtsi文件末尾添加如下内容:% F$ O) i! B+ R 3 `0 t8 L) o. @& G/ ~. u- | &timers2 { /* spare dmas for other usage */ /delete-property/dmas;1 W% M: e5 w. ^& V2 [+ V- R% R$ M /delete-property/dma-names;5 B9 M0 {2 u, }8 y! `) k % ?8 z' k6 z, W8 j1 A. g+ J status = "okay";8 c% ~9 T5 Q3 u7 M) @) O pwm2: pwm { ) V& c c. M' ^* J6 v& j, M pinctrl-0 = <&pwm2_pins_b>;; A) s- @2 u) T+ E& D% f 2 {$ q% ^( d }* {, Z pinctrl-1 = <&pwm2_sleep_pins_b>; ' {$ A6 Y3 _, } pinctrl-names = "default", "sleep"; $ O6 W% c E# A- y1 D #pwm-cells = <2>; ! \& J$ a* y2 f% K: H' j status = "okay";. ] K+ ~7 _, r- \/ O! i3 ~* s };" F9 |3 P! V7 C! W 7 D. v5 ~8 B6 D: Q! M, _ timer@2 {% r! l/ I2 s9 I+ } status = "disabled"; }; `* G2 T) x+ V) M5 L& H / [7 J7 M( D3 f/ m( o3 ?/ A( @ }; &pinctrl { , e0 |% N* y# ~6 Y% L pwm2_pins_b: pwm2-0 { pins {. O8 N0 U7 R* ~2 } 8 o0 J9 P5 B, N) O" U* q: G pinmux = <STM32_PINMUX('A', 5, AF1)>; /* TIM2_CH1 */) l$ p; b% x" q+ l% [; K5 s) U 3 G/ s' R. A6 v; ~0 z7 H" o bias-pull-down; drive-push-pull; slew-rate = <0>;' X6 _: |; N# [& I6 w 0 m1 X3 [# `" ~, U3 e0 w }; };/ x5 r M8 y( Q) I2 _( ` ; b# m0 t$ J& e. f pwm2_sleep_pins_b: pwm1-sleep-0 {) s7 q( J* T" q+ n1 d y% | pins { & I" _$ X5 a S pinmux = <STM32_PINMUX('A', 5, ANALOG)>; /* TIM2_CH1 */ }; }; };! @! [1 a! [0 f5 y+ q : h3 Q9 J& e# r8 d" l5 ` 4.添加背光内容 修改stm32mp15xx-fsmp1x.dtsi,在根节点中添加如下内容: " v8 o6 B: o. Y! g6 C, { panel_backlight: panel-backlight {' f& @! N# t# n! ] compatible = "pwm-backlight";! c. H: d% i( L; B3 M9 Y9 p pwms = <&pwm2 0 5000000>; 7 F2 _& V, r5 K/ p* E T) }( q+ c. ~/ @ brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <6>; status = "okay";3 ^: N0 f V8 j' B };5 r$ y0 p% u) |! ] M1 c/ O! m q9 X" V ) F! Y9 l0 K# v9 Q! k1 Y3 U/ v 5.增加设备树文件* y4 C$ n6 ]- i7 H4 d 由于MIPI LCD并非FS-MP1A必须配置,本节增加一个设备树文件,对应增加了屏幕的设备。 在内核的arch/arm/boot/dts目录下新建文件stm32mp157a-fsmp1a-mipi050.dts文件并添加如下内容: # ?& f$ j7 S. R5 r #include "stm32mp157a-fsmp1a.dts" ) k8 V1 X6 |8 {: S5 X( s1 ~& R / { 2 I! E4 p2 c1 B model = "HQYJ STM32MP157 FSMP1A MIPI Discovery Board"; compatible = "st,stm32mp157a-dk1", "st,stm32mp157"; 0 I Q+ f; Z8 ]0 ~) f };; I; t/ c+ t$ i+ C 由于增加了新的设备树文件需修改arch/arm/boot/dts/Makefile,在文件中增加新的条目,红色字体部分为增加内容 " I% p' w0 v# R3 t7 t/ V6 y dtb-$(CONFIG_ARCH_STM32) += \) o2 S9 F5 _& Y ….. stm32mp157a-dk1.dtb \ stm32mp157a-fsmp1a.dtb \/ K$ ]- s+ Q! Y$ e j {9 l2 | stm32mp157a-fsmp1a-mipi050.dtb \ U. `; D" ?. L- F7 f stm32mp157d-dk1.dtb \ 7 u* W/ u- L6 V/ Q4 `* V 6.添加ltdc内容8 P8 [: U0 U: J( r0 p8 _ 修改stm32mp157a-fsmp1a-mipi050.dts,在文件末尾添加如下内容:) E" B. _% G8 L- m* s/ r& e' y! C <dc { status = "okay"; " ?% @3 I' x) b( ?/ S5 d port { #address-cells = <1>;; N; b; z& U. V & q- J. J! k% V: a K& ~$ u #size-cells = <0>; $ j( @ t2 O% | | ltdc_ep1_out: endpoint@1 { 0 H1 X; I8 I+ w8 i reg = <1>; 6 N' X7 E" T# Z/ J2 V( Y remote-endpoint = <&dsi_in>; 5 U3 n z+ W) n' { E M1 O }; " W5 {! e$ P/ F& T" v };6 j; H$ f( L: T q# [/ ^ };. ~8 G/ v; Z, e' f 7.添加dts内容 修改stm32mp157a-fsmp1a-mipi050.dts,在文件末尾添加如下内容: &dsi {' ` E8 Y# q4 L/ @; n0 K6 y #address-cells = <1>;, Z% o0 w' V' i5 G #size-cells = <0>; status = "okay"; : m0 E+ w! ^ e& {0 L0 f" r ports {6 F% P! f, [1 i1 O3 c7 k! Q" V 5 K2 |: `' o6 x" C" b# y) s+ M #address-cells = <1>; % u V+ H$ c9 K: u0 i9 F! v9 f #size-cells = <0>;% E) P2 B, T# x) B! O! J: b 2 V/ S; i; V+ t: u+ P, D' O5 A port@0 {, A4 B. r) {' X. f' } reg = <0>; dsi_in: endpoint { ! ~! F+ h' t0 o- h' G5 x remote-endpoint = <<dc_ep1_out>; * G" P6 @$ W8 y$ l3 I; g+ O };* Z9 k* R5 p8 n- ~3 v };/ ]( o( s' F3 h8 F7 e: }- ^/ C. R7 ` 5 ^( z3 N. l& C" v6 T port@1 { ( s0 T. B0 o8 K" k! X! v2 @; y reg = <1>; dsi_out: endpoint {( b* |# u7 x. z* g/ P0 @4 D3 p. O- ^ ; h( ^2 R+ y }3 ~; K remote-endpoint = <&dsi_panel_in>; ( a$ Z% {, }$ } }; }; R5 i6 S9 {& ^. d8 n0 D5 o% z }; 2 A. c6 f# F7 d& w$ ? panel_dsi: panel-dsi@0 {8 R. J% R, W% R c) _5 u 6 Q# f; D5 e d$ a) X compatible = "sitronix,st7701";4 @5 {0 T5 v( e" E( r: R: s reg = <0>;# q* @# z0 Z! i! U3 i3 O* S0 d% T/ a reset-gpios = <&gpiog 9 GPIO_ACTIVE_HIGH>; power-supply = <&v3v3>;7 l, o. S/ e0 d+ Q- _ status = "okay"; port { 0 Q; ]) Y, M( Z( ~ dsi_panel_in: endpoint { remote-endpoint = <&dsi_out>;2 ]& ~# N4 C2 C }; }; }; }; : {( j# ?9 ]. z& W/ H 8.配置内核1 L& M5 U4 R6 L, H) }8 U1 Z 配置内核支持st7701,并列出主要选项,如下:7 n4 z( I! Y! K( w3 c7 d9 K linux@ubuntu make menuconfig. g5 k4 u; ?9 M6 z: c% x1 V6 X Device Drivers --->3 @+ c+ e4 o/ A, ~! | U' P % s& \/ w, ?. @% |( k( t) H. [ Graphics support --->1 ~% h+ J* ^5 M" A. c3 ` & K+ g9 f0 F5 ?! b4 `9 Q <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> <*> DRM Support for STMicroelectronics SoC Series ) T& \$ X( o( { <*> STMicroelectronics specific extensions for Synopsys MIPI DSI Display Panels ---> <*> Sitronix ST7701 panel driver: A; h% v# q u6 D" S( I1 ` Backlight & LCD device support ---> <*> Generic PWM based Backlight Driver0 g7 j6 v1 E u/ _ <*> Generic GPIO based Backlight Driver! y: k8 B; _, m% M3 k. v 9.增加启动项* J' R' D' ^0 O, Y! b$ I. N2 @4 r 在虚拟机/tftpboot /tftpboot/pxelinux.cfg/01-00-80-e1-42-60-17末尾添加 LABEL stm32mp157a-fsmp1a-mipi5 x2 C/ g1 s9 y* [7 u KERNEL /uImage; G3 M/ l/ s4 m& i4 k FDT /stm32mp157a-fsmp1a-mipi050.dtb! i9 c* T# M' N, B: r* F! @ APPEND root=/dev/mmcblk1p4 rootwait rw console=ttySTM0,115200' K$ c& |0 i2 S- `, h, T g' K7 O' l5 w9 N 10.编译内核及设备树 linux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040( }8 N) `4 h* z 重启测试* W& H$ X" H, | 将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,设备连接HDMI显示器,重启设备后查看/sys/class/drm会多出HMID的信息,同时显示器会有显示。+ I8 u2 ]6 W% _: ]( s ————————————————3 K. I$ D6 d. l3 S3 V3 w+ S0 o 版权声明:华清远见IT开放实验室- l1 Z4 h1 z# j4 U ' v/ l F' X7 ~ |
STM32MP157双A核Linux + 自研RTOS双系统镜像免费下载
扩展STM32微处理器,实现高性价比、低功耗和灵活性能
STM32MP1 自举程序编程:USB DFU/USART 协议全解析
兔哥心中的ST中文论坛
我心中的ST中文论坛
STM32 开发者指南:ST.com 全新 MCU 产品阵容视觉布局深度解析
深度拆解 STM32MP1 Boot 链路
STM32串口自动识别波特率的原理
STM32MP135 MP157 MP257 CoreMark移植&&跑分对比&&多核心负载不均衡问题排查与解决
STM32--STM32 微控制器详解
微信公众号
手机版