Get ready for the STM32 Summit 2026 | Online, November 3
Ask questions and find answers on STM32 microprocessors, including hardware, power, DRAM, flashing, interfacing, device tree, and peripherals.
Most recent activity
Hi,I'm interested how to change CPU frequency from 650MHz to lower frequency. I looked those two links:https://wiki.st.com/stm32mpu/wiki/How_to_change_the_CPU_frequencyhttps://wiki.st.com/stm32mpu/wiki/Clock_device_tree_configuration_-_Bootloader_specificI went for PLL1 static configuration and added those lines to TF-A device tree, in RCC node pll1: st,pll@0 { compatible = "st,stm32mp1-pll"; reg = <0>; cfg = < 4 80 0 0 0 PQR(1,0,0) >; frac = < 0x800 >; };So If I'm right CPU freq should be: 24000000 / (4+1) * (80+1) = 388 800 000 = 388.8 Mhz.I changed OPP nodes in tf-a device tree and Linux device tree to:&cpu0_opp_table { opp-388000000 { opp-hz = /bits/ 64 <388000000>; opp-microvolt = <1200000>; opp-supported-hw = <0x1>; };};When I wanted to boot the board I got this:PANIC at PC : 0x2ffd7e53Exception mode=0x00000016 at: 0x0000f295What should I do to get lower CPU frequency?Best regards,Nenad
We follow this: https://wiki.st.com/stm32mpu/wiki/How_to_exchange_large_data_buffers_with_the_coprocessor_-_principle and this: https://wiki.st.com/stm32mpu/wiki/How_to_exchange_large_data_buffers_with_the_coprocessor_-_example#Linux_driversarticles for exchanging M4-A7 except for DMA : in our case we write from M4 directly into DDR without DMA transfer. Every time A7 needs new portion of data, it sends request via rpmsg and polls on eventfd for ready data from M4. It works fine for a number of runs but very soon we get old data. We have checked buffers on M4 side and correctness of poll-read on A7 side. For me it looks like coherence issue. So, my question is : how can I mark mmaped region as non-cacheable area ?PS. As far as I know linux UIO driver maps non-cached memory region, RPMSG SDB - not.
Hello everyone!I’ve tested wake up from standby mode with Wake up pins PI11 (and PI8). But it is not work I have remove all definitions about wake up pins in dts except place where it defines as wake up pins in stm32mp151.dtsi Entering in standby mode by putting ‘echo mem > /sys/power/state’. And after that MPU no wakes by I acting on pins PI11 or PI8.I do not see any WAKE UP Pins in /sys/kernel/debug/wakeup_sources, maybe I need activate it before going to standby?Do I need set MPU_BEN bit in RCC_MP_BOOTCR before going to standby mode? If yes — how?Maybe another my misunderstanding?
my board have not use pmic and i use poweroff close the board. it will reboot and tf-a report reset reason (0x814) for NRST
We boot up the odyssey Stm32mp157c board with distribution package. While booting the display is working but when i try to run qt examples it gives core dump error. Also there is no connector or encoder in the output of modetest. I could't figure out where to look. Thanks in advance.
Hello,we try to access the I2C4-Bus under barebox, we use:CPU: STM32MP151CAA Rev.ZTF-A: v2.4-r1.0-nofip(release):b5d0088b9-dirtybarebox: barebox 2021.04.0-02204-gaa9b7b34b8e-dirtyIn the TF-A the I2C4 is unlocked by: DECPROT(STM32MP1_ETZPC_I2C4_ID, DECPROT_NS_RW, DECPROT_UNLOCK)When I start the board the TF-A initializes the PMIC successfully viaI2C4-bus.The Pinmux for I2C4 is: i2c4_pins_a: i2c4-0 { pins { pinmux = <STM32_PINMUX('H', 11, AF4)>, /* I2C4_SCL */ <STM32_PINMUX('H', 12, AF4)>; /* I2C4_SDA */ bias-disable; drive-open-drain; slew-rate = <0>; }; };the bus setup i
Hello , On Page : https://wiki.st.com/stm32mpu/wiki/How_to_customize_the_Linux_kernel cd <build dir>/workspace/sources/<name of kernel recipe>/PC $> git format-patch -2Is this correct?I can find the source inside the build/tmp-glibc/work/....and not the above path.Please clarify.Best !
..
Hello i wanted to use the GPIOLib to control my pin manualy. so i added this in my device tree.&usart3 { pinctrl-names = "default", "sleep", "idle"; pinctrl-0 = <&usart3_pins_c>; pinctrl-1 = <&usart3_sleep_pins_c>; pinctrl-2 = <&usart3_idle_pins_c>; uart-has-rtscts; status = "ok"; ethernet { compatible = "st,stm32_usart_net"; local-mac-address = [ A0 B0 C0 D0 E0 F0 ]; pinctrl-names = "default"; rts-gpios = <&gpioa 11 GPIO_ACTIVE_LOW>; cts-gpios = <&gpioa 12 GPIO_ACTIVE_LOW>; };};and in my code i wanted to change the pin state like that:rtsGpio = devm_gpiod_get(&serdev->dev, "rts-gpios", GPIOD_OUT_HIGH); ssleep(1); gpiod_set_value(rtsGpio, 1);but when i look at it the pin is not changing the status. and i get this log message:gpiod_set_value: invalid GPIO (errorpointer)
I work on Win10. DFU is seen in the settings. I use the programmer to transfer the linux image to the customer MP1 board. The transfer is very instable and break on different files/positions. Very seldom the complete *.tsv image is transfered and I can start the linux system.set TOOL=C:\ST\STM32CubeIDE_1.6.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_1.6.0.202101291314\tools\bin\STM32_Programmer_CLI.exe %TOOL% -c port=USB1 -d tf-a-u-boot-kernel-initrd.tsv %TOOL% -c port=USB1 -detach pauseC:\Projekte\30088\EMOTAS>C:\ST\STM32CubeIDE_1.6.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_1.6.0.202101291314\tools\bin\STM32_Programmer_CLI.exe -c port=USB1 -detach ------------------------------------------------------------------- STM32CubeProgrammer v2.7.0-RC1 ------------------------------------------------------------------- USB speed : High Speed (480MBit/s) Manuf. ID : STMicroelectronics Pr
I've noticed when booting one of our board designs with a STM32MP157C in openstlinux-5.4-dunfell-mp1-20-11-12 with Weston Wayland under the STM32MP157-Ecosystem-v2.1.0 that multiple times when the kernel is loading I'll see the following messages output via std-out..[ 1.661544] 4000e000.serial: ttySTM0 at MMIO 0x4000e000 (irq = 45, base_baud = 6250000) is a stm32-usart [ 2.824397] printk: console [ttySTM0] enabled [ 2.830231] stm32-usart 4000f000.serial: failed to get alias id, errno -19..additionally, later on in the after the Weston Wayland Compositor initializes, I begin getting the following output...[ OK ] Started Weston Wayland Compositor (on tty7). [ 21.050754] dma dma1chan0: Request not allowe[ 21.056455] stm32-usart 4000e000.serial: rx dma pre[ 21.122445] dma dma1chan0: Request not allowe[ 21.126782] stm32-usart 4000e000.serial: rx dma pre[ 31.177662] dma dma1chan0: Request not allowe[ 31.181949] stm32-usart 4000e000.serial: rx dma pre[ 31.213137] dma dma1chan0: Request not al
Hello,I tried to apply the step by step "Modify, rebuild and reload the Linux® kernel" form wiki.st .https://wiki.st.com/stm32mpu/wiki/Getting_started/STM32MP1_boards/STM32MP157x-DK2/Develop_on_Arm%C2%AE_Cortex%C2%AE-A7/Modify,_rebuild_and_reload_the_Linux%C2%AE_kernelEverything works fine from the first step of the "Getting started " until i uncoutered the error bellow.Unfortunately i am a complete beginner on these tools and don't understand whats happen.Thank you by advance for any help.@PC:~/STM32MPU_workspace/STM32MP15-Ecosystem-v2.0.0/Developer-Package/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.31-r0/linux-5.4.31$ make ARCH=arm multi_v7_defconfig "fragment*.config" HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c/bin/sh: 1: flex: not foundscripts/Makefile.hos
Hi everyone.I'm using a STM32MP151CAC and I have the following DTS:// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) /* * Copyright (C) STMicroelectronics 2018 - All Rights Reserved * Author: Alexandre Torgue <alexandre.torgue@st.com>. */ /dts-v1/; #include "stm32mp157a-dk1.dts" #include <dt-bindings/rtc/rtc-stm32.h> / { model = "NNBoard IT2"; compatible = "st,stm32mp157c-dk2", "st,stm32mp157"; aliases { serial3 = &usart2; serial4 = &usart6; }; wifi_pwrseq: wifi-pwrseq { compatible = "mmc-pwrseq-simple"; reset-gpios = <&gpioh 4 GPIO_ACTIVE_LOW>; }; led { compatible = "gpio-leds"; blue { status = "disabled"; }; ledtxrx { label ="ledtxrx"; gpios = <&gpioh 7 GPIO_ACTIVE_HIGH>; default-state = "off"; }; ledtxrs485 { label ="ledtxrs485"; gpios = <&gpioe 11 GPIO_ACTIVE_HIGH>; default-state = "off"; }; ledrxrs485 { sta
I was able to build an image containing Chromium by adding meta-browser, meta-clang (dunfell branch) and meta-python2. I can verify Chromium built and was included in the image.The problem is when Chromium runs, it errors out with an error indicating it cannot open the display. Being new to Wayland, I searched for how (and what) to configure as the Wayland display. None of the examples seemed to work.My questions is has anyone been able to run Chromium on this machine? If so, what magic incantation did you use to get the correct display?Thanks,Greg
My custom board is based on stm32mp157a-dk1,remove the pmic and usb type c circuit,My porting steps are as follows:1. porting u-boot, verify that u-boot functions properly, compile the uboot trusted image, copy u-boot.dtb to FIP_artifacts/u-boot/ and rename it to u-boot-stm32mp157a-custom-trusted.dtb, copy u-boot- nodtb.bin to FIP_artifacts/u-boot/ and rename it to u-boot-nodtb-stm32mp15.bin2. modify optie-os-stm32mp-3.12.0.r1-r0 source code, add custom dtsi and dts file, modify dtsi and dts file, add custom board in Makefile.sdk file CFG_EMBED_DTB_SOURCE_FILE, use make -f $PWD/ ... /Makefile.sdk CFG_EMBED_DTB_SOURCE_FILE=stm32mp157a-custom all command to generate tee-header_v2-stm32mp157a-custom.bin, tee-pageable_v2-stm32mp157a -custom.bin, tee-pager_v2-stm32mp157a-custom.bin three files and copied to the FIP_artifacts/optee/ directory, in the use of the command is an error prompt can not find other custom board related files in the FIP_artifacts/ directory, but can generate corresp
We would like to implement a dual partitioning system and I am trying to find out if it is possible to have a secondary SSBL (u-boot) partition in trusted mode (eMMC).I don't see any problems for bootfs, vendorfs, rootfs and userfs. FSBL is already redundant, but I could not find anything about having a secondary SSBL partition. Is that possible? Also, if it is possible to have a secondary SSBL partition, how can I tell FSBL to use a determined SSBL partition? From what I could see in the TF-A code, that is not possible, just want a confirmation.For context, all this is for updating a set of partitions when updating a device and switch to this set of partitions in the next boot.Thanks.
I have a STM32MP157D-DK1 board. I downloaded design files and surprisingly found there were 56ohm series resistors on ddr address lines. Though series resistors are normally found on data and address lines for ddr1 or ddr2, I have never seen them used for ddr3 mem chips. Are those resistors necessary for STM32MP1, or they are just optional, for the best possible signal integrity?Those resistors occupies a large board area, which is a pain for compact design.
Hi,I wanted to ask if there is a possibility to have the same time domain on the M4 and A7 cores?To be a bit more specific: my STM32MP1 board synchronises time over Ethernet using PTP (and that works great!) but now i want to timestamp a digital input pin.The options i have seen so far are:using EXTINT to assign a system timestamp when the interrupt occurs (on the A7) -- this is not accurate because of kernel interrupt handling and software timestampingusing TIMx and input capture mechanisms (on the M4) -- this would be my preferred way but there i have no information at which time TIMx value is and how to synchronise them with the A7one idea i had was using the PTP_Synchro PPS_OUT [which i still couldn't activate in Cube although i enabled TIM2 as slave with ETR] and correlate input capture values from CC2 with the PPS. but there only the duration from the last PPS to the current input capture is known -- then my idea was to use the RTC values to associate whole seconds but the RTC is
1. When I create an openamp-based virtual_huart0 on the M4 side for exchanging information,some code is as follows:if (VIRT_UART_Init(&huart1) != VIRT_UART_OK) { printf("VIRT_UART_Init UART1 failed.\r\n"); Error_Handler(); } VIRT_UART_StatusTypeDef VIRT_UART_Init(VIRT_UART_HandleTypeDef *huart) { int status; /* Create a endpoint for rmpsg communication */ status = OPENAMP_create_endpoint(&huart->ept, RPMSG_SERVICE_NAME, RPMSG_ADDR_ANY, VIRT_UART_read_cb, NULL); if(status < 0) { return VIRT_UART_ERROR; } return VIRT_UART_OK; }and this will create the /dev/ttyrpmsg0 device on the Linux side.To exchange data, I directly use OpenAMP library functions to create nodes,and In Linux, the driver rpmsg client sample will be loaded.some code as follow:#define RPMSG_SERVICE_NAME "rpmsg-client-sample" OPENAMP_create_endpoint(&remsgr_ept,RPMSG_SERVICE_NAME,RPMSG_ADDR_ANY,rx_callback,NULL);Now the pro
Hi,I've noticed when booting one of our board designs with a STM32MP157C in openstlinux-5.4-dunfell-mp1-20-11-12 with Weston Wayland under the STM32MP157-Ecosystem-v2.1.0 that multiple times when the kernel is loading I'll see the message "stm32-dmamux 48002000.dma-router: Run out of free DMA requests" reported to std-out. Does anyone know if when this occurs, what kind of behavior STM32 modules that attempted to issue a DMA request will have? Do they fall back to using a non-DMA access mode, wait until a free request becomes available, or just fail outright?I've attempted to find an answer to this in the dmamux documentation but did not see anything addressing this and looking at the code for the implementation itself, it didn't seem immediately obvious either. Any assistance would be appreciated, thank you.
Similar question was asked here:https://community.st.com/s/question/0D50X0000AvgWuG/how-to-use-timers2-as-pwmbacklightBut this does not work on v5.4 kernel anymore. So a working example would be nice as pwm-backlight device tree handling is not documented in the wiki. SoC is STM32MP157. Current code is:panel_backlight: panel-backlight { compatible = "pwm-backlight"; pwms = <&pwm12_pins_a 0 5000000>; pwm-names = "backlight"; brightness-levels = <0 4 8 16 32 64 128 255>; default-brightness-level = <6>; status = "okay"; }; &timers12 { /delete-property/dmas; /delete-property/dma-names; status = "okay"; pwm12: pwm { pinctrl-0 = <&pwm12_pins_a>; pinctrl-1 = <&pwm12_sleep_pins_a>; pinctrl-names = "default", "sleep"; #pwm-cells = <2>; status = "okay"; }; timer@11 { status = "okay"; }; }; 
Hi,My test kit is STM32MP157C-DK2 and kenerl version is 5.10.10.I tried to monitor falling edge event on PD.1, with command "gpiomon --falling-edge gpiochip3 1". It is faile and and the log in the attachment.Then I disable "hdmi-transmitter@39" in "stm32mp15xx-dkx.dtsi" and comiple it again and replace file in the OS, Then executing command "gpiomon --falling-edge gpiochip3 1" will work correctly.Please advise why PIN PG.1 interrupt configuration will affect PIN PD.1 interrupt configuration. Thanks,QiZhang
Hello, is there a way to use a debian linux on STM32MP1 instead of openliunxst? How to deploy xlinux ai as well on debian instead of openstlinux?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.