Files
EEPROM_programmer/build/stm32f4xx_hal_flash.lst
2025-09-05 10:30:26 +02:00

2613 lines
160 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; i<pTable->wlen; ++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; i<pTable->wlen; ++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