你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32MP157 Linux系统移植开发篇10:Linux内核网卡驱动移植

[复制链接]
STMCU小助手 发布时间:2022-9-30 18:32
实验原理
, M! q& x1 C0 s1 K- ?5 d; d& OSTM32MP157A系列SoC集成一个千兆以太网媒体访问控制器,支持RMII和MII两种标准的PHY,FS-MP1A设备上外接了一个瑞昱的千兆以太网PHY芯片RTL8211F,原理图如下:
% k* b) l4 T/ `1 L- a9 k2 `
: d7 h0 L" s) x fb8444371c403890e20ca26280e681ab.jpg , r  k3 I: Z4 L, Y5 F2 t2 c# m
. _$ N9 M  x+ t, _+ B
查看原理图得出RTL8211F数据管脚与STM32MP157A的管脚对应关系如下:( r  d0 C% A' v5 _) Y  o8 Q
U]J2_F36492~SGT0GYXVIDI.png
& Q, [% g$ ]4 u/ t) p* Y4 W7 Q$ V% N2 }. z1 ]- z8 [! X
1.网卡设备树节点+ [0 S  c0 m+ Q& Q9 y
* H( R, C: {4 d. _" H$ {% e! ~, l
内核中ST对STM32MP15x系列芯片的设备树资源了做了定义,可参见:2 S7 C. D. o9 S9 x$ w

2 w3 |0 y+ K- V6 j! ]8 ^6 M
  1. arch/arm/boot/dts/stm32mp151.dtsi. F+ u& e1 w1 W

  2. 3 L5 k' _$ A# b1 R
  3. stm32mp151中ethernet定义如下:$ l/ M+ O8 f6 i% ?9 Y: G; A. N% `4 c

  4. + G: V. B' Z: |6 z
  5. ethernet0: ethernet@5800a000 {
    " z7 Z$ R7 @" [( t

  6. 7 `$ G' }, s+ f9 c' n
  7. compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
    8 _$ b5 r9 h! G

  8.   O; Y. A, f4 j
  9. reg = <0x5800a000 0x2000>;
    ' ~+ E2 k7 N6 g4 |5 D  a
  10. / p$ C; s! J5 M+ T0 c; z9 C( v
  11. reg-names = "stmmaceth";
    / @$ `9 w) p+ K- d1 E) S1 c

  12.   W$ F3 c" B9 R! ~9 _; t6 _
  13. interrupts-extended = <&intc GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,$ Q+ S$ B  P. v. D# t
  14. + ]7 t8 }* _$ x! K
  15. <&exti 70 IRQ_TYPE_LEVEL_HIGH>;0 B, d0 [& U/ g! q( r! p
  16. ( Y6 E$ @. k' j2 O! p8 X" w3 n2 M
  17. interrupt-names = "macirq",
    + X. v  @* ?9 q

  18. ( v3 b- _4 q* [2 n( `: A
  19. "eth_wake_irq";
    9 F+ o0 l: r# n4 F' B& P. L$ i
  20. : c% n7 Q0 k3 L
  21. clock-names = "stmmaceth",
    # I6 H. d2 l+ p# k7 u3 [
  22. ) `- W% b0 W9 c, l6 X' v  o
  23. "mac-clk-tx",& t+ Y( }" P/ _" |0 P

  24. $ k3 a9 S: v( m
  25. "mac-clk-rx",% ]/ z: [1 ~: f6 z: b& S
  26. 5 i9 \- |' G# D. w% i
  27. "ethstp";
    1 ]/ H" T) {% Y7 I  @

  28. : j3 u! h$ b0 j; R
  29. clocks = <&rcc ETHMAC>,$ o, d  p$ _; G" X
  30. 8 z+ z4 w3 ?1 I3 X) Z$ @) c7 |
  31. <&rcc ETHTX>,
    . [% P  N; A; J: L, D

  32. * A/ q1 t$ X5 @. h8 r5 Z3 o
  33. <&rcc ETHRX>,
    & Q- Q4 j# C+ Y, K
  34. - y* ?, N/ b* h3 @* D( Z, f
  35. <&rcc ETHSTP>;
    ; j7 y, y% K6 U0 D- ?
  36. ' V. G3 ?4 \( U8 ^3 s
  37. st,syscon = <&syscfg 0x4>;+ b! f+ e7 W2 F) v6 ]0 x/ N
  38. 1 B! D: Z2 w8 X
  39. snps,mixed-burst;
    / ~7 i$ j2 A3 O1 Z% o, D4 G
  40. ' M* o' i! N* n6 c2 w
  41. snps,pbl = <2>;) F! i' B5 ~) E( r
  42. & ~7 L3 _4 m0 @" q7 z1 G% U' K
  43. snps,en-tx-lpi-clockgating;- Y. {1 p. j* r% c% f

  44. 0 G$ ~2 W# J- d
  45. snps,axi-config = <&stmmac_axi_config_0>;. ^3 D" M0 o( q  ?: ?

  46. 6 K: h* e: N0 B# \9 J' a' ]
  47. snps,tso;
    2 E! O2 Y5 A- p' L5 }" G
  48. ! z4 W1 {* G& y( `& v% `4 M
  49. power-domains = <&pd_core>;
    * U; T9 o& c4 F+ q6 J+ J& r

  50. % f7 O6 O8 E) \8 A  \
  51. status = "disabled";& B- i) w( `3 _$ Q- `! i- o& K
  52. 9 |. f' Y+ ], a. u. ^6 w$ _, t
  53. };
复制代码
  A" G$ \4 E2 D. G. z8 |
上述代码只对ethernet做了基本的初始化,并没有针对不同的硬件设计做适配,所以需结合硬件补全设备树节点信息。
7 `& H& F1 y! A6 U2 u& {- }4 ]# t5 S: U: H5 X
对照内核文档目录下相关文档添加补充相关信息,亦可参考内核中其他设备树文件中相关描述,比如stm32mp15xx-dkx.dtsi关于ethernet的描述符合我们的要求,内容如下:5 d! S* G' w, ~9 n0 C

' F" A& W0 {# V7 O- m$ k' Q
  1. ðernet0 {  X4 H4 \6 |/ |4 V+ A

  2. 7 V" V! ~# {+ T( f+ G9 t( {7 b9 s
  3. status = "okay";1 |9 P, X5 Y, |, i
  4. 4 P  O7 W& X  D  R( C0 q$ C' d9 h
  5. pinctrl-0 = <ðernet0_rgmii_pins_a>;/ K" D  s# ^$ A9 T" P3 u7 ~4 S' f

  6. 8 |2 _$ j, n0 q4 T5 m, z
  7. pinctrl-1 = <ðernet0_rgmii_pins_sleep_a>;
    ! o5 f" D# u, X# @$ {* x
  8. : k( L. s0 r& z5 G4 {
  9. pinctrl-names = "default", "sleep";4 [/ j$ v- q( `
  10. : B# f6 h# f. z5 s1 w8 m
  11. phy-mode = "rgmii-id";
    & g" {: g3 R( `9 m6 e

  12. 7 t! V1 Q% L$ e" r
  13. max-speed = <1000>;
    ; i" O# k5 w4 ?/ f3 O
  14. & k$ a6 s; R+ o
  15. phy-handle = <&phy0>;5 P+ @1 C; [( e% c% O" Q

  16. + `( Q) C6 w$ h2 z7 H8 ~  \
  17. mdio0 {
    ; e# i! ~; t: h1 g

  18. 6 c8 h$ X4 `  x. f) |
  19. #address-cells = <1>;
    1 M0 K+ k) `9 [
  20. & m) [7 Q5 R, ~' n$ a; F$ O
  21. #size-cells = <0>;  L0 m( i8 `" x* j* U% G

  22. ! A; m. S8 y+ ~3 j; e
  23. compatible = "snps,dwmac-mdio";8 Q1 f! N( G' j
  24. $ V% L1 A* @/ u
  25. phy0: ethernet-phy@0 {. K) V& n+ l; j# ?9 @  C  U; U' L
  26. , g8 X1 ]1 I$ m' f7 |, o2 r" S
  27. reg = <0>;+ t7 W% r3 d6 {. o" J$ R
  28. 5 f' K3 d/ n0 C! K; o! G
  29. };3 J5 H8 l9 U1 i" [3 `7 L

  30. ' q% R  ?4 U8 M2 w
  31. };
    , a( c" K% P, V4 x6 n
  32. , L( i3 |5 q$ }; D% u6 S
  33. };
复制代码
. V7 W  e- i6 x- y- U& T
1.管脚定义* d, d) z, T6 M+ s( Q, u+ ?6 d  ?& J* x
在内核中STM32MP1默认管脚定义在文件arch/arm/dts/stm32mp15-pinctrl.dtsi中,查看文件中是否有需要的管脚定义:
% X  L  @5 `- O) _2 T% U
0 T" q$ I! o* `  j: O- T查看后确认有ethernet的管脚定义,且与FS-MP1A硬件使用情况一致,定义如下:9 A6 A* X- o$ O: o/ D% x

5 [/ G4 `  T1 g% W5 O: K+ `
  1. ethernet0_rgmii_pins_a: rgmii-0 {% Z' {0 L8 ~6 T6 j8 g
  2. & e  P) X% F) @1 w* B! h
  3. pins1 {& Q7 B, g; I& C3 ]  M
  4. 8 @0 F* P+ W0 j
  5. pinmux = <STM32_PINMUX('G', 5, AF11)>, /* ETH_RGMII_CLK125 */: L0 D& I! \, ?9 h5 b
  6. 5 g. I7 B) _* c) V5 l+ y* t
  7. <STM32_PINMUX('G', 4, AF11)>, /* ETH_RGMII_GTX_CLK */
    + c$ J  R9 k7 c& s: r* C3 R' M+ R0 f

  8. 1 {( S& P4 n+ m  @8 }, i/ j
  9. <STM32_PINMUX('G', 13, AF11)>, /* ETH_RGMII_TXD0 */
    - q  ?# S) ^: C8 F: n; O

  10. 6 R8 d1 N; S$ N. a( A
  11. <STM32_PINMUX('G', 14, AF11)>, /* ETH_RGMII_TXD1 */
    ' I3 |1 C# {. _( }$ C0 g9 ?# C

  12.   f: y1 \' Z" j  i
  13. <STM32_PINMUX('C', 2, AF11)>, /* ETH_RGMII_TXD2 */
    # O7 b; }9 V4 ^3 m

  14. & z4 O6 M2 g! O$ R9 Z$ {5 \
  15. <STM32_PINMUX('E', 2, AF11)>, /* ETH_RGMII_TXD3 */
    8 }- `4 y* K; [

  16. 7 @" t# C' N9 z
  17. <STM32_PINMUX('B', 11, AF11)>, /* ETH_RGMII_TX_CTL */
    " S2 A" S4 D, d7 [+ p3 I5 i. j
  18. 8 v2 e  ~, }7 B) a6 U7 v4 C* K. I
  19. <STM32_PINMUX('C', 1, AF11)>; /* ETH_MDC */
    7 i) d1 _6 f$ r3 u8 L5 P0 O% F$ S$ P

  20. 7 x0 ~7 W/ ?: B3 v2 N6 I
  21. bias-disable;
    ; M4 \8 w# I' U/ `3 U9 o2 U
  22. 5 e' [$ X; ~; |/ @8 o1 [' j
  23. drive-push-pull;; z0 J" s$ x- _2 V: E

  24. 2 T8 M; ~0 y( q4 a4 F) b6 G, i
  25. slew-rate = <2>;" O; m( T, A& M  S
  26. ' q3 p% P% ^; N9 q. d9 d
  27. };2 ]! ?" a6 g. q, d6 c- ]+ T! W
  28. 3 T9 o! L4 }. N/ L$ G
  29. pins2 {0 h; o$ h/ O6 Y8 m5 `
  30. + ]. f( K% y9 [% j
  31. pinmux = <STM32_PINMUX('A', 2, AF11)>; /* ETH_MDIO */! D# y& }4 P8 Q9 j& T: N

  32. - b+ Q1 o+ U. y, r( v1 B- [" w
  33. bias-disable;
      l- Y: J! Y( O9 M! p
  34. / k/ K5 ?4 {" `. F
  35. drive-push-pull;
    6 B- u! u* h- V' V8 n8 \

  36. $ Q1 {, @$ n, R4 k2 z
  37. slew-rate = <0>;
    , `( p1 R# C/ R+ v$ i. @
  38. * ?. H; N; [5 d: x
  39. };% T" a# g% K+ v7 T% v

  40. % v7 Z  o1 r* r+ C" r
  41. pins3 {
      I! I" L) n! z8 D, r- I% b) ]- g
  42. & N4 I4 l2 k4 I5 i" o- x
  43. pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH_RGMII_RXD0 */
    , q! X0 l; p0 G- @1 e4 u

  44. ) L/ n' L/ }8 j" B- B
  45. <STM32_PINMUX('C', 5, AF11)>, /* ETH_RGMII_RXD1 */' i4 M& i' A. I% L0 }& N9 r5 V# x

  46. 1 A6 H3 e: p# B5 l4 x
  47. <STM32_PINMUX('B', 0, AF11)>, /* ETH_RGMII_RXD2 */
    & j- ^) r# z- I6 O4 z7 K: U! N

  48. ; ~- F6 D. n% s+ V
  49. <STM32_PINMUX('B', 1, AF11)>, /* ETH_RGMII_RXD3 */
    % |1 R9 _6 g. |3 ?
  50. $ j/ C0 j" O" A. a
  51. <STM32_PINMUX('A', 1, AF11)>, /* ETH_RGMII_RX_CLK */
    / m% V! Z5 f# t- l0 N/ E
  52. $ l6 ]8 p: Q+ v3 z" Z& O- p& _
  53. <STM32_PINMUX('A', 7, AF11)>; /* ETH_RGMII_RX_CTL */
    5 v9 Y( ?" S3 m6 f
  54. ( E0 z& n& R5 p# o* ]
  55. bias-disable;
    # ~9 p$ Q3 |8 ^0 \# k
  56. 7 l$ S8 J+ w: ^
  57. };
    " g% a& y5 p( n7 f4 B+ w
  58. 1 I! @. k  l& a4 r& E8 v
  59. };
    + F! d- h4 ~" I: c. S6 P$ k! M

  60. $ E3 W* g' T& K2 u  C
  61. ethernet0_rgmii_pins_sleep_a: rgmii-sleep-0 {
    ( I3 A: h+ P& j9 ?3 A0 ^
  62. 0 j( z1 {3 G. C, Y. S
  63. pins1 {% T) q' M8 @2 q
  64. 0 Q& r& h/ K' u* ]- S( o+ ]
  65. pinmux = <STM32_PINMUX('G', 5, ANALOG)>, /* ETH_RGMII_CLK125 */5 o' k9 j, C; z  _
  66. ; }8 R" i8 W$ l
  67. <STM32_PINMUX('G', 4, ANALOG)>, /* ETH_RGMII_GTX_CLK */
    9 ~$ a" t+ w8 Q6 y: c% @
  68. ! K9 w' j$ K4 Q& t$ l$ I
  69. <STM32_PINMUX('G', 13, ANALOG)>, /* ETH_RGMII_TXD0 */7 c. ~) i8 }! n+ i

  70. $ [3 z4 w0 o1 l4 q
  71. <STM32_PINMUX('G', 14, ANALOG)>, /* ETH_RGMII_TXD1 */" V& c  y: U5 h" n5 Z# x
  72. 5 h9 M4 l8 o7 K4 I; S0 w2 K0 B0 ?$ ?
  73. <STM32_PINMUX('C', 2, ANALOG)>, /* ETH_RGMII_TXD2 */
    5 J( ?5 Z( p& `/ @2 d* U# m2 j
  74. ; H6 R1 ]" r# ?
  75. <STM32_PINMUX('E', 2, ANALOG)>, /* ETH_RGMII_TXD3 */1 o% T4 `, I3 l
  76.   l' B5 R1 c" s
  77. <STM32_PINMUX('B', 11, ANALOG)>, /* ETH_RGMII_TX_CTL */
    5 J+ \5 |1 T& j$ P

  78. 3 B/ D4 d+ X% ?, H* ^& W9 g6 I
  79. <STM32_PINMUX('A', 2, ANALOG)>, /* ETH_MDIO */
    4 F/ N3 e4 z8 Z( E% ~; M5 V) U; |
  80. ) o1 i- j2 L( A' l9 j9 k4 \* O4 k
  81. <STM32_PINMUX('C', 1, ANALOG)>, /* ETH_MDC */2 b. _& ]$ A& m
  82. # k1 I5 X1 V$ S3 N
  83. <STM32_PINMUX('C', 4, ANALOG)>, /* ETH_RGMII_RXD0 */
      x0 k' d8 l% c" U

  84. 5 H$ }0 _; c; U: s
  85. <STM32_PINMUX('C', 5, ANALOG)>, /* ETH_RGMII_RXD1 */' n# F- p. ]9 N& G" q

  86. ( P' M& A5 i% m7 U3 B% r2 ]
  87. <STM32_PINMUX('B', 0, ANALOG)>, /* ETH_RGMII_RXD2 */
    0 H+ D) r$ l7 G5 k

  88. 6 D. B8 O6 f( ~4 O
  89. <STM32_PINMUX('B', 1, ANALOG)>, /* ETH_RGMII_RXD3 *// E& P, E% c+ s' e! ]9 D

  90. $ @6 q2 T7 p: g0 M+ r& o. G
  91. <STM32_PINMUX('A', 1, ANALOG)>, /* ETH_RGMII_RX_CLK */5 V' W# N/ [0 d/ o! H& f9 z3 }& C
  92. + ?$ n7 G4 b5 y  n- h3 |
  93. <STM32_PINMUX('A', 7, ANALOG)>; /* ETH_RGMII_RX_CTL */9 D6 s- Z% a( m% k/ s- U# z

  94. 3 H3 k; {, x9 p# {
  95. };8 s) q  Y; o# f/ h; p1 s

  96. ' R# W6 Z1 y9 j8 `
  97. };
复制代码
* _4 k6 {% J& R' b. T  x7 D
实验目的
* y- @3 A: M5 p$ G4 c- n2 ^熟悉基于Linux操作系统下的网卡驱动移植配置过程。0 E5 ?+ e( N+ [% x+ H% L0 l
) D. a: F) Y+ x2 ~3 p8 }/ y' `$ {
实验平台' t4 J* d' v6 [( T' g" N
FS-MP1A平台;
6 g, L2 Y& E' Y1 X- A! Z* e& s3 G0 y5 t% x* \0 o6 i: _
实验步骤! `7 X! z0 O6 R/ j- }
1.导入交叉编译工具链
0 V& R) q. y+ Q1 R, {6 Rlinux@ubuntu source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
3 u/ S3 e" ~% V5 |) Z' j1 i
& |# h9 ?- B4 s  q2.添加网卡设备树配置。9 P( S6 ?5 F9 r2 h
修改arch/arm/boot/dts/stm32mp15xx-fsmp1x.dtsi文件7 E8 R+ E7 `& }. g( P# {# I5 a
$ \& y, Q) o% O1 c
在文件末尾添加如下内容:5 L. F0 ?! [2 E* e2 [! }2 k
% x5 o7 e. j& _# j3 I1 o5 S
  1. ðernet0 {
    4 H" q6 J% x- D  C1 K  p% Y
  2. ' J0 D) Z  p7 [7 D' k
  3. status = "okay";3 b- G6 u. m$ |5 u9 W
  4. ! `) l# ~; i6 }$ l- Z; w' b) @
  5. pinctrl-0 = <ðernet0_rgmii_pins_a>;
    , E1 ~  z5 K% P. B" C) C3 M
  6. ! h, `7 e. ], t3 s7 O7 x
  7. pinctrl-1 = <ðernet0_rgmii_pins_sleep_a>;- c8 y7 D0 _( W# u5 q
  8. 7 e. `/ q, E2 I# B( ]9 t
  9. pinctrl-names = "default", "sleep";
    + X+ p* H, A# k7 o$ \

  10. . v, f% R8 m, T- t
  11. phy-mode = "rgmii-id";
    ( Y: s/ V. S; l1 L" @' {9 _, G
  12. . N! R! r  @9 U
  13. max-speed = <1000>;7 @2 @2 I4 g0 u6 G* a4 @
  14. . V1 I3 Q& a  ~( o6 I; C. M# A- y
  15. phy-handle = <&phy0>;( R/ ]8 q2 \) F0 L
  16. 2 W: a$ L$ C' h- C
  17. mdio0 {) `  G& I/ ~) u$ A0 W4 I- y

  18. , E3 z. ^1 K+ ^4 `
  19. #address-cells = <1>;, J: }; {2 v2 {5 I* |

  20. 5 u2 ?4 |2 O' O5 ]
  21. #size-cells = <0>;# T) w2 h5 X; N

  22. ' g2 J4 s" u4 m: D- N
  23. compatible = "snps,dwmac-mdio";% u- z" o3 m& _7 d

  24. * H$ U) j8 t% f- ?; x' ]* J. N
  25. phy0: ethernet-phy@0 {
    5 l. s4 a4 Z) L0 c% h! p
  26. ! I2 V( o5 M7 z0 N: i) u  M8 u; {
  27. reg = <0>;2 ~  D8 o; J. s! N( c
  28. 0 y, O& c0 ]8 w
  29. };
    7 l" Y2 o+ ^, B1 X6 t1 X
  30. 6 o( o9 c7 k; b* L8 p  o
  31. };
    8 F9 n# ~: L- Q
  32. % y8 U" M2 ^8 F( X1 r9 l
  33. };
复制代码

' e' V: U! D" Q: u, P3.配置内核
8 Q- C2 [& R/ v由于内核源码默认配置以及支持网卡,本节列出主要选项,如下:
! [5 y% d+ N. d- T+ G' ]1 \7 x1 G3 C) G% U4 W6 L
linux@ubuntu make menuconfig
- E( V, d; f! ?+ M# O6 A; N( j4 P1 Z0 O. C& [
Device Drivers --->9 |2 [# t2 i" w; N3 T. y
Network device support --->
- n( V! O" j8 M Ethernet driver support --->1 S: |7 v$ l" G1 v, o# F
/ P9 M7 p2 B: l5 {: ]
<*> STMicroelectronics Multi-Gigabit Ethernet driver
. F  g9 j; Q* q, ]' S' b6 j! _6 X/ u$ u+ q# U
<*> STMMAC Platform bus support
4 H8 }1 n' [4 r* u5 y
; Y- R: G! ]3 O$ t2 W; f8 m<*> Support for snps,dwc-qos-ethernet.txt DT binding.5 u8 H5 A9 m, f

! `! ?; P$ B) o0 Z3 O<*> Generic driver for DWMAC* h# C- b6 }- o1 p+ @
6 E& f3 A( _0 f. ^
<*> STM32 DWMAC support8 y7 w" W( `/ l( _+ f  E

: i+ W  b& A4 l2 W9 e2 i3.编译内核及设备树:. \0 [0 W- I0 p4 {4 b  _* o
linux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040
! b$ g( ]" ^) o3 Y" v
+ j# V2 L% V7 g5 n4.重启测试; G9 n$ D/ i5 S1 v% N
将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,重启设备后可以看到如下启动信息:
) I! z7 s- i* e5 U* ?/ N# I0 l, a
fe313fb6f3db573dc16e24195050eeb0.png
) j/ L, o7 m4 U: U: ]
% z$ b. W) f# e! d/ h b7c59f193686ab0c3636c67f18a87bef.png ( Q/ n& q7 s  D  B8 f, q

5 ~. l0 Q# K2 n4 t& S: L& _通过Ping 测试网卡7 E5 N  y  l* x& X% H" c+ V8 [
) a, m# x$ ?3 R' }$ k4 y/ E
0a8eef4b7b15a8e10806b5be32019be7.png
3 |3 P( K" G% A! d) F* x7 i7 v5 [
& C* K+ J- h' T1 o  {5 z如果设备不能接入以太网,可以ping主机
( K: P8 i- Z2 V! V# Z7 q7 Q————————————————
8 L. [( ?* _1 U, ^版权声明:华清远见IT开放实验室' r" Q6 G, C$ E4 E' ^

% i- o2 S) Z, g! J# n3 _# L& O5 |1 o8 t, ?* J
收藏 评论0 发布时间:2022-9-30 18:32

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版