ARM GAS /tmp/ccopxfLa.s page 1 1 .cpu cortex-m4 2 .eabi_attribute 27, 1 3 .eabi_attribute 28, 1 4 .eabi_attribute 20, 1 5 .eabi_attribute 21, 1 6 .eabi_attribute 23, 3 7 .eabi_attribute 24, 1 8 .eabi_attribute 25, 1 9 .eabi_attribute 26, 1 10 .eabi_attribute 30, 1 11 .eabi_attribute 34, 1 12 .eabi_attribute 18, 4 13 .file "stm32f4xx_hal_flash.c" 14 .text 15 .Ltext0: 16 .cfi_sections .debug_frame 17 .section .text.FLASH_Program_DoubleWord,"ax",%progbits 18 .align 1 19 .arch armv7e-m 20 .syntax unified 21 .thumb 22 .thumb_func 23 .fpu fpv4-sp-d16 25 FLASH_Program_DoubleWord: 26 .LVL0: 27 .LFB146: 28 .file 1 "Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c" 1:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 2:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 3:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @file stm32f4xx_hal_flash.c 4:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @author MCD Application Team 5:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver. 6:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * functionalities of the internal FLASH memory: 8:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Program operations functions 9:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Memory Control functions 10:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Peripheral Errors functions 11:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 12:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 13:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 14:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### FLASH peripheral features ##### 15:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 16:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 17:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses 18:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations 19:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** and the read and write protection mechanisms. 20:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 21:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction 22:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** prefetch and cache lines. 23:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 24:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The FLASH main features are: 25:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Flash memory read operations 26:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Flash memory program/erase operations 27:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Read / write protections 28:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Prefetch on I-Code 29:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) 64 cache lines of 128 bits on I-Code 30:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) 8 cache lines of 128 bits on D-Code ARM GAS /tmp/ccopxfLa.s page 2 31:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 32:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 33:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### How to use this driver ##### 34:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 35:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 36:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH 37:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory of all STM32F4xx devices. 38:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 39:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) FLASH Memory IO Programming functions: 40:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and 41:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_Lock() functions 42:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Program functions: byte, half word, word and double word 43:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) There Two modes of programming : 44:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function 45:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function 46:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 47:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) Interrupts and flags management functions : 48:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() 49:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status 50:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Get error flag status by calling HAL_SetErrorCode() 51:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 52:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 53:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing 54:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to handle the following operations: 55:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Set the latency 56:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer 57:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache 58:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache 59:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts 60:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Monitor the FLASH flags status 61:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 62:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 63:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 64:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @attention 65:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 66:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Copyright (c) 2017 STMicroelectronics. 67:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * All rights reserved. 68:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 69:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in 70:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the root directory of this software component. 71:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 72:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 73:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 74:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 75:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/ 76:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #include "stm32f4xx_hal.h" 77:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 78:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup STM32F4xx_HAL_Driver 79:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 80:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 81:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 82:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH FLASH 83:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver 84:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 85:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 86:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 87:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED ARM GAS /tmp/ccopxfLa.s page 3 88:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 89:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ 90:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ 91:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants 92:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 93:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 94:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE 50000U /* 50 s */ 95:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 96:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 97:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 98:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/ 99:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ 100:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Variables 101:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 102:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 103:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Variable used for Erase sectors under interruption */ 104:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash; 105:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 106:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 107:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 108:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 109:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/ 110:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions 111:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 112:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 113:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program operations */ 114:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); 115:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data); 116:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); 117:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data); 118:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void); 119:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 120:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); 121:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 122:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 123:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 124:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 125:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Exported functions --------------------------------------------------------*/ 126:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions 127:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 128:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 129:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 130:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 131:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Programming operation functions 132:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 133:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 134:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 135:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Programming operation functions ##### 136:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 137:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 138:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH 139:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** program operations. 140:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 141:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 142:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 143:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 144:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccopxfLa.s page 4 145:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 146:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address 147:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 148:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 149:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 150:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 151:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 152:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 153:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 154:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 156:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status; 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 158:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Locked */ 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_LOCK(&pFlash); 160:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 163:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 164:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (status == HAL_OK) 168:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_BYTE) 170:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 173:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 175:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_WORD) 180:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 183:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 185:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 188:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 190:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 192:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG); 195:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 197:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Unlocked */ 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 199:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccopxfLa.s page 5 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 204:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address with interrupt ena 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 206:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 207:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 208:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 209:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 210:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 211:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 212:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 214:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 218:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable End of FLASH Operation interrupt */ 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); 221:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 222:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable Error source interrupt */ 223:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); 224:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 227:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_BYTE) 229:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 234:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 237:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_WORD) 239:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 242:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 244:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 247:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 249:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 250:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 252:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 253:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 256:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 258:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; ARM GAS /tmp/ccopxfLa.s page 6 259:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 260:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH operation error flags */ 261:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 263:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 264:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 265:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 266:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 267:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 268:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 271:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty sector*/ 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty bank*/ 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Bank; 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 281:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty address*/ 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Address; 284:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 286:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the Error code*/ 287:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 289:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH error interrupt user callback */ 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(addresstmp); 291:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Stop the procedure ongoing*/ 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 294:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 296:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 299:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 301:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 303:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Nb of sector to erased can be decreased*/ 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.NbSectorsToErase--; 306:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check if there are still sectors to erase*/ 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.NbSectorsToErase != 0U) 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 311:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 314:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Increment sector number*/ 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector++; ARM GAS /tmp/ccopxfLa.s page 7 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 318:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 319:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*No more sectors to Erase, user callback can be called.*/ 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Reset Sector and stop Erase sectors procedure*/ 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = addresstmp = 0xFFFFFFFFU; 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 325:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 326:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 327:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches(); 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 333:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 334:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 336:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 337:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* MassErase ended. Return the selected bank */ 338:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 339:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches(); 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 341:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Bank); 343:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 345:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 346:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program ended. Return the selected address*/ 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 348:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 351:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 352:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_NONE) 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 356:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Operation is completed, disable the PG, SER, SNB and MER Bits */ 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_SER | FLASH_CR_SNB | FLASH_MER_BIT)); 358:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable End of FLASH Operation interrupt */ 360:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP); 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable Error source interrupt */ 363:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR); 364:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 367:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback 369:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 370:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector which has been erased 372:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * (if 0xFFFFFFFFU, it means that all the selected sectors have been erased) ARM GAS /tmp/ccopxfLa.s page 8 373:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 374:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 375:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 376:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) 377:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 378:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 379:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 380:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 381:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file 382:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 383:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 384:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 386:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH operation error interrupt callback 387:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 388:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 389:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector number which returned an error 390:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 391:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 392:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 393:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) 394:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 395:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 396:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 397:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 398:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file 399:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 400:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 401:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 403:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 404:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 405:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 406:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions 407:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief management functions 408:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 409:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 410:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 411:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Control functions ##### 412:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 413:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 414:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH 415:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory operations. 416:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 417:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 418:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 419:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 420:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 421:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 422:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Unlock the FLASH control register access 423:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 424:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 425:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) 426:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 427:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 428:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 429:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) ARM GAS /tmp/ccopxfLa.s page 9 430:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 431:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorize the FLASH Registers access */ 432:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1); 433:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Verify Flash is unlocked */ 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 438:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = HAL_ERROR; 439:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 441:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 442:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 445:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 446:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Locks the FLASH control register access 447:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 448:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 449:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 451:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 452:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_LOCK; 453:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 454:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 455:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 456:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 457:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 458:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access. 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 461:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if ((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 464:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 465:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorizes the Option Byte register programming */ 466:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY1; 467:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 468:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 469:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 472:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 473:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 476:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 477:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 478:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access. 479:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 480:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 481:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 483:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 484:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK; 485:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 486:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; ARM GAS /tmp/ccopxfLa.s page 10 487:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 488:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 489:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 490:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Launch the option byte loading. 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 493:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 495:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 496:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t *)OPTCR_BYTE0_ADDRESS |= FLASH_OPTCR_OPTSTRT; 497:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 498:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 499:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); 500:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 501:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 502:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 503:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 505:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 506:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Peripheral Errors functions 508:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 509:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 510:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 511:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Errors functions ##### 512:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 513:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 514:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral. 515:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 516:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 517:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 518:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 519:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 520:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 521:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Get the specific FLASH error flag. 522:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval FLASH_ErrorCode: The returned value can be a combination of: 523:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH Read Protection error flag (PCROP) 524:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming Sequence error flag 525:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGP: FLASH Programming Parallelism error flag 526:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag 527:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag 528:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag 529:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 530:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) 531:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 532:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 533:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 534:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 535:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 536:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 537:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 538:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. 541:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Timeout maximum flash operationtimeout 542:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 543:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ ARM GAS /tmp/ccopxfLa.s page 11 544:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 546:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 547:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 548:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear Error Code */ 549:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 550:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 551:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 552:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** flag will be set */ 554:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Get tick */ 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** tickstart = HAL_GetTick(); 556:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) 558:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 559:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (Timeout != HAL_MAX_DELAY) 560:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout)) 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_TIMEOUT; 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 566:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 570:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 572:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 573:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 574:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 575:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 578:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 579:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 580:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 581:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the error code*/ 583:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 584:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 585:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 587:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If there is no error flag set */ 588:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 589:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 590:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 593:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program a double word (64-bit) at a specified address. 594:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 595:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V and Vpp in the range 7V to 9V. 596:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 597:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 598:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 599:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 600:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. ARM GAS /tmp/ccopxfLa.s page 12 601:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 602:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 603:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 604:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) 605:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 29 .loc 1 605 1 view -0 30 .cfi_startproc 31 @ args = 0, pretend = 0, frame = 0 32 @ frame_needed = 0, uses_anonymous_args = 0 33 @ link register save eliminated. 34 .loc 1 605 1 is_stmt 0 view .LVU1 35 0000 10B4 push {r4} 36 .LCFI0: 37 .cfi_def_cfa_offset 4 38 .cfi_offset 4, -4 606:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 607:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 39 .loc 1 607 3 is_stmt 1 view .LVU2 608:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 609:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 610:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 40 .loc 1 610 3 view .LVU3 41 0002 0A49 ldr r1, .L3 42 0004 0C69 ldr r4, [r1, #16] 43 0006 24F44074 bic r4, r4, #768 44 000a 0C61 str r4, [r1, #16] 611:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; 45 .loc 1 611 3 view .LVU4 46 .loc 1 611 13 is_stmt 0 view .LVU5 47 000c 0C69 ldr r4, [r1, #16] 48 000e 44F44074 orr r4, r4, #768 49 0012 0C61 str r4, [r1, #16] 612:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 50 .loc 1 612 3 is_stmt 1 view .LVU6 51 .loc 1 612 13 is_stmt 0 view .LVU7 52 0014 0C69 ldr r4, [r1, #16] 53 0016 44F00104 orr r4, r4, #1 54 001a 0C61 str r4, [r1, #16] 613:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 614:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program first word */ 615:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t *)Address = (uint32_t)Data; 55 .loc 1 615 3 is_stmt 1 view .LVU8 56 .loc 1 615 29 is_stmt 0 view .LVU9 57 001c 0260 str r2, [r0] 616:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 617:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order 618:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (independently of compiler optimization behavior) */ 619:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __ISB(); 58 .loc 1 619 3 is_stmt 1 view .LVU10 59 .LBB4: 60 .LBI4: 61 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.4.1 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 27. May 2021 ARM GAS /tmp/ccopxfLa.s page 13 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2021 Arm Limited. All rights reserved. 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 24:Drivers/CMSIS/Include/cmsis_gcc.h **** 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H 27:Drivers/CMSIS/Include/cmsis_gcc.h **** 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" 33:Drivers/CMSIS/Include/cmsis_gcc.h **** 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 38:Drivers/CMSIS/Include/cmsis_gcc.h **** 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) ARM GAS /tmp/ccopxfLa.s page 14 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 116:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __COMPILER_BARRIER 117:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __COMPILER_BARRIER() __ASM volatile("":::"memory") 118:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 119:Drivers/CMSIS/Include/cmsis_gcc.h **** ARM GAS /tmp/ccopxfLa.s page 15 120:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ######################### Startup and Lowlevel Init ######################## */ 121:Drivers/CMSIS/Include/cmsis_gcc.h **** 122:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PROGRAM_START 123:Drivers/CMSIS/Include/cmsis_gcc.h **** 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Initializes data and bss sections 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details This default implementations initialized all data and additional bss 127:Drivers/CMSIS/Include/cmsis_gcc.h **** sections relying on .copy.table and .zero.table specified properly 128:Drivers/CMSIS/Include/cmsis_gcc.h **** in the used linker script. 129:Drivers/CMSIS/Include/cmsis_gcc.h **** 130:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) 132:Drivers/CMSIS/Include/cmsis_gcc.h **** { 133:Drivers/CMSIS/Include/cmsis_gcc.h **** extern void _start(void) __NO_RETURN; 134:Drivers/CMSIS/Include/cmsis_gcc.h **** 135:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct { 136:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t const* src; 137:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest; 138:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen; 139:Drivers/CMSIS/Include/cmsis_gcc.h **** } __copy_table_t; 140:Drivers/CMSIS/Include/cmsis_gcc.h **** 141:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct { 142:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest; 143:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen; 144:Drivers/CMSIS/Include/cmsis_gcc.h **** } __zero_table_t; 145:Drivers/CMSIS/Include/cmsis_gcc.h **** 146:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __copy_table_t __copy_table_start__; 147:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __copy_table_t __copy_table_end__; 148:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __zero_table_t __zero_table_start__; 149:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __zero_table_t __zero_table_end__; 150:Drivers/CMSIS/Include/cmsis_gcc.h **** 151:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable 152:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; iwlen; ++i) { 153:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = pTable->src[i]; 154:Drivers/CMSIS/Include/cmsis_gcc.h **** } 155:Drivers/CMSIS/Include/cmsis_gcc.h **** } 156:Drivers/CMSIS/Include/cmsis_gcc.h **** 157:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable 158:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; iwlen; ++i) { 159:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = 0u; 160:Drivers/CMSIS/Include/cmsis_gcc.h **** } 161:Drivers/CMSIS/Include/cmsis_gcc.h **** } 162:Drivers/CMSIS/Include/cmsis_gcc.h **** 163:Drivers/CMSIS/Include/cmsis_gcc.h **** _start(); 164:Drivers/CMSIS/Include/cmsis_gcc.h **** } 165:Drivers/CMSIS/Include/cmsis_gcc.h **** 166:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PROGRAM_START __cmsis_start 167:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 168:Drivers/CMSIS/Include/cmsis_gcc.h **** 169:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INITIAL_SP 170:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INITIAL_SP __StackTop 171:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 172:Drivers/CMSIS/Include/cmsis_gcc.h **** 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STACK_LIMIT 174:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STACK_LIMIT __StackLimit 175:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 176:Drivers/CMSIS/Include/cmsis_gcc.h **** ARM GAS /tmp/ccopxfLa.s page 16 177:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __VECTOR_TABLE 178:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __VECTOR_TABLE __Vectors 179:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 180:Drivers/CMSIS/Include/cmsis_gcc.h **** 181:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __VECTOR_TABLE_ATTRIBUTE 182:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors"))) 183:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 184:Drivers/CMSIS/Include/cmsis_gcc.h **** 185:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 186:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STACK_SEAL 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STACK_SEAL __StackSeal 188:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 189:Drivers/CMSIS/Include/cmsis_gcc.h **** 190:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __TZ_STACK_SEAL_SIZE 191:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __TZ_STACK_SEAL_SIZE 8U 192:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 193:Drivers/CMSIS/Include/cmsis_gcc.h **** 194:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __TZ_STACK_SEAL_VALUE 195:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL 196:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 197:Drivers/CMSIS/Include/cmsis_gcc.h **** 198:Drivers/CMSIS/Include/cmsis_gcc.h **** 199:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { 200:Drivers/CMSIS/Include/cmsis_gcc.h **** *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; 201:Drivers/CMSIS/Include/cmsis_gcc.h **** } 202:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 203:Drivers/CMSIS/Include/cmsis_gcc.h **** 204:Drivers/CMSIS/Include/cmsis_gcc.h **** 205:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ 206:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface 207:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions 208:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ 209:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 210:Drivers/CMSIS/Include/cmsis_gcc.h **** 211:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. 212:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" 213:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ 214:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) 215:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) 216:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) 217:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) 218:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 219:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) 220:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) 221:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) 222:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 223:Drivers/CMSIS/Include/cmsis_gcc.h **** 224:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 225:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation 226:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. 227:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 228:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") 229:Drivers/CMSIS/Include/cmsis_gcc.h **** 230:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt 232:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o 233:Drivers/CMSIS/Include/cmsis_gcc.h **** */ ARM GAS /tmp/ccopxfLa.s page 17 234:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi":::"memory") 235:Drivers/CMSIS/Include/cmsis_gcc.h **** 236:Drivers/CMSIS/Include/cmsis_gcc.h **** 237:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 238:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event 239:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter 240:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. 241:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 242:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe":::"memory") 243:Drivers/CMSIS/Include/cmsis_gcc.h **** 244:Drivers/CMSIS/Include/cmsis_gcc.h **** 245:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 246:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event 247:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. 248:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 249:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") 250:Drivers/CMSIS/Include/cmsis_gcc.h **** 251:Drivers/CMSIS/Include/cmsis_gcc.h **** 252:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 253:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier 254:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, 255:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, 256:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. 257:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 258:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) 62 .loc 2 258 27 view .LVU11 63 .LBB5: 259:Drivers/CMSIS/Include/cmsis_gcc.h **** { 260:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); 64 .loc 2 260 3 view .LVU12 65 .syntax unified 66 @ 260 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 67 001e BFF36F8F isb 0xF 68 @ 0 "" 2 69 .thumb 70 .syntax unified 71 .LBE5: 72 .LBE4: 620:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 621:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program second word */ 622:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t *)(Address + 4) = (uint32_t)(Data >> 32); 73 .loc 1 622 3 view .LVU13 74 .loc 1 622 35 is_stmt 0 view .LVU14 75 0022 4360 str r3, [r0, #4] 623:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 76 .loc 1 623 1 view .LVU15 77 0024 5DF8044B ldr r4, [sp], #4 78 .LCFI1: 79 .cfi_restore 4 80 .cfi_def_cfa_offset 0 81 0028 7047 bx lr 82 .L4: 83 002a 00BF .align 2 84 .L3: 85 002c 003C0240 .word 1073888256 86 .cfi_endproc 87 .LFE146: ARM GAS /tmp/ccopxfLa.s page 18 89 .section .text.FLASH_Program_Word,"ax",%progbits 90 .align 1 91 .syntax unified 92 .thumb 93 .thumb_func 94 .fpu fpv4-sp-d16 96 FLASH_Program_Word: 97 .LVL1: 98 .LFB147: 624:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 625:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 626:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 627:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program word (32-bit) at a specified address. 628:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 629:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V. 630:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 631:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 632:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 633:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 634:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 635:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 636:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 637:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 638:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data) 639:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 99 .loc 1 639 1 is_stmt 1 view -0 100 .cfi_startproc 101 @ args = 0, pretend = 0, frame = 0 102 @ frame_needed = 0, uses_anonymous_args = 0 103 @ link register save eliminated. 640:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 641:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 104 .loc 1 641 3 view .LVU17 642:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 643:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 644:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 105 .loc 1 644 3 view .LVU18 106 0000 074B ldr r3, .L6 107 0002 1A69 ldr r2, [r3, #16] 108 0004 22F44072 bic r2, r2, #768 109 0008 1A61 str r2, [r3, #16] 645:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD; 110 .loc 1 645 3 view .LVU19 111 .loc 1 645 13 is_stmt 0 view .LVU20 112 000a 1A69 ldr r2, [r3, #16] 113 000c 42F40072 orr r2, r2, #512 114 0010 1A61 str r2, [r3, #16] 646:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 115 .loc 1 646 3 is_stmt 1 view .LVU21 116 .loc 1 646 13 is_stmt 0 view .LVU22 117 0012 1A69 ldr r2, [r3, #16] 118 0014 42F00102 orr r2, r2, #1 119 0018 1A61 str r2, [r3, #16] 647:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 648:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t *)Address = Data; 120 .loc 1 648 3 is_stmt 1 view .LVU23 121 .loc 1 648 29 is_stmt 0 view .LVU24 ARM GAS /tmp/ccopxfLa.s page 19 122 001a 0160 str r1, [r0] 649:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 123 .loc 1 649 1 view .LVU25 124 001c 7047 bx lr 125 .L7: 126 001e 00BF .align 2 127 .L6: 128 0020 003C0240 .word 1073888256 129 .cfi_endproc 130 .LFE147: 132 .section .text.FLASH_Program_HalfWord,"ax",%progbits 133 .align 1 134 .syntax unified 135 .thumb 136 .thumb_func 137 .fpu fpv4-sp-d16 139 FLASH_Program_HalfWord: 140 .LVL2: 141 .LFB148: 650:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 651:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 652:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address. 653:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 654:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.1V to 3.6V. 655:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 656:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 657:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 658:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 659:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 660:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 661:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 662:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 663:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) 664:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 142 .loc 1 664 1 is_stmt 1 view -0 143 .cfi_startproc 144 @ args = 0, pretend = 0, frame = 0 145 @ frame_needed = 0, uses_anonymous_args = 0 146 @ link register save eliminated. 665:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 666:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 147 .loc 1 666 3 view .LVU27 667:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 668:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 669:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 148 .loc 1 669 3 view .LVU28 149 0000 074B ldr r3, .L9 150 0002 1A69 ldr r2, [r3, #16] 151 0004 22F44072 bic r2, r2, #768 152 0008 1A61 str r2, [r3, #16] 670:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD; 153 .loc 1 670 3 view .LVU29 154 .loc 1 670 13 is_stmt 0 view .LVU30 155 000a 1A69 ldr r2, [r3, #16] 156 000c 42F48072 orr r2, r2, #256 157 0010 1A61 str r2, [r3, #16] 671:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; ARM GAS /tmp/ccopxfLa.s page 20 158 .loc 1 671 3 is_stmt 1 view .LVU31 159 .loc 1 671 13 is_stmt 0 view .LVU32 160 0012 1A69 ldr r2, [r3, #16] 161 0014 42F00102 orr r2, r2, #1 162 0018 1A61 str r2, [r3, #16] 672:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 673:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint16_t *)Address = Data; 163 .loc 1 673 3 is_stmt 1 view .LVU33 164 .loc 1 673 29 is_stmt 0 view .LVU34 165 001a 0180 strh r1, [r0] @ movhi 674:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 166 .loc 1 674 1 view .LVU35 167 001c 7047 bx lr 168 .L10: 169 001e 00BF .align 2 170 .L9: 171 0020 003C0240 .word 1073888256 172 .cfi_endproc 173 .LFE148: 175 .section .text.FLASH_Program_Byte,"ax",%progbits 176 .align 1 177 .syntax unified 178 .thumb 179 .thumb_func 180 .fpu fpv4-sp-d16 182 FLASH_Program_Byte: 183 .LVL3: 184 .LFB149: 675:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 676:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 677:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte (8-bit) at a specified address. 678:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 679:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 1.8V to 3.6V. 680:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 681:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 682:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 683:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 684:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 685:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 686:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 687:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 688:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) 689:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 185 .loc 1 689 1 is_stmt 1 view -0 186 .cfi_startproc 187 @ args = 0, pretend = 0, frame = 0 188 @ frame_needed = 0, uses_anonymous_args = 0 189 @ link register save eliminated. 690:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 691:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 190 .loc 1 691 3 view .LVU37 692:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 693:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 694:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 191 .loc 1 694 3 view .LVU38 192 0000 064B ldr r3, .L12 193 0002 1A69 ldr r2, [r3, #16] ARM GAS /tmp/ccopxfLa.s page 21 194 0004 22F44072 bic r2, r2, #768 195 0008 1A61 str r2, [r3, #16] 695:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE; 196 .loc 1 695 3 view .LVU39 197 .loc 1 695 13 is_stmt 0 view .LVU40 198 000a 1A69 ldr r2, [r3, #16] 199 000c 1A61 str r2, [r3, #16] 696:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 200 .loc 1 696 3 is_stmt 1 view .LVU41 201 .loc 1 696 13 is_stmt 0 view .LVU42 202 000e 1A69 ldr r2, [r3, #16] 203 0010 42F00102 orr r2, r2, #1 204 0014 1A61 str r2, [r3, #16] 697:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 698:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t *)Address = Data; 205 .loc 1 698 3 is_stmt 1 view .LVU43 206 .loc 1 698 28 is_stmt 0 view .LVU44 207 0016 0170 strb r1, [r0] 699:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 208 .loc 1 699 1 view .LVU45 209 0018 7047 bx lr 210 .L13: 211 001a 00BF .align 2 212 .L12: 213 001c 003C0240 .word 1073888256 214 .cfi_endproc 215 .LFE149: 217 .section .text.FLASH_SetErrorCode,"ax",%progbits 218 .align 1 219 .syntax unified 220 .thumb 221 .thumb_func 222 .fpu fpv4-sp-d16 224 FLASH_SetErrorCode: 225 .LFB150: 700:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 701:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 702:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Set the specific FLASH error flag. 703:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 704:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 705:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void) 706:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 226 .loc 1 706 1 is_stmt 1 view -0 227 .cfi_startproc 228 @ args = 0, pretend = 0, frame = 0 229 @ frame_needed = 0, uses_anonymous_args = 0 230 @ link register save eliminated. 707:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) 231 .loc 1 707 3 view .LVU47 232 .loc 1 707 7 is_stmt 0 view .LVU48 233 0000 274B ldr r3, .L21 234 0002 DB68 ldr r3, [r3, #12] 235 .loc 1 707 6 view .LVU49 236 0004 13F0100F tst r3, #16 237 0008 07D0 beq .L15 708:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 709:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; ARM GAS /tmp/ccopxfLa.s page 22 238 .loc 1 709 5 is_stmt 1 view .LVU50 239 .loc 1 709 22 is_stmt 0 view .LVU51 240 000a 264A ldr r2, .L21+4 241 000c D369 ldr r3, [r2, #28] 242 000e 43F01003 orr r3, r3, #16 243 0012 D361 str r3, [r2, #28] 710:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 711:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH write protection error pending bit */ 712:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR); 244 .loc 1 712 5 is_stmt 1 view .LVU52 245 0014 224B ldr r3, .L21 246 0016 1022 movs r2, #16 247 0018 DA60 str r2, [r3, #12] 248 .L15: 713:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 714:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 715:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) 249 .loc 1 715 3 view .LVU53 250 .loc 1 715 7 is_stmt 0 view .LVU54 251 001a 214B ldr r3, .L21 252 001c DB68 ldr r3, [r3, #12] 253 .loc 1 715 6 view .LVU55 254 001e 13F0200F tst r3, #32 255 0022 07D0 beq .L16 716:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 717:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 256 .loc 1 717 5 is_stmt 1 view .LVU56 257 .loc 1 717 22 is_stmt 0 view .LVU57 258 0024 1F4A ldr r2, .L21+4 259 0026 D369 ldr r3, [r2, #28] 260 0028 43F00803 orr r3, r3, #8 261 002c D361 str r3, [r2, #28] 718:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 719:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming alignment error pending bit */ 720:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGAERR); 262 .loc 1 720 5 is_stmt 1 view .LVU58 263 002e 1C4B ldr r3, .L21 264 0030 2022 movs r2, #32 265 0032 DA60 str r2, [r3, #12] 266 .L16: 721:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 722:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 723:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) 267 .loc 1 723 3 view .LVU59 268 .loc 1 723 7 is_stmt 0 view .LVU60 269 0034 1A4B ldr r3, .L21 270 0036 DB68 ldr r3, [r3, #12] 271 .loc 1 723 6 view .LVU61 272 0038 13F0400F tst r3, #64 273 003c 07D0 beq .L17 724:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 725:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; 274 .loc 1 725 5 is_stmt 1 view .LVU62 275 .loc 1 725 22 is_stmt 0 view .LVU63 276 003e 194A ldr r2, .L21+4 277 0040 D369 ldr r3, [r2, #28] 278 0042 43F00403 orr r3, r3, #4 ARM GAS /tmp/ccopxfLa.s page 23 279 0046 D361 str r3, [r2, #28] 726:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 727:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming parallelism error pending bit */ 728:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGPERR); 280 .loc 1 728 5 is_stmt 1 view .LVU64 281 0048 154B ldr r3, .L21 282 004a 4022 movs r2, #64 283 004c DA60 str r2, [r3, #12] 284 .L17: 729:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 730:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 731:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGSERR) != RESET) 285 .loc 1 731 3 view .LVU65 286 .loc 1 731 7 is_stmt 0 view .LVU66 287 004e 144B ldr r3, .L21 288 0050 DB68 ldr r3, [r3, #12] 289 .loc 1 731 6 view .LVU67 290 0052 13F0800F tst r3, #128 291 0056 07D0 beq .L18 732:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 733:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGS; 292 .loc 1 733 5 is_stmt 1 view .LVU68 293 .loc 1 733 22 is_stmt 0 view .LVU69 294 0058 124A ldr r2, .L21+4 295 005a D369 ldr r3, [r2, #28] 296 005c 43F00203 orr r3, r3, #2 297 0060 D361 str r3, [r2, #28] 734:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 735:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming sequence error pending bit */ 736:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR); 298 .loc 1 736 5 is_stmt 1 view .LVU70 299 0062 0F4B ldr r3, .L21 300 0064 8022 movs r2, #128 301 0066 DA60 str r2, [r3, #12] 302 .L18: 737:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 738:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 739:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) 303 .loc 1 739 3 view .LVU71 304 .loc 1 739 7 is_stmt 0 view .LVU72 305 0068 0D4B ldr r3, .L21 306 006a DB68 ldr r3, [r3, #12] 307 .loc 1 739 6 view .LVU73 308 006c 13F4807F tst r3, #256 309 0070 08D0 beq .L19 740:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 741:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 310 .loc 1 741 5 is_stmt 1 view .LVU74 311 .loc 1 741 22 is_stmt 0 view .LVU75 312 0072 0C4A ldr r2, .L21+4 313 0074 D369 ldr r3, [r2, #28] 314 0076 43F00103 orr r3, r3, #1 315 007a D361 str r3, [r2, #28] 742:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 743:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Proprietary readout protection error pending bit */ 744:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_RDERR); 316 .loc 1 744 5 is_stmt 1 view .LVU76 ARM GAS /tmp/ccopxfLa.s page 24 317 007c 084B ldr r3, .L21 318 007e 4FF48072 mov r2, #256 319 0082 DA60 str r2, [r3, #12] 320 .L19: 745:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 746:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 747:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) 321 .loc 1 747 3 view .LVU77 322 .loc 1 747 7 is_stmt 0 view .LVU78 323 0084 064B ldr r3, .L21 324 0086 DB68 ldr r3, [r3, #12] 325 .loc 1 747 6 view .LVU79 326 0088 13F0020F tst r3, #2 327 008c 07D0 beq .L14 748:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 749:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; 328 .loc 1 749 5 is_stmt 1 view .LVU80 329 .loc 1 749 22 is_stmt 0 view .LVU81 330 008e 054A ldr r2, .L21+4 331 0090 D369 ldr r3, [r2, #28] 332 0092 43F02003 orr r3, r3, #32 333 0096 D361 str r3, [r2, #28] 750:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 751:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Operation error pending bit */ 752:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPERR); 334 .loc 1 752 5 is_stmt 1 view .LVU82 335 0098 014B ldr r3, .L21 336 009a 0222 movs r2, #2 337 009c DA60 str r2, [r3, #12] 338 .L14: 753:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 754:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 339 .loc 1 754 1 is_stmt 0 view .LVU83 340 009e 7047 bx lr 341 .L22: 342 .align 2 343 .L21: 344 00a0 003C0240 .word 1073888256 345 00a4 00000000 .word .LANCHOR0 346 .cfi_endproc 347 .LFE150: 349 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 350 .align 1 351 .global HAL_FLASH_Program_IT 352 .syntax unified 353 .thumb 354 .thumb_func 355 .fpu fpv4-sp-d16 357 HAL_FLASH_Program_IT: 358 .LVL4: 359 .LFB135: 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 360 .loc 1 213 1 is_stmt 1 view -0 361 .cfi_startproc 362 @ args = 0, pretend = 0, frame = 0 363 @ frame_needed = 0, uses_anonymous_args = 0 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; ARM GAS /tmp/ccopxfLa.s page 25 364 .loc 1 213 1 is_stmt 0 view .LVU85 365 0000 70B5 push {r4, r5, r6, lr} 366 .LCFI2: 367 .cfi_def_cfa_offset 16 368 .cfi_offset 4, -16 369 .cfi_offset 5, -12 370 .cfi_offset 6, -8 371 .cfi_offset 14, -4 372 0002 0646 mov r6, r0 373 0004 0846 mov r0, r1 374 .LVL5: 214:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 375 .loc 1 214 3 is_stmt 1 view .LVU86 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 376 .loc 1 217 3 view .LVU87 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 377 .loc 1 220 3 view .LVU88 378 0006 114C ldr r4, .L32 379 0008 2569 ldr r5, [r4, #16] 380 000a 45F08075 orr r5, r5, #16777216 381 000e 2561 str r5, [r4, #16] 223:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 382 .loc 1 223 3 view .LVU89 383 0010 2569 ldr r5, [r4, #16] 384 0012 45F00075 orr r5, r5, #33554432 385 0016 2561 str r5, [r4, #16] 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 386 .loc 1 225 3 view .LVU90 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 387 .loc 1 225 27 is_stmt 0 view .LVU91 388 0018 0D49 ldr r1, .L32+4 389 .LVL6: 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 390 .loc 1 225 27 view .LVU92 391 001a 0324 movs r4, #3 392 001c 0C70 strb r4, [r1] 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 393 .loc 1 226 3 is_stmt 1 view .LVU93 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 394 .loc 1 226 18 is_stmt 0 view .LVU94 395 001e 4861 str r0, [r1, #20] 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 396 .loc 1 228 3 is_stmt 1 view .LVU95 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 397 .loc 1 228 6 is_stmt 0 view .LVU96 398 0020 3EB1 cbz r6, .L29 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 399 .loc 1 233 8 is_stmt 1 view .LVU97 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 400 .loc 1 233 11 is_stmt 0 view .LVU98 401 0022 012E cmp r6, #1 402 0024 09D0 beq .L30 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 403 .loc 1 238 8 is_stmt 1 view .LVU99 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 404 .loc 1 238 11 is_stmt 0 view .LVU100 405 0026 022E cmp r6, #2 ARM GAS /tmp/ccopxfLa.s page 26 406 0028 0BD0 beq .L31 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 407 .loc 1 246 5 is_stmt 1 view .LVU101 408 002a FFF7FEFF bl FLASH_Program_DoubleWord 409 .LVL7: 410 .L25: 249:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 411 .loc 1 249 3 view .LVU102 250:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 412 .loc 1 250 1 is_stmt 0 view .LVU103 413 002e 0020 movs r0, #0 414 0030 70BD pop {r4, r5, r6, pc} 415 .LVL8: 416 .L29: 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 417 .loc 1 231 5 is_stmt 1 view .LVU104 418 0032 D1B2 uxtb r1, r2 419 0034 FFF7FEFF bl FLASH_Program_Byte 420 .LVL9: 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 421 .loc 1 231 5 is_stmt 0 view .LVU105 422 0038 F9E7 b .L25 423 .LVL10: 424 .L30: 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 425 .loc 1 236 5 is_stmt 1 view .LVU106 426 003a 91B2 uxth r1, r2 427 003c FFF7FEFF bl FLASH_Program_HalfWord 428 .LVL11: 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 429 .loc 1 236 5 is_stmt 0 view .LVU107 430 0040 F5E7 b .L25 431 .LVL12: 432 .L31: 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 433 .loc 1 241 5 is_stmt 1 view .LVU108 434 0042 1146 mov r1, r2 435 0044 FFF7FEFF bl FLASH_Program_Word 436 .LVL13: 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 437 .loc 1 241 5 is_stmt 0 view .LVU109 438 0048 F1E7 b .L25 439 .L33: 440 004a 00BF .align 2 441 .L32: 442 004c 003C0240 .word 1073888256 443 0050 00000000 .word .LANCHOR0 444 .cfi_endproc 445 .LFE135: 447 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 448 .align 1 449 .weak HAL_FLASH_EndOfOperationCallback 450 .syntax unified 451 .thumb 452 .thumb_func 453 .fpu fpv4-sp-d16 455 HAL_FLASH_EndOfOperationCallback: ARM GAS /tmp/ccopxfLa.s page 27 456 .LVL14: 457 .LFB137: 377:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 458 .loc 1 377 1 is_stmt 1 view -0 459 .cfi_startproc 460 @ args = 0, pretend = 0, frame = 0 461 @ frame_needed = 0, uses_anonymous_args = 0 462 @ link register save eliminated. 379:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 463 .loc 1 379 3 view .LVU111 383:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 464 .loc 1 383 1 is_stmt 0 view .LVU112 465 0000 7047 bx lr 466 .cfi_endproc 467 .LFE137: 469 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 470 .align 1 471 .weak HAL_FLASH_OperationErrorCallback 472 .syntax unified 473 .thumb 474 .thumb_func 475 .fpu fpv4-sp-d16 477 HAL_FLASH_OperationErrorCallback: 478 .LVL15: 479 .LFB138: 394:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 480 .loc 1 394 1 is_stmt 1 view -0 481 .cfi_startproc 482 @ args = 0, pretend = 0, frame = 0 483 @ frame_needed = 0, uses_anonymous_args = 0 484 @ link register save eliminated. 396:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 485 .loc 1 396 3 view .LVU114 400:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 486 .loc 1 400 1 is_stmt 0 view .LVU115 487 0000 7047 bx lr 488 .cfi_endproc 489 .LFE138: 491 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 492 .align 1 493 .global HAL_FLASH_IRQHandler 494 .syntax unified 495 .thumb 496 .thumb_func 497 .fpu fpv4-sp-d16 499 HAL_FLASH_IRQHandler: 500 .LFB136: 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 501 .loc 1 257 1 is_stmt 1 view -0 502 .cfi_startproc 503 @ args = 0, pretend = 0, frame = 0 504 @ frame_needed = 0, uses_anonymous_args = 0 505 0000 10B5 push {r4, lr} 506 .LCFI3: 507 .cfi_def_cfa_offset 8 508 .cfi_offset 4, -8 509 .cfi_offset 14, -4 ARM GAS /tmp/ccopxfLa.s page 28 258:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 510 .loc 1 258 3 view .LVU117 511 .LVL16: 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 512 .loc 1 262 3 view .LVU118 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 513 .loc 1 262 7 is_stmt 0 view .LVU119 514 0002 384B ldr r3, .L52 515 0004 DB68 ldr r3, [r3, #12] 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 516 .loc 1 262 6 view .LVU120 517 0006 13F4F97F tst r3, #498 518 000a 13D0 beq .L37 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 519 .loc 1 269 5 is_stmt 1 view .LVU121 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 520 .loc 1 269 15 is_stmt 0 view .LVU122 521 000c 364B ldr r3, .L52+4 522 000e 1B78 ldrb r3, [r3] @ zero_extendqisi2 523 0010 DBB2 uxtb r3, r3 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 524 .loc 1 269 8 view .LVU123 525 0012 012B cmp r3, #1 526 0014 38D0 beq .L48 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 527 .loc 1 275 10 is_stmt 1 view .LVU124 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 528 .loc 1 275 20 is_stmt 0 view .LVU125 529 0016 344B ldr r3, .L52+4 530 0018 1B78 ldrb r3, [r3] @ zero_extendqisi2 531 001a DBB2 uxtb r3, r3 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 532 .loc 1 275 13 view .LVU126 533 001c 022B cmp r3, #2 534 001e 39D0 beq .L49 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 535 .loc 1 283 7 is_stmt 1 view .LVU127 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 536 .loc 1 283 18 is_stmt 0 view .LVU128 537 0020 314B ldr r3, .L52+4 538 0022 5C69 ldr r4, [r3, #20] 539 .LVL17: 540 .L39: 287:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 541 .loc 1 287 5 is_stmt 1 view .LVU129 542 0024 FFF7FEFF bl FLASH_SetErrorCode 543 .LVL18: 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 544 .loc 1 290 5 view .LVU130 545 0028 2046 mov r0, r4 546 002a FFF7FEFF bl HAL_FLASH_OperationErrorCallback 547 .LVL19: 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 548 .loc 1 293 5 view .LVU131 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 549 .loc 1 293 29 is_stmt 0 view .LVU132 550 002e 2E4B ldr r3, .L52+4 ARM GAS /tmp/ccopxfLa.s page 29 551 0030 0022 movs r2, #0 552 0032 1A70 strb r2, [r3] 553 .LVL20: 554 .L37: 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 555 .loc 1 297 3 is_stmt 1 view .LVU133 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 556 .loc 1 297 7 is_stmt 0 view .LVU134 557 0034 2B4B ldr r3, .L52 558 0036 DB68 ldr r3, [r3, #12] 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 559 .loc 1 297 6 view .LVU135 560 0038 13F0010F tst r3, #1 561 003c 13D0 beq .L41 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 562 .loc 1 300 5 is_stmt 1 view .LVU136 563 003e 294B ldr r3, .L52 564 0040 0122 movs r2, #1 565 0042 DA60 str r2, [r3, #12] 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 566 .loc 1 302 5 view .LVU137 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 567 .loc 1 302 15 is_stmt 0 view .LVU138 568 0044 284B ldr r3, .L52+4 569 0046 1B78 ldrb r3, [r3] @ zero_extendqisi2 570 0048 DBB2 uxtb r3, r3 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 571 .loc 1 302 8 view .LVU139 572 004a 9342 cmp r3, r2 573 004c 25D0 beq .L50 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 574 .loc 1 335 7 is_stmt 1 view .LVU140 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 575 .loc 1 335 17 is_stmt 0 view .LVU141 576 004e 264B ldr r3, .L52+4 577 0050 1B78 ldrb r3, [r3] @ zero_extendqisi2 578 0052 DBB2 uxtb r3, r3 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 579 .loc 1 335 10 view .LVU142 580 0054 022B cmp r3, #2 581 0056 3ED0 beq .L51 348:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 582 .loc 1 348 9 is_stmt 1 view .LVU143 583 0058 234B ldr r3, .L52+4 584 005a 5869 ldr r0, [r3, #20] 585 005c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 586 .LVL21: 587 .L45: 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 588 .loc 1 350 7 view .LVU144 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 589 .loc 1 350 31 is_stmt 0 view .LVU145 590 0060 214B ldr r3, .L52+4 591 0062 0022 movs r2, #0 592 0064 1A70 strb r2, [r3] 593 .L41: 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { ARM GAS /tmp/ccopxfLa.s page 30 594 .loc 1 354 3 is_stmt 1 view .LVU146 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 595 .loc 1 354 13 is_stmt 0 view .LVU147 596 0066 204B ldr r3, .L52+4 597 0068 1B78 ldrb r3, [r3] @ zero_extendqisi2 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 598 .loc 1 354 6 view .LVU148 599 006a 63B9 cbnz r3, .L36 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 600 .loc 1 357 5 is_stmt 1 view .LVU149 601 006c 1D4B ldr r3, .L52 602 006e 1A69 ldr r2, [r3, #16] 603 0070 22F0FF02 bic r2, r2, #255 604 0074 1A61 str r2, [r3, #16] 360:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 605 .loc 1 360 5 view .LVU150 606 0076 1A69 ldr r2, [r3, #16] 607 0078 22F08072 bic r2, r2, #16777216 608 007c 1A61 str r2, [r3, #16] 363:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 609 .loc 1 363 5 view .LVU151 610 007e 1A69 ldr r2, [r3, #16] 611 0080 22F00072 bic r2, r2, #33554432 612 0084 1A61 str r2, [r3, #16] 613 .L36: 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 614 .loc 1 365 1 is_stmt 0 view .LVU152 615 0086 10BD pop {r4, pc} 616 .LVL22: 617 .L48: 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 618 .loc 1 272 7 is_stmt 1 view .LVU153 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 619 .loc 1 272 18 is_stmt 0 view .LVU154 620 0088 174B ldr r3, .L52+4 621 008a DC68 ldr r4, [r3, #12] 622 .LVL23: 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 623 .loc 1 273 7 is_stmt 1 view .LVU155 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 624 .loc 1 273 21 is_stmt 0 view .LVU156 625 008c 4FF0FF32 mov r2, #-1 626 0090 DA60 str r2, [r3, #12] 627 0092 C7E7 b .L39 628 .LVL24: 629 .L49: 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 630 .loc 1 278 7 is_stmt 1 view .LVU157 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 631 .loc 1 278 18 is_stmt 0 view .LVU158 632 0094 144B ldr r3, .L52+4 633 0096 1C69 ldr r4, [r3, #16] 634 .LVL25: 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 635 .loc 1 278 18 view .LVU159 636 0098 C4E7 b .L39 637 .LVL26: ARM GAS /tmp/ccopxfLa.s page 31 638 .L50: 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 639 .loc 1 305 7 is_stmt 1 view .LVU160 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 640 .loc 1 305 13 is_stmt 0 view .LVU161 641 009a 134B ldr r3, .L52+4 642 009c 5A68 ldr r2, [r3, #4] 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 643 .loc 1 305 30 view .LVU162 644 009e 013A subs r2, r2, #1 645 00a0 5A60 str r2, [r3, #4] 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 646 .loc 1 308 7 is_stmt 1 view .LVU163 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 647 .loc 1 308 17 is_stmt 0 view .LVU164 648 00a2 5B68 ldr r3, [r3, #4] 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 649 .loc 1 308 10 view .LVU165 650 00a4 5BB1 cbz r3, .L43 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 651 .loc 1 310 9 is_stmt 1 view .LVU166 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 652 .loc 1 310 20 is_stmt 0 view .LVU167 653 00a6 104C ldr r4, .L52+4 654 00a8 E068 ldr r0, [r4, #12] 655 .LVL27: 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 656 .loc 1 312 9 is_stmt 1 view .LVU168 657 00aa FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 658 .LVL28: 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 659 .loc 1 315 9 view .LVU169 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 660 .loc 1 315 15 is_stmt 0 view .LVU170 661 00ae E368 ldr r3, [r4, #12] 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 662 .loc 1 315 22 view .LVU171 663 00b0 0133 adds r3, r3, #1 664 00b2 E360 str r3, [r4, #12] 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 665 .loc 1 316 9 is_stmt 1 view .LVU172 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 666 .loc 1 316 20 is_stmt 0 view .LVU173 667 00b4 E068 ldr r0, [r4, #12] 668 .LVL29: 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 669 .loc 1 317 9 is_stmt 1 view .LVU174 670 00b6 217A ldrb r1, [r4, #8] @ zero_extendqisi2 671 00b8 FFF7FEFF bl FLASH_Erase_Sector 672 .LVL30: 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 673 .loc 1 317 9 is_stmt 0 view .LVU175 674 00bc D3E7 b .L41 675 .L43: 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 676 .loc 1 323 9 is_stmt 1 view .LVU176 677 .LVL31: ARM GAS /tmp/ccopxfLa.s page 32 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 678 .loc 1 323 23 is_stmt 0 view .LVU177 679 00be 0A4B ldr r3, .L52+4 680 00c0 4FF0FF34 mov r4, #-1 681 00c4 DC60 str r4, [r3, #12] 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 682 .loc 1 324 9 is_stmt 1 view .LVU178 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 683 .loc 1 324 33 is_stmt 0 view .LVU179 684 00c6 0022 movs r2, #0 685 00c8 1A70 strb r2, [r3] 327:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 686 .loc 1 327 9 is_stmt 1 view .LVU180 687 00ca FFF7FEFF bl FLASH_FlushCaches 688 .LVL32: 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 689 .loc 1 330 9 view .LVU181 690 00ce 2046 mov r0, r4 691 00d0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 692 .LVL33: 693 00d4 C7E7 b .L41 694 .LVL34: 695 .L51: 339:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 696 .loc 1 339 9 view .LVU182 697 00d6 FFF7FEFF bl FLASH_FlushCaches 698 .LVL35: 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 699 .loc 1 342 9 view .LVU183 700 00da 034B ldr r3, .L52+4 701 00dc 1869 ldr r0, [r3, #16] 702 00de FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 703 .LVL36: 704 00e2 BDE7 b .L45 705 .L53: 706 .align 2 707 .L52: 708 00e4 003C0240 .word 1073888256 709 00e8 00000000 .word .LANCHOR0 710 .cfi_endproc 711 .LFE136: 713 .section .text.HAL_FLASH_Unlock,"ax",%progbits 714 .align 1 715 .global HAL_FLASH_Unlock 716 .syntax unified 717 .thumb 718 .thumb_func 719 .fpu fpv4-sp-d16 721 HAL_FLASH_Unlock: 722 .LFB139: 426:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 723 .loc 1 426 1 view -0 724 .cfi_startproc 725 @ args = 0, pretend = 0, frame = 0 726 @ frame_needed = 0, uses_anonymous_args = 0 727 @ link register save eliminated. 427:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccopxfLa.s page 33 728 .loc 1 427 3 view .LVU185 729 .LVL37: 429:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 730 .loc 1 429 3 view .LVU186 429:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 731 .loc 1 429 7 is_stmt 0 view .LVU187 732 0000 094B ldr r3, .L59 733 0002 1B69 ldr r3, [r3, #16] 429:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 734 .loc 1 429 6 view .LVU188 735 0004 002B cmp r3, #0 736 0006 01DB blt .L58 427:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 737 .loc 1 427 21 view .LVU189 738 0008 0020 movs r0, #0 739 000a 7047 bx lr 740 .L58: 432:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 741 .loc 1 432 5 is_stmt 1 view .LVU190 742 000c 064B ldr r3, .L59 743 000e 074A ldr r2, .L59+4 744 0010 5A60 str r2, [r3, #4] 433:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 745 .loc 1 433 5 view .LVU191 746 0012 02F18832 add r2, r2, #-2004318072 747 0016 5A60 str r2, [r3, #4] 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 748 .loc 1 436 5 view .LVU192 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 749 .loc 1 436 9 is_stmt 0 view .LVU193 750 0018 1B69 ldr r3, [r3, #16] 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 751 .loc 1 436 8 view .LVU194 752 001a 002B cmp r3, #0 753 001c 01DB blt .L57 427:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 754 .loc 1 427 21 view .LVU195 755 001e 0020 movs r0, #0 756 0020 7047 bx lr 757 .L57: 438:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 758 .loc 1 438 14 view .LVU196 759 0022 0120 movs r0, #1 760 .LVL38: 442:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 761 .loc 1 442 3 is_stmt 1 view .LVU197 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 762 .loc 1 443 1 is_stmt 0 view .LVU198 763 0024 7047 bx lr 764 .L60: 765 0026 00BF .align 2 766 .L59: 767 0028 003C0240 .word 1073888256 768 002c 23016745 .word 1164378403 769 .cfi_endproc 770 .LFE139: 772 .section .text.HAL_FLASH_Lock,"ax",%progbits ARM GAS /tmp/ccopxfLa.s page 34 773 .align 1 774 .global HAL_FLASH_Lock 775 .syntax unified 776 .thumb 777 .thumb_func 778 .fpu fpv4-sp-d16 780 HAL_FLASH_Lock: 781 .LFB140: 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 782 .loc 1 450 1 is_stmt 1 view -0 783 .cfi_startproc 784 @ args = 0, pretend = 0, frame = 0 785 @ frame_needed = 0, uses_anonymous_args = 0 786 @ link register save eliminated. 452:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 787 .loc 1 452 3 view .LVU200 452:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 788 .loc 1 452 13 is_stmt 0 view .LVU201 789 0000 034A ldr r2, .L62 790 0002 1369 ldr r3, [r2, #16] 791 0004 43F00043 orr r3, r3, #-2147483648 792 0008 1361 str r3, [r2, #16] 454:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 793 .loc 1 454 3 is_stmt 1 view .LVU202 455:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 794 .loc 1 455 1 is_stmt 0 view .LVU203 795 000a 0020 movs r0, #0 796 000c 7047 bx lr 797 .L63: 798 000e 00BF .align 2 799 .L62: 800 0010 003C0240 .word 1073888256 801 .cfi_endproc 802 .LFE140: 804 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 805 .align 1 806 .global HAL_FLASH_OB_Unlock 807 .syntax unified 808 .thumb 809 .thumb_func 810 .fpu fpv4-sp-d16 812 HAL_FLASH_OB_Unlock: 813 .LFB141: 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if ((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 814 .loc 1 462 1 is_stmt 1 view -0 815 .cfi_startproc 816 @ args = 0, pretend = 0, frame = 0 817 @ frame_needed = 0, uses_anonymous_args = 0 818 @ link register save eliminated. 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 819 .loc 1 463 3 view .LVU205 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 820 .loc 1 463 13 is_stmt 0 view .LVU206 821 0000 074B ldr r3, .L67 822 0002 5B69 ldr r3, [r3, #20] 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 823 .loc 1 463 6 view .LVU207 ARM GAS /tmp/ccopxfLa.s page 35 824 0004 13F0010F tst r3, #1 825 0008 07D0 beq .L66 466:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 826 .loc 1 466 5 is_stmt 1 view .LVU208 466:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 827 .loc 1 466 20 is_stmt 0 view .LVU209 828 000a 054B ldr r3, .L67 829 000c 054A ldr r2, .L67+4 830 000e 9A60 str r2, [r3, #8] 467:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 831 .loc 1 467 5 is_stmt 1 view .LVU210 467:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 832 .loc 1 467 20 is_stmt 0 view .LVU211 833 0010 02F14432 add r2, r2, #1145324612 834 0014 9A60 str r2, [r3, #8] 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 835 .loc 1 474 3 is_stmt 1 view .LVU212 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 836 .loc 1 474 10 is_stmt 0 view .LVU213 837 0016 0020 movs r0, #0 838 0018 7047 bx lr 839 .L66: 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 840 .loc 1 471 12 view .LVU214 841 001a 0120 movs r0, #1 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 842 .loc 1 475 1 view .LVU215 843 001c 7047 bx lr 844 .L68: 845 001e 00BF .align 2 846 .L67: 847 0020 003C0240 .word 1073888256 848 0024 3B2A1908 .word 135866939 849 .cfi_endproc 850 .LFE141: 852 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 853 .align 1 854 .global HAL_FLASH_OB_Lock 855 .syntax unified 856 .thumb 857 .thumb_func 858 .fpu fpv4-sp-d16 860 HAL_FLASH_OB_Lock: 861 .LFB142: 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 862 .loc 1 482 1 is_stmt 1 view -0 863 .cfi_startproc 864 @ args = 0, pretend = 0, frame = 0 865 @ frame_needed = 0, uses_anonymous_args = 0 866 @ link register save eliminated. 484:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 867 .loc 1 484 3 view .LVU217 484:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 868 .loc 1 484 16 is_stmt 0 view .LVU218 869 0000 034A ldr r2, .L70 870 0002 5369 ldr r3, [r2, #20] 871 0004 43F00103 orr r3, r3, #1 ARM GAS /tmp/ccopxfLa.s page 36 872 0008 5361 str r3, [r2, #20] 486:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 873 .loc 1 486 3 is_stmt 1 view .LVU219 487:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 874 .loc 1 487 1 is_stmt 0 view .LVU220 875 000a 0020 movs r0, #0 876 000c 7047 bx lr 877 .L71: 878 000e 00BF .align 2 879 .L70: 880 0010 003C0240 .word 1073888256 881 .cfi_endproc 882 .LFE142: 884 .section .text.HAL_FLASH_GetError,"ax",%progbits 885 .align 1 886 .global HAL_FLASH_GetError 887 .syntax unified 888 .thumb 889 .thumb_func 890 .fpu fpv4-sp-d16 892 HAL_FLASH_GetError: 893 .LFB144: 531:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 894 .loc 1 531 1 is_stmt 1 view -0 895 .cfi_startproc 896 @ args = 0, pretend = 0, frame = 0 897 @ frame_needed = 0, uses_anonymous_args = 0 898 @ link register save eliminated. 532:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 899 .loc 1 532 3 view .LVU222 532:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 900 .loc 1 532 16 is_stmt 0 view .LVU223 901 0000 014B ldr r3, .L73 902 0002 D869 ldr r0, [r3, #28] 533:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 903 .loc 1 533 1 view .LVU224 904 0004 7047 bx lr 905 .L74: 906 0006 00BF .align 2 907 .L73: 908 0008 00000000 .word .LANCHOR0 909 .cfi_endproc 910 .LFE144: 912 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 913 .align 1 914 .global FLASH_WaitForLastOperation 915 .syntax unified 916 .thumb 917 .thumb_func 918 .fpu fpv4-sp-d16 920 FLASH_WaitForLastOperation: 921 .LVL39: 922 .LFB145: 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 923 .loc 1 545 1 is_stmt 1 view -0 924 .cfi_startproc 925 @ args = 0, pretend = 0, frame = 0 ARM GAS /tmp/ccopxfLa.s page 37 926 @ frame_needed = 0, uses_anonymous_args = 0 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 927 .loc 1 545 1 is_stmt 0 view .LVU226 928 0000 38B5 push {r3, r4, r5, lr} 929 .LCFI4: 930 .cfi_def_cfa_offset 16 931 .cfi_offset 3, -16 932 .cfi_offset 4, -12 933 .cfi_offset 5, -8 934 .cfi_offset 14, -4 935 0002 0446 mov r4, r0 546:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 936 .loc 1 546 3 is_stmt 1 view .LVU227 937 .LVL40: 549:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 938 .loc 1 549 3 view .LVU228 549:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 939 .loc 1 549 20 is_stmt 0 view .LVU229 940 0004 144B ldr r3, .L86 941 0006 0022 movs r2, #0 942 0008 DA61 str r2, [r3, #28] 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 943 .loc 1 555 3 is_stmt 1 view .LVU230 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 944 .loc 1 555 15 is_stmt 0 view .LVU231 945 000a FFF7FEFF bl HAL_GetTick 946 .LVL41: 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 947 .loc 1 555 15 view .LVU232 948 000e 0546 mov r5, r0 949 .LVL42: 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 950 .loc 1 557 3 is_stmt 1 view .LVU233 951 .L77: 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 952 .loc 1 557 9 view .LVU234 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 953 .loc 1 557 10 is_stmt 0 view .LVU235 954 0010 124B ldr r3, .L86+4 955 0012 DB68 ldr r3, [r3, #12] 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 956 .loc 1 557 9 view .LVU236 957 0014 13F4803F tst r3, #65536 958 0018 0AD0 beq .L84 559:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 959 .loc 1 559 5 is_stmt 1 view .LVU237 559:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 960 .loc 1 559 8 is_stmt 0 view .LVU238 961 001a B4F1FF3F cmp r4, #-1 962 001e F7D0 beq .L77 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 963 .loc 1 561 7 is_stmt 1 view .LVU239 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 964 .loc 1 561 10 is_stmt 0 view .LVU240 965 0020 24B1 cbz r4, .L78 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 966 .loc 1 561 32 discriminator 1 view .LVU241 ARM GAS /tmp/ccopxfLa.s page 38 967 0022 FFF7FEFF bl HAL_GetTick 968 .LVL43: 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 969 .loc 1 561 46 discriminator 1 view .LVU242 970 0026 401B subs r0, r0, r5 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 971 .loc 1 561 27 discriminator 1 view .LVU243 972 0028 A042 cmp r0, r4 973 002a F1D9 bls .L77 974 .L78: 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 975 .loc 1 563 9 is_stmt 1 view .LVU244 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 976 .loc 1 563 16 is_stmt 0 view .LVU245 977 002c 0320 movs r0, #3 978 002e 0DE0 b .L79 979 .L84: 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 980 .loc 1 569 3 is_stmt 1 view .LVU246 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 981 .loc 1 569 7 is_stmt 0 view .LVU247 982 0030 0A4B ldr r3, .L86+4 983 0032 DB68 ldr r3, [r3, #12] 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 984 .loc 1 569 6 view .LVU248 985 0034 13F0010F tst r3, #1 986 0038 02D0 beq .L81 572:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 987 .loc 1 572 5 is_stmt 1 view .LVU249 988 003a 084B ldr r3, .L86+4 989 003c 0122 movs r2, #1 990 003e DA60 str r2, [r3, #12] 991 .L81: 575:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 992 .loc 1 575 3 view .LVU250 575:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 993 .loc 1 575 7 is_stmt 0 view .LVU251 994 0040 064B ldr r3, .L86+4 995 0042 DB68 ldr r3, [r3, #12] 575:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 996 .loc 1 575 6 view .LVU252 997 0044 13F4F97F tst r3, #498 998 0048 01D1 bne .L85 588:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 999 .loc 1 588 10 view .LVU253 1000 004a 0020 movs r0, #0 1001 .L79: 590:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1002 .loc 1 590 1 view .LVU254 1003 004c 38BD pop {r3, r4, r5, pc} 1004 .LVL44: 1005 .L85: 583:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 1006 .loc 1 583 5 is_stmt 1 view .LVU255 1007 004e FFF7FEFF bl FLASH_SetErrorCode 1008 .LVL45: 584:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccopxfLa.s page 39 1009 .loc 1 584 5 view .LVU256 584:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1010 .loc 1 584 12 is_stmt 0 view .LVU257 1011 0052 0120 movs r0, #1 1012 0054 FAE7 b .L79 1013 .L87: 1014 0056 00BF .align 2 1015 .L86: 1016 0058 00000000 .word .LANCHOR0 1017 005c 003C0240 .word 1073888256 1018 .cfi_endproc 1019 .LFE145: 1021 .section .text.HAL_FLASH_Program,"ax",%progbits 1022 .align 1 1023 .global HAL_FLASH_Program 1024 .syntax unified 1025 .thumb 1026 .thumb_func 1027 .fpu fpv4-sp-d16 1029 HAL_FLASH_Program: 1030 .LVL46: 1031 .LFB134: 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status; 1032 .loc 1 155 1 is_stmt 1 view -0 1033 .cfi_startproc 1034 @ args = 0, pretend = 0, frame = 0 1035 @ frame_needed = 0, uses_anonymous_args = 0 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status; 1036 .loc 1 155 1 is_stmt 0 view .LVU259 1037 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 1038 .LCFI5: 1039 .cfi_def_cfa_offset 24 1040 .cfi_offset 3, -24 1041 .cfi_offset 4, -20 1042 .cfi_offset 5, -16 1043 .cfi_offset 6, -12 1044 .cfi_offset 7, -8 1045 .cfi_offset 14, -4 1046 0002 1646 mov r6, r2 156:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1047 .loc 1 156 3 is_stmt 1 view .LVU260 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1048 .loc 1 159 3 view .LVU261 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1049 .loc 1 159 3 view .LVU262 1050 0004 1B4A ldr r2, .L100 1051 .LVL47: 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1052 .loc 1 159 3 is_stmt 0 view .LVU263 1053 0006 127E ldrb r2, [r2, #24] @ zero_extendqisi2 1054 0008 012A cmp r2, #1 1055 000a 30D0 beq .L95 1056 000c 0446 mov r4, r0 1057 000e 0D46 mov r5, r1 1058 0010 1F46 mov r7, r3 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1059 .loc 1 159 3 is_stmt 1 discriminator 2 view .LVU264 ARM GAS /tmp/ccopxfLa.s page 40 1060 0012 184B ldr r3, .L100 1061 0014 0122 movs r2, #1 1062 0016 1A76 strb r2, [r3, #24] 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1063 .loc 1 159 3 discriminator 2 view .LVU265 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1064 .loc 1 162 3 discriminator 2 view .LVU266 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1065 .loc 1 165 3 discriminator 2 view .LVU267 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1066 .loc 1 165 12 is_stmt 0 discriminator 2 view .LVU268 1067 0018 4CF25030 movw r0, #50000 1068 .LVL48: 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1069 .loc 1 165 12 discriminator 2 view .LVU269 1070 001c FFF7FEFF bl FLASH_WaitForLastOperation 1071 .LVL49: 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1072 .loc 1 167 3 is_stmt 1 discriminator 2 view .LVU270 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1073 .loc 1 167 6 is_stmt 0 discriminator 2 view .LVU271 1074 0020 90B9 cbnz r0, .L90 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1075 .loc 1 169 5 is_stmt 1 view .LVU272 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1076 .loc 1 169 8 is_stmt 0 view .LVU273 1077 0022 ACB1 cbz r4, .L97 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1078 .loc 1 174 10 is_stmt 1 view .LVU274 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1079 .loc 1 174 13 is_stmt 0 view .LVU275 1080 0024 012C cmp r4, #1 1081 0026 18D0 beq .L98 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1082 .loc 1 179 10 is_stmt 1 view .LVU276 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1083 .loc 1 179 13 is_stmt 0 view .LVU277 1084 0028 022C cmp r4, #2 1085 002a 1BD0 beq .L99 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1086 .loc 1 187 7 is_stmt 1 view .LVU278 1087 002c 3246 mov r2, r6 1088 002e 3B46 mov r3, r7 1089 0030 2846 mov r0, r5 1090 .LVL50: 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1091 .loc 1 187 7 is_stmt 0 view .LVU279 1092 0032 FFF7FEFF bl FLASH_Program_DoubleWord 1093 .LVL51: 1094 .L92: 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1095 .loc 1 191 5 is_stmt 1 view .LVU280 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1096 .loc 1 191 14 is_stmt 0 view .LVU281 1097 0036 4CF25030 movw r0, #50000 1098 003a FFF7FEFF bl FLASH_WaitForLastOperation 1099 .LVL52: ARM GAS /tmp/ccopxfLa.s page 41 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1100 .loc 1 194 5 is_stmt 1 view .LVU282 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1101 .loc 1 194 15 is_stmt 0 view .LVU283 1102 003e 0E4A ldr r2, .L100+4 1103 0040 1369 ldr r3, [r2, #16] 1104 0042 23F00103 bic r3, r3, #1 1105 0046 1361 str r3, [r2, #16] 1106 .L90: 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1107 .loc 1 198 3 is_stmt 1 view .LVU284 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1108 .loc 1 198 3 view .LVU285 1109 0048 0A4B ldr r3, .L100 1110 004a 0022 movs r2, #0 1111 004c 1A76 strb r2, [r3, #24] 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1112 .loc 1 198 3 view .LVU286 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1113 .loc 1 200 3 view .LVU287 1114 .LVL53: 1115 .L89: 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1116 .loc 1 201 1 is_stmt 0 view .LVU288 1117 004e F8BD pop {r3, r4, r5, r6, r7, pc} 1118 .LVL54: 1119 .L97: 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1120 .loc 1 172 7 is_stmt 1 view .LVU289 1121 0050 F1B2 uxtb r1, r6 1122 0052 2846 mov r0, r5 1123 .LVL55: 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1124 .loc 1 172 7 is_stmt 0 view .LVU290 1125 0054 FFF7FEFF bl FLASH_Program_Byte 1126 .LVL56: 1127 0058 EDE7 b .L92 1128 .LVL57: 1129 .L98: 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1130 .loc 1 177 7 is_stmt 1 view .LVU291 1131 005a B1B2 uxth r1, r6 1132 005c 2846 mov r0, r5 1133 .LVL58: 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1134 .loc 1 177 7 is_stmt 0 view .LVU292 1135 005e FFF7FEFF bl FLASH_Program_HalfWord 1136 .LVL59: 1137 0062 E8E7 b .L92 1138 .LVL60: 1139 .L99: 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1140 .loc 1 182 7 is_stmt 1 view .LVU293 1141 0064 3146 mov r1, r6 1142 0066 2846 mov r0, r5 1143 .LVL61: 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccopxfLa.s page 42 1144 .loc 1 182 7 is_stmt 0 view .LVU294 1145 0068 FFF7FEFF bl FLASH_Program_Word 1146 .LVL62: 1147 006c E3E7 b .L92 1148 .LVL63: 1149 .L95: 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1150 .loc 1 159 3 view .LVU295 1151 006e 0220 movs r0, #2 1152 .LVL64: 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1153 .loc 1 159 3 view .LVU296 1154 0070 EDE7 b .L89 1155 .L101: 1156 0072 00BF .align 2 1157 .L100: 1158 0074 00000000 .word .LANCHOR0 1159 0078 003C0240 .word 1073888256 1160 .cfi_endproc 1161 .LFE134: 1163 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 1164 .align 1 1165 .global HAL_FLASH_OB_Launch 1166 .syntax unified 1167 .thumb 1168 .thumb_func 1169 .fpu fpv4-sp-d16 1171 HAL_FLASH_OB_Launch: 1172 .LFB143: 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 1173 .loc 1 494 1 is_stmt 1 view -0 1174 .cfi_startproc 1175 @ args = 0, pretend = 0, frame = 0 1176 @ frame_needed = 0, uses_anonymous_args = 0 1177 0000 08B5 push {r3, lr} 1178 .LCFI6: 1179 .cfi_def_cfa_offset 8 1180 .cfi_offset 3, -8 1181 .cfi_offset 14, -4 496:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1182 .loc 1 496 3 view .LVU298 496:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1183 .loc 1 496 40 is_stmt 0 view .LVU299 1184 0002 054A ldr r2, .L104 1185 0004 137D ldrb r3, [r2, #20] @ zero_extendqisi2 1186 0006 43F00203 orr r3, r3, #2 1187 000a 1375 strb r3, [r2, #20] 499:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1188 .loc 1 499 3 is_stmt 1 view .LVU300 499:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1189 .loc 1 499 11 is_stmt 0 view .LVU301 1190 000c 4CF25030 movw r0, #50000 1191 0010 FFF7FEFF bl FLASH_WaitForLastOperation 1192 .LVL65: 500:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1193 .loc 1 500 1 view .LVU302 1194 0014 08BD pop {r3, pc} ARM GAS /tmp/ccopxfLa.s page 43 1195 .L105: 1196 0016 00BF .align 2 1197 .L104: 1198 0018 003C0240 .word 1073888256 1199 .cfi_endproc 1200 .LFE143: 1202 .global pFlash 1203 .section .bss.pFlash,"aw",%nobits 1204 .align 2 1205 .set .LANCHOR0,. + 0 1208 pFlash: 1209 0000 00000000 .space 32 1209 00000000 1209 00000000 1209 00000000 1209 00000000 1210 .text 1211 .Letext0: 1212 .file 3 "/usr/lib/gcc/arm-none-eabi/10.3.1/include/stdint.h" 1213 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h" 1214 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" 1215 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" 1216 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" 1217 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" 1218 .file 9 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h" ARM GAS /tmp/ccopxfLa.s page 44 DEFINED SYMBOLS *ABS*:0000000000000000 stm32f4xx_hal_flash.c /tmp/ccopxfLa.s:18 .text.FLASH_Program_DoubleWord:0000000000000000 $t /tmp/ccopxfLa.s:25 .text.FLASH_Program_DoubleWord:0000000000000000 FLASH_Program_DoubleWord /tmp/ccopxfLa.s:85 .text.FLASH_Program_DoubleWord:000000000000002c $d /tmp/ccopxfLa.s:90 .text.FLASH_Program_Word:0000000000000000 $t /tmp/ccopxfLa.s:96 .text.FLASH_Program_Word:0000000000000000 FLASH_Program_Word /tmp/ccopxfLa.s:128 .text.FLASH_Program_Word:0000000000000020 $d /tmp/ccopxfLa.s:133 .text.FLASH_Program_HalfWord:0000000000000000 $t /tmp/ccopxfLa.s:139 .text.FLASH_Program_HalfWord:0000000000000000 FLASH_Program_HalfWord /tmp/ccopxfLa.s:171 .text.FLASH_Program_HalfWord:0000000000000020 $d /tmp/ccopxfLa.s:176 .text.FLASH_Program_Byte:0000000000000000 $t /tmp/ccopxfLa.s:182 .text.FLASH_Program_Byte:0000000000000000 FLASH_Program_Byte /tmp/ccopxfLa.s:213 .text.FLASH_Program_Byte:000000000000001c $d /tmp/ccopxfLa.s:218 .text.FLASH_SetErrorCode:0000000000000000 $t /tmp/ccopxfLa.s:224 .text.FLASH_SetErrorCode:0000000000000000 FLASH_SetErrorCode /tmp/ccopxfLa.s:344 .text.FLASH_SetErrorCode:00000000000000a0 $d /tmp/ccopxfLa.s:350 .text.HAL_FLASH_Program_IT:0000000000000000 $t /tmp/ccopxfLa.s:357 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT /tmp/ccopxfLa.s:442 .text.HAL_FLASH_Program_IT:000000000000004c $d /tmp/ccopxfLa.s:448 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t /tmp/ccopxfLa.s:455 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback /tmp/ccopxfLa.s:470 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t /tmp/ccopxfLa.s:477 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback /tmp/ccopxfLa.s:492 .text.HAL_FLASH_IRQHandler:0000000000000000 $t /tmp/ccopxfLa.s:499 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler /tmp/ccopxfLa.s:708 .text.HAL_FLASH_IRQHandler:00000000000000e4 $d /tmp/ccopxfLa.s:714 .text.HAL_FLASH_Unlock:0000000000000000 $t /tmp/ccopxfLa.s:721 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock /tmp/ccopxfLa.s:767 .text.HAL_FLASH_Unlock:0000000000000028 $d /tmp/ccopxfLa.s:773 .text.HAL_FLASH_Lock:0000000000000000 $t /tmp/ccopxfLa.s:780 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock /tmp/ccopxfLa.s:800 .text.HAL_FLASH_Lock:0000000000000010 $d /tmp/ccopxfLa.s:805 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t /tmp/ccopxfLa.s:812 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock /tmp/ccopxfLa.s:847 .text.HAL_FLASH_OB_Unlock:0000000000000020 $d /tmp/ccopxfLa.s:853 .text.HAL_FLASH_OB_Lock:0000000000000000 $t /tmp/ccopxfLa.s:860 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock /tmp/ccopxfLa.s:880 .text.HAL_FLASH_OB_Lock:0000000000000010 $d /tmp/ccopxfLa.s:885 .text.HAL_FLASH_GetError:0000000000000000 $t /tmp/ccopxfLa.s:892 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError /tmp/ccopxfLa.s:908 .text.HAL_FLASH_GetError:0000000000000008 $d /tmp/ccopxfLa.s:913 .text.FLASH_WaitForLastOperation:0000000000000000 $t /tmp/ccopxfLa.s:920 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation /tmp/ccopxfLa.s:1016 .text.FLASH_WaitForLastOperation:0000000000000058 $d /tmp/ccopxfLa.s:1022 .text.HAL_FLASH_Program:0000000000000000 $t /tmp/ccopxfLa.s:1029 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program /tmp/ccopxfLa.s:1158 .text.HAL_FLASH_Program:0000000000000074 $d /tmp/ccopxfLa.s:1164 .text.HAL_FLASH_OB_Launch:0000000000000000 $t /tmp/ccopxfLa.s:1171 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch /tmp/ccopxfLa.s:1198 .text.HAL_FLASH_OB_Launch:0000000000000018 $d /tmp/ccopxfLa.s:1208 .bss.pFlash:0000000000000000 pFlash /tmp/ccopxfLa.s:1204 .bss.pFlash:0000000000000000 $d UNDEFINED SYMBOLS FLASH_Erase_Sector FLASH_FlushCaches ARM GAS /tmp/ccopxfLa.s page 45 HAL_GetTick