TODAY | STM32 Summit 2026
Ask questions and find answers on STM32 security frameworks and tools, including cryptographic libraries, TrustZone, and the Secure Manager.
Most recent activity
hi here I am configure the CRC register of STM32f469IITx I am using the function CRC_CalcCRC(); to generate the crc for 32-bit data.i am not getting the crc please any one help me.uint32_t data=0xAAAAAAAA;uint32_t crcvalue=0x00000000;how i am using crcvalue = CRC_CalcCRC(data);crcvalue = ? (crcvalue is giving null only)
Hi,May I know the "STM32CubeExpansion_Crypto_V4.0.1" has implemented hardware accelerator via stm32l5xx?Please advise,Rgds,QiZhang
Hello,The mentioned board utilizes usb otg communication through the USB connector. DM and DP pins are PA11 and PA12 which are directly connected from the mcu to the USB connector (no available GPIO pins). There is no usart or uart connected to the DP and DM pins. Every SBSFU example including the most similar one - stm32F413H - uses usart/uart interface. For example the stm32F413H uses usart6 which is connected to the DP and DM pins. Possible solutions (?) : 1) Swaping the uart interface with usb otg interface in sbsfu project; 2) Directly connecting USB DM and DP pins to one of the available usart/uart interfaces;The first solution requires extra changes in the project files, by extra I mean, that the files that need to be updated are more than the mentioned default files in the documentation e.g. low level services files. And I dont know if this will not break anything else...The second solution requires soldering the uart/usart GPIO (or the mcu) pins to the usb connector pins. Are
I have set readout protection,the f103c8 chip have automatically set the first four page write protect,now I wanna erase the first four page,how can I unlock write protection first,thank you
Is there any way to use the X-CUBE-SMBUS middleware from ST with STM32F407?The controller does support it but ST's middleware does not.Does anyone know why it would not be supported?The reason I say its not is because the HAL for it is not in the #ifdef switches as shown in the code snippet below.// From en.x-cube-smbus_v2.0.3/STM32_AN4502_FW_V2.0.3/Middlewares/ST/STM32_SMBus_Stack/inc/stm32_SMBUS_stack.h #include "stm32_config_stack.h" #ifdef STM32F072xB #include "stm32f0xx_hal.h" #endif #ifdef STM32F303xC #include "stm32f3xx_hal.h" #endif #ifdef STM32L053xx #include "stm32l0xx_hal.h" #endif #ifdef STM32L476xx #include "stm32l4xx_hal.h" #endif #ifdef STM32L4R5xx #include "stm32l4xx_hal.h" #endif #ifdef STM32H743xx #include "stm32h7xx_hal.h" #endif #ifdef STM32WB55xx #include "stm32wbxx_hal.h" #endif #ifdef STM32G431xx #include "stm32g4xx_hal.h" #endif
Hello,I'm having trouble using the RNG peripheral on the STM32F207.I'm using the HAL functions to set things up and I keep getting back the same number. I've made sure to enable the RNG Clock. See the steps below:Enabled RNG CLK: __RNG_CLK_ENABLE()Enabled the peripheral: __HAL_RNG_ENABLE()Get the random number when available (polling on the ready flag):HAL_RNG_GetRandomNumber()The polling doesn't time out, it just keeps returning the same number. I've tried to enable the interrupt as well and the interrupt never arrives.What am I doing wrong?Thank you
Hi all, I am using button input from separate input (Separate PCB). After I disconnect that PCB, SBSFU automatically goes into the Updating mode. Even I tried to do an internal pull-up but it also doesn't work. I tried two methods of internal pull-ups but still, I have that problem. please can anyone help me with this?method 1)GPIO_InitTypeDef GPIO_InitStruct; \ GPIO_InitStruct.Pin = GPIO_PIN_6; \ GPIO_InitStruct.Pull = GPIO_PULLUP;\ GPIO_InitStruct.Mode = GPIO_MODE_INPUT; \ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; \ __HAL_RCC_GPIOC_CLK_ENABLE(); \ HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); \method 2 )GPIOC -> PUPDR |= GPIO_PUPDR_PUPD6_0;But nothing is workingproblem is happening due to floating of the pin (button)Thanks Roshan
We were running tests originally with the g474re eval board to test/integrate SBSFU functionality. We needed to disable dual-bank mode with the STM32CubeProgrammer before being able to transfer via Ymodem. We are now trying on the g491 and are failing this check: if (SFU_LL_SECU_CheckFlashConfiguration(psFlashOptionBytes) == SFU_SUCCESS)The STM32CubeProgrammer doesn't have the dual bank option for the g491. I'm probably missing something obvious but how can we change dual-bank mode outside of the option bytes page in the programmer? Or is it that it should be enabled and the problem lies in another configuration?I do have the BFB2 unchecked.
Hi ST,I am working with the NUCLEO-WB55 and we are adding some char in service but we don't know where we can find information for these fields * @param Security_Permissions Security permission flags. * Flags: * - 0x00: None * - 0x01: AUTHEN_READ (Need authentication to read) * - 0x02: AUTHOR_READ (Need authorization to read) * - 0x04: ENCRY_READ (Need encryption to read) * - 0x08: AUTHEN_WRITE (need authentication to write) * - 0x10: AUTHOR_WRITE (need authorization to write) * - 0x20: ENCRY_WRITE (need encryption to write)We do not understand if we need to use it or not, could you share with us some information to understand the different options and what is the purpose of them.Thanks.Marcos
Hello,I am developing a SBSFU for a custom application on a NUCLEO-H753ZI board. The application works well on its own. However, when I switch its linker script for the one of the example UserApp delivered with the SBSFU archive, I encounter some unexpected behavior.Namely, the code still works, and I am actually able to correctly encrypt it and download it on the board. However, it does not work for large inputs. Specifically, my code was initially able to deal with inputs as large as at least 21k bytes. But with the new memory configuration, it only works for inputs up to 13k bytes. Any input larger than that causes what seems to be a segmentation fault on the board.I believe the problem is that my application does not have enough memory anymore since the SBSFU split the memory in several parts. I should also mention that my application carries heavy cryptographic operations, therefore my assumption seems to make sense. I tried to increase the sizes of various areas in the linker fil
I am working with STM32H750VBT6 rev. V. I divided the internal flash into protected and unprotected areas. I set option bytes for the protected area. It worked fine. After that I needed to deactivate PCROP protection. I could not do it. I use STM32CubeProgrammer ver: 2.7.0 and STM32 ST-Link Utility v4.5. I expect that if I set DMEP and reduce level from level 1 to level 0 PCROP protection deactivates, but it does not work. I tried different variants with RDP levels and PCROP settings but all of them do not work. How can I deactivate PCROP protection?
I download X-CUBE-AWS 1.4.0 to compile and install on my STM32F769IDISCOVERY board, everything running ok, but when I configure it to update new app version from OTA, after reboot is shows:= [SBOOT] SECURE ENGINE INITIALIZATION SUCCESSFUL= [SBOOT] STATE: CHECK STATUS ON RESET INFO: A Reboot has been triggered by a Software reset! Consecutive Boot on error counter reset Consecutive Boot on error counter = 0 Consecutive Boot on error counter updated INFO: Last execution status before Reboot was:Executing Fw Image. INFO: Last execution detected error was:No error. Success.= [SBOOT] STATE: CHECK NEW FIRMWARE TO DOWNLOAD= [SBOOT] STATE: CHECK USER FW STATUS New Fw Encrypted, to be decrypted= [SBOOT] STATE: INSTALL NEW USER FIRMWARE 262080
Hello,The reference manual for the STM32F207 states that the F20x and F21x family has a cryptographic processor: Ref Manual - Page 508. The datasheet for the F207 doesn't state any support for that though. Is this a mistake in the reference manual?Thanks
Hi, actually I 'm planning to write some C code for cryptographic functions for e-signature, encrypt data or decrypt data in IOT devices.There are lots of products here. So I don't know which one is efficient for encrypt or decrypt operations or signing a data operations. But I know, I should save private keys securely in device.What about STM32F410?For now I don't know how much kbytes I need for code and data. Any information is welcome, Thanks
Hello.I'm trying to program the main flash memory of STM32F103RCT6 using J-Link while RDP is enabled.I followed main flash memory programming procedure in PM0075 manual.the procedure is in below picture.When only RDP is enabled, I unlocked Flash_CR_LOCK bit and then Write FLASH_CR_PG to 1.After this procedure, I tried to write half-word data to 0x080069f0.However, J-Link reports the error like this.****** Error: Timeout while calculating CRC, RAMCode did not respond in time. (PC = 0x00000000, CPSR = 0x00000000, LR = 0x01000000)!Failed to erase sectors 14 @ address 0x08006800 ((erase error))Failed to erase sectors.Is it impossible to program main flash memory when RDP is enabled?If not, how can I do it?Here is my J-Link Commander log.Device "STM32F103RC (ALLOW OPT. BYTES)" selected.Connecting to target via JTAGInitTarget() startActive read protection detected.Skipping unsecure.InitTarget() endTotalIRLen = 9, IRPrint = 0x0011JTAG chain detection found 2 devices: #0 Id: 0x3BA00477, I
I've been able to compile previous versions of SBSFU (P-NUCLEO-WB55.Nucleo/Applications/1_Image) without issues, but with this one I've run into two issues:First, SE code did not fit in SE_ROM_region. I was able to fix this by adjusting the linker map and MPU region definitions.Second, I get this error when compiling the UserApp project:c:\st\stm32cubeide_1.1.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: ../../../../1_Image_SBSFU/SW4STM32/STM32WB55RG_Nucleo_1_Image_SBSFU/Debug\se_interface_app.o: in function `SE_APP_GetActiveFwInfo': (.SE_IF_Code+0x0): multiple definition of `SE_APP_GetActiveFwInfo'; ../../../../1_Image_SBSFU/SW4STM32/STM32WB55RG_Nucleo_1_Image_SBSFU/Debug\se_interface_app.o:(.SE_IF_Code+0x0): first defined hereIf I search the SBSFU projects for "SE_APP_GetActiveFwInfo", I find the definition in se_interface_application.c (in the SBSFU project), the declaration
(.SE_IF_Code+0x0): multiple definition of `SE_APP_GetActiveFwInfo'STM32L476 Demo
I programmed stm32F103RCT6 firmware using STM32CubeIDE.When Read Out Protection (RDP) is disabled, the firmware works well.But RDP is enabled, the firmware doesn't work.My firmware is transmitting data by UART.when RDP is disabled, Firmware sends data like the pic belowHowever, RDP is enabled. I cannot see anything.How can the firmware work when RDP is enabled?I'm using QFP 64pin socket & connected Jtag by ST-Link v2.
I'm starting two new projects which initially would make use of STM32F1 and STM32F4 MCUs but after reading some articles detailing how easy would be to disable RDP1 and even downgrade RDP2 to RDP1 I become very concerned. Please, anyone with more experience could explain to me if these methods affects every STM32 MCUs? If so, how could I protect my firmware? Apparently there is no way to permanently disable debug/jtag... What if I use a custom bootloader? I'm lost here.
Hi there,I currently use STM32L073 for evaluation and found some issue with CRC module.L073 has a CRC peripheral whose polynomial is programmable. And when I programm the peripheral as below, the checksum returns from the module doesn't match the one from a 3-party calculator -- it has an extra XOR with 0xFF.The peripheral configuration is as below. In this case, both the 3-party calculator and my software code get a result of 0x5A but the CRC peripheral in the L073 gives a result of 0xA5 (which is 0x5A XOR 0xFF). Same happens for other data input.CRC->CR = 0x01; // reset CRC module CRC->CR = 0x10; // 8-bit polynomial CRC->POL = 0xFE; // set polynomial CRC->INIT = 0xFF; // set initial value *(__IO unsigned char *)(CRC_BASE) = 0x5A; // 8-bit write to CRC->DR register result = CRC->DR; // readout CRC checksumCould anyone please help me with this?Thanks a lot.Regards,Harry
Hello everyone,I am currently evaluating SSL with a local server and an STM32 device. I'm unable to figure out why the decryption fails with CCM as the cipher suite.FYI: I am using MbedTLS v2.14.1.Setup: I'm using x86 local server with STM32 device as a client.Here is what happens-1. Software CCM implementation on the client: When I use the software implementation of the CCM. Handshake and decryption is successful. Therefore, I can stream the data from STM32 and read it on the local server.2. Hardware CCM implementation with MBEDTLS_CCM_ALT: I have used ccm_alt.c provided from STM32Cube v1.9.0. Here, the handshake is successful. But decrypting the message fails.The errors are:ssl_decrypt_buf() returned -29056 (-0x7180)mbedtls_ssl_read_record() returned -29056 (-0x7180)Checks performed:Same certificates are used for SW and HW impl
We have ported SBSFU project for Nucleo L4R5ZI-P dev-board.All debug prints (TRACE) are working when configured USART2 but when configured LPUART1 which is used as virtual com port by ST-LINK usb connector then not getting any prints.
Hello,I installed a SBSFU for a custom application on a Nucleo-H753ZI board. Everything works fine, however with the current settings of the SBSFU, my application is lacking RAM to handle the large inputs I want it to handle.I used the memory mapping of the UserApp example application. After further investigation, I observed that the application RAM was located in the DTCMRAM area (0x20000000 / 128KB). Unfortunately, this area seems to be too small to host my application which RAM used to be in the RAM_D1 area of the board (0x24000000 / 512KB).Therefore, I would like to know how I could move the application RAM area from the DTCMRAM area to the RAM_D1 area.I tried the following:Modify the RAM section of the mapping_sbsfu.ld file as follows:/* RAM section */ /* SE RAM1 region protected by firewall */ /* SE stack is placed 1st in RAM, stack overflow does not write on other RAM area */ __ICFEDIT_SE_region_RAM_start__ = 0x24000000; __ICFEDIT_SE_region_RAM_stack_top__ = 0x24000400; __ICFEDI
For downloading the binary after updating the SBSFU, how does one go about it since the security protections have been updated (8.6 in UM2262). I can't get the Secure Boot to load in Tera Term again even though I press both reset and user. When I try to download the file in STM32CubeIDE it gives me an error. I was able to do it the first time, but it says once you run it you have to erase in a specific way which I did, but now I am not able to download a new file.
Hi :grinning_face:I am working on my project of ensuring the hardware security of the Drone's Flight Controller.I am planning to use ARM PSA to ensure security of Drone System at hardware level.I am developing drone security system by using NUCLEO-L552ZE-Q.For this, I am referring to the SBSFU of STM32CubeL5, and there are two issues currently.If I want to apply Secure Boot for a new binary file (Ex: nuttx.bin), which part of the source code should be changed?How to turn off Secure Boot and return to the original state? Using regression.sh doesn't bring it back. :crying_face:Thank you sincerely :folded_hands:PS) My project Link: https://github.com/korkeep/PX4-Trust
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.