WATCH ON-DEMAND | STM32 Summit 2026
Ask questions and find answers on STM32 microprocessors, including hardware, power, DRAM, flashing, interfacing, device tree, and peripherals.
Most recent activity
My device is quite power-sensitive. If I use a single DDR3L module with an STM32MP157 or 135, can I eliminate the need for a VTT power supply?
Dear ST Community,I am currently working on a custom hardware design based on the STM32MP157CAC3 MPU, which includes LPDDR3 memory (Micron MT52L256M32D1PF) and multiple high-speed interfaces.As part of my signal integrity and high-speed design validation process, I need simulation models to conduct accurate analysis.I want to request the following:IBIS models for STM32MP157CAC3, specifically covering:1. DDR interface (LPDDR2/LPDDR3 controller)2. SDMMC interface3. Any other relevant high-speed I/Os(MIPI, LTDC, DCMI, SDMMC)S-parameter models (if available) for:1. High-speed I/O buffers2. DDR interface pins or PHYAny additional resources that may support SI/PI analysis, such as:1. IBIS-AMI models (if available)2. Reference simulation setups3. Application notes related to DDR signal integrityProject details:Custom PCB (not a direct copy of STM32MP1 DK2)LPDDR3 operating btw 300 - 800 MHzGoal: Pre-layout and post-layout SI validation (HyperLynx/ADSI understand that some of these models may r
Is it okay to use the following connection for eMMC memory on the STM32MP157AAB3?Also, is it possible to set the eMMC memory to boot mode with this connection?PB14:SDMMC2_D0PB15:SDMMC2_D1PB3:SDMMC2_D2PB4:SDMMC2_D3PB8:SDMMC2_D4PB9:SDMMC2_D5PC6:SDMMC2_D6PC7:SDMMC2_D7PC1:SDMMC2_CKPG6:SDMMC2_CMD
In the RM0506 rev. 1 file in chapter 14 (DDRPHYC), the DDR3L pins don't match the reference schematic in the examples-of-ddr-memory-routing-on-stm32mpus.zip file.In the STM32MP21XXAN_DDR3L-[No Variations]-A01_Schematic.PDF project, the DDR_A8-DDR_A31 pins have different functions.Which version is correct?RM0506STM32MP21XXAN_DDR3L-[No Variations]-A01_Schematic.PDF
Hi all,I'm trying to get a USB Gadget device working in Linux on the STM32MP257F-DK board to expose a Mass Storage device to another system. I'm trying to use CN15 for this function but I can't get the bound gadget to show up on the other side of the USB connection.I'm using a fork of github.com/STMicroelectronics/linux?branch=v6.6-stm32mp where I've modified the usb3dr node of the dk.dts file with the following things:1. 836 &usb3dr { 837 status = "okay"; 838 839 dwc3: usb@48300000 { 840 phys = <&usb2_phy2>, <&combophy PHY_TYPE_USB3>; 841 phy-names = "usb2-phy", "usb3-phy"; 842 usb-role-switch; 843 dr_mode = "peripheral"; 844 port { 845 dwc3_ep: endpoint { 846 remote-endpoint = <&typec_ep>; 847 }; 848 }; 849 }; 850 };2. 840 - phys = <&usb2_phy2>, <&combophy PHY_TYPE_USB3>; 841 - phy-names = "usb2-phy", "usb3-phy"; 842 840 usb-role-switch; 843 - dr_mode = "peripheral"; 841 + role-switch-default-mod
I entered the lengths of the DDR traces from the ST official evaluation board into Excel, and the maximum length deviation is 3 mm. Is the trace routing on the evaluation board reasonable, and can I reuse it directly on my own board?
Hi,We use the USB OTG controller in host mode with its internal FS PHY.Our DT node is the following:&i2c4 { ... pmic: stpmic@33 { compatible = "st,stpmic1"; ... regulators { compatible = "st,stpmic1-regulators"; ... pwr_sw2-supply = <&vin>; ... vbus_sw: pwr_sw2 { regulator-name = "vbus_sw"; regulator-active-discharge = <1>; }; }; };};&usbotg_hs { compatible = "st,stm32mp15-fsotg", "snps,dwc2"; pinctrl-names = "default"; pinctrl-0 = <&usbotg_hs_pins &usbotg_fs_dp_dm_pins>; dr_mode = "host"; vbus-supply = <&vbus_sw>;};&pinctrl { usbotg_hs_pins: usbotg-hs-0 { pins { pinmux = <STM32_PINMUX('A', 10, ANALOG)>; /* OTG_ID */ }; }; usbotg_fs_dp_dm_pins: usbotg-fs-dp-dm-0 { pins { pinmux = <STM32_PINMUX('A', 11, ANALOG)>, /* OTG_FS_DM */ <STM32_PINMUX('A', 12, ANALOG)>; /* OTG_FS_DP */ }; };};This configuration was perfecly working with ST linux v5.10-stm32mp-r2.1.We bumped ST linux to v6.6-stm32mp-r1 and issues appeared with
Following the guide for the Developer Package, it describes creating a helper script for your custom board. Thhat works great and helps get you going. So, I generated a STM32CubeMX project and built it. Device Tree files are generated accordingly. STM32CubeMX gives them names of the format <device>-<stm32cubemx proj name>-mx. These names cannot be changed as the dts files include each other.The helper script lets you set names for all these files e.g.# Name of devicetree to use # Optee dt name optee_dt_name=$your_board_name optee_dt_programmer_name=$your_board_name # U-boot dt name uboot_defconfig=${your_soc_name}_defconfig uboot_dt_name=$your_board_name uboot_programmer_dt_name=$your_board_name # TF-A dt name tfa_dt_name=$your_board_name tfa_dt_programmer_name=$your_board_name # Linux kernel dt name # linux linux_dtb_name=$your_board_nameBy default, these do not match the names generated by stm32cubemx. Even if I change the entries to mat
Following the tutorial here, when I get to the step "To generate binary to flashing via Cortex-A", the helper script fails to build when given the 'programmer' argument. The problem appears to be incorrect configuration of the path to a device tree file. All other steps in the tutorial build correctly using the device tree files given, just not the programmer step fails.The output is shown below. In it you can see the following paths are supplied:EXTDT_DIR=/home/ashley/STM32MPU-Ecosystem-v6.2.0/Developer-Package/stm32mp2-openstlinux-26.02.18/sources/STM32MP215DK-AshMX EXTDT_DIR_OPTEE=CA35/DeviceTree/STM32MP215DK-AshMX/optee-osThe correct path to the dts file is ${EXT_DIR}/${EXTDIR_DIR_OPTEE}, but the path actually searched for the dts file is (refer line 58 in the log below):/home/ashley/STM32MPU-Ecosystem-v6.2.0/Developer-Package/stm32mp2-openstlinux-26.02.18/sources/STM32MP215DK-AshMX/stm32mp2/a35-td/optee/Full log is:sdk_compilation-stm32mp2-mx-my-custom-board
Platform:SoC: STM32MP257Sensor: GC05A2 (5MP)Interface: CSI-2 Issue:I'm working on camera integration with GC05A2 on STM32MP257. The raw image quality is acceptable, but after enabling AWB and CCM in the ISP pipeline, the output image shows severe noise (both luminance and color noise), especially in low-light conditions (<300 Lux) or shadow areas.Questions:Where is the noise reduction? Does STM32MP257 ISP have built-in hardware noise reduction (2D/3D NR)? If yes, how do I enable and control it through V4L2 or the driver?
Hello everyone,I have a custom board based on STM32MP157A (rev. Z) and I am trying to boot from emmc; I am able to boot sucessfully from SD card; I flashed the same image to the emmc with the ST MX Cube Programmer and, if get into u-boot from SD card, I am able to inspect the partitions and information of the emmc (see below), but whenever I set the boot pins to 010 I get no messages on the serial UART, while the emmc seems to be powered. STM32MP> mmc list STM32 SD/MMC: 0 (SD) STM32 SD/MMC: 1 (eMMC) STM32MP> mmc info Device: STM32 SD/MMC Manufacturer ID: 2 OEM: 544d Name: SA04G Bus Speed: 50000000 Mode: SD High Speed (50MHz) Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 3.6 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes STM32MP> mmc dev 1 switch to partitions #0, OK mmc1(part 0) is current device STM32MP> mmc info Device: STM32 SD/MMC Manufacturer ID: 45 OEM: 100 Name: DG400 Bus Speed: 52000000 Mode: MMC High Speed (52MHz) Rd Block Len: 512 MMC version 5.1
I'd like to move from mickledore to the current ST offering on scarthgap. We are using the STM32MP157D.We require a web browser, and WebKit worked well for us on mickledore using QT5.Since QT has been spun out to a plug-in and it is unclear how well-supported it is (ST's documentation seems lagging), I decided to go with Weston/Wayland and use a simple GTK/GDK app.Westion is working - the GPU `/usr/local/demo/bin/weston-st-egl-cube-tex` runs nicely. Simple apps using GDK are also working.Sadly, though, the app embedding a WebKit view has a hard-to-describe random flickering issue. It renders the page but then randomly overlays a white screen that occasionally flashes on and off. Anyone able to offer some experience:- Has anyone got a lightweight browser working on the STM32MP1 using the GPU and the recent ST scarthgap releases?- Or got QT6 working on STM32MP1. Did you use the ST's "QT plug-in"?- Any advice for configuring webkitgtk3 (found in meta-oe)? 
I would like to use MDMA on Cortex M4 to move data from DDR to SRAM in order to overcome the SRAM size limitation, especially in Ecosystem 6 secure context when a SYSRAM bank is dedicated to OPTEE.My idea is to move to DDR some data structures used by code running on Cortex M4 and, when needed by the code, to use MDMA to move such data from DDR to SRAM and then to unload such same structures from SRAM to DDR.I found that MDMA is the preferred way to move data DDR <-> SRAM, but it isn't supported by STM32 MCUs Embedded Software.https://wiki.stmicroelectronics.cn/stm32mpu/wiki/MDMA_internal_peripheral#Software_frameworks_and_driversDo you have any suggestion about how to proceed ?
ST Dev team have successfully created a web browser with Qt WebEngine and deployed that into the MP257 processor.The browser has been made in kiosk mode. There is no official benchmark about that scenario.My question is how well supported is the MP257 from Qt6 WebEngine? By looking at the Qt WebEngine features https://doc.qt.io/qt-6/qtwebengine-features.html It seems that the Qt WebEngine have lots of stuff in the box. Are all features from Qt WebEngine possible to enable inside a web browser for MP257?I'm more interested in WebRTC, HTML5 DRM, Hardware acceleration, WebGL, WebSockets. DOM Extensions, Vulkan support API.This is a question about hardware, rather than software. My goal is to create optimized kiosk mode web browser of specific dynamical web pages.I'm targeting web pages such as Netflix, GeForce Now, Spotify etc. I don't have any high requirements on resolution. Max 1080p, which is supported by MP257.
I am stuck trying to run STM32MP215DK M33 firmware examples on an (unmodified) ostl distribution I built.I went through the getting started tutorials no problems, now starting to experiment with customisation, but have got myself stuck. Some advice would be appreciated. This STM32MP ecosystem is quite overwhelming to the uninitiated, especially once you add in trusted firmware.As per this page, I loaded the image FlashLayout_sdcard_stm32mp215f-dk-ca35tdcid-ostl-m33-examples-optee.tsv. I have been playing with building and debugging the various example projects for M33.When trying to alter the M33 examples, I came up against the hardware firewall. It became clear that I was going to need M33 access to ports and peripherals that were currently allocated to the A35 core. I still haven't worked out how to solve that yet. But ultimately a custom kernel layer will be required, so I started looking into that.As per this page, I built the default linux
Hello,I am testing a custom board based on STM32MP257FAI3 with two DDR4 MT40A512G16And STM32DDRFW-UTIL cann't pass through PHY initialization. I found that CubeMX 6.17.0 still allows DDR A19 pin mapping, despite the pin A19 isn't assignable for both DDR3 and DDR4. (STM32CubeMX 6.12.1 released). So I've assigned BA0 signal to it on PCB. And I think this cause STM32DDRFW-UTIL to be failed.Is there any way to resolve this programmatically?
Hi,Can I use only M33 core as a standalone controller on stm32mp257 evaluation board without need of linux operating system and DDR
I spotted that the documentation and code examples do not match for port pin assignments for LED2 and LED 4.The user manual manual does not match the schematics:Code examples do match the schematics, so just a documentation error I think.EDIT: There is definitely some sort of misalignment here. The Linux device tree (stm32mp215f-dk.dts) puts the blue LED on PZ3. And when controlled on/off or heartbeat through Linux, the blue led labelled LD2 on the dev kit is controlled. So this seems to match the user manual! gpio-leds { compatible = "gpio-leds"; led-blue { function = LED_FUNCTION_HEARTBEAT; color = <LED_COLOR_ID_BLUE>; gpios = <&gpioz 3 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; default-state = "off"; }; };I can only assume the LED labelled LD4 on the dev kit is wired to pin PF10?
HiI'm trying to configure a camera chip (Nextchip nvp6324) that outputs mediaformat MEDIA_BUS_FMT_UYVY8_2X8.There are examples to setup IMX335 sensor to a CSI-2 interface, but how to configure this format ? BR Raimo
Hi Team,I am working on a custom STM32MP255 board with OpenSTLinux (Yocto, kernel 6.6).I want to use USART6 only in Linux (no need in TF-A or U-Boot).Console is on USART2 (ttySTM0). USART6 is intended for RS232 communication.Device Tree Configuration (Linux)Aliases aliases {serial0 = &usart2;serial1 = &uart5;serial2 = &usart1;serial6 = &usart6;ethernet0 = &eth1;};Pinctrl configuration usart6_pins_mx: usart6_mx-0 {pins1 {pinmux = <STM32_PINMUX('F', 5, AF6)>; /* USART6_TX */bias-disable;drive-push-pull;slew-rate = <0>;};pins2 {pinmux = <STM32_PINMUX('F', 4, AF6)>; /* USART6_RX */bias-disable;drive-push-pull;};};usart6_idle_pins_mx: usart6_idle_mx-0 {pins1 {pinmux = <STM32_PINMUX('F', 5, ANALOG)>; /* USART6_TX */};pins2 {pinmux = <STM32_PINMUX('F', 4, AF6)>; /* USART6_RX */bias-disable;drive-push-pull;};};usart6_sleep_pins_mx: usart6_sleep_mx-0 {pins {pinmux = <STM32_PINMUX('F', 5, ANALOG)>,<STM32_PINMUX('F', 4, ANALOG)&
I'm running a build with meta-webkit on the scarthgap branch for the STM32MP257-EV1. I'm trying to get a web browser working for a custom web page and the performance is pretty poor and I'm not quite sure why. It seems like there's a lot of people doing a similar project but not a lot of hard benchmarking so I'm partially hoping we can make this thread to provide help for people in the future and also maybe I can figure out why my build is running so slow.Here's a more minimal example that anyone should be able to test.If I run cog https://webglsamples.org/aquarium/aquarium.htmlset it to 500 fish, and then look at top. I get about 79% cpu usage for wpewebkit and the output of /sys/kernel/debug/gc/load is:The previous 100ms HW load device : 0 core : 0 load : 62.26%The screen connected via LVDS has a noticeable lag.If I set the fish count to 100 then there's no lag. I know using a web browser on the MPU is pushing it's capabilities but it would be awesome if someone could confirm
Hi, I am currently working on a project that requires us to install a browser on our board. We are using an STM32mp25, which is using the Mickledore image. I am finding that the meta-browser layer is not compatible with Mickledore, and if I'm not mistaken meta-browser only runs on Scarthgap. What I've tried to do is switch my layers to the Scarthgap branch, and unfortunately what I find is that from my conf/local.conf is that the stm32mp25 is not a recognized maching (MACHINE = "stm32pm25"), meaning that the stm32mp25 is not supported on Scarthgap. Has anyone successfully installed a browser on the stm32mp25 (eval board)? Any help would be greatly appreciated! For reference I was following along with this demo https://www.digikey.com/en/maker/projects/intro-to-embedded-linux-part-2-yocto-project/2c08a1ad09d74f20b9844e566d332da4
Hi, I am working with the STM32MP25 and trying to use the I2C peripheral from the Cortex-M33 coprocessor.The STM32MP25 includes an Arm Cortex-A35 core running Linux and a Cortex-M33 core for real-time applications. I am able to successfully load and run a basic firmware on the Cortex-M33 using remoteproc. However, when I enable and initialize the I2C peripheral in the M33 firmware, the system hangs and eventually restarts. After investigating, I learned that the RIFSC configuration must be updated to grant the Cortex-M33 access to the I2C peripheral. I applied a patch to modify the RIFSC settings accordingly, but the issue persists and the peripheral is still not accessible from the M33.I would like to know:Are there any additional steps required (beyond RIFSC configuration) to allow Cortex-M33 access to I2C?Is there official documentation or reference material explaining how to properly assign peripherals to the coprocessor using RIFSC?Are there any examples or recommended workflows f
Following the tutorial here, at step 8, I get to the part where you load firmware onto the dev kit, but I always get an error "No ST-Link detected". As far as I am aware, programming should be done over the USB cable, or UART, not ST-Link?The board is running Linux OK, UART terminal is working, so is IP over USB cable. The run configuration I have is show below. What am I doing wrong?I checked with STM32CubeProgrammer and there are no programming interfaces available over USB or UART, and no ST-Link..
I'm planning to use ImGui as framework for creating a GUI application on the MP257 processor.The ImGui is bloat-free e.g it only uses the GPU hardware (OpenGL, Vulkan, etc...) to visulize the graphics such as buttons, menu, labels etc.Will an application like this work smoothly in MP257?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.