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
I am teaching a course in real-time embedded systems and in the past have used the STM32F4 MCUs running FreeRTOS, but would like to move to a microprocessor, specifially an STM32 MPU starter kit for students. So, does the STM32 MPUs support for a Real-time OS such as FreeRTOS. I see where the STM32MPU starters already provide embedded Linux but trying to find out if we could run FreeRTOS instead without too much difficulty, since it will be the students who will be configuring their own boards.Any tips/hints would be greatly appreciated.
I want to control defined GPIO in DT in Applicatoin code. But I can't control this, please let me know how to control gpio with DT in applicatoin. 1) I can control GPIO in Application without DT . (unused at gpioinfo)2) I can't control GPIO in application with DT, like below. gpioinfo line 14: unnamed "stm32mp:green:user" output active-low [used] occurred error massage when running application code Failed to issue GET LINEHANDLE IOCTL (-25)Failed to issue GPIOHANDLE_SET_LINE_VALUES_IOCTL (-25)Failed to issue GPIOHANDLE_SET_LINE_VALUES_IOCTL (-25)Failed to issue GPIOHANDLE_SET_LINE_VALUES_IOCTL (-25) reference code https://wiki.st.com/stm32mpu/wiki/How_to_control_a_GPIO_in_userspaceDevice Tree - add green led led { compatible = "gpio-leds"; blue { label = "heartbeat"; gpios = <&gpiod 9 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; default-state = "off"; }; green { label = "stm32mp:green:user"; gpios = <&am
Hi,we have a custom board based on the stm32mp151c. It has on sdmmc3 a Silicon Labs WF200 Wifi Card attached. We tested this setup with the stm32mp157c-dk2 and it worked fine. Now, we do not see the message during bootup:mmc0: new high speed MMC card at address 0001Which we should and which triggers the loading of the silicon labs driver. If I reset the sdmmc with: echo 48004000.sdmmc > /sys/bus/amba/drivers/mmci-pl18x/unbind && sleep 2 && echo 48004000.sdmmc > /sys/bus/amba/drivers/mmci-pl18x/bindThe card is found. This is the bootup, yellow is the reset GPIO, green is the sdmmc3 D2 pin, which must be high for the wf200 card to go into SDIO mode instead of SPI. Orange is clock. This happens at boot:And this is the behavior on manual reset after bootup:Thanks and Regards, Matthias
Dear Community,we are bringing up our own HW platform based on the STM32MP151A MPU. The use-case currently is that we obtain data permanently over several hours and store it on a sd card at a speed of max. 15MByte/sec. After the data acquisition we want to read out the data from the system as fast as possible without removal of the SD Card (not possible) via Gigabit Ethernet. The problem is that we just learned in the latest errata sheet that SDR104 mode should be avoided (Errata Link 2.3.19) . This would mean that we need to fall back to SDR50/DDR50 with 50MByte/sec max which would mean that the effective read out speed is theoretically limited by the SD Card interface at around 400Mbit at SDR50 instead of 832Mbit at SDR104.Is there any way to enable SDR104 mode (for 104MByte/sec datarate) or is there aplan to e.g. update the silicon to solve this issue?BR,Bernhard
..
This is might save someone the few hours I spent tracking this down. I am wondering if this is a bug. It would seem like a reason that you have m4 sections in the device tree. So linux can be aware not to touch an M4 resource. Linux shuts off the vdda shortly after booting thinking no one is using vdda and then it seems like the DAC is not working as we control it from M4.So I am not sure if this is considered a bug or not. The solution is to set vdda as "regulator-always-on"&m4_dac{ pinctrl-names = "default"; pinctrl-0 = <&m4_dac1_pins_mx>; status = "okay"; vref-supply = <&vdda>; // Does not prevent vdda from being shut off. };vdda:ldo5{ regulator-name = "vdda"; regulator-min-microvolt = <2900000>; regulator-max-microvolt = <2900000>; interrupts = <IT_CURLIM_LDO5 0>; regulator-always-on; // <--added };
Hi,i have done some Benchmarktest via Rpmsg and iam getting following results:Maximal datarate sending data from M4 to A7 4.359 MB/s.Maximal datarate sending data from A7 to M4 9.16 MB/s.Now iam not sure why reading from A7 side is so much slower than writing, because you always get an interrupt back doesnt matter if you are sending or reading data. I have following thougths about that and also a question:If Linux receives an Interrupt from IPCC, is Linux handling the Interrupt directly or will the functions executed later from a worker-thread? This would be nice to know.The reading function seems to be more complicated and needs more ecextuion time than just writing?!Maybe someone already have some thoughs or answers to that.
Hello everybody,i have a problem booting the SD card. The problem occurred after I copied the device tree (.dtb) from my project from STM32CubeMx to the STM32MP157A under / boot. When booting, the U-Boot and the start kernel run endlessly. How can I solve the problem?Thanks a lotHere is the output from the board:U-Boot 2018.11-stm32mp-r2 (Nov 14 2018 - 16:10:06 +0000)CPU: STM32MP157AAC Rev.BModel: STMicroelectronics STM32MP157A-DK1 Discovery BoardBoard: stm32mp1 in trusted mode (st,stm32mp157a-dk1)Board: MB1272 Var1 Rev.C-01 Watchdog enabledDRAM: 512 MiBClocks:- MPU : 650 MHz- MCU : 208.878 MHz- AXI : 266.500 MHz- PER : 24 MHz- DDR : 533 MHz******************************************** WARNING 500mA power supply detected ** Current too low, use a 3A power supply! ********************************************NAND: 0 MiBMMC: STM32 SDMMC2: 0In: serialOut: serialErr: serialNet
I see that the OpenAMP_TTY_echo example uses the stm32mp15xx_retram.icf file in the EWARM. But thereis also an stm32mp15xx_sram.icf file. Can someone please point out the differences between the two ic files and why the OpenAMP example used the retram and not the sram location?
After importing from the repo (1.3) the application example FreeRTOS_CreateThread_CM4 when loaded for debugging, the debugger fails to set breakpoints complaining that there are already too many break points set. I only set one. It looks like the application is running as I can pause the debugger and see where the code is currently executing. I can resume the application as well. Also the LEDS do not come on which is why I am trying to break point the code. Is there something special about FreeRTOS running on CM4 that precludes the use of breakpoints? I am using:STM32MP157-DK2STM32CubeIDE on Linux
We use HSE osc instead of xtal as suggested by errata. However to support STANDBY we need to turn it off by GPIO. The idea is to boot from SPINAND on HSI and turn HSE in bootloader.Unfortunately it seems that ROM hangs when HSE is not present:< @ 00646143 | [INFO] - BOOTCORE_Pll1Started >< @ 00651111 | [INFO] - BOOTCORE_Pll1Locked >< @ 00652481 | [INFO] - BOOTCORE_Pll2Started >< @ 00657398 | [INFO] - BOOTCORE_Pll2Locked >< @ 00658999 | [INFO] - BOOTCORE_CkMpuSsSwitchedOnPll1 >< @ 00660470 | [INFO] - BOOTCORE_CkAxiSsSwitchedOnPll2 >< @ 00661050 | [INFO] - BOOTCORE_Pll12StartReqStatusPllStarted >< @ 00824184 | [INFO] - NANDCORE_GetParamFromOtp >< @ 05653430 | [INFO] - BOOTCORE_HseNoBypass >< @ 06934011 | [ERR ] - BOOTCORE_HseNotReady >I tried to set CFG9 bits 1 and 2 (skip HSE detects) but no success. Setting bit 5 in CFG3 (skip PLLs) doesn't help too.Is HSE usage somehow hardcoded for SPINAND boot ? From docs I get that only US
I have an STM32MP157 discovery kit and we are considering using STM32MP157 at my work for a future PCBA we are creating.We would like to connect an external UHS1 microSD slot to the STM32MP157, but for data collection writing at 100 MB/s. We would also like to connect a separate eMMC to SDMMC .I see this text in Section 58.1 of the STM32157 reference manual which causes me to wonder if the current system would support this?https://www.st.com/resource/en/reference_manual/dm00327659-stm32mp157-advanced-armbased-32bit-mpus-stmicroelectronics.pdfDoes this mean the hardware can't every support the configuration we are desiring? Or the software somewhere like OpenSTLinux needs to be modified? Or is the information stale?In other ST documentation, I see that we are able to configure booting from SDMMC1 or SDMMC2 which seems strange if the system can only support 1 "MMC" connected thing at a time.Thank you,andy
Hello, I have done the modification in the device tree related to inclusion of usart3 as per 3.3.1 Activation of a USART or UART instance in https://wiki.st.com/stm32mpu/wiki/Serial_TTY_device_tree_configuration&usart3 { pinctrl-names = "default", "sleep", "idle"; /* pin configurations definition */ pinctrl-0 = <&usart3_pins_a>; /* default pin configuration selection */ pinctrl-1 = <&usart3_sleep_pins_a>; /* sleep pin configuration selection */ pinctrl-2 = <&usart3_idle_pins_a>; /* idle pin configuration selection */ status = "okay"; /* device activation */};in the dk2 dsi, but after kernel booting , Banner seems stuck at ST and doesnt loads the full gui.I need to connect to it for delta changes in the application and then pushing it to the board using scp but without gui loading I cant test further. Help please !I can connect via minicom and see ttySTM1 up.this is the boot log : https://pastebin.com/ugziKQnzI confirm that with
Hi,I'm using a custom board with custom device tree, the distribution is built with ST's Distribution Package (st-image-core). Now the bootloader (u-boot v2020.01) freezes while "starting kernel" with some strange errors before. Should I search for errors in the DT or is there another reason for not starting the kernel?stm32_smc: Failed to exec svc=82001003 op=1 in secure mode (err = -3) Net: eth0: ethernet@5800a000 Hit any key to stop autoboot: 0 Boot over mmc0! switch to partitions #0, OK mmc0 is current device Scanning mmc 0:4... Found /mmc0_extlinux/extlinux.conf Retrieving file: /mmc0_extlinux/extlinux.conf 256 bytes read in 24 ms (9.8 KiB/s) Retrieving file: /splash.bmp 18244 bytes read in 25 ms (711.9 KiB/s) 1: OpenSTLinux Retrieving file: /uInitrd 3632489 bytes read in 176 ms (19.7 MiB/s) Retrieving file: /uImage 7317848 bytes read in 334 ms (20.9 MiB/s) append: root=PARTUUID=e91c4e10-16e6-4c0e-bd0e-77becf4a3582 rootwait rw console=ttySTM0,115200 Retrieving file: /stm32mp157c-m
Using STM32CubeIDE Version: 1.6.0 on Linux I am able to follow the wiki to import, build, load and modify the OpenAMP_tty_echo application example. However, when I follow the same steps to import the FreeRTOS_ThreadCreation_CM4 application the program will not load to the target. I have compared the Debug configurations between the two examples and they are identical except where they need to differ with respect to program and path locations. The terminal is closed prior to loading as expected but then the terminal does not start back up with the GDB info that I normally see and then a "Problem Occurred" dialog box shows up with the Details:Error if final launch sequence: Failed pre launchFailed pre launchFirmware remoteproc load failed!This leaves little to go on to debug the issue. Any ideas?
Hello. I am working on standby/wakeup using gpio pin in stm32mp1 custom board. Going to sleep works well using gpio-keys but I can't wakeup. What bothers me most is that interrupt responsible for waking up does not set "waleup" attribute although it is defined in DTS as wakeup-source. I am not sure whether I correctly understand the concept behind exti_pwr and pwr_irq nodes so if there is anyone who can help me with a proper setup I would appreciate your help. Please find enclosed DTS. gpio_keys { compatible = "gpio-keys"; #address-cells = <1>; #size-cells = <0>; autorepeat; input-name = "gpio-keys"; button@1 { label = "Suspend"; linux,code = <205>; gpios = <&gpioi 6 GPIO_ACTIVE_LOW>; }; button@2 { label = "Wakeup"; linux,code = <143
I find the kernel Panic when I mmap 16 shared memory regions.(4KB/memory)
Whether it's to minimize computational power, improve the device's output or keep the GUI from freezing or crashing, debugging embedded software can be a challenging and time-consuming step in the process of developing embedded devices.With a multitude of combinations of inputs, outputs, and timings in a Linux-based system this is where leveraging intuitive trace analysis tools can help save on time and headaches.Join ST, Percepio, and Crank Software for this 45-minute webinar to learn how to ensure that your GUI performs as expected on the STM32MP1, raising the user experience bar for your embedded product. In this session, we will demonstrate how Crank Software’s GUI development tool, Storyboard, along with Percepio’s Tracealyzer can provide a rich set of high-level overviews for top-down exploratory analysis, including process interactions, parent/child process dependencies, state machines, CPU usage, and more.In this webinar, you will learn how to:Leverage Storyboard’s embedded too
We've created a bunch of sample touch screen apps in our Storyboard ST GUI builder software that you can download, and save to your hardware. In moments, you'll be able to visualize and interact with a fully-functional sample touch screen application and see quickly the type of touch screen performance that is possible on your STM32 hardware.Simply download and execute the sample demos onto your board today!
Dear community,we got a problem booting from our eMMC (THGBMJG9C8LBAU8) memory and we cannot figure out how to solve it. The Silicon Revision seem to be "Z". Attached you can the the ping pong between MPU (STM32MP151A) and eMMC. The initialization sequence is coming from the MPU and the eMMC also responds. But after that there is no follow-up. We have looked up the errata sheet (Link 2.3.8) and it seems there were problems with older silicon revisions but we are wondering if the issue still occurs with Z revision as the described behavior in the errata is very similar. Attached you can find the command sequence observed by the logic analyzer and the BootRom Log.Thanks,Bernhard Boot Rom Log:< @ 00007504 | [INFO] - BOOTCORE_BootRomMaskVer ( 0x00000000 ) > < @ 00008800 | [INFO] - BOOTCORE_BootRomVer ( 0x00000102 ) > < @ 00009976 | [INFO] - BOOTCORE_FreezeIWDG12Clocks > < @ 00011335 | [INFO] - BOOTCORE_HwResetPOR > < @ 00024986 | [INFO] - BOOTCORE_ChipModeSecOpen
Hello,We want to transfer a project from STM32F7 to STM32MP157C ( cortex M4 side). To do that we need an external RAM (arround 20 Mbytes). Is there a way to map an external RAM on cortex M4 side with cubeMX ?Best regards,Arnaud
Hello! I have just discovered that kit I would like to use to develop a new testing system within the company where I am working. However, I have some questions about it:What kind of additional card could we use to apply 24V to the board's input (I have to use the output signal of the inductive sensor currently used)?Does it exist a card which can directly get 24V as an input voltage (or is it always 5V or 3.3V)?How many analogical, numerical and On/Off I/O does the kit's board have?Could we use some software like Matlab to analyse the output signals of that card?I truly thank you in advance for your answers!Sincerely,
Hy i am using the usart3 from the STM32MP157A-DK1. i orientated myself on the USART driver (https://elixir.bootlin.com/linux/latest/source/drivers/tty/serial/stm32-usart.c).butwhen i want to initialize theport I get following error code “Rs453Network: probe of 4000f000.serial failedwith error 77�? on this methode stm32port->wakeirq = platform_get_irq(pdev, 1);I have this device tree configuration:Stm32mp15xx-dkx.dtsi&usart3 { pinctrl-names = "default", "sleep", "idle"; pinctrl-0 = <&usart3_pins_b>; pinctrl-1 = <&usart3_sleep_pins_b>; pinctrl-2 = <&usart3_idle_pins_b>; &nb
I'm using a custom board(with STM32MP151C) with custom device tree, the distribution is built with ST's Distribution Package (st-image-core). Now the bootloader (u-boot v2020.01) freezes while "starting kernel" with some strange errors before. After waiting for a while, linux will reboot.I had no problem with thud, but I had this problem with dunfell.Should I search for errors in the DT or is there another reason for not starting the kernel?NOTICE: CPU: STM32MP151CAA Rev.Z NOTICE: Model: STMicroelectronics custom STM32CubeMX board WARNING: VDD unknownINFO: Reset reason (0x214): INFO: IWDG2 Reset (rst_iwdg2) INFO: Using SDMMC INFO: Instance 1 INFO: Boot used partition fsbl1 NOTICE: BL2: v2.2-r2.0(debug):v2.2-dirty NOTICE: BL2: Built : 13:36:23, Oct 22 2019 INFO: Using crypto library 'stm32_crypto_lib' INFO: BL2: Doing platform setup INFO: RAM: DDR3-DDR3L 16bits 400000Khz INFO: Memory size = 0x20000000 (512 MB) INFO: BL2 runs SP_MIN setup INFO: BL2: Loading image id 4 INFO: Loading image
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.