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
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 ?
Hello everyone,I'm a beginner in the STM32 world,A teacher has lent us a STM32MP157C-DK2 board (with a A7 and a M4) for a challenge,and I am currently trying to upload a program for the MCU (a button which switches the color of a RGB LED).As I'll first describe my complete setup and what I have already done, so you can directly go to the end of the post if you want to see the main problem I'm facing which is :To "import an OpenSTLinux Project" into cubeIDE,to ultimately update the device tree of the Cortex-A7 into cubeIDE.My setup:A x64 computer running on Windows 11 with WSL 2 Ubuntu 24.04.01 LTS.The STM32MP157C-DK2 board connected to my PC with ST-LINK and by network.On WSL :I downloaded here and installed the STM32 cube IDE 2.1.0 for Debian.I downloaded here and installed the STM32 cube MX 6.17.0 for Linux.I downloaded here and installed the STM32MP1 OpenSTLinux Developer Package for x86.I turned my terminal from Dash to Bash.I added these lines to my /.bas
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.
Hi Community,We are encountering an issue with the SD-Card on our STM32MP15x board. The problem is, that writing to the SD card works well but the reading does show sporadic errors.In our configuration, we use 1TB MicroSD-Cards in the DDR50 Mode. In DDR25 mode, the SD card is working fine. Unfortunately, we need the DDR50 Mode (or faster) for our product.First, let me describe the test scenario: I wrote ~500GB uint64_t ramp data in little endian byte order to a SD-Card, and verified on an external device, that the ramp data have been written correctly. A dump of the first 64 bytes looks as follows:root@gdl1-31:~# hexdump -C -n 64 /dev/mmcblk0 00000000 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 |................| 00000010 02 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 |................| 00000020 04 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 |................| 00000030 06 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 |................| 00000040In the next step, I wrote a little te
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?
Hello,I successfully used linuxptp with stm32mp257f-dk board, but now need to do the same with stm32mp157f-dk2. linuxptp was built from the same latest sources for both boards using corresponding SDK for each board. But when ptp4l is running on stm32mp157f-dk2, debug output shows that required clock adjustments are not being applied to raw ptp clock: I tried to rebuild uImage and modules for stm32mp157f-dk2 using latest sources from v.25.08.27, but result was still the same. PTP clock is registered and is using hw timestamping according to ethtool:Time stamping parameters for end0:Capabilities:hardware-transmitsoftware-transmithardware-receivesoftware-receivesoftware-system-clockhardware-raw-clockPTP Hardware Clock: 0Hardware Transmit Timestamp Modes:offonHardware Receive Filter Modes:noneallptpv1-l4-eventptpv1-l4-syncptpv1-l4-delay-reqptpv2-l4-eventptpv2-l4-syncptpv2-l4-delay-reqptpv2-eventptpv2-syncptpv2-delay-req I'm using L2 twostep synchronization mode.Additional linuxptp deb
Hi,Can I use only M33 core as a standalone controller on stm32mp257 evaluation board without need of linux operating system and DDR
I having some issues with nvram in op-tee.I don't know what this happen. It seems that op-tee want to say to me that 0xffff0006 is TEE_ERROR_BAD_PARAMETERS. In this case, I don't use any tamper and don't have LSE.I think this is a bug because my ST TF-A and ST Op-tee assumes that LSE must be available to proceed. I made a specific hack in ST TF-A that avoids the LSE configuration to continue working. When ST TF-A was starting. It was going to enable clock ID 5, which is LSE, no matter if I have LSE disabled or enable. An if-statement solved this issue.Do you have any clue what's can be the cause of this?Processor: STM32MP257FAK F/TC:0 0 process_probe_list:657 Probe loop 6 after 4 for deferral(s) D/TC:0 0 print_probe_list:504 Probe list: 3 elements D/TC:0 0 print_probe_list:506 |- Driver stm32-gpu probes on node gpu@48280000 D/TC:0 0 print_probe_list:506 |- Driver stm32-tamp probes on node tamp@46010000 D/TC:0 0 print_probe_list:506 |- Driver stm32-cpu probes on node cpu@0 D/TC:0 0
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 have been working on secure boot of stm32mp131c with spi-nand flash. I want to secure my filesystems as well appfs and rootfs. Is there possible ways to do so?
Hello,I Installed STM32CubeMX v6.17.0 with STM32MP2 Software Pack 1.3.0.I see that code generated for CA35 differs from the one generated by the previous version of STM32CubeMX v6.16.1. By the diff below I see that 6.17.0 expects Yocto tree version openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18:- model = "STMicroelectronics STM32MP257F-DK STM32CubeMX board - openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11"; + model = "STMicroelectronics STM32MP257F-DK STM32CubeMX board - openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18"; These are not the only differences between CubeMX versions, there are more in the .dts/dtsi definitions.In the Project Manager window I see that the OpenSTLinux Manifest version is set to openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18.However I'm not planning to switch to Yocto openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18 just now.Is it possible to use CubeMX v6.17.0 with the older Yocto tree version openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11? Regards
We are pleased to announce that STM32CubeIDE 2.1.0 release is available. What is new in 2.1.0: Added support of STM32C5 series Added support of new microcontrollers across the STM32WBA, STM32WL, STM32H5, STM32U3 and STM32F7 series Added support of new boards: NUCLEO-C542RC, NUCLEO-C562RE, NUCLEO-C5A3ZG, NUCLEO-WBA25CE1, NUCLEO-H5E5ZJ, STM32H5F5J-DK, and NUCLEO-U3C5ZI-Q Support of auto-refresh on imported projects (created initially outside CubeIDE): The updated project source code is auto refreshed at STM32CubeIDE side Support of CMake presets: Providing an easy way to configure the CMake-based project using a JSON file Support of GCC 14 toolchain as default toolchain: Libncurses5 is no longer needed for GDB on Linux Support of Apple® Silicon with ARM64 architecture: Performance enhancement Update to STARM-Clang 21.1.1: Improving code quality, diagnostics and standards conformance Main fixed issues in 2.1.0: Refer to the STM32 microcontroller wiki at: https://wiki.st
We are pleased to announce that version 6.17.0 of STM32CubeMX is available. What is new in 6.17.0: Added support for new microcontrollers across the STM32WBA, STM32H5, and STM32U3 series Added support for new boards: NUCLEO-WBA25CE1, NUCLEO-H5E5ZJ, STM32H5F5J-DK, and NUCLEO-U3C5ZI-Q Added the Start From Board feature for NUCLEO-U3C5ZI-Q, NUCLEO-H5E5ZJ, and NUCLEO-WBA25CE1 Added support for new features: PLAY on STM32H5 devices with 4 Megabytes of flash memory HSP on STM32U3 devices with 2 Megabytes of flash memory STM32CubeMX Notification Service: allows users to subscribe to notifications, updates, or premium content when downloading or installing STM32 software. The subscription to this service is entirely optional and is not mandatory for downloading or installing the software. Enhanced the memory management tool for the STM32N6 series Implemented the use of the CMake build generator with STM32MP2 projects Enhanced the build process using C
HiI'm trying to configure a camera chip NVP6324 (Nextchip) in the device tree. How to setup 4 virtual channels ? The chip is using MIPI with 2 lanes.Best RegardsRaimo
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
Hello,I'm using the latest STM32CubeMX 6.16.1 (Linux version), and working on a project cloned from the one provided for STM32MP257F-DK.In the Project Manager -> Advanced Settings, there is the "Generated Function Calls" table.If I set checkboxes here, e.g. in the "Do Not Generate Function Calls" column, the generated code reflects the new settings. However, when I reload the project (via "close/open" or just restarting CubeMX), all checkboxes are in their default positions (disabled for all functions in "Do Not Generate Function Calls").The same thing is with the first "Generate Code" column, and re-ordering the calls doesn't save as well.Is there a workaround?A question to STMicro engineers: enabling OpenAMP middleware for STM32MP2 boards fails to build in CubeIDE. Looks like it is a known issue https://community.st.com/t5/stm32-mpus-software-development/stm32mp257f-dk-openamp-no-such-file-or-directory/td-p/786509, is there a plan to fix it in the next release of CubeMX?Thanks!Reg
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
Hello everyone.I'm working on a bare metal project for STM32MP135D using FreeRTOS (V10.6.2) and LwIP (V2.1.0).I write a custom TCP server that work together with a custom UDP client. Both this use raw API. I'm experimenting strange problems:sometime the TCP server not ack the respective client or not provide resoinse to it.I've notice that if putting around tcp_output() and udp_send() a LOCK_TCPIP_CORE/UNLOCK_TCPIP_CORE the problem seems disappear. You think there is a problem on this LwIP implementation or in my lwipopts.h settings?At follow my "lwipopts.h" Thanks in advance for your help #ifndef __LWIPOPTS_H__#define __LWIPOPTS_H__/*** NO_SYS==1: Provides VERY minimal functionality. Otherwise,* use lwIP facilities.*/#define NO_SYS 0/* ---------- Memory options ---------- *//* MEM_ALIGNMENT: should be set to the alignment of the CPU for whichlwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2byte alignment -> def
Hi,In STM32MP25x Reference manual(RM0457), the HSEM_(S)Cnxxx registers all have the description of global access attribute except HSEM_CnIER, as shown of HSEM_CnICR,22.5.4 HSEM non-secure interrupt clear register (HSEM_CnICR)Address offset: 0x104 + 0x010 * (n - 1), (n = 1 to 3)Reset value: 0x0000 0000Register global access: When CID filtering for processor[n] is enabled inHSEM_CnCIDCFGR, this register can be accessed only by the processor CID. An illegalCID access to this register generates a CID illegal access event. When CID filtering forprocessor[n] is disabled this register can be accessed by any bus master.the HSEM_SCnIER also have the description of global access attribute, and the bits of HSEM_CnIER register also have CID filtering access attribute, and all bits maybe could be used by one CID , So if HSEM_CnIER also have the global access attribute?
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..
Following the instruction from https://github.com/STMicroelectronics/meta-st-stm32mp/blob/thud/recipes-kernel/linux/linux-stm32mp/README.HOW_TO.txt* Configure on a build directory (different of kernel source code directory) Here for example, build directory is located at the same level of kernel source code $> cd <directory to kernel source code> $> mkdir -p ../build$> make ARCH=arm O="$PWD/../build" multi_v7_defconfig fragment*.configThen got the following messagemake[1]: Entering directory '/home/tim/stm32mp1-openstlinux-4.19-thud-mp1-19-10-09/sources/arm-openstlinux_weston-linux-gnueabi/linux-stm32mp-4.19-r0/build' GEN ./Makefile## configuration written to .config# GEN ./Makefile/home/tim/stm32mp1-openstlinux-4.19-thud-mp1-19-10-09/sources/arm-openstlinux_weston-linux-gnueabi/linux-stm32mp-4.19-r0/linux-4.19.49/scripts/kconfig/Makefile:109: *** N
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.