Get ready for the STM32 Summit 2026 | Online, November 3
Join conversations with your peers and ST experts. Explore the full potential of STM32 microprocessors for your embedded design.
Most recent activity
Hi there, I want to flash a HEX file using a Raspberry PI. So I followed the steps described here.But if I run this line:$> ./SetupSTM32CubeProgrammer-2.13.0.linuxI get the message:bash: ./SetupSTM32CubeProgrammer-2.13.0.linux: cannot execute binary file: Exec format errorHas someone an idea why this is not working?Im running Raspbian GNU/Linux 11 (bullseye)
Hello,I'm stalling with an issue with Optee on a custom board with 256 MB of ram and an STM32MP135D.The environment was working with the DK (MP135F and 512M ram).I followed the guide for the configuration with 256 MB of ram (https://wiki.st.com/stm32mpu/wiki/How_to_configure_a_256MB_DDR_mapping_from_STM32_MPU_Distribution_Package), however it panics as soon as optee starts.Am I missing something or do you have some hints?Thank you NOTICE: CPU: STM32MP135D Rev.Y NOTICE: Model: STMicroelectronics custom STM32CubeMX board - openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06 ERROR: nvmem node board_id not found INFO: PMIC version = 0x21 WARNING: VDD unknown WARNING: stm32_rng_init: No RNG found in device tree. NOTICE: Reset reason (0x35): INFO: Power-on Reset (rst_por) INFO: FCONF: Reading TB_FW firmware configuration file from: 0x2ffe0000 INFO: FCONF: Reading firmware configuration information for: stm32mp_fuse INFO: FCONF: Reading firmware configuration information for: stm32mp_io INFO:
Hi everyone,I’m currently working on a camera preview pipeline on the STM32MP257F-DK using the Sony IMX335 (MIPI CSI-2) sensor.One important point is that STM32MP2 uses a media-controller-based camera architecture (DCMIPP + CSI subdevices). Because of this, Qt Multimedia cannot directly detect the MIPI camera as a standard /dev/videoX capture device. For that reason, I am using libcamera as the capture backend. It correctly handles the media graph configuration internally and exposes a usable video stream to GStreamer, which makes camera streaming stable and reliable.The functional pipeline is working. However, the goal is to display the live feed inside a Qt6 QML application with proper GPU acceleration, and this is where I am facing a major performance bottleneck: CPU usage is very high during preview, while the Vivante GPU remains mostly idle.I’d really appreciate guidance from anyone who has implemented a zero-copy GPU camera pipeline on STM32MP2.Platform OverviewBoard:
Hello,I am facing a kernel crash (Oops) on an STM32MP2 platform while using UART with DMA. The issue occurs during runtime power management resume.EnvironmentPlatform: STM32MP2 (custom board)Kernel: 6.6.78 (OpenSTLinux - Yocto Scarthgap)UART driver: stm32_usartDMA: EnabledWorkqueue: pm_runtime_workObservations:Crash happens in DMA virtual channel submissionTriggered during runtime resume (PM)Address dead000000000xxx suggests:Use-after-free, orUninitialized / corrupted DMA descriptorAre there any patches or recommended fixes for this scenario?
I want to do hands on interfacing of all interfaces available with STM32MP157C-DK2.Can you suggest resources on how can I do all interfacings on STM32MP157C-DK2.
Hello,I'm a migrating from openSTLinux ecosystem 5 to 6 on an existing product of ours (with a stm32mp157) and we are really focused on power consumption efficiency. The main difference between our first version and the second is that we first had TF-A + SPMIN and now we are using the OP-TEE OS.Previous :TF-A 2.4 +SPMINU-Boot 2020.10Linux 5.10Bump to :TF-A 2.10OP-TEE 4.0.0U-Boot 2023.10Linux 6.6We achieved to reach almost the same application state as we were with our version 5 except about the power consumption. We set the MPU on standby with suspend to RAM mode and we measured the consumption of the overall board and we found that our system used around 10mW more with version 6. After a lot of research, we found out the culprit which is the OP-TEE DDR driver that doesn't latch the CKOE and never disables the DDRPHYCEN bit. Indeed, in ST version of arm-trusted-firmware 2.4-stm32mp, the CKOE pin is disabled when entering the DDR Self Refresh mode and enabled again when l
Hello,There seems to be an issue with the I2C addresses listed in the MB1854 (B-CAMS-IMX) documentation and schematics (B01/B02).The documents show:IMU: 0xD4 / 0xD5ToF: 0x52However, these appear to be 8-bit addresses. The correct 7-bit I2C addresses should be:ToF (VL53L5CX): 0x29IMU (ISM330DLC): 0x6A / 0x6BThis can cause confusion when using standard I2C tools or drivers.Could you please clarify or update the documentation to specify the address format (7-bit vs 8-bit)?Thanks.
Hello. I have a custom stm32mp135f board with emmc1(SDMMC2) and about to launch linux.(Minimized version of 135f-dk, no-sdcard, no-ethernet)I flashed the target with the CubeProgrammer normally.When the kernel loads userfs there says 'root '/dev/disk/by-partuuid/491f6117-415d-4f53-88c9-6e0de54deac6' doesn't exist or does not contain a /dev." and stopped.How do I solve this problem?This is full log capture.Starting kernel ... I/TC: Reserved shared memory is disabled I/TC: Dynamic shared memory is enabled I/TC: Normal World virtualization support is disabled I/TC: Asynchronous notifications are enabled [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.6.48-gd96ac4cc57f6 (oe-user@oe-host) (arm-ostl-linux-gnueabi-gcc (GCC) 13.3.0, GNU ld (GNU Binutils) 2.42.0.20240716) #1 PREEMPT Fri Jun 20 08:08:22 UTC 2025 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.
Hello everyoneWhen I add OpenAMP to Pinout & Configration of .ioc and build it, the build failsThe steps are as follows:Create a new project (fuga_oka) for STM32MP277F-EV1 in STM32CubeIDEBuild this project. The build will finish successfullyAdd OpenAMP to this projectOpen fuga_oka.ioc - Select OPENAMP in Pinout & Configration -> middle ware & Software Packs - Check M33NS(Cube) - Also check Activated - Save fuga_oka.iocBuild the project. Some errors will be reported and the build will failAn excerpt of the error part of the build log. The raw log is attached separately~~~C:/STM32MP2xx/fuga_oka/Middlewares/Third_Party/OpenAMP/libmetal/lib/system/generic/condition.c:12:10: fatal error: metal/condition.h: No such file or directory12 | #include <metal/condition.h>| ^~~~~~~~~~~~~~~~~~~~compilation term
Dear All,I am currently working with STM32MP257 however it gives me lot of confusions. Looking into the Linker script the memory has been defined as follows:MEMORY{FLASH (xrw) : ORIGIN = 0x80100600, LENGTH = 8387072NS_VECTOR_TBL (xrw) : ORIGIN = 0x80100000, LENGTH = 1536VIRTIO_SHMEM (xrw) : ORIGIN = 0x812f8000, LENGTH = 32KIPC_SHMEM_1 (xrw) : ORIGIN = 0x81200000, LENGTH = 992KRAM (xrw) : ORIGIN = 0x80a00000, LENGTH = 1024K}Where I fail to understand why the RAM has been divided as I had already set them in RISAB. My understanding or assumption was the memory should have been divided into SRAMs, RETRAM, SYSRAM etc as per RISAB configuration.I don't if I have to add them manually again in linker script.Moreover, the device tree (.dtsi) for OpenSTlinux also does not mention any memory divisions as in examples. The file: stm32mp257f-hrt-mc-stm32mp2-mx-resmem.dtsi only has the following code:// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause)/** Copyright (C) 2026, STMicroelectro
Hi everyone, I’m having trouble launching STM32 ISP IQTune ver. 2.0.0 on Windows 11. When I start the application, I get the following error message:“The IQTT service could not be started.” The message also mentions checking that port 7132 is free. To verify this, I ran the following command in the Command Prompt:netstat -ano | findstr 7132 However, it returned no output, so I assume that port 7132 is not in use.Has anyone encountered this issue before? What could be causing this error, and how can I resolve it? Any help would be greatly appreciated. Best Regards,Perorin-Q
Hello ST team,I am facing a boot-time crash in OP‑TEE on an STM32MP257DAI3.The system boots through BL2 and BL31 successfully, but OP-TEE triggers a data abort followed by a SERC exception, leading to a panic at <stm32_serc_handle_ilac>.I would appreciate guidance on correct RIF/RISAF configuration for OP-TEE and how to trace SERC exception ID's to actual peripheral .Here is my OPTEE error logWARNING: This OP-TEE configuration might be insecure! WARNING: Embeds insecure stm32mp_provisioning driver ..... I/TC: Platform stm32mp2: flavor PLATFORM_FLAVOR - DT stm32mp257f-ev1.dts I/TC: OP-TEE ST profile: secure_and_system_services D/TC:0 0 call_initcalls:40 level 3 check_ta_store() D/TC:0 0 check_ta_store:418 TA store: "early TA" D/TC:0 0 check_ta_store:418 TA store: "Secure Storage TA" D/TC:0 0 check_ta_store:418 TA store: "REE" D/TC:0 0 call_initcalls:40 level 3 early_ta_init() D/TC:0 0 early_ta_init:56 Early TA 80a4c275-0a47-4905-8285-1486a9771a08 size 46235 (compressed, unco
DescriptionHello,we are currently integrating secure boot on an STM32MP15-based platform using the ST OpenSTLinux ecosystem (TF-A + OP-TEE + U-Boot + RAUC / ST update solution here: https://github.com/STMicroelectronics/meta-st-ota/).During this work, we identified a potential gap in the chain of trust related to the boot filesystem (bootfs), specifically the use of a mutable extlinux.conf.ProblemIn our current setup:TF-A authenticates FIP (OP-TEE + U-Boot)U-Boot supports FIT signature verification for kernel / DTB / initramfsextlinux.conf is stored in bootfs (ext4) and remains writable - this post-install.sh changes rootfs partuuid after each update. U-Boot uses extlinux.conf to select kernel / DTB and to define kernel command line (`root=PARTUUID=e91c4e10...`). This PARTUUID is changed after the update. With secure boot enabled, if extlinux remains mutable, it cannot be signature-protected, which violates the chain of trust.QuestionWhat is the recommende
Hello!I'm working on a STM32MP257F-EV1 board. So far, I've been modifying the kernel device tree that came with the kernel after building the openstlinux distribution, and have that working. I'd like to move to CubeMX-generated device trees though, to adapt to a future custom design (still on the EV1 board for now though). I'm using CubeMX 6.17.0 on Ubuntu Linux.However, I was surprised to find out that simply doing "Start My Project from ST Board" and selecting the EV1 doesn't actually configure the board with the same functionality as the defaults from the distribution:* In my earlier post, I noted that eMMC booting doesn't work [1] (now works, but after changes)* I have bluetooth connected to USART6, also doesn't work out of the box (and still doesn't)* A SDIO-connected wifi card sits on the sdmmc1 (the SD card slot). Works with my modifications to the kernel device tree, but not with the same modifications to the /* USER CODE BEGIN ... END */ sections in the CubeMX-generated tree.*
I got a panic message from drivers/st/clk/clk-stm32-core.c at Trusted Firmware. My question is: What is clock ID 5? Is that MSI clock or LSE clock?Is there any information I could read about this ID?int clk_stm32_enable_call_ops(struct stm32_clk_priv *priv, uint16_t id) { const struct stm32_clk_ops *ops = _clk_get_ops(priv, id); if ((ops->is_enabled != NULL) && ops->is_enabled(priv, id)) { return 0; } if (ops->enable != NULL) { ops->enable(priv, id); } if ((ops->is_enabled != NULL) && !ops->is_enabled(priv, id)) { ERROR("failed to enable clock id: %u\n", id); panic(); } return 0; } The output isNOTICE: Early console setup ERROR: failed to enable clock id: 5 BACKTRACE: START: clk_stm32_enable_call_ops 0: EL3: 0xe017bac 1: EL3: 0xe01be2c 2: EL3: 0xe01beb0 3: EL3: 0xe01bf54 4: EL3: 0xe01c240 5: EL3: 0xe01db28 6: EL3: 0xe029a2c 7: EL3: 0xe0170dc BACKTRACE: END: clk_stm32_enable_call_ops PANIC at PC : 0x000000000e01be
Hello,I am facing an issue with DFU mode on an STM32MP157C when Secure Boot is enabled (OTP locked) and SCMI is active via OP-TEE, and I would like to confirm whether this is an expected behavior or a known limitation.I am using STM32CubeProgrammer to load FSBL and the FIP image into RAM, then entering U-Boot DFU mode in order to flash the eMMC. This workflow is used for recovery and reprogramming purposes.I am using the same software stack (ATF 2.12, OP-TEE 4.3.0, U-Boot 2025.01, device tree with SCMI configuration) on the two boards (based on stm32mp157c-dk2).The only difference between them is the Secure Boot state: one board is not locked, the other one has Secure Boot enabled.On the non-locked board, DFU works reliably with STM32CubeProgrammer. I can enter DFU mode, send the FlashLayout, and perform multiple DFU transactions without any issue. OP-TEE does print errors related to SCMI TA loading, but DFU continues normally.On the locked board, DFU becomes unstable. T
Hi ST community,We are bringing up a brand-new custom board based on STM32MP131C (Rev.Y) and are facing an issue while flashing SPI-NAND over USB DFU.Boot statusTF-A (BL2/BL31) boots correctlyOP-TEE OS boots and hands off to normal worldU-Boot starts normally and detects SPI-NANDSo the full boot chain up to U-Boot looks healthy.SPI-NAND detailsPart: GigaDevice GD5F4GM8UExxGSize: 512 MiBBlock size: 128 KiBPage size: 2048OOB: 128Detected correctly by U-Boot.Issue descriptionWhen flashing over USB DFU from U-Boot, erase/write operations fail due to many bad blocks at very low addresses, including block 0.Example output:Marking bad block at 0x00000000 (-5)Skipping bad block at 0x00020000Skipping bad block at 0x00040000Skipping bad block at 0x00060000Limit reached 0x80000 while erasing at offset 0x80000Error: DFU write errorBecause of this, DFU flashing fails consistently.Are there specific U-Boot or TF-A configurations recommended for SPI-NAND on STM32MP13?Please find the attached patches
Section 2 of this page shows how to setup python for building firmware. It seems the rest of the tutorials assume you are building on a modern Ubuntu, so I would suggest changing the following lines:pip install pyelftoolspip install pycryptodomexto:sudo apt install python3-pyelftoolssudo apt install python3-pycryptodomeI would also suggest adding:sudo apt install python-is-python3 My reasons are that you can not/should not install the above packages to the global python environment with pip. Also, the makefiles for M33 firmware call 'python' which does not exist on a new ubuntu install (well, it didn't on mine). Installing python-is-python3 is the recommended way to resolve this. Alternately use a virtual environment, but the firmware build system seems to assume use of the global python.
Dear All,I generated the code after configuring the STM32MP257F on CubeMX, however, after opening the generated project on STMCubeIDE and building it yield errors. I don't get why. Please Help.Here is the complete error report shown on IDE:16:38:45 **** Incremental Build of configuration Debug for project hrt-mc-stm32mp2_CM33 ****make -j8 all arm-none-eabi-gcc "../OPENAMP/mbox_ipcc.c" -mcpu=cortex-m33 -std=gnu11 -g3 -DDEBUG -DUSE_FULL_LL_DRIVER -DNO_ATOMIC_64_SUPPORT -DMETAL_INTERNAL -DMETAL_MAX_DEVICE_REGIONS=2 -DVIRTIO_SLAVE_ONLY -DCORE_CM33 -DUSE_HAL_DRIVER -DSTM32MP257Fxx -c -I../Core/Inc -I"C:/Users/Foto/Battery Dynamics GmbH/80 Students - Documents/83 Data/2025-05 MA Swain/17_WS/STM32MP/IOC/Middlewares/Third_Party/OpenAMP/open-amp/lib/include" -I../OPENAMP -I../../Drivers/STM32MP2xx_HAL_Driver/Inc -I../../Drivers/STM32MP2xx_HAL_Driver/Inc/Legacy -I../../Utilities/ResourcesManager -I../../Drivers/CMSIS/Device/ST/STM32MP2xx/Include -I../../Middlewares/Third_Party/OpenAMP/virtual_dr
Are there STM32CubeMX files for the example projects in STM32Cube_FW_MP2? It would really help understand peripheral configuration. Specifically the .ioc file for the OpenAMP example project used in this tutorial.I am trying to better understand STM32CubeMX peripheral setup, especially in regard to how each peripheral can be selected for each core in secure or non secure mode. And how that interacts with the Linux device tree.
Hello,I have some sort of experience working with linux on RPI.I wanted to increase my embedded linux experience with STM32MP.So I wonder, should I buy STM32MP2 because its newer, or STM32MP1 because it will probably have more support and more reference because its been here for some time now?Also, for STM32MP257F-DK, the debug port and the power supply are shared on the same USB-C, how can i do both at the same time? because I don't think the PC can supply it with enough powerWould I need anything to start other than the external USB-C power supply?Any other recommendations are welcome
I flash the image from FlashLayout_sdcard_stm32mp257f-ev1-ca35tdcid-ostl-m33-examples-optee.tsv pi@inspiron:~/yocto/build-openstlinuxweston-stm32mp2/tmp-glibc/deploy/images/stm32mp2$ STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp257f-ev1-ca35tdcid-ostl-m33-examples-optee.tsv I copy stm32mp257f-ev1-ca35tdcid-ostl-m33-examples.dts from the following directory. pi@inspiron:~/yocto/build-openstlinuxweston-stm32mp2/tmp-glibc/work-shared/stm32mp2/external-dt/linux$ ls Makefile stm32mp257f-dk-ca35tdcid-ostl-resmem.dtsi stm32mp135f-dk-rt.dts stm32mp257f-ev1-ca35tdcid-ostl.dts stm32mp157f-dk2-rt.dts stm32mp257f-ev1-ca35tdcid-ostl-m33-examples.dts stm32mp157f-ev1-rt.dts stm32mp257f-ev1-ca35tdcid-ostl-m33-examples-resmem.dtsi stm32mp257f-dk-ca35tdcid-ostl.dts stm32mp257f-ev1-ca35tdcid-ostl-resmem.dtsi stm32mp257f-dk-ca35tdcid-ostl-m33-examples.dts stm32mp257f-ev1-rt.dts stm32mp257f-dk-ca35tdcid-ostl-m33-e
Hello ST community. I am trying to understand the support the otfdec https://wiki.st.com/stm32mpu/wiki/OTFDEC_internal_peripheral internal device has or will have in the OpenSTLinux. Can anyone suggest reading material on supporting the otfdec for mp2?
Section 5.1.1 Step 3 says that Copy the dts file from the directory: x-linux-gnss1-app\linux-kernel\patch\5.15\kernel to the kernelsource directory at <KERNEL SOURCE PATH>/ arch/arm/boot/dts/But in the latest X-LINUX-GNSS1 package, the linux kernel is 6.1.11 and there are 3 patch files and 1 fragment file is present. It is unclear what to copy exactly. @Saurabh.Rawat
Despite my best efforts to populate and boot the the image of the STM32MP157-DK2 using the .tsv files I am met with a mixed result To date I have yet to establish a USB connection despite following the procedures at wiki. The UART connection is working. My environment is as follows ...Ubuntu 24.04.4 LTS - stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18 - STM32CubeProgrammer v2.22.0 and STM32_Programmer_CLI Be it that I use STM32CubeProg or the STM32_Programmer_CLI terminal interface the FlashLayout_sdcard_stm32mp157f-dk2-optee.tsv is not found despite the path being correct. Yet I am able to flash tf-a-stm32mp157c-dk2-optee-programmer-usb.stm32 0x01 or tf-a-stm32mp157f-dk2-optee-programmer-usb.stm32 0x01 using the terminal which was the first value in a sequence of the .tsv file (see kate as an example). The same conundrum occurs using STM32CubeProg. Might you suggest how I might resolve this problem - be it in establishing a USB connection or flashing the sd card usin
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.