Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and find answers on STM32 microprocessors and dedicated embedded software solutions, such as Yocto SDK, Qt, and OP-TEE.
Most recent activity
Product / board: STM32MP257F-EV1, MB1936 revision, configuration [A35-TD or M33-TD]SummaryThe board worked for one session after two hardware changes, then stopped booting. LD6, LD5 and LD11 light. LD3 and LD4 do not. The Boot ROM gives no response over UART or USB.What was changedA PDM microphone was wired to PA6/PA7 by a wire tap at R169/R175 (MDF1). This was our own design decision, not based on any ST recommendation. A MAX98357A speaker amplifier was added on SAI2A (PJ11, PJ3, PJ12 at AF4), with matching device-tree changes.What I have checkedCheck Result NRST (B1) 3.3 V idle, 0 V pressed, 3.3 V after release VDDIO 3.3 V 1V8 1.8 V VDDCPU 0.8 V VDDCORE 0.8 V VDDGPU 0 V (not treated as a fault) VDD_DDR 0.037 V (not treated as a fault) VDDA1V8_AON 1.8 V VDD3V3USB 3.3 V HSE Not checked; no accessible probe point Boot ROM tests (SW1 all OPEN)STM32_Programmer_CLI -l detects the ST-LINK V3. -c port=/dev/ttyACM0 br=115200 and -c port=/dev/ttyACM1 br=11520
Hello everyone! I am following the tutorial on st wiki on how to work with STM32MP257F-DK board. Everything was going pretty good, until the “Develop on Arm® Cortex®-M33” part. This is a really important part for me, because the main reason I chose this MPU is because of the additional low-power cortex M33 and M0 co-processors. The part where I am stuck is “Modify, rebuild and reload the firmware for A35-TD flavor”. I have successfully built the “*_sign.bin” file and populated the board with it by using the “Run_Configuration” button. However past 78% the process stops and shows an error that states:“Error in final launch sequence:Failed pre launchFailed pre launchFirmware remoteproc load failed, please: 1. make sure that /lib/firmware on your target has space 2. make sure that /lib/firmware has write access > you can open a Console View for this..”In the STM32MP2 system a log of these messages are displayed:“[ 2321.306087] remoteproc remoteproc0: powering up m0 [ 2321.307
Hello,I was checking if it is possible to test my M33 NS code I generated using CubeMX would work in Developer Mode. However, the information found on internet suggest it being difficult as it requires the clock to be configured by M33 and also needs RIF accesses making it difficult. Without proper documentation on use case and how to use developer mode, it becomes challenging to work on a project within a stipulated time. So please, I would request for the help and Information to test and debug the code in Developer mode. Thanks for the support.With regardsAmit
I am working on secure boot and firmware encryption on a custom STM32MP257F board based on the STM32MP257F-DK.I have already provisioned the encryption key material into OTP and am testing encryption through Yocto using ENCRYPT_ENABLE = "1", with a 128-bit key for FSBL and a 256-bit key for FIP.I noticed that when I use the correct encryption keys, the board boots successfully.When I use a wrong key, flash fails with a decryption error.But when I remove the encryption settings from local.conf, the board still boots even though the keys are already provisioned in OTP.I want to understand why this happens. I thought that once the encryption keys are provisioned, the board should not boot without the correct keys.Could someone please clarify a few things?Is it normal for the board to boot with an unencrypted image even after the encryption keys are provisioned into OTP? Does provisioning the keys into OTP only store the keys, or is there a way to enforce encryption at boot? What is the re
Hello,I’m bringing up a custom board based on STM32MP135F and cannot read OTP reg. I am using scarthgap based Yocto distribution “openstlinux-6.6-yocto-scarthgap-mpu-v26.06.10”I modified DTS of TF-A, Optee, u-boot according to my board. File generated from openstlinux-6.1 version, I am able to able to do read and write operation.I am able to program EMMC but not able to do OTP read and write. Getting following error on COM port-optee optee: TA_NVMEM invoke failed TEE err: ffff0006, err:0Error: OTP read issue -5dfu_read: Failed to fill bufferError Log from ST-programmer CLI-Error: Read OTP Partition failedError: Uploading the OTP structure failedError: Initializing the OTP structure failedDo I need enable any configuration or any build modification for this openstlinux-6.6?
Hai, I am trying to read the data stored in the EEPROM via I²C during the U-Boot SPL stage.The EEPROM data can be read successfully from both U-Boot and user space, as shown below. Uboot Area:iWave-G62H>iWave-G62H> i2c dev 0Setting bus to 0iWave-G62H> i2c md 0x50 0x0000.2 10000: 99 .iWave-G62H> i2c md 0x50 0x0000.2 10000: 99 .iWave-G62H> i2c mw 0x50 0x0000.2 0x01 1iWave-G62H>iWave-G62H> i2c md 0x50 0x0000.2 1 0000: 01 .iWave-G62H> i2c md 0x50 0x0000.2 10000: 01 .iWave-G62H> User Space:root@imx91-iwg62h:~#root@imx91-iwg62h:~# dd if=/sys/bus/i2c/devices/0-0050/eeprom bs=1 count=1 2>/dev/null | hexdump -C00000000 01 |.|00000001root@imx91-iwg62h:~#root@imx91-iwg62h:~#root@imx91-iwg62h:~# printf '\x99' | dd of=/sys/bus/i2c/devices/0-0050/eeprom bs=1 count=1 1+0 records in1+0 recor
Hi!I’m using this commangst-launch-1.0 -v filesrc location=bbb.mp4 ! qtdemux ! h264parse ! v4l2slh264dec ! waylandsink fullscreen=trueTo play video in 1080p without lagging. But this comes without sound.How can I play sound with gst-launch-1.0?I can only play sound with “aplay /path/to/file.wav”.
Hi! When I run the command "vulkaninfo --summary". I get this critical error."libvulkan_VSI.so.1.3.3 contained a 1.1 or greater API version, but does not support vkEnumerateInstanceVersion, treating as a 1.0 ICD".What this means is that according to the data sheet of STM32MP2, the GPU supports Vulkan 1.3. but due to the lack of support for vkEnumerateInstanceVersion, the Vulkan support falls back to 1.0.Question: is this true that Vulkan falls back to 1.0 fue to this warning?Is there any newer version of libvulkan_VSI.so?Here is the complete output: """WARNING: [Loader Message] Code 0 : loader_scanned_icd_add: Driver /vendor/lib/libvulkan_VSI.so.1.3.3 supports Vulkan 1.3, but only supports loader interface version 2. Interface version 5 or newer required to support this version of Vulkan (Policy #LDP_DRIVER_7)WARNING: [Loader Message] Code 0 : terminator_CreateInstance: Manifest ICD for "/vendor/lib/libvulkan_VSI.so.1.3.3" contained a 1.1 or greater API version, but does not support vk
I have heard that ST have tried QtNanoBrowser on the MP257 and according to them the web browser is working well.My question is if there are any more additional information about the user experience of QtNanoBrowser on the MP257?For example a benchmark and which pages did run smoothly and which pages took long time to load.
Hi listI am testing the STM32MP135d-odyssey for a project. It is small, still cheap, has support for POE and on board ethernet connectors and SD-card holder. The buildroot repositories are quite old so I wonder if the board is in actual use and can be recommended for new projects?The xogium repository seems very outdated but I have cherry picked a few patches from there to a fork of STMicroelectronics repository and it builds and boots with modern buildroot. I have only tested to boot from sd-card yet.Please test if interested. I have updated versions of buildroot-stm32mp135d-odyssey, u-boot and optee_os in my Github repository.https://github.com/GauiStori/buildroot-stm32mp135d-odysseyShall I make pull requests for u-boot and optee_os to STMicroelectronics or xogium? Or is there an updated version of xogium somewhere?Now I want to see if I can find a working Yocto recipe. RegardsGudjon
Hi!I'm trying to developing a Qt6 QML application with Vulkan support. But I having some issues. Can ST Dev Team give me an example of an Qt6 QML application that use Vulkan? It must work on STM32MP257. It will be a reference. I think I having wrong code settings on my Qt6 QML application. For OpenGL, it works. But not for Vulkan.Thank you!
Error MessageDebugger Settingsi am trying to upload the firmware into the co-processor of the stm32mp157fdk-2 board and struggling with this error I shared the error details and my debug configurations In the drop down menu of the Serial Port nothing is over there but I can able to use putty and can able to view the booting messages, and I am not trying to upload the code while connected with the putty, I also tried the engineering mode tooAnd now I am on the windows, is this windows specific error or what? cause when I was trying to upload using the linux everything was running very fine. Now I create elf file everytime and scp into the board then manually start the co processor, I don’t want to do this again and again
Hi all, I’m searching a method to configure the NVRAM STPMIC25 VINOK_rise param in the 0x90 adress Register (NVM_MAIN_CTRL_ SHR1) As this is a sensitive reg I’m supposing this field and may others are Locked in the NRAM in the DK board from ST. Please I’m considering running Board with 3.3V power Buck Converters. Cheers, Habib
I am going to build linux system on a board based on STM32MP257F and have read many kinds of related technical documents.In the process, a question bothers me. I want to modify only several components such as uboot and kernel in existing STM32MPU Distribution Package. To do that, the STM32MPU Developer Package is needed because their source cdoes and build tools are required. This is where the major problem lies. Those are as follows:To build the source files, what is used between Developer Package’s SDK and Distribution Package’s BitBake ? After the modified components are built anyway, how and where are their binary images added into the Distribution Package including their configurations ?I have read in the documents that interoperation between the Developer Package and the Distribution one is available.But, I have not found out its actual usage example.
Subject: STM32MP257F-EV1 (MB1936D) not booting after PA6/PA7 MDF1 rework + SAI2 speaker addition — no console output, no USB DFU enumerationBoard: STM32MP257F-EV1, board reference MB1936DBackground — MDF1 microphone rework:We were bringing up PDM microphone capture on MDF1 (channel 6, PA6=SDI6, PA7=CCK0). On this board revision, PA6/PA7 are hardwired only to the onboard RTL8211F Ethernet PHY (ETH3.TXD0/TXD1 via series resistors R169/R175) with no external header access. To route these pins to MDF1 instead, we physically soldered a wire tap onto R169 and R175, and disabled Ethernet in our device tree so MDF1 could claim PA6/PA7 without a pinmux conflict.Background — speaker interface addition (same device tree, added afterward):Separately, we added a playback path using a MAX98357A I2S digital audio amplifier driving a 4Ω/5W speaker, over SAI2A:- CN5 pin 12 (PJ11, SAI2_SCKA) -> MAX98357A BCLK- CN5 pin 35 (PJ3, SAI2_FSA) -> MAX98357A LRCLK- CN5 pin 38 (PJ12, SAI2_SDA) -> MAX9835
Hi,Does anyone know if there is a list of the operating systems supported on the Cortex-A35 cores of the STM32MP257 ? Any information or pointers would be welcome.Thanks!
STM32MP257F-EV1: SPI3 Slave Mode — NSS Pin (PB1) Fails to Claim Despite Correct ConfigurationSummaryOn the STM32MP257F-EV1 evaluation board, configuring SPI3 in slave mode (spi-slave;) works correctly for the SCK, MOSI, and MISO signals, but the NSS (chip select) pin — PB1, using the documented-correct AF1 alternate function — silently fails to be claimed by the pin controller. No error or warning is logged anywhere. All three other SPI3 pins on the same bus, using the same AF1 value, claim successfully.HardwareBoard: STM32MP257F-EV1 (MB1936) MPU: STM32MP257FAI3 OpenSTLinux version: 5.0.15-openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18 Kernel: Linux 6.6.116-stm32mp-r3What we are trying to doConfigure SPI3 as an SPI slave (spi-slave; device tree property) so the STM32MP2 can receive data from an external SPI master over the same bus/pins already used for a sensor (previously configured as SPI master).Configuration usedCustom pinctrl group (added to stm32mp25-pinctrl.dtsi):spi3_slave_pins
Hello ST Support Team,We are working with the STM32MP257F-EV1 evaluation board and have identified a hardware/firmware-level restriction preventing us from using the SPI8 peripheral from the Linux (Cortex-A35) side, despite correct device tree configuration.Board: STM32MP257F-EV1OpenSTLinux version: 5.0.15-openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18Kernel: Linux 6.6.116-stm32mp-r3The issue:When we enable the &spi8 node in our device tree (with correct pin configuration, matching the same pattern that successfully works for other SPI peripherals like SPI3), the driver never initializes at all. There is no error message, no warning, and no output anywhere in dmesg — the peripheral simply remains completely silent and unclaimed, as if the device tree node doesn't exist.What we've already investigated and ruled out:Device tree correctness — confirmed the node, pinctrl, and pin assignments are syntactically and semantically correct, following the identical working pattern used success
Hi all,I am bringing up the Ethernet switch (ETHSW) on an STM32MP257F-DK, bare-metal on the Cortex-A35 (no OS), following RM0457 Rev 5.Ping works with the switch bypassed (ETH1 directly to the PHY), and ping also works under Linux with the switch enabled on the same board. In bare-metal switch mode, ARP works but ICMP never arrives.SETUP- ETH1 -> Port0 (internal, no PHY), PHY (RTL8211F, RGMII) on Port2, negotiated 100 Mbps full duplex- SYSCFG_ETHSWCR = 0x6 SYSCFG_ETH1CR = 0x12 - Init order:ETHSW reset -> clocks -> SYSCFG_ETHSWCR -> release reset -> pulse ETHSW_FES_GEN_CTRLR INIT_REQ (bit 15) -> then ETH1 clocks/reset/DMA- PORT0 UNDER MANAGEMENT,MII,100 MBPS- PORT2 UNDER NORMAL, MII,100 MPBS WHAT WORKS- Broadcast/multicast from the PC reach ETH1 (ETH1 MMC broadcast counter increments)- The board's ARP reply (unicast) leaves ETH1, crosses Port0 -> Port2 (Port0 RX_UNICAST=1, Port2 TX_UNICAST=1) [confirm in Wireshark that the PC actually receives it]- Dynamic MAC tab
I am working with an STM32MP257F-EV1 Evaluation Board (board reference MB1936, target device STM32MP257FAI3) and am trying to debug a standalone bare-metal application running on the Cortex-M33 core directly over SWD using ST-Link.Current SetupBoard: STM32MP257F-EV1 Board reference: MB1936 Target: STM32MP257FAI3 Tools: STM32CubeIDE and STM32CubeProgrammer Boot configuration (SW1): Development boot Boot0 = 1 Boot1 = 1 Boot2 = 0 Boot3 = 0 JP3: No jumper fitted (STLINK-V3EC active) CubeIDE Debug Configuration: Load Mode = "thru JTAG/SWD link (Engineering mode)" Access Port = "8 - Cortex-M33" Debug interface = SWD I have also attached a screenshot of the debug error I am receiving.Current ObservationI am able to debug the Cortex-M33 successfully when the board is first booted from an SD card. After the SD-card boot completes, I can connect to and debug the M33 core from CubeIDE.However, my requirement is to debug the M33 without booting the board from an SD card, eMMC, or QSPI.Specif
Hi,I'm working on a custom STM32MP157C board with a Microchip LAN8742A PHY (RMII). Originally the board uses an external 50 MHz oscillator that feeds both the PHY and the SoC's PA1 (ETH1_RMII_REF_CLK) — the classic LAN8742A "REF_CLK In Mode" setup, same as ST's reference schematic. That works fine.I'm now trying to get rid of the external oscillator and have the SoC generate the 50 MHz REF_CLK itself instead, using RCC's CLK_ETH_PLL3Q — the setup ST documents in AN5031, Figure 45 ("RCC provides 50 MHz ETH_CLK"). For this test I desoldered the two series resistors that fed the oscillator signal in, isolated the oscillator, and bridged PA1 straight to the PHY's XTAL1/CLKIN through a wire + the same 22 Ω resistor as before. I also added st,eth-ref-clk-sel; to the ethernet node in both the kernel and U-Boot device trees, rebuilt and reflashed.Result: PHY never comes out of reset (phy_poll_reset failed: -110), and an oscilloscope on PA1 shows absolutely nothing — not even a weak or distorte
The STM32MP2 supports gstreamer. There is a version of Gstreamer for streaming through the WebRTC protocol.Another library for streaming though the WebRTC protocol would be LibWebRTC.My question is if the STM32MP2 have support for LibWebRTC as well? Thank you for your reply
Hey, Guys!I’m designing an application to record TDM data source with 48k x 16 slots x 32Bit Format based on STM32MP151.But from the datasheet, there is some confusion.It seems the SAI supports 32bit and 16 slots from the SAI main feature description. But the FRL register is limited to 256, which cannot meet the requirement: 32*16 = 512 > 256.I’m using an external CODEC to generate the TDM clock, so STM32MP151 is in slave mode.Does anyone have experience with an application like this?Thanks! Jampa.
Greetings,I’m working on a STM32MP13X based development board as a learning project. One of the things I’m trying to achieve is a BIOS-like program stored in a NOR flash from which the MPU will boot from every time.After that, the program will load details of any relevant peripherals, Like size & configuration of the installed DDR3 memory & any bootable media like USB drive or SD card. After which the program will boot the bootable media (if any).The aim is to keep the system flexible like a general purpose computer, i.e. no fixed DTS configurations like DDR size, etc in U-Boot or Linux, So that any Linux distro with kernel support for STM32MP1 can be booted off the media.Is this possible? If so, then can you give me an overview of how this may be achieved? I understand this is alot of work which I am willing to do if someone can point me in the right direction.Regards,Aditya M.
Hi everyone,I'm using STM32MP2 OpenSTLinux 6.6 Yocto Scarthgap MPU v24.11.06 with Linux kernel 6.6.48.I am trying to interface a Waveshare LVDS 10.1" FT5x06 touch display with the STM32MP257F-DK. We designed a custom PCB for the required pin mapping. 1. Display :Initially, the display was not working with the original compatible string. After changing the panel compatible to "panel-lvds" only then display started working. panel_lvds: panel-lvds { compatible = "panel-lvds";... /*compatible = "edt,etml0700z9ndha", "panel-lvds";*/ } 2. I2C Touch / HDMI Address :The FT5x06 touch controller uses I2C address 0x38.The ADV7535 HDMI device also uses 0x38 as one of its register-map addresses. Since I am not using HDMI for this test, I changed that ADV7535 address from 0x38 to 0x39:&i2c2 { adv7535: hdmi@3d { compatible = "adi,adv7535"; reg = <0x3d>, <0x3c>, <0x3f>, <0x39>; //<0x38>; } ili2511: ili2511@41 { compatible = "ilitek,ili251x
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.