Registered User |
Registered User |
Line 1: |
Line 1: |
| <noinclude>{{ApplicableFor
| | #REDIRECT [[STM32CubeMP15 Package]] |
| |MPUs list=STM32MP15x
| |
| |MPUs checklist=STM32MP13x, STM32MP15x
| |
| }}</noinclude>
| |
| {{ReviewsComments|-- [[User:Nathalie Sangouard|Nathalie Sangouard]] ([[User talk:Nathalie Sangouard|talk]]) 16:44, 23 June 2022 (CEST)<br />I approve this article version for the V4 but this article really need to be split in several articles. to be organised for v5. + to be reviewed after publication of this version by TW. }}
| |
| | |
| ==Introduction to STM32Cube==
| |
| '''STM32Cube™''' provides comprehensive embedded software libraries and tools, significantly reducing development effort, time and cost.
| |
| | |
| '''STM32Cube™''' is fully integrated in [[:Category:STM32MPU_Embedded_Software_distribution|STM32MPU Embedded Software distribution]] and consists of (usable together or independently):
| |
| * [[STM32CubeMP1_Package#STM32CubeMP1_Package_overview|'''STM32CubeMP1 Firmware Package''']] embedded software libraries, including:
| |
| :* '''The Hardware Abstraction Layer''' (HAL), enabling portability between different STM32 devices via standardized API calls
| |
| :* '''The Low-Layer API''' (LL), a light-weight, optimized, expert oriented set of APIs designed for runtime efficiency and so enhanced performance
| |
| :* '''A collection of middleware components''', like FreeRTOS, OpenAMP (depending on the MPU series)
| |
| :* '''A collection of examples''', running on an MPU board and allowing demonstration of a basic implementation of features from a set of IPs
| |
| | |
| *'''[[STM32CubeMX]] tool''', including :
| |
| :*Configuration and C code generation for pin multiplexing, clock tree, peripherals and middleware setup with graphical wizards
| |
| :*Generation of IDE-ready projects for an integrated development environment tool chain
| |
| :*Direct import of STM32 Cube embedded software libraries from st.com
| |
| :*Integrated updater to keep '''STM32CubeMX''' up-to-date
| |
| | |
| ==STM32CubeMP1 Package overview==
| |
| The '''STM32CubeMP1 Package'''(also named '''STM32Cube Firmware Package''') is the embedded software part of STM32Cube™, running on the Arm<sup>®</sup> Cortex<sup>®</sup>-M processor (for example Arm Cortex-M4).
| |
| | |
| {{UpdateNeededForNewRelease|Update link to latest release note}}
| |
| {{info| '''Note:'''
| |
| *Please refer to the [[STM32CubeMP1 Package release note]] for further information related to the content of '''STM32CubeMP1 Package'''}}
| |
| | |
| ==Software architecture overview ==
| |
| The '''STM32CubeMP1 Package''' is based on the STM32Cube MCU Package and has been adapted to a Linux Framework ([[OpenSTLinux_architecture_overview|OpenSTLinux]]).
| |
| | |
| '''STM32CubeMP1 Package''' introduces new components such as '''OpenAMP and RessourceManager''' that allow easy communication and ressource sharing between main processors running with Linux on Cortex-A, and MCU coprocessors running on Cortex-M.
| |
| | |
| :*'''[https://www.multicore-association.org/workgroup/oamp.php OpenAMP]''' is a library implementing the remote processor service framework (RPMsg) which is a virtio-based messaging bus that allows a local processor to communicate with remote processors available on the system.
| |
| :*'''[[Resource_manager_for_coprocessing|ResourceManager]]''' is a utility that handles peripheral-accessibility requests and system-resource configuration.
| |
| | |
| {{info| '''Note:'''
| |
| *Please refer to [[Coprocessor management overview]] for further information related to coprocessor management}}
| |
| | |
| The figure below gives an overview of the [[STM32CubeMP1 architecture]].
| |
| | |
| [[File:STM32CubeMPUPackageArchitecture.png|700px|link=]]
| |
| | |
| {{info| '''Note:'''
| |
| * Please refer to [[STM32CubeMP1_architecture#STM32Cube_MP1_Package_versus_legacy_STM32Cube_MCU_Package|STM32CubeMP1 Package versus legacy STM32Cube MCU Package]] for further information on differences between '''STM32CubeMP1 Package''' and '''STM32Cube MCU Package'''}}
| |
| | |
| ==STM32CubeMP1 Package content==
| |
| '''STM32CubeMP1 Package''' offers a highly portable '''Hardware Abstraction Layer''' (HAL), built around a generic and modular architecture.
| |
| | |
| This HAL allows the upper layers, middleware and application, to implement functions independently of the '''STM32MP1''' device used. This improves the library code re-usability and guarantees easy portability from one device to another.
| |
| | |
| '''STM32CubeMP1 Package''' also offers a highly portable '''Low Layer interface''' (LL), which allows a quick, simple and optimized API to access the '''STM32MP1''' registers.
| |
| | |
| ===Overview ===
| |
| | |
| The '''STM32CubeMP1 Package''' is provided with the structure shown below.
| |
| | |
| [[File:STM32CubeMPUPackageStructurev3.png|850px|link=]]
| |
| {{UpdateNeededForNewBoard|New board to be added in picture}}
| |
| | |
| ===Drivers===
| |
| The '''Drivers''' folder contains all the '''STM32Cube Drivers''', including BSP and HAL drivers
| |
| | |
| {{info| '''Note:'''
| |
| * Please refer to [[STM32CubeMP1_Package_release_note#Available_drivers|List of available drivers]] to get exaustive list of drivers available in''' STM32CubeMP1 Package'''
| |
| }}
| |
| | |
| The STM32CubeMP1 Package provides all driver user manuals:
| |
| * The BSP user manual for EVAL board is available in '''STM32Cube_FW_MP1\Drivers\BSP\STM32MP15xx_EVAL''' : '''{{Green|STM32MP15xx_EVAL_BSP_User_Manual.chm'''}}
| |
| * The BSP user manual for DISCO board is available in '''STM32Cube_FW_MP1\Drivers\BSP\STM32MP15xx_DISCO''' : '''{{Green|STM32MP15xx_DISCO_BSP_User_Manual.chm'''}}
| |
| * The HAL user manual is available in '''STM32Cube_FW_MP1\Drivers\STM32MP1xx_HAL_Driver''' : '''{{Green|STM32MP157Cxx_CM4_User_Manual.chm'''}}
| |
| | |
| ===Middlewares===
| |
| The '''Middlewares''' folder contains all available '''STM32Cube Middlewares''' including FreeRTOS and OpenAMP
| |
| | |
| {{info| '''Note:'''
| |
| * Please refer to [[STM32CubeMP1_architecture#Level_1_.28Middlewares.29|Description of Middlewares]] to get exaustive description of middlewares available in''' STM32CubeMP1 Package'''
| |
| }}
| |
| | |
| ===Projects===
| |
| The Projects folder contains all '''STM32Cube examples''' that are classified in 3 levels as described below :
| |
| * Level 0 : '''Examples'''. It uses only the HAL drivers without any middleware component. They are available in directory '''Firmware/Projects/<board_name>/Examples'''.
| |
| * Level 1 : '''Applications'''. It provides typical use cases of each middleware component. They are available in directory '''Firmware/Projects/<board_name>/Applications'''.
| |
| * Level 2 : '''Demonstrations'''. It involves all the HAL, BSP and middleware components. They are available in directory '''Firmware/Projects/<board_name>/Demonstrations'''.
| |
| | |
| | |
| A '''Template''' folder is available in '''Firmware/Projects/<board_name>/Templates''' and allows quick creation and building of any firmware application on a given board.
| |
| | |
| All examples respect the same structure :
| |
| | |
| ├── OpenAMP_TTY_echo
| |
| │ ├── readme.txt {{Green|describes the example behavior and the setup required to make it work}}
| |
| │ ├── Inc {{Green|contains all header files}}
| |
| │ ├── Remoteproc {{Green|(optional): contains specific files related to the use of Linux<sup>®</sup> remote processor framework to load STM32Cube Cortex-M firmware}}
| |
| │ ├── Src {{Green|contains all the sources code files}}
| |
| │ └── STM32CubeIDE {{Green|contains the preconfigured project for Eclipse IDE}}
| |
| | |
| ==== List of projects====
| |
| | |
| {{UpdateNeededForNewBoard|New boards to be added in description and list below}}
| |
| You will find below a list of examples, applications and demonstrations available for '''STM32MP1''' boards (STM32MP157C-EV1 and STM32MP157C-DK2) :
| |
| | |
| {{info| '''Note:'''
| |
| * Please refer to [[STM32CubeMP1_Package_release_note#Available_projects|List of available projects]] for an exhaustive list of examples available in the '''STM32CubeMP1 Package'''
| |
| }}
| |
| | |
| {{UpdateNeededForNewRelease|Update list of examples below with new examples provided in new release}}
| |
| * '''Examples, applications and demonstrations for STM32MP157C-EV1'''
| |
| | |
| Legend : {{Highlight |New project implemented on STM32CubeMP1 FW v1.6.0}}
| |
| ├── STM32MP157C-EV1
| |
| │ ├── Applications
| |
| │ │ ├── CoproSync
| |
| │ │ ├── CoproSync_ShutDown
| |
| │ │ ├── FreeRTOS
| |
| │ │ ├── FreeRTOS_ThreadCreation
| |
| │ │ └── OpenAMP
| |
| │ │ ├── OpenAMP_Dynamic_ResMgr
| |
| │ │ ├── {{Highlight |OpenAMP_for_signed_fw}}
| |
| │ │ ├── OpenAMP_FreeRTOS_echo
| |
| │ │ ├── OpenAMP_raw
| |
| │ │ ├── OpenAMP_TTY_echo
| |
| │ │ └── OpenAMP_TTY_echo_wakeup
| |
| │ ├── Demonstrations
| |
| │ │ └── AI_Character_Recognition
| |
| │ ├── Examples
| |
| │ │ ├── ADC
| |
| │ │ │ └── {{Highlight |ADC_AnalogWatchdog}}
| |
| │ │ │ └── {{Highlight |ADC_MultiChannelSingleConversion}}
| |
| │ │ │ └── {{Highlight |ADC_OverSampler}}
| |
| │ │ │ └── ADC_SingleConversion_TriggerTimer_DMA
| |
| │ │ ├── Cortex
| |
| │ │ │ └── CORTEXM_MPU
| |
| │ │ ├── CRC
| |
| │ │ │ └── CRC_UserDefinedPolynomial
| |
| │ │ ├── CRYP
| |
| │ │ │ └── CRYP_AES_DMA
| |
| │ │ ├── DAC
| |
| │ │ │ └── DAC_SimpleConversion
| |
| │ │ ├── DMA
| |
| │ │ │ └── DMA_FIFOMode
| |
| │ │ ├── FDCAN
| |
| │ │ │ └── FDCAN_Loopback
| |
| │ │ ├── GPIO
| |
| │ │ │ └── GPIO_EXTI
| |
| │ │ ├── HASH
| |
| │ │ │ └── HASH_SHA224SHA256_DMA
| |
| │ │ ├── I2C
| |
| │ │ │ ├── I2C_TwoBoards_ComDMA
| |
| │ │ │ └── I2C_TwoBoards_ComIT
| |
| │ │ ├── LPTIM
| |
| │ │ │ └── LPTIM_PulseCounter
| |
| │ │ │ └── {{Highlight |LPTIM_PWM_LSE}}
| |
| │ │ ├── PWR
| |
| │ │ │ └── PWR_STOP_CoPro
| |
| │ │ ├── QSPI
| |
| │ │ │ └── QSPI_ReadWrite_IT
| |
| │ │ ├── SPI
| |
| │ │ │ ├── SPI_FullDuplex_ComDMA_Master
| |
| │ │ │ └── SPI_FullDuplex_ComDMA_Slave
| |
| │ │ ├── TIM
| |
| │ │ │ └── TIM_DMABurst
| |
| │ │ │ └── {{Highlight |TIM_OnePulse}}
| |
| │ │ │ └── {{Highlight |TIM_PWMOutput}}
| |
| │ │ │ └── {{Highlight |TIM_Synchronization}}
| |
| │ │ │ └── {{Highlight |TIM_TimeBase}}
| |
| │ │ ├── UART
| |
| │ │ │ └── UART_Receive_Transmit_Console
| |
| │ │ │ └── UART_TwoBoards_ComIT
| |
| │ │ └── WWDG
| |
| │ │ └── WWDG_Example
| |
| | |
| :* '''Examples, applications and demonstrations for STM32MP157C-DK2'''
| |
| ├── STM32MP157C-DK2
| |
| │ ├── Applications
| |
| │ │ ├── CoproSync
| |
| │ │ ├── CoproSync_ShutDown
| |
| │ │ ├── FreeRTOS
| |
| │ │ ├── FreeRTOS_ThreadCreation
| |
| │ │ └── OpenAMP
| |
| │ │ ├── {{Highlight |OpenAMP_for_signed_fw}}
| |
| │ │ ├── OpenAMP_FreeRTOS_echo
| |
| │ │ ├── OpenAMP_raw
| |
| │ │ ├── OpenAMP_TTY_echo
| |
| │ │ └── OpenAMP_TTY_echo_wakeup
| |
| │ ├── Demonstrations
| |
| │ │ └── AI_Character_Recognition
| |
| │ ├── Examples
| |
| │ │ ├── ADC
| |
| │ │ │ └── ADC_SingleConversion_TriggerTimer_DMA
| |
| │ │ ├── Cortex
| |
| │ │ │ └── CORTEXM_MPU
| |
| │ │ ├── CRC
| |
| │ │ │ └── CRC_UserDefinedPolynomial
| |
| │ │ ├── CRYP
| |
| │ │ │ └── CRYP_AES_DMA
| |
| │ │ ├── DMA
| |
| │ │ │ └── DMA_FIFOMode
| |
| │ │ ├── FDCAN
| |
| │ │ │ └── FDCAN_Loopback
| |
| │ │ ├── GPIO
| |
| │ │ │ └── GPIO_EXTI
| |
| │ │ ├── HASH
| |
| │ │ │ └── HASH_SHA224SHA256_DMA
| |
| │ │ ├── I2C
| |
| │ │ │ └── I2C_TwoBoards_ComIT
| |
| │ │ ├── LPTIM
| |
| │ │ │ └── LPTIM_PulseCounter
| |
| │ │ ├── PWR
| |
| │ │ │ └── PWR_STOP_CoPro
| |
| │ │ ├── SPI
| |
| │ │ │ ├── SPI_FullDuplex_ComDMA_Master
| |
| │ │ │ ├── SPI_FullDuplex_ComDMA_Slave
| |
| │ │ │ ├── SPI_FullDuplex_ComIT_Master
| |
| │ │ │ └── SPI_FullDuplex_ComIT_Slave
| |
| │ │ ├── TIM
| |
| │ │ │ └── TIM_DMABurst
| |
| │ │ ├── UART
| |
| │ │ │ └── UART_Receive_Transmit_Console
| |
| │ │ │ ├── UART_TwoBoards_ComDMA
| |
| │ │ │ └── UART_TwoBoards_ComIT
| |
| │ │ └── WWDG
| |
| │ │ └── WWDG_Example
| |
| | |
| ==Getting started with STM32CubeMP1 Package==
| |
| '''STM32CubeMP1 Package''' is delivered with [[:Category:STM32MPU_Embedded_Software_distribution|STM32MPU Embedded Software distribution]] and is then provided in the 3 software packages: '''Starter Package''', '''Developer Package''' and '''Distribution Package'''.
| |
| | |
| :*'''Starter Package''': provides pre-built examples, applications and demonstration firmware (for demo only).
| |
| :*'''Developer Package''': provides the full '''STM32CubeMP1 source code''' for development, including dedicated tools (IDE and so on).
| |
| :*'''Distribution Package''': it provides the full integration of '''STM32CubeMP1 Package''' in [[OpenSTLinux_distribution|OpenSTLinux distribution]] for software distribution.
| |
| | |
| ===Prerequisites===
| |
| | |
| In the following sections, we take the assumption that you have already installed all the materials related to the package for your board.
| |
| For more details, refer to the following articles:
| |
| | |
| * Read the article [[Which Package better suits your needs]] for further information on all packages.
| |
| * Select your board [[:Category:STM32 MPU boards]] to get the right package materials (software, hardware, documentation, and so on)
| |
| | |
| ===Introduction to boot mode===
| |
| The '''STM32MP1''' can be run in 2 different boot modes : '''Production boot mode''' (default mode) and '''Engineering boot mode'''
| |
| | |
| *'''Production boot mode''': Firmware is loaded into the coprocessor by the master processor (Cortex-A7 - Flash Memory boot mode), this means:
| |
| :*System resources are managed directly by OpenSTLinux (clocks, regulators, and so on)
| |
| :*the pre-built pieces of firmware are provided/downloaded in an OpenSTLinux image or file system
| |
| :*the pre-built firmware is launched on the coprocessor through the [[Linux_remoteproc_framework_overview|Linux Remote Proc]] component
| |
| :*Cortex-A firmware (Linux OS) is in charge of loading the Cortex-M firmware
| |
| {{UpdateNeededForNewRelease|Update note in particular boot modes}}
| |
| {{info| '''Notes:''' At boot time, you can select 3 kernel configurations:
| |
| * Configuration 1 (<board_name>-sdcard): All IPs are assigned to Cortex-A7 for Linux drivers, Cortex-M4 coprocessor firmware TTY executed by default
| |
| :* This is the configuration activated by default
| |
| * Configuration 2 (<board_name>-a7-examples-sdcard): Some IPs are assigned to Cortex-A7 to execute Cortex-A7 delivered examples on the board (EVAL or DISCO).
| |
| * Configuration 3 (<board_name>-m4-examples-sdcard): Some IPs are assigned to Cortex-M4 to execute Cortex-M4 delivered examples on the board (EVAL or DISCO).
| |
| Example for STM32MP157C-DK2 board:
| |
| <pre>
| |
| Select the boot mode
| |
| 1: stm32mp157c-dk2-sdcard
| |
| 2: stm32mp157c-dk2-a7-examples-sdcard
| |
| 3: stm32mp157c-dk2-m4-examples-sdcard
| |
| </pre>
| |
| }}
| |
| | |
| *'''Engineering boot mode''' is used specifically for firmware testing directly on the coprocessor, this means:
| |
| :*all resources are managed directly in the example source code (clocks, regulators, and so on)
| |
| :*the firmware can be loaded directly from your favorite IDE
| |
| Most of the examples can be used in Engineering boot mode (except those that require firmware running on a Cortex-A7, such as the OpenAMP examples)
| |
| | |
| {{info| '''Notes:'''
| |
| *Please refer to the [[Coprocessor management overview]] for more information
| |
| *Please refer to the '''Memory Boot modes overview''' ([[STM32 MPU ROM code overview#Flash memory boot]]) for further information on all boot modes
| |
| *Please refer to the '''Hardware Description''' ([[:Category:STM32 MPU boards]]) of your board for information on the Boot mode selection switch}}
| |
| | |
| ===Introduction to user file system for M4 examples===
| |
| | |
| The folder structure of '''Linux User File System''' for '''STM32Cube M4 firmware''' is described below for each '''STM32MP1''' board (STM32MP157C-EV1 and STM32MP157C-DK2):
| |
| | |
| {{UpdateNeededForNewBoard|New board to be added in the picture below}}
| |
| [[File:STM32CubeMPUPackageLinuxStructurev.png|850px|link=]]
| |
| | |
| ===Starter Package for STM32CubeMP1===
| |
| | |
| '''[[Which STM32MPU Embedded Software Package better suits your needs#Starter_Package|Starter Package]]''' allows you to launch and run, on an Cortex-M4, a set of examples from Linux console ([[How to get Terminal]]). These examples are available in the '''Linux File System''' (userfs: /usr/local), and have been built with the '''STM32CubeMP1''' software Package (pre-built firmware)
| |
| | |
| {{info| '''Notes:'''
| |
| :*Examples running on an Cortex-M4 core are called '''Firmware'''
| |
| ::*Firmware is located in folder '''/usr/local/Cube-M4-examples/<board_name>/Examples'''
| |
| ::*A script '''fw_cortex_m4.sh''' is provided to start/stop the firmware in the Cortex-M4.
| |
| }}
| |
| | |
| ====Prerequisites====
| |
| | |
| *Refer to the [[STM32MP15_Evaluation_boards_-_Starter_Package|Starter Package for STM32MP15 Eval Board]] or [[STM32MP15_Discovery_kits_-_Starter_Package|Starter Package for STM32MP15 Discovery Board]] for all the information describing how to install the '''Starter Package'''.
| |
| {{Warning|Please make sure that you have installed the Starter Package related to your '''STM32MP1''' board.}}
| |
| | |
| ====How to run the examples====
| |
| After flashing images onto your board, you need to open a Linux console (Refer to [[How to get Terminal]]), and follow the steps below:
| |
| | |
| =====Select boot mode for M4 examples=====
| |
| | |
| When booting the Linux image, you need to select a dedicated device tree configuration for M4 examples, which allows the allocation of specific clock and pin control assignments related to them.
| |
| | |
| This means that you need to select, by example, the boot mode '''stm32mp157c-ev1-m4-examples-sdcard''' during the U-Boot stage, as described in the following log:
| |
| | |
| U-Boot 2018.11-stm32mp-19-01-04 (Jan 04 2019 - 09:59:10 +0000)
| |
| CPU: STM32MP157CAA Rev.B
| |
| Model: STMicroelectronics STM32MP157C eval daughter on eval mother
| |
| Board: stm32mp1 in trusted mode (st,stm32mp157c-ev1)
| |
| Board: MB1263 Var1 Rev.C-01
| |
| ...
| |
| ...
| |
| Found /mmc0_stm32mp157c-ev1_extlinux/extlinux.conf
| |
| Retrieving file: /mmc0_stm32mp157c-ev1_extlinux/extlinux.conf
| |
| 616 bytes read in 1 ms (601.6 KiB/s)
| |
| Retrieving file: /mmc0_stm32mp157c-ev1_extlinux/../splash.bmp
| |
| 46180 bytes read in 3 ms (14.7 MiB/s)
| |
| Select the boot mode
| |
| 1: stm32mp157c-ev1-sdcard
| |
| 2: stm32mp157c-ev1-a7-examples-sdcard
| |
| {{Green|3: stm32mp157c-ev1-m4-examples-sdcard}} {{Highlight|<- Select '''stm32mp157c-ev1-m4-examples-sdcard'''}}
| |
| Enter choice: 3
| |
| 3: stm32mp157c-ev1-m4-examples-sdcard
| |
| Retrieving file: /uImage
| |
| | |
| =====Select examples or applications related to your board=====
| |
| | |
| {{Board$}} cd '''/usr/local/Cube-M4-examples/<board_name>'''
| |
| | |
| {{UpdateNeededForNewBoard|Check if need to add new board or latest board in example below}}
| |
| *Example of output log:
| |
| <pre>
| |
| root@stm32mp1:/usr/local/Cube-M4-examples/STM32MP157C-EV1# ls -l *
| |
| Applications:
| |
| total 3
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 CoproSync
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 FreeRTOS
| |
| drwxr-xr-x 5 root root 1024 Mar 9 2018 OpenAMP
| |
| | |
| Demonstrations:
| |
| total 1
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 AI_Character_Recognition
| |
| | |
| Examples:
| |
| total 15
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 ADC
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 CRC
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 CRYP
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 Cortex
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 DAC
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 DMA
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 GPIO
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 HASH
| |
| drwxr-xr-x 4 root root 1024 Mar 9 2018 I2C
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 PWR
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 QSPI
| |
| drwxr-xr-x 4 root root 1024 Mar 9 2018 SPI
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 TIM
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 UART
| |
| drwxr-xr-x 3 root root 1024 Mar 9 2018 WWDG
| |
| </pre>
| |
| | |
| =====Select the example or application to run=====
| |
| | |
| * For an example, use the following command:
| |
| {{Board$}} cd /usr/local/Cube-M4-examples/<board_name>/Examples/<example_type>/<example_to_run>
| |
| | |
| * For an application, use the following command :
| |
| {{Board$}} cd /usr/local/Cube-M4-examples/<board_name>/Applications/<application_type>/<application_to_run>
| |
| | |
| |-- fw_cortex_m4.sh
| |
| |-- README
| |
| |--lib
| |
| |--firmware
| |
| |-- ELF file for <board_name>
| |
| | |
| :*'''fw_cortex_m4.sh''' : script to start / stop firmware
| |
| :*'''README''' : all information about example
| |
| | |
| *Example output log:
| |
| <pre>
| |
| root@stm32mp1:/usr/local/Cube-M4-examples/STM32MP157C-EV1/Examples/QSPI/QSPI_ReadWrite_IT# ls -l
| |
| total 8
| |
| -rwxr-xr-x 1 root root 5513 Aug 31 2018 README
| |
| -rwxr-xr-x 1 root root 854 Aug 31 2018 fw_cortex_m4.sh
| |
| drwxr-xr-x 3 root root 1024 Aug 31 2018 lib
| |
| | |
| root@stm32mp1:/usr/local/Cube-M4-examples/STM32MP157C-EV1/Examples/QSPI/QSPI_ReadWrite_IT# ls -l lib/firmware/
| |
| total 26
| |
| -rwxr-xr-x 1 root root 210364 Mar 9 2018 QSPI_ReadWrite_IT.elf
| |
| </pre>
| |
| | |
| =====Read the README file carefully=====
| |
| It provides all the information about the example setup and verdict.
| |
| | |
| =====Start the firmware=====
| |
| Use the following command to start the selected example:
| |
| | |
| {{Board$}} '''./fw_cortex_m4.sh start'''
| |
| | |
| *Example output log:
| |
| <pre>
| |
| root@stm32mp1:/usr/local/Cube-M4-examples/STM32MP157C-EV1/Examples/QSPI/QSPI_ReadWrite_IT# ./fw_cortex_m4.sh start
| |
| fw_cortex_m4.sh: fmw_name=QSPI_ReadWrite_IT.elf
| |
| [16876.378399] remoteproc remoteproc0: powering up m4
| |
| [16876.382908] remoteproc remoteproc0: Booting fw image QSPI_ReadWrite_IT.elf, size 210104
| |
| [ 82.822243] remoteproc remoteproc0: header-less resource table
| |
| [ 82.827069] remoteproc remoteproc0: not resource table found for this firmware
| |
| [ 82.834064] remoteproc remoteproc0: header-less resource table
| |
| [ 82.873522] rproc-srm-dev m4@0:m4_system_resources:adc@48003000: Linked as a consumer to regulator.9
| |
| [ 82.943959] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:timer@40000000 (ops 0xc0bd47f0)
| |
| [ 82.958620] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:serial@4000f000 (ops 0xc0bd47f0)
| |
| [ 82.979759] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:i2c@40015000 (ops 0xc0bd47f0)
| |
| [ 82.990388] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:dac@40017000 (ops 0xc0bd47f0)
| |
| [ 83.001066] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:timer@44000000 (ops 0xc0bd47f0)
| |
| [ 83.010866] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:spi@44004000 (ops 0xc0bd47f0)
| |
| [ 83.020759] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:dma@48001000 (ops 0xc0bd47f0)
| |
| [ 83.035481] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:adc@48003000 (ops 0xc0bd47f0)
| |
| [ 83.044288] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:hash@4c002000 (ops 0xc0bd47f0)
| |
| [ 83.055075] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:rng@4c003000 (ops 0xc0bd47f0)
| |
| [ 83.065018] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:crc@4c004000 (ops 0xc0bd47f0)
| |
| [ 83.075279] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:cryp@4c005000 (ops 0xc0bd47f0)
| |
| [ 83.085529] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:qspi@58003000 (ops 0xc0bd47f0)
| |
| [ 83.095857] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:button (ops 0xc0bd47f0)
| |
| [ 83.105563] rproc-srm-core m4@0:m4_system_resources: bound m4@0:m4_system_resources:m4_led (ops 0xc0bd47f0)
| |
| [ 83.117791] remoteproc remoteproc0: remote processor m4 is now up
| |
| </pre>
| |
| | |
| ::*This loads and starts the firmware using the [[Linux_remoteproc_framework_overview|Linux Remote Processor]] component in Cortex-M4
| |
| | |
| =====Stop the firmware=====
| |
| Use the following command to stop the example that is running:
| |
| | |
| {{Board$}} '''./fw_cortex_m4.sh stop'''
| |
| | |
| *Example output log:
| |
| <pre>
| |
| root@stm32mp1:/usr/local/Cube-M4-examples/STM32MP157C-EV1/Examples/QSPI/QSPI_ReadWrite_IT# ./fw_cortex_m4.sh stop
| |
| fw_cortex_m4.sh: fmw_name=QSPI_ReadWrite_IT.elf
| |
| [ 320.965374] remoteproc remoteproc0: warning: remote FW shutdown without ack | |
| [ 320.978380] rproc-srm-dev m4@0:m4_system_resources:adc@48003000: Dropping the link to regulator.9 | |
| [ 320.996540] remoteproc remoteproc0: stopped remote processor m4
| |
| </pre>
| |
| | |
| ::*This stops the firmware using the [[Linux_remoteproc_framework_overview|Linux Remote Processor]] component/
| |
| ::*It releases the relevant resource settings used by the example.
| |
| | |
| ===Developer Package for STM32CubeMP1===
| |
| '''[[Which STM32MPU Embedded Software Package better suits your needs#Developer Package|Developer Package]]''' provides all the '''STM32Cube MPU''' source code and tools.
| |
| | |
| | |
| {{info| '''Notes:'''
| |
| :* Please refer to the [[STM32MP15 resources#Reference manuals|STM32MP15 reference manuals]] for all information about '''STM32MP1''', and in particular the IP, you might want to modify in order to ensure coherency and capabilities}}
| |
| | |
| ====Prerequisites====
| |
| | |
| *Refer to the [[STM32MP1_Developer_Package#Installing the STM32CubeMPU Package|Installing the STM32CubeMP1 Package]] to obtain and install the source code
| |
| | |
| * Refer to the new {{Highlight |preferred IDE}}: [[STM32CubeIDE release note|STM32CubeIDE]]
| |
| | |
| {{Warning|
| |
| * Be sure to have installed the STM32CubeMP1Package, '''STM32CubeIDE'''.
| |
| * VB sure to have run [[STM32CubeMP1_Package#Starter_Package_for_STM32CubeMP1|Starter Package for STM32CubeMP1]] in '''Production mode'''.
| |
| * Be sure also to have connected ST-Link and Ethernet cables to your board.
| |
| }}
| |
| | |
| ====How to use the Eclipse IDE with an existing example====
| |
| | |
| {{info| '''Note:'''
| |
| *The description and pictures below were based on SW4STM32. Menus of the IDE supported by ST (STM32CubeIDE ) are very closed to SW4STM32. The description given below can be transposed to STM32CubeIDE menus.
| |
| *You can also find lot of additional useful information in [[STM32CubeIDE]] article}}
| |
| | |
| =====How to rebuild an example=====
| |
| | |
| *Open the folder containing the example and double-click on file '''.project''' to open Eclipse IDE:
| |
| | |
| [[File:IDE_ExampleOpenv2.png|850px|link=]]
| |
| | |
| [[File:IDE_ExampleOpen.png|850px|link=]]
| |
| | |
| * Click on following button to build the example:
| |
| | |
| [[File:IDE_ExampleBuild.png|850px|link=]]
| |
| | |
| =====How to download and run an example=====
| |
| | |
| {{info| '''Note:'''
| |
| :*whole Firmware is downloaded with the STM32CubeIDE in the Linux File System in '''/usr/local/projects'''}}
| |
| | |
| * Open the Serial Console to check the IP address of the board:
| |
| | |
| [[File:IDE_ExampleSerialConsole.png|850px|link=]]
| |
| | |
| * Open the ''Debug Configurations'' panel:
| |
| | |
| [[File:IDE_ExampleDebugMenu.png|850px|link=]]
| |
| | |
| * Configure the ''Main'' panel to add the firmware binary:
| |
| | |
| [[File:IDE_ExampleDebugPanelMain.png|850px|link=]]
| |
| | |
| * Configure the ''Startup' panel to load and run the Firmware in the target:
| |
| {{info| '''Note:'''
| |
| :* To work in Engineering mode, you need to:
| |
| ::* Select the [[STM32 MPU ROM code overview#Developer (also known as "engineering") mode|Engineering boot pin]] on your board
| |
| ::* Select the Engineering mode in the panel below
| |
| }}
| |
| | |
| [[File:IDE_ExampleDebugPanelStartup.png|850px|link=]]
| |
| | |
| [[File:IDE_ExampleDebugPanelLoadFw.png|850px|link=]]
| |
| | |
| [[File:IDE_ExampleRunning.png|850px|link=]]
| |
| | |
| =====How to start/stop an example=====
| |
| | |
| * Locate path where the firmware has been loaded
| |
| | |
| [[File:IDE_ExampleConsole.png|850px|link=]]
| |
| | |
| * Use a script to start/stop the firmware
| |
| | |
| [[File:IDE_ExampleConsoleStartStop.png|850px|link=]]
| |
| | |
| ===Distribution Package for STM32CubeMP1===
| |
| '''[[Which STM32MPU Embedded Software Package better suits your needs#Distribution Package|Distribution Package]]''' provides all the '''STM32MCube MPU''' source code integrated in [[OpenSTLinux_distribution]]. It allows you to build all the examples provided in the '''STM32CubeMP1 Package''' and generates a full distribution based on Linux OS. All example binaries (or firmware) are integrated in the Linux file system.
| |
| | |
| {{Warning|The Distribution Package is not a development environment as it is based on the OpenEmbedded environment. OpenEmbedded is a build framework that is used to create Linux distributions for embedded devices.}}
| |
| | |
| ====Prerequisites====
| |
| | |
| * [[STM32MP1_Distribution_Package|OpenSTLinux Distribution Package]] for further information about the '''OpenSTLinux distribution'''.
| |
| * [[STM32MP1_Distribution_Package#Installing_the_OpenSTLinux_distribution|Installing the OpenSTLinux distribution]] for further information on how to install and initialize the '''OpenSTLinux''' environment
| |
| Please refer to
| |
| * [[STM32_MPU_OpenSTLinux_release_note#Machine_features|STM32 MPU OpenSTLinux layer]] for further information about the dedicated M4 project recipe (named '''m4projects-stm32mp1''')
| |
| | |
| {{Warning|Make sure that you have installed the OpenSTLinux Distribution Package and that you have initialized and built the environment for the first time}}
| |
| | |
| ====Introduction to m4projects recipe====
| |
| All M4 firmware (Examples) are provided inside a dedicated recipe named '''m4projects''' in the '''OpenSTLinux distribution'''
| |
| | |
| Please find below the OpenSTLinux and M4projects structure:
| |
| | |
| * OpenSTLinux structure :
| |
| {{UpdateNeededForNewRelease|Update structure and list of recipes below according to new release}}
| |
| openstlinux-<release_version> OpenSTLinux distribution
| |
| ├── layers/meta-openembedded Collection of layers for the OpenEmbedded-Core universe (OpenEmbedded standard)
| |
| ├── layers/meta-qt5 QT5 layer for OpenEmbedded (standard)
| |
| ├── layers/meta-st
| |
| │ ├── meta-st-openstlinux STMicroelectronics layer that contains the frameworks and images settings for the OpenSTLinux distribution
| |
| │ ├── meta-st-stm32mp STMicroelectronics layer that contains the description of the BSP for the '''STM32MP1''' devices
| |
| │ │ ├── recipes-bsp
| |
| │ │ │ ├── alsa Recipes for ALSA control configuration
| |
| │ │ │ ├── drivers Recipes for Vivante GCNANO GPU kernel drivers
| |
| │ │ │ ├── trusted-firmware-a Recipes for TF-A
| |
| │ │ │ └── u-boot Recipes for U-Boot
| |
| │ │ ├── recipes-connectivity
| |
| │ │ │ └── wifi Recipes for Wifi
| |
| │ │ ├── recipes-extended
| |
| │ │ │ ├── linux-examples Recipes to manage Linux examples for Cortex-A
| |
| │ │ │ ├── m4coredump Recipes to manage coredump for Cortex-M
| |
| │ │ │ └── {{Green|m4projects}} {{Highlight|Recipes to manage '''STM32CubeMP1 Package''' examples and applications within the OpenSTLinux distribution}}
| |
| │ │ ├── recipes-graphics
| |
| │ │ │ ├── gcnano-userland Recipes for Vivante libraries OpenGL ES, OpenVG and EGL (multi backend)
| |
| │ │ │ └── [...]
| |
| │ │ ├── recipes-kernel
| |
| │ │ │ ├── linux Recipes for Linux kernel
| |
| │ │ │ └── linux-firmware Recipes for Linux firmwares (example, Bluetooth firmware)
| |
| │ │ ├── recipes-security
| |
| │ │ │ └── optee Recipes for OPTEE
| |
| │ │ ├── recipes-st
| |
| │ │ │ └── images Recipes for the bootfs and userfs partitions binaries
| |
| │ │ └── [...]
| |
| │ ├── meta-st-stm32mp-addons STMicroelectronics layer that helps managing the STM32CubeMX integration
| |
| │ └── scripts
| |
| │ ├── envsetup.sh Environment setup script for Distribution Package
| |
| │ └── [...]
| |
| └── openembedded-core Core metadata for current versions of OpenEmbedded (standard)
| |
| | |
| * M4projects structure :
| |
| | |
| openstlinux-<release_version> OpenSTLinux distribution
| |
| ├── layers/meta-st
| |
| │ ├── meta-st-stm32mp STMicroelectronics layer that contains the description of the BSP for the '''STM32MP1''' devices
| |
| │ │ ├── recipes-extended
| |
| │ │ │ ├── {{Green|m4projects}} {{Highlight|Recipes for '''STM32CubeMP1 Package''' within the OpenSTLinux distribution}}
| |
| │ │ │ │ ├── files
| |
| │ │ │ │ │ ├── Makefile.stm32 {{Highlight|Makefile used to build M4 examples}}
| |
| │ │ │ │ │ ├── parse_project_config.py {{Highlight|Specific parser to retrieve examples names / board names and paths}}
| |
| │ │ │ │ │ ├── st-m4firmware-load-default.sh
| |
| │ │ │ │ │ └── st-m4firmware-load.service
| |
| │ │ │ │ ├── m4projects.inc {{Highlight|Definition of rules to be applied to build/install Firmwares and scripts in Linux File System}}
| |
| │ │ │ │ └── m4projects-stm32mp1.bb {{Highlight|List of examples splitted according to supported boards}}
| |
| | |
| This recipe is in charge of:
| |
| * building all examples and applications listed in '''m4projects.bb''' and initially located in '''Firmware/Projects/<Board_name>''' from '''STM32CubeMP1 Package''' source code
| |
| * installing built examples in the Linux File System ('''/usr/local/Cube-M4-examples/'''), including all generated firmware binaries (elf files), the script to start/stop the firmware (fw_cortex_m4.sh) and a README file for each example
| |
| {{UpdateNeededForNewBoard|Update tree with new board name}}
| |
| /usr/local/Cube-M4-examples/
| |
| |-- <BOARD_NAME> (ie {{Green|STM32MP157C-EV1}})
| |
| |-- <EXAMPLE_TYPE> (ie {{Green|Examples or Applications}})
| |
| |-- <PROJECT_NAME> (ie {{Green|OpenAMP_TTY_echo}})
| |
| |-- {{Green|fw_cortex_m4.sh}}
| |
| |-- {{Green|README}}
| |
| |--lib
| |
| |--firmware
| |
| |-- ELF file for <BOARD_NAME> (ie {{Green|OpenAMP_TTY_echo.elf}})
| |
| |-- <BOARD_NAME> (ie {{Green|STM32MP157C-DK2}})
| |
| ...
| |
| | |
| ====How to retrieve the STM32CubeMP1 source code====
| |
| =====Introduction to the devtool utility=====
| |
| | |
| The '''STM32CubeMP1''' source code is already included in the '''OpenSTLinux''' distribution, but the source code is not directly visible nor available for development purposes.
| |
| To retrieve the source code, we need to use the '''devtool''' utility, which is provided in the environment.
| |
| | |
| {{info| '''Note:'''
| |
| *Refer to the [[STM32MP1_Distribution_Package#devtool_utility|Devtool Utility]] to obtain further information on how to retrieve source code from the '''OpenSTLinux''' environment}}
| |
| | |
| For more information on '''devtool''' you can use the following command :
| |
| | |
| {{Board$}} devtool --help
| |
| <pre>
| |
| NOTE: Starting bitbake server...
| |
| usage: devtool [--basepath BASEPATH] [--bbpath BBPATH] [-d] [-q]
| |
| [--color COLOR] [-h]
| |
| <subcommand> ...
| |
| | |
| OpenEmbedded development tool
| |
| | |
| options:
| |
| --basepath BASEPATH Base directory of SDK / build directory
| |
| --bbpath BBPATH Explicitly specify the BBPATH, rather than getting it
| |
| from the metadata
| |
| -d, --debug Enable debug output
| |
| -q, --quiet Print only errors
| |
| --color COLOR Colorize output (where COLOR is auto, always, never)
| |
| -h, --help show this help message and exit
| |
| | |
| subcommands:
| |
| Beginning work on a recipe:
| |
| add Add a new recipe
| |
| modify Modify the source for an existing recipe
| |
| upgrade Upgrade an existing recipe
| |
| Getting information:
| |
| status Show workspace status
| |
| search Search available recipes
| |
| Working on a recipe in the workspace:
| |
| build Build a recipe
| |
| rename Rename a recipe file in the workspace
| |
| edit-recipe Edit a recipe file in your workspace
| |
| find-recipe Find a recipe file in your workspace
| |
| configure-help Get help on configure script options
| |
| update-recipe Apply changes from external source tree to recipe
| |
| reset Remove a recipe from your workspace
| |
| finish Finish working on a recipe in your workspace
| |
| Testing changes on target:
| |
| deploy-target Deploy recipe output files to live target machine
| |
| undeploy-target Undeploy recipe output files in live target machine
| |
| build-image Build image including workspace recipe packages
| |
| Advanced:
| |
| create-workspace Set up workspace in an alternative location
| |
| import Import exported tar archive into workspace
| |
| extract Extract the source for an existing recipe
| |
| sync Synchronize the source tree for an existing recipe
| |
| export Export workspace into a tar archive
| |
| Use devtool <subcommand> --help to get help on a specific command
| |
| </pre>
| |
| | |
| =====Retrieve the source code=====
| |
| To retrieve the source code, you need to follow the steps described below, once you have initialized and built the OpenSTLinux environment for the first time:
| |
| | |
| * Go into your workspace
| |
| {{Board$}} cd openstlinux-<release_version>
| |
| | |
| * Call devtool with the name of the recipe you want to retrieve (m4projects-stm32mp1), and specify a location in which to load the source code (sources/m4projects-stm32mp1)
| |
| {{Board$}} devtool modify m4projects-stm32mp1 sources/m4projects-stm32mp1
| |
| | |
| * Check status
| |
| {{Board$}} devtool status
| |
| NOTE: Starting bitbake server...
| |
| m4projects-stm32mp1: <path_to_your_workspace>/sources/m4projects-stm32mp1
| |
| | |
| * Go in '''STM32CubeMP1''' Firmware source code
| |
| {{Board$}} cd <path_to_your_workspace>/sources/m4projects-stm32mp1
| |
| {{UpdateNeededForNewBoard|Update the list below with new board}}
| |
| | |
| {{Green|m4projects-stm32mp1}}
| |
| ├── COPYING
| |
| ├── {{Green|Drivers}}
| |
| │ ├── BSP
| |
| │ ├── CMSIS
| |
| │ └── STM32MP1xx_HAL_Driver
| |
| ├── _htmresc
| |
| ├── {{Green|Middlewares}}
| |
| │ └── Third_Party
| |
| ├── package.xml
| |
| ├── {{Green|Projects}}
| |
| │ ├── STM32CubeProjectsList.html
| |
| │ ├── STM32MP157C-DK2
| |
| │ └── STM32MP157C-EV1
| |
| ├── Release_Notes.html
| |
| └── {{Green|Utilities}}
| |
| └── ResourcesManager
| |
| | |
| {{info| '''Note:'''
| |
| * Refer to the [[STM32CubeMP1_Package#Overview|STM32CubeMP1 Package Overview]] for further information on source code structure}}
| |
| | |
| ====How to develop/modify/build/download an example without OpenEmbedded====
| |
| | |
| As the '''STM32CubeMP1''' source code and structure is exactly the same as that provided in the Developer Package, you can develop / modify / build and download an example by following description of [[STM32CubeMP1_Package#Developer_Package_for_STM32CubeMP1|Developer_Package for STM32CubeMP1]]
| |
| | |
| ====How to add a new example with OpenEmbedded====
| |
| | |
| The list of examples to be included in the Linux File System is defined in the file '''m4projects-stm32mp1.bb''' of the recipe '''m4projects'''
| |
| | |
| * go into recipe '''m4projects'''
| |
| {{Board$}} cd <path_to_your_workspace>/layers/meta-st/meta-st-stm32mp/recipes-extended/m4projects
| |
| | |
| {{UpdateNeededForNewBoard|Update the list below with new board name}}
| |
| {{UpdateNeededForNewRelease|Update list below with new examples provided in the new release}}
| |
| * Edit the file '''m4projects-stm32mp1.bb''' and add your new example to be built according to the board you want to use (EVAL/EVx or DISCO/DKx)
| |
| PROJECTS_LIST_EVAL = " \
| |
| 'STM32MP157C-EV1/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA' \
| |
| 'STM32MP157C-EV1/Examples/Cortex/CORTEXM_MPU' \
| |
| 'STM32MP157C-EV1/Examples/CRYP/CRYP_AES_DMA' \
| |
| 'STM32MP157C-EV1/Examples/CRC/CRC_UserDefinedPolynomial' \
| |
| 'STM32MP157C-EV1/Examples/DAC/DAC_SimpleConversion' \
| |
| 'STM32MP157C-EV1/Examples/DMA/DMA_FIFOMode' \
| |
| 'STM32MP157C-EV1/Examples/GPIO/GPIO_EXTI' \
| |
| 'STM32MP157C-EV1/Examples/HASH/HASH_SHA224SHA256_DMA' \
| |
| 'STM32MP157C-EV1/Examples/I2C/I2C_TwoBoards_ComDMA' \
| |
| 'STM32MP157C-EV1/Examples/I2C/I2C_TwoBoards_ComIT' \
| |
| 'STM32MP157C-EV1/Examples/PWR/PWR_STOP_CoPro' \
| |
| 'STM32MP157C-EV1/Examples/QSPI/QSPI_ReadWrite_IT' \
| |
| 'STM32MP157C-EV1/Examples/SPI/SPI_FullDuplex_ComDMA_Master/' \
| |
| 'STM32MP157C-EV1/Examples/SPI/SPI_FullDuplex_ComDMA_Slave/' \
| |
| 'STM32MP157C-EV1/Examples/TIM/TIM_DMABurst' \
| |
| {{Green|'STM32MP157C-EV1/Examples/TIM/TIM_MyFirmware' }} {{Highlight| <- Adding new example '''TIM_MyFirmware'''}}
| |
| 'STM32MP157C-EV1/Examples/UART/UART_TwoBoards_ComIT' \
| |
| 'STM32MP157C-EV1/Examples/UART/UART_Receive_Transmit_Console' \
| |
| 'STM32MP157C-EV1/Examples/WWDG/WWDG_Example' \
| |
| 'STM32MP157C-EV1/Applications/FreeRTOS/FreeRTOS_ThreadCreation' \
| |
| 'STM32MP157C-EV1/Applications/OpenAMP/OpenAMP_Dynamic_ResMgr' \
| |
| 'STM32MP157C-EV1/Applications/OpenAMP/OpenAMP_raw' \
| |
| 'STM32MP157C-EV1/Applications/OpenAMP/OpenAMP_TTY_echo' \
| |
| 'STM32MP157C-EV1/Applications/OpenAMP/OpenAMP_TTY_echo_wakeup' \
| |
| 'STM32MP157C-EV1/Applications/CoproSync/CoproSync_ShutDown' \
| |
| 'STM32MP157C-EV1/Demonstrations/AI_Character_Recognition' \
| |
| "
| |
| PROJECTS_LIST_DISCO = " \
| |
| 'STM32MP157C-DK2/Examples/ADC/ADC_SingleConversion_TriggerTimer_DMA' \
| |
| 'STM32MP157C-DK2/Examples/Cortex/CORTEXM_MPU' \
| |
| 'STM32MP157C-DK2/Examples/CRYP/CRYP_AES_DMA' \
| |
| 'STM32MP157C-DK2/Examples/CRC/CRC_UserDefinedPolynomial' \
| |
| 'STM32MP157C-DK2/Examples/DMA/DMA_FIFOMode' \
| |
| 'STM32MP157C-DK2/Examples/GPIO/GPIO_EXTI' \
| |
| 'STM32MP157C-DK2/Examples/HASH/HASH_SHA224SHA256_DMA' \
| |
| 'STM32MP157C-DK2/Examples/I2C/I2C_TwoBoards_ComIT' \
| |
| 'STM32MP157C-DK2/Examples/LPTIM/LPTIM_PulseCounter' \
| |
| 'STM32MP157C-DK2/Examples/PWR/PWR_STOP_CoPro' \
| |
| 'STM32MP157C-DK2/Examples/SPI/SPI_FullDuplex_ComDMA_Master' \
| |
| 'STM32MP157C-DK2/Examples/SPI/SPI_FullDuplex_ComDMA_Slave' \
| |
| 'STM32MP157C-DK2/Examples/SPI/SPI_FullDuplex_ComIT_Master' \
| |
| 'STM32MP157C-DK2/Examples/SPI/SPI_FullDuplex_ComIT_Slave' \
| |
| 'STM32MP157C-DK2/Examples/TIM/TIM_DMABurst' \
| |
| 'STM32MP157C-DK2/Examples/UART/UART_TwoBoards_ComDMA' \
| |
| 'STM32MP157C-DK2/Examples/UART/UART_TwoBoards_ComIT' \
| |
| 'STM32MP157C-DK2/Examples/UART/UART_Receive_Transmit_Console' \
| |
| 'STM32MP157C-DK2/Examples/WWDG/WWDG_Example' \
| |
| 'STM32MP157C-DK2/Applications/FreeRTOS/FreeRTOS_ThreadCreation' \
| |
| 'STM32MP157C-DK2/Applications/OpenAMP/OpenAMP_raw' \
| |
| 'STM32MP157C-DK2/Applications/OpenAMP/OpenAMP_TTY_echo' \
| |
| 'STM32MP157C-DK2/Applications/OpenAMP/OpenAMP_TTY_echo_wakeup' \
| |
| 'STM32MP157C-DK2/Applications/CoproSync/CoproSync_ShutDown' \
| |
| 'STM32MP157C-DK2/Demonstrations/AI_Character_Recognition' \
| |
| "
| |
| | |
| ====How to rebuild an example with OpenEmbedded====
| |
| | |
| If you need to provide a new software Linux image with a Linux file system updated with your changes, please follow the instructions below:
| |
| | |
| * Make your changes in '''STM32MP1 Firmware''' source code (in '''<path_to_your_workspace>/sources/m4projects-stm32mp1/stm32cube_fw_mp1''')
| |
| | |
| * Go to the build folder
| |
| | |
| {{Board$}} cd <path_to_your_workspace>/build-<name_of_distro>
| |
| | |
| * Clean the m4projects build folder
| |
| {{Board$}} bitbake m4projects-stm32mp1 -f -c cleanall
| |
| | |
| * Rebuild the recipe m4projects
| |
| {{Board$}} bitbake m4projects-stm32mp1
| |
| | |
| * Rebuild the image
| |
| {{Board$}} bitbake st-image-weston
| |
| | |
| ====How to download an image====
| |
| | |
| *Refer to [[STM32MP1_Distribution_Package#Flashing_the_built_image|Flashing the built image]] to obtain all information on how to Flash a new image on the '''STM32MP1''' board
| |
| | |
| === Logging in production mode ===
| |
| On top of all the different tools supporting STM32CubeMP1 debugging, the different examples have integrated in a way to log STM32CubeMP1 firmware visible from Linux (so, only valid for production mode).<br>
| |
| A resource table entry is dedicated for that, see: [[Coprocessor_resource_table#How_to_add_trace_for_the_log_buffer|How to add trace for the log buffer]].
| |
| <br>
| |
| The principle:
| |
| * '''"__LOG_TRACE_IO_"''' preprocessor flag needs to be defined
| |
| * The logs done with log_info() or log_err() functions will be available in Linux sysfs file: '''"/sys/kernel/debug/remoteproc/remoteproc0/trace0"'''
| |
| | |
| These logs can be retrieved after a firmware crash: refer to [[How to retrieve Cortex-M4 logs after crash]] for more information.
| |
| | |
| ==References==
| |
| <references/>
| |
| | |
| <noinclude>
| |
| {{PublicationRequestId | 10406 | 24Jan'19 | PhilipS}}
| |
| [[Category:STM32Cube MPU Package|01]]
| |
| [[Category:STM32CubeMP1|01]]
| |
| </noinclude>
| |