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,I’m working on STM32MP257F-DK (A35 + M33) using OpenAMP + RPMsg over IPCC and facing an issue with RPMsg endpoint creation on the M33 side.GoalSimple use case:Linux (A35) sends "START" / "STOP"M33 receives the message via RPMsgM33 toggles an LEDWhat is workingM33 firmware builds and boots correctly using remoteprocResource table is detectedVirtio RPMsg is created on Linux From Linux dmesg:virtio_rpmsg_bus virtio0: rpmsg host is online remoteproc remoteproc0: remote processor m33 is now upSo remoteproc and OpenAMP transport are working.ProblemWith the following M33 code, RPMsg endpoint is not getting created on Linux side:int rpmsg_recv_callback(struct rpmsg_endpoint *ept, void *data, size_t len, uint32_t src, void *priv) { if (len >= 5 && strncmp((char *)data, "START", 5) == 0) { led_run = 1; } else if (len >= 4 && strncmp((char *)data, "STOP", 4) == 0) { led_run = 0; HAL_GPIO_WritePin(GPIOZ, GPIO_PIN_0, GPIO_PIN_RESET); } return 0; } stru
Hello,I am working with an STM32MP151 and I would like to start the Cortex-M4 core as early as possible during the boot sequence.The main requirement is to run a real-time task on the M4 that reads an analog input (ANA0 – ADC channel) with minimal startup latency.In my current setup, the ADC channel is first owned by the Cortex-A7 Linux kernel and is explicitly released and reassigned to the Cortex-M4 via the Linux device tree (by disabling the ADC node for A7 and assigning it to the M4).Additionally, if I stop the system in boot mode and manually start the Cortex-M4, I am able to successfully debug the M4 firmware and correctly read the ADC value.My goal is to have the M4 firmware start automatically in the same early boot conditions, without requiring a manual boot/debug sequence.I would like to understand:At which earliest boot stage the Cortex-M4 can be releasedWhether the Cortex-M4 can be started independently from the Linux boot on the Cortex-A7Thank you in advance for your suppo
Hello,Currently I'm working on a project that requires a synchronized clock signal between multiple devices connected through Ethernet.The logic solution for this is PTP, and using linuxptp I was able to archive synchronous PPS on PG8 pin between devices with a jitter smaller than 1us for 1Hz. Now the problem is that the requirement for PPS frequency is not 1Hz but a OR between a 100Hz and 1.25Hz (see attached image). From documentation, flexible PPS output may be the solution and started testing it by generating the 100Hz signal. Here is were I found the issue, after program PPSCMD[3:0] with start I notice that the 100Hz signal starts to drift slowly (around 20us/s).Now strange part is if I use fixed PPS (bit PPSEN0 of MACPPSCR cleared) with any frequency (1Hz to 16kHz with digital rollover) there is no drift. From my understanding the reference clock for pps is the same as system time thus adjusted by ptp protocol for maintaining synchronization.Is my assumption corre
Hello!I am in the progress of setting up a Yocto based build for a custom board based on a STM32MP157C. I am using "vanilla" Yocto scarthgap with the respective ST meta layer: https://github.com/STMicroelectronics/meta-st-stm32mp meaning I created a custom machine and am patching my own device trees into the meta-st-stm32mp layer.Currently I am trying to port my device trees for TF-A , OPTEE, U-Bboot and Linux, that were originally created for an SDK based build, to the new environment. I am using the regular "optee" bootscheme in my custom maschine.conf with EMMC as boot device.The build already succeeds but when I try to program the contents of my .tsv via Cube32Programmer I get a "iwdg1" reset when the bootfs is downloaded:UPLOAD ... done Ctrl+C to exit ... #DOWNLOAD ... OK Ctrl+C to exit ... # UPLOAD ... done Ctrl+C to exit ... # UPLOAD ... done Ctrl+C to exit ... ###D/TC:0 gic_native_itr_handler:678 Special interrupt 1023 D/TC:0 gic_native_itr_handler:678 Special interru
hey currently i am working on stm32mp257dak3 on myir myc-ld257 board in which i want to access RCC of gpiog for i2c3, but i am enable to access it as soon as i try to access without resource manager it shows me "root@myd-ld25x:~# echo start > /sys/class/remoteproc/remoteproc0/state E/TC:1 stm32_iac_itr:192 IAC exceptions [159:128]: 0x10000000 E/TC:1 stm32_iac_itr:197 IAC exception ID: 156 E/TC:1 Panic at /usr/src/debug/optee-os-stm32mp/4.0.0-stm32mp-r1/core/drivers/firewall/stm32_iac.c:212 <stm32_iac_itr> E/TC:1 TEE load address @ 0x82000000 E/TC:1 Call stack: E/TC:1 0x82007ed8 E/TC:1 0x8203bb8c E/TC:1 0x82026308 E/TC:1 0x820396c0 E/TC:1 0x82013c0c E/TC:1 0x820017dc I/TC: Halting CPU 0" this error and my linux gets crash (on board linux not in my laptop) but when i uses resource manager " if (ResMgr_Request(RESMGR_RESOURCE
Hello, I am trying to load an .elf file on the M33 core on my stm32mp257f processor. When I launch the remote core using remoteproc I get the following errors. root@stm32mp257f-hydra-mx:~# echo -n /home/root > /sys/module/firmware_class/parameters/path root@stm32mp257f-hydra-mx:~# echo Sparta.elf > /sys/class/remoteproc/remoteproc0/firmware root@stm32mp257f-hydra-mx:~# echo start > /sys/class/remoteproc/remoteproc0/state [ 119.336297] remoteproc remoteproc0: powering up m33 [ 119.511444] remoteproc remoteproc0: Booting fw image Sparta.elf, size 6237772 [ 119.513130] remoteproc remoteproc0: unsupported fw ver: 0 [ 119.518401] remoteproc remoteproc0: no resource table found for this firmware E/TC:0 stm32_iac_itr:192 IAC exceptions [159:128]: 0x200 E/TC:0 stm32_iac_itr:197 IAC exception ID: 137 E/TC:0 stm32_risaf_dump_erroneous_data:256 DUMPING DATA FOR risaf@420d0000 E/TC:0 stm32_risaf_dump_erroneous_data:257 ================================================
On the X-LINUX-QT Starter Package Wiki page it states "The X-LINUX-QT expansion package compatible with ecosystem release v6.1.0 provides only the Distribution package, which can be used to generate the Starter and Developer packages".Has anyone generated the QT starter package in v6.1.0?The image produced by "bitbake st-image-qt package-index" launches with the GTK starter package, not the QT starter package.
Hi,I am trying to work with the USART6 which is connected to is connected to PF13 (TX) and PF14 (RX) on the extended GPIO.It looks like the SCRIF does not allow access to this USART, wven though the OPTEE configuration seems to enable it:from optee/...core/.../stm32mp257f-ev1-ca35tdcid-rif.stdi:...IFPROT(STM32MP25_RIFSC_USART6_ID, RIF_UNUSED, RIF_UNLOCK, RIF_NSEC, RIF_NPRIV, RIF_UNUSED, RIF_SEM_DIS, RIF_CFDIS)...but when I boot the board I can see this:cat /sys/kernel/debug/stm32_firewall/rifsc | grep USART| USART1 || 31 || NSEC || NPRIV || enabled || enabled || 0 || 0x0 || USART2 || 32 || NSEC || PRIV || enabled || disabled || 1 || 0x0 || USART3 || 33 || NSEC || NPRIV || enabled || enabled || 0 || 0x0 || USART6 || 36 || NSEC || NPRIV || enabled || disabled || 2 || 0x0 | From what I understand it means the CID is 2 which means access to this USART can be done only from the M33 micro. Is that correct?How can I solve this? I am struggeling with Yocto for a while with no su
Hi,I am trying to use USART6 on STM32MP257F-DK development board. I have enabled it in the device tree, recompiled it and I now can see the /dev/ttySTM1 node. The problem is, that sometimes, after reboot, any access to the USART (even changing its baudrate using stty -F /dev/ttySTM1 command) causes SERC exception (with ID 36 which corresponds to USART6) to happen.This does not happen all the time, but most of the time. Once and it doesn't happen after boot it won't happen again until next reboot and the UART works just fine.here my device tree change:&usart6 {pinctrl-names = "default", "idle", "sleep";pinctrl-0 = <&usart6_pins_a>;pinctrl-1 = <&usart6_idle_pins_a>;pinctrl-2 = <&usart6_sleep_pins_a>;/delete-property/dmas;/delete-property/dma-names;status = "okay";}; it seemed first that disabling the DMA helps, but I am not so sure nowusart6_pins_a: usart6-0 {pins1 {pinmux = <STM32_PINMUX('F', 13, AF3)>; /* USART6_TX */bias-disable;drive-push-
Hello ST, We are trying to enable USART6 as a serial console, in the stm32mp257f-dk board, we have builded the SDK using Openstlinux "Distribution package", I had done the below changes in the stm32mp257f-dk.dts device tree present in the kernel-source and u-boot directory : aliases { serial1 = &usart6; }; chosen { stdout-path = "serial1:115200n8"; #address-cells = <2>; #size-cells = <2>; ranges; }; &usart2 { pinctrl-names = "default", "idle", "sleep"; pinctrl-0 = <&usart2_pins_a>; pinctrl-1 = <&usart2_idle_pins_a>; pinctrl-2 = <&usart2_sleep_pins_a>; /delete-property/dmas; /delete-property/dma-names; status = "okay"; }; &usart6 { pinctrl-names = "default", "idle", "sleep"; pinctrl-0 = <&usart6_pins_a>; pinctrl-1 = <&usart6_idle_pins_a>; pinctrl-2 = <&usart6_sleep_pins_a>; uart-has-rtscts; status = "okay"; }; And also modified the stm32mp257f-dk-
I have a STM32MP257 custom board and I'm listening on UART6.When I boot, I get nothing. No messages or other text. I have not yet implemented any Linux onto my SD-card.The issue is that I have my USART6 boot pins on PF13 and PF14, instead of PF4 and PF5. Are there any way to change this in ROM?Or do I need to load TF-A from my SD-card so TF-A can change USART6 pins?
Hello ST team,I am facing a reproducible issue with USART6 on the STM32MP257F-DK board when working with the OpenSTLinux 6.6.78-stm32mp-r2 distribution.1. Summary of the ProblemWhen I enable USART6 in the Linux Device Tree and deploy the DTB on the target:SSH access breaks completely after reboot(ssh root@192.168.7.1 no longer works)When running a simple A35 UART6 echo application via minicom,the entire board resets.The reset is triggered by RIFSC / SERC firewall exceptions.The very same DTS configuration works perfectly on OpenSTLinux 6.6.48 —no SSH issue, no kernel panic, and UART6 user application runs fine.This strongly suggests a firewall / RIF / OP-TEE integration regression between OSTL 6.0.0 and 6.6.78.2. DTS Snippet That Triggers the Problem &usart6 { pinctrl-names = "default", "idle", "sleep"; pinctrl-0 = <&usart6_pins_a>; pinctrl-1 = <&usart6_idle_pins_a>; pinctrl-2 = <&usart6_sleep_pins_a>; status = "okay"; /* e
I installed the latest STM32CubeProgrammer in WSL on windows 11: the GUI has issue to load so I'm using the STM32_Programmer_CLI.However the flashing would fail most of the time:---- log output begin -----....Sector[0] downloaded successfully...File download completeTime elapsed during download operation: 00:00:01.624RUNNING Program ...PartID: :0x01DFU status = 0 : OKDFU state = 5 : dfuDNLOAD-IDLEbwPollTimeout = 1sending a dfu end of download requestDFU status = 0 : OKDFU state = 7 : dfuMANIFESTbwPollTimeout = 1DFU status = 0 : OKDFU state = 2 : dfuIDLEsending a set alternate setting request with index: 4receiving packetDFU status = 0 : OKDFU state = 2 : dfuIDLEUpLoading dataDFU status = 0 : OKDFU state = 2 : dfuIDLEdata: 00ffffffff000000000....Request detach value = 1sending a set alternate setting request with index: 0DFU status = 0 : OKDFU state = 2 : dfuIDLEReconnecting the device ...Reconnecting...Error: Unable to reconnect the target device: time out expiredError: Start
I'm working on a custom stm32mp133d board and Yocto (latest release), but something has me quite puzzled.Our hardware looks like this:- Kingston EMMC04G-MT32-01G10 (mmc2)- 4Gb DDR- STM32MP133d- STM32PMIC1most of it is very similar to STM32MP135F-DK. To configure our board, I'm using the stm32cube-mx approach. My issue is, that the generated FIPS image has somehow a misaligned BL33 (U-Boot) image, which results in a failed boot:NOTICE: CPU: STM32MP133D Rev.Y NOTICE: Model: STMicroelectronics custom STM32CubeMX board - openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11 INFO: PMIC version = 0x21 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: Using EMMC INFO: Instance 2 INFO: Boot used partition fsbl1 NOTICE: BL2: v2.10-stm32mp1-r2.0(debug):lts-v2.10.13-dir
Hello,we have a STM32MP157C processor MAC connected to MAX24287 PHY by RGMII interface, what we see that the GTX_CLK duty-cycle higher than 55%Could we decrease this value somehow?Thank you.Zsolt
My goal is to use USART6 as debug output because I haven't route the dedicated BootROM pins of the USART2.Anyway! It seems that the BootROM is trying to read my SD card. First sequence:CMD and CLK of SDMMC1 seems to be talking to the SD card in a very low speed. Here I'm talking about kHz. I don't know what they are saying. The signals are perfectly square waves.Second sequence:Suddenly the CLK become a fast sine wave. I still don't know the frequency, but it's defently much faster than the first sequence. Now, the D0 is a digital input of BootROM. This D0 looks like a sword shaped signal. I don't know if it's my configure at my osciloscope that cause this view.After the second sequence as ended. There are no more data passing between the SD card and MP257. The clock is still running at the same frequency.I don't know if the TF-A firmware has been read or not. I haven't tested the USART6.Question:Where can I find the commands/data that are passing between the SD card and the MP257
Dear All,I am trying to minimize the u-boot and started to remove some features I don't need.I tried to remove whole video & LCD support, but run into issue that stm32mp1.c has a large patch, that applies LCD automatic recognition and extern reference to panel drivers. I am using Kirkstone, but it is also in the patch for Scarthgap.Patch: 0002-ARM-v2021.10-stm32mp-r1-BOARD.patchstm32mp1.c:extern U_BOOT_DRIVER(rm68200_panel);extern U_BOOT_DRIVER(hx8394_panel);(...)Here are feature I'd like to disable, but removing i.e. VIDEO_LCD_xxx features gives me a compile error for missing extern reference to rm68200_panel. CONFIG_CMD_ADC=yCONFIG_STM32_ADC=yCONFIG_FDT_SIMPLEFB=yCONFIG_DM_VIDEO=yCONFIG_BACKLIGHT_GPIO=yCONFIG_VIDEO_LCD_ORISETECH_OTM8009A=yCONFIG_VIDEO_LCD_RAYDIUM_RM68200=yCONFIG_VIDEO_LCD_ROCKTECH_HX8394=yCONFIG_VIDEO_STM32=yCONFIG_VIDEO_STM32_DSI=yI tried different things to remove, but neither works. Removing and/or modifing the whole patch is rather not worth th
Hello, Happy new year !I create my custom board with STM32MP153C I try to boot but I have an issue. Starting systemd-udevd version 255.17^ root '/dev/disk/by-partuuid/e91c4e10-16e6-4c0e-bd0e-77becf4a3582' doesn't exist or does not contain a /dev. [ 14.557600] platform 5a006000.usbphyc: deferred probe pending [ 14.561992] platform 5800c000.usb: deferred probe pending [ 14.567427] platform 50001000.pwr: deferred probe pending [ 14.572778] platform 49000000.usb-otg: deferred probe pending [ 14.578559] amba 58005000.mmc: deferred probe pending [ 14.583629] platform 5800d000.usb: deferred probe pendingI change SD card I change some settings in device tree of kernel vqmmc-supply but I don't undestand in UBOOT I can explore my sd card Hit any key to stop autoboot: 0 STM32MP> mmc list STM32 SD/MMC: 0 (SD) STM32MP> mmc dev 0 switch to partitions #0, OK mmc0 is current device STM32MP> part list mmc 0 Partition Map for MMC device 0 -- Partition Type: EFI Part Start
Hi!I accedently used STPMIC25A instead of STPMIC25D when I want to boot A35 from SD card.According to AN5727 page 13, topic 4.1.8. it says that if the MP257 is going to boot from SD card, then the STPMIC25D must be used instead of STPMIC25A due to LDO7 and LDO8 are dedicated for 1.8/3.3V at initial boot.My question is: is there any soldering fix I could use to borrow voltage from another Buck/LDO output from STPMIC25A?My goal is just to boot TF-A. Suggestion:I use LDO2 for VDD_SD and VDDIO_SD. LDO2 boots at 3.3V. My SD-card might be UHS-I, but I'm guessing that it can run at low speed as well (3.3V pull-up). Edit 1:I cut of the traces from VDD_SD and VDDIO_SD and connected them to LDO2. Now I have 3.3V on the SD Card and its pull-up. But no signs of output of the USART6. The CLK of SDMMC1 has been started. I guess that the BootROM understand its purpose when telling 0b0001.
Problem descriptionI have a custom board based on STM32MP157FAA.The SD card boots perfectly in:ROM bootTF-A BL2 (FSBL)But once control reaches U-Boot, the SD card becomes completely unusable and U-Boot shows continuous: stm32_sdmmc2 mmc@58005000: cmd 55 failed, retrying ...U-Boot cannot read environment, cannot rescan the card, and reports “No block device”.This is very confusing because the same SD card and hardware clearly work during ROM and TF-A stages.Boot logTF-A / BL2 (working)INFO: Using SDMMC INFO: Instance 1 INFO: Boot used partition fsbl1 ... INFO: BL2: Loading image id 5 NOTICE: BL2: Booting BL32No SD errors at all.U-Boot (failing)U-Boot 2023.10-stm32mp-r2MMC: STM32 SD/MMC: 0, STM32 SD/MMC: 1Loading Environment from MMC...stm32_sdmmc2 mmc@58005000: cmd 55 failed, retrying ...*** Warning - No block device, using default environment ...Saving Environment to MMC... No block deviceAlso in U-Boot:Clocks:- MPU : 0 MHz- MCU : 0 MHz- AXI : 0 MHz- PER : 0 MHz- DDR : 0 MHz
Hello,I'm working with a STM32MP257D, which is using the I2C-driver "i2c-stm32f7.c" in the Linux kernel (compatible: st,stm32mp25-i2c). I'm using kernel version v6.6.78. I need to use I2C mangling, specifically I2C_M_NOSTART and I2C_M_STOP, to handle a receiving master scenario.My specific situation: I'm communicating with a device that sends the length of the data payload in the third byte of the transmission. This means I need to:1. Read the first 3 bytes to get the length information2. Continue reading the remaining data without sending a STOP condition after the initial 3-byte read3. Continue reading without sending a START condition when fetching the remaining dataCode Example:struct i2c_msg xfer[2]; xfer[0].addr = addr; xfer[0].flags = I2C_M_RD | I2C_M_STOP; xfer[0].len = 0x03; xfer[0].buf = buff; ret = i2c_transfer(i2c->adapter, xfer[0], 1); xfer[1].addr = addr; xfer[1].flags = I2C_M_RD | I2C_M_NOSTART; xfer[1].len = buff[2]; xfer[1].buf = &buff[3]; ret
I am trying to connect the STM32MP257F-EV1, following the guide on the wiki. Followed the LInux preparation. At startup, I get a blinking RED LD1 and steady green LED When start the laptop on windows, the device manager shows a DFU device a. But when booting up LInux, no device in DFU mode is detected by CubeProgrammer 2.210, either through the GUI or the CLI interface.Having tried several possible workarounds—such as changing cables, reinstalling drivers and VMs, and reinstalling CubeProgrammer and the supporting software The board seems to be working as when I reconfigure the boot switches, the display and camera work OKCould someone suggest what I might be doing wrong or if there is a known solution?Linux shows this:T: Bus=01 Lev=01 Prnt=04 Port=02 Cnt=01 Dev#= 11 Spd=480 MxCh= 0D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1P: Vendor=0483 ProdID=df11 Rev=02.00S: Manufacturer=STMicroelectronicsS: Product=DFU in HS Mode @Device ID /0x505, @Revision ID /0
Dear experts, why, under the same configuration for heterogeneous core communication, in the generated code, the debug section of the routine's initialization functions of IPPC and OPENAMP can be accessed, but the ones generated by ourselves cannot?The following picture was generated by myself.The following picture was generated by myself.Why does the routine configuration add an extra "remote" and "setting" in the file attributes?But there is none in the project that was generated by myself!Seeking help online, dear experts!
1. STM32 Cmake project2. Select executable option. 3. Chose the MPU4. Build ERROR==========
Hello,Im having an issue with flashing of OpenSTLinux on STM32MP157F-DK2 ------------------------------------------------------------------- STM32CubeProgrammer v2.21.0 ------------------------------------------------------------------- USB speed : High Speed (480MBit/s) Manuf. ID : STMicroelectronics Product ID : DFU in HS Mode @Device ID /0x500, @Revision ID /0x0000 SN : 002C001F3133511735343431 DFU protocol: 1.1 Board : -- Device ID : 0x500 Device name : STM32MP15xx Device type : MPU Revision ID : -- Device CPU : Cortex-A7 Start Embedded Flashing service Opening and parsing file: tf-a-stm32mp157f-dk2-optee-programmer-usb.stm32 Memory Programming ... File : tf-a-stm32mp157f-dk2-optee-programmer-usb.stm32 Size : 220.41 KB Partition ID : 0x01 Download in Progress: [==================================================] 100% File download complete Time elapsed during download operation: 00:00:07.952 RUNNING Program ... PartID: :0x01 Start operation done successfull
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.