Registered User No edit summary |
Registered User mNo edit summary |
||
(16 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
<noinclude>{{ApplicableFor | |||
|MPUs list=STM32MP13x, STM32MP15x | |||
|MPUs checklist=STM32MP13x,STM32MP15x | |||
}}</noinclude> | |||
==Article purpose== | ==Article purpose== | ||
The purpose of this article is to: | The purpose of this article is to: | ||
* briefly introduce the | * briefly introduce the ETH peripheral and its main features, | ||
* indicate the | * indicate the peripheral instances assignment at boot time and their assignment at runtime (including whether instances can be allocated to secure contexts), | ||
* list the software frameworks and drivers managing the peripheral, | |||
* explain | * explain how to configure the peripheral. | ||
==Peripheral overview== | ==Peripheral overview== | ||
The | The '''ETH''' peripheral is based on Synopsys DesignWare<sup>®</sup> Ethernet GMAC IP, which enables the host to communicate data using the Gigabit Ethernet protocol (IEEE 802.3) at 10, 100 and 1000 Mbps.<br /> The peripheral is composed of three main layers: the gigabit ethernet media access controller (GMAC), the MAC transaction layer (MTL), and the MAC DMA controller (MDC). | ||
The driver used to drive the ETH is Stmmac. | The driver used to drive the ETH is Stmmac. | ||
The Ethernet peripheral main features are the following: | The Ethernet peripheral main features are the following: | ||
* Compliance with IEEE 802.3 specifications | * Compliance with IEEE 802.3 specifications | ||
* Support for IEEE 1588-2002 and IEEE 1588-2008 standards for precision networked clock synchronization | * Support for IEEE 1588-2002 and IEEE 1588-2008 standards for precision networked clock synchronization | ||
:IEEE 802.3-az for Energy Efficient Ethernet (EEE) | :IEEE 802.3-az for Energy Efficient Ethernet (EEE) | ||
:IEEE 802.3x flow control automatic transmission of zero-quanta pause frame on flow control input de-assertion. | :IEEE 802.3x flow control automatic transmission of zero-quanta pause frame on flow control input de-assertion. | ||
:IEEE 802.1Q VLAN tag detection for reception frames | :IEEE 802.1Q VLAN tag detection for reception frames on {{MicroprocessorDevice | device=15}} only | ||
:AMBA 2.0 for AHB Master/Slave ports and AMBA 3.0 for AXI Master/Slave ports | :AMBA 2.0 for AHB Master/Slave ports and AMBA 3.0 for AXI Master/Slave ports | ||
* Configurability allowing to support data transfer rates of 10/100/100 Mbps, 10/100 Mbps only or 1000 Mbps only | * Configurability allowing to support data transfer rates of 10/100/100 Mbps, 10/100 Mbps only or 1000 Mbps only | ||
* Support for multiple TCP/IP offload functions | * Support for multiple TCP/IP offload functions | ||
Refer to [[ | Refer to the [[STM32 MPU resources#Reference manuals|STM32 MPU reference manuals]] for the complete list of features, and to the software frameworks and drivers, introduced below, to see which features are implemented. | ||
== | ==Peripheral usage== | ||
This chapter is applicable in the scope of the '''OpenSTLinux BSP''' running on the Arm<sup>®</sup> Cortex<sup>®</sup>-A processor(s), and the '''STM32CubeMPU Package''' running on the Arm<sup>®</sup> Cortex<sup>®</sup>-M processor. | |||
== | ===Boot time assignment=== | ||
=== | ====On {{MicroprocessorDevice | device=1}}==== | ||
The Ethernet peripheral can be used at boot time by SSBL (by UBoot with tftp protocol for image loading). See [[How_to_boot_the_kernel_via_TFTP_from_U-Boot]] for more details. | The Ethernet peripheral can be used at boot time by SSBL (by UBoot with tftp protocol for image loading). See [[How_to_boot_the_kernel_via_TFTP_from_U-Boot|How to boot the kernel via TFTP from U-Boot]] for more details. | ||
{{#lst:STM32MP1_internal_peripherals_assignment_table_template|stm32mp1_boottime}} | |||
<section begin=stm32mp13_boottime /><section begin=stm32mp15_boottime /> | |||
| rowspan="1" | Networking | |||
| rowspan="1" | [[ETH internal peripheral|ETH]] | |||
| Any instance | |||
| | |||
== | | | ||
| <span title="assignable peripheral" style="font-size:21px">☐</span> | |||
| Assignment (single choice) | |||
|- | |||
<section end=stm32mp13_boottime /><section end=stm32mp15_boottime /> | |||
|} | |||
==== | ===Runtime assignment=== | ||
{{: | ====On {{MicroprocessorDevice | device=13}}==== | ||
{{#lst:STM32MP1_internal_peripherals_assignment_table_template|stm32mp13_runtime}} | |||
<section begin=stm32mp13_runtime /> | |||
| rowspan="2" | Networking | |||
| rowspan="2" | [[ETH internal peripheral|ETH]] | |||
| ETH1 | |||
| <span title="assignable peripheral but not supported" style="font-size:21px">⬚</span> | |||
| <span title="assignable peripheral" style="font-size:21px">☐</span> | |||
| Assignment (single choice) | |||
|- | |||
| ETH2 | |||
| <span title="assignable peripheral but not supported" style="font-size:21px">⬚</span> | |||
| <span title="assignable peripheral" style="font-size:21px">☐</span> | |||
| Assignment (single choice) | |||
|- | |||
<section end=stm32mp13_runtime /> | |||
|} | |||
==== | ====On {{MicroprocessorDevice | device=15}}==== | ||
{{#lst:STM32MP1_internal_peripherals_assignment_table_template|stm32mp15_runtime}} | |||
<section begin=stm32mp15_runtime /> | |||
| rowspan="1" | Networking | |||
| rowspan="1" | [[ETH internal peripheral|ETH]] | |||
| ETH | |||
| | |||
| <span title="assignable peripheral" style="font-size:21px">☐</span> | |||
| <span title="assignable peripheral" style="font-size:21px"></span> | |||
| Assignment (single choice) | |||
|- | |||
<section end=stm32mp15_runtime /> | |||
|} | |||
== | ==Software frameworks and drivers== | ||
{{ | Below are listed the software frameworks and drivers managing the {{Green|XXX}} peripheral for the embedded software components listed in the above tables. | ||
* '''Linux<sup>®</sup>''': [[Ethernet overview|netdev/ethernet framework]] | |||
{{ | * '''U-Boot''': {{CodeSource | U-Boot | drivers/net/dwc_eth_qos.c | U-Boot Net driver }} | ||
== | ==How to assign and configure the peripheral== | ||
< | The peripheral assignment can be done via the [[STM32CubeMX]] graphical tool (and manually completed if needed).<br /> | ||
This tool also helps to configure the peripheral: | |||
* partial device trees (pin control and clock tree) generation for the OpenSTLinux software components, | |||
* HAL initialization code generation for the STM32CubeMPU Package. | |||
The configuration is applied by the firmware running in the context in which the peripheral is assigned. | |||
When the Ethernet peripheral is assigned to the Linux<sup>®</sup> OS, it is configured through the device tree according to the information given in the [[Ethernet device tree configuration]] article. | |||
<noinclude> | <noinclude> | ||
[[Category:Networking peripherals]] | [[Category:Networking peripherals]] | ||
{{ArticleBasedOnModel | Internal peripheral article model}} | |||
{{PublicationRequestId | 10167 | 2019-01-07 | AnneJ}} | {{PublicationRequestId | 10167 | 2019-01-07 | AnneJ}} | ||
</noinclude> | </noinclude> |
Revision as of 09:31, 7 June 2023
1. Article purpose[edit | edit source]
The purpose of this article is to:
- briefly introduce the ETH peripheral and its main features,
- indicate the peripheral instances assignment at boot time and their assignment at runtime (including whether instances can be allocated to secure contexts),
- list the software frameworks and drivers managing the peripheral,
- explain how to configure the peripheral.
2. Peripheral overview[edit | edit source]
The ETH peripheral is based on Synopsys DesignWare® Ethernet GMAC IP, which enables the host to communicate data using the Gigabit Ethernet protocol (IEEE 802.3) at 10, 100 and 1000 Mbps.
The peripheral is composed of three main layers: the gigabit ethernet media access controller (GMAC), the MAC transaction layer (MTL), and the MAC DMA controller (MDC).
The driver used to drive the ETH is Stmmac.
The Ethernet peripheral main features are the following:
- Compliance with IEEE 802.3 specifications
- Support for IEEE 1588-2002 and IEEE 1588-2008 standards for precision networked clock synchronization
- IEEE 802.3-az for Energy Efficient Ethernet (EEE)
- IEEE 802.3x flow control automatic transmission of zero-quanta pause frame on flow control input de-assertion.
- IEEE 802.1Q VLAN tag detection for reception frames on STM32MP15x lines
only
- AMBA 2.0 for AHB Master/Slave ports and AMBA 3.0 for AXI Master/Slave ports
- Configurability allowing to support data transfer rates of 10/100/100 Mbps, 10/100 Mbps only or 1000 Mbps only
- Support for multiple TCP/IP offload functions
Refer to the STM32 MPU reference manuals for the complete list of features, and to the software frameworks and drivers, introduced below, to see which features are implemented.
3. Peripheral usage[edit | edit source]
This chapter is applicable in the scope of the OpenSTLinux BSP running on the Arm® Cortex®-A processor(s), and the STM32CubeMPU Package running on the Arm® Cortex®-M processor.
3.1. Boot time assignment[edit | edit source]
3.1.1. On STM32MP1 series[edit | edit source]
The Ethernet peripheral can be used at boot time by SSBL (by UBoot with tftp protocol for image loading). See How to boot the kernel via TFTP from U-Boot for more details.
Click on to expand or collapse the legend...
Domain | Peripheral | Boot time allocation | Comment ![]() | |||
---|---|---|---|---|---|---|
Instance | Cortex-A7 secure (ROM code) |
Cortex-A7 secure (TF-A BL2) |
Cortex-A7 nonsecure (U-Boot) | |||
Networking | ETH | Any instance | ☐ | Assignment (single choice) |
3.2. Runtime assignment[edit | edit source]
3.2.1. On STM32MP13x lines
[edit | edit source]
Click on to expand or collapse the legend...
Domain | Peripheral | Runtime allocation | Comment ![]() | ||
---|---|---|---|---|---|
Instance | Cortex-A7 secure (OP-TEE) |
Cortex-A7 nonsecure (Linux) | |||
Networking | ETH | ETH1 | ⬚ | ☐ | Assignment (single choice) |
ETH2 | ⬚ | ☐ | Assignment (single choice) |
3.2.2. On STM32MP15x lines
[edit | edit source]
Click on to expand or collapse the legend...
Domain | Peripheral | Runtime allocation | Comment ![]() | |||
---|---|---|---|---|---|---|
Instance | Cortex-A7 secure (OP-TEE) |
Cortex-A7 nonsecure (Linux) |
Cortex-M4 (STM32Cube) | |||
Networking | ETH | ETH | ☐ | Assignment (single choice) |
4. Software frameworks and drivers[edit | edit source]
Below are listed the software frameworks and drivers managing the XXX peripheral for the embedded software components listed in the above tables.
- Linux®: netdev/ethernet framework
- U-Boot: U-Boot Net driver
5. How to assign and configure the peripheral[edit | edit source]
The peripheral assignment can be done via the STM32CubeMX graphical tool (and manually completed if needed).
This tool also helps to configure the peripheral:
- partial device trees (pin control and clock tree) generation for the OpenSTLinux software components,
- HAL initialization code generation for the STM32CubeMPU Package.
The configuration is applied by the firmware running in the context in which the peripheral is assigned.
When the Ethernet peripheral is assigned to the Linux® OS, it is configured through the device tree according to the information given in the Ethernet device tree configuration article.