ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 6 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "soft_flash.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .global sectStartAddr 20 .section .data.sectStartAddr,"aw" 21 .align 2 24 sectStartAddr: 25 0000 00000008 .word 134217728 26 0004 00400008 .word 134234112 27 0008 00800008 .word 134250496 28 000c 00C00008 .word 134266880 29 0010 00000108 .word 134283264 30 0014 00000208 .word 134348800 31 0018 00000408 .word 134479872 32 001c 00000608 .word 134610944 33 0020 00000808 .word 134742016 34 0024 00000A08 .word 134873088 35 0028 00000C08 .word 135004160 36 002c 00000E08 .word 135135232 37 .section .text.GetSectorFromAddress,"ax",%progbits 38 .align 1 39 .global GetSectorFromAddress 40 .syntax unified 41 .thumb 42 .thumb_func 44 GetSectorFromAddress: 45 .LFB235: 46 .file 1 "Core/Src/soft_flash.c" 1:Core/Src/soft_flash.c **** #include "main.h" 2:Core/Src/soft_flash.c **** #include "soft_flash.h" 3:Core/Src/soft_flash.c **** #include 4:Core/Src/soft_flash.c **** #include "soft_crc.h" 5:Core/Src/soft_flash.c **** #include "stm32f4xx_hal_flash_ex.h" 6:Core/Src/soft_flash.c **** 7:Core/Src/soft_flash.c **** extern UART_HandleTypeDef huart2; 8:Core/Src/soft_flash.c **** 9:Core/Src/soft_flash.c **** uint32_t sectStartAddr[12]= 10:Core/Src/soft_flash.c **** { 11:Core/Src/soft_flash.c **** 0x08000000,//0 12:Core/Src/soft_flash.c **** 0x08004000,//1 13:Core/Src/soft_flash.c **** 0x08008000,//2 14:Core/Src/soft_flash.c **** 0x0800c000,//3 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 2 15:Core/Src/soft_flash.c **** 0x08010000,//4 16:Core/Src/soft_flash.c **** 0x08020000,//5 17:Core/Src/soft_flash.c **** 0x08040000,//6 18:Core/Src/soft_flash.c **** 0x08060000, //7 19:Core/Src/soft_flash.c **** 0x08080000, //8 20:Core/Src/soft_flash.c **** 0x080A0000, //9 21:Core/Src/soft_flash.c **** 0x080C0000, //10 22:Core/Src/soft_flash.c **** 0x080E0000, //11 23:Core/Src/soft_flash.c **** }; 24:Core/Src/soft_flash.c **** 25:Core/Src/soft_flash.c **** int GetSectorFromAddress(uint32_t address) 26:Core/Src/soft_flash.c **** { 47 .loc 1 26 1 48 .cfi_startproc 49 @ args = 0, pretend = 0, frame = 16 50 @ frame_needed = 1, uses_anonymous_args = 0 51 @ link register save eliminated. 52 0000 80B4 push {r7} 53 .LCFI0: 54 .cfi_def_cfa_offset 4 55 .cfi_offset 7, -4 56 0002 85B0 sub sp, sp, #20 57 .LCFI1: 58 .cfi_def_cfa_offset 24 59 0004 00AF add r7, sp, #0 60 .LCFI2: 61 .cfi_def_cfa_register 7 62 0006 7860 str r0, [r7, #4] 27:Core/Src/soft_flash.c **** int sect = 0; 63 .loc 1 27 9 64 0008 0023 movs r3, #0 65 000a FB60 str r3, [r7, #12] 28:Core/Src/soft_flash.c **** if( address < 0x08000000 || address > 0x08100000 ) 66 .loc 1 28 7 67 000c 7B68 ldr r3, [r7, #4] 68 000e B3F1006F cmp r3, #134217728 69 0012 03D3 bcc .L2 70 .loc 1 28 30 discriminator 1 71 0014 7B68 ldr r3, [r7, #4] 72 0016 B3F1016F cmp r3, #135266304 73 001a 02D9 bls .L3 74 .L2: 29:Core/Src/soft_flash.c **** return -1; 75 .loc 1 29 16 76 001c 4FF0FF33 mov r3, #-1 77 0020 1BE0 b .L4 78 .L3: 79 .LBB14: 30:Core/Src/soft_flash.c **** for( int i=0; i<8; i++ ) 80 .loc 1 30 14 81 0022 0023 movs r3, #0 82 0024 BB60 str r3, [r7, #8] 83 .loc 1 30 5 84 0026 14E0 b .L5 85 .L8: 31:Core/Src/soft_flash.c **** { 32:Core/Src/soft_flash.c **** if( address >= sectStartAddr[i] && address < sectStartAddr[i+1] ) ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 3 86 .loc 1 32 37 87 0028 0F4A ldr r2, .L9 88 002a BB68 ldr r3, [r7, #8] 89 002c 52F82330 ldr r3, [r2, r3, lsl #2] 90 .loc 1 32 11 91 0030 7A68 ldr r2, [r7, #4] 92 0032 9A42 cmp r2, r3 93 0034 0AD3 bcc .L6 94 .loc 1 32 69 discriminator 1 95 0036 BB68 ldr r3, [r7, #8] 96 0038 0133 adds r3, r3, #1 97 .loc 1 32 67 discriminator 1 98 003a 0B4A ldr r2, .L9 99 003c 52F82330 ldr r3, [r2, r3, lsl #2] 100 .loc 1 32 41 discriminator 1 101 0040 7A68 ldr r2, [r7, #4] 102 0042 9A42 cmp r2, r3 103 0044 02D2 bcs .L6 33:Core/Src/soft_flash.c **** { 34:Core/Src/soft_flash.c **** sect = i; 104 .loc 1 34 18 105 0046 BB68 ldr r3, [r7, #8] 106 0048 FB60 str r3, [r7, #12] 35:Core/Src/soft_flash.c **** break; 107 .loc 1 35 13 108 004a 05E0 b .L7 109 .L6: 30:Core/Src/soft_flash.c **** { 110 .loc 1 30 25 discriminator 2 111 004c BB68 ldr r3, [r7, #8] 112 004e 0133 adds r3, r3, #1 113 0050 BB60 str r3, [r7, #8] 114 .L5: 30:Core/Src/soft_flash.c **** { 115 .loc 1 30 5 discriminator 1 116 0052 BB68 ldr r3, [r7, #8] 117 0054 072B cmp r3, #7 118 0056 E7DD ble .L8 119 .L7: 120 .LBE14: 36:Core/Src/soft_flash.c **** } 37:Core/Src/soft_flash.c **** } 38:Core/Src/soft_flash.c **** return sect; 121 .loc 1 38 12 122 0058 FB68 ldr r3, [r7, #12] 123 .L4: 39:Core/Src/soft_flash.c **** } 124 .loc 1 39 1 125 005a 1846 mov r0, r3 126 005c 1437 adds r7, r7, #20 127 .LCFI3: 128 .cfi_def_cfa_offset 4 129 005e BD46 mov sp, r7 130 .LCFI4: 131 .cfi_def_cfa_register 13 132 @ sp needed 133 0060 5DF8047B ldr r7, [sp], #4 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 4 134 .LCFI5: 135 .cfi_restore 7 136 .cfi_def_cfa_offset 0 137 0064 7047 bx lr 138 .L10: 139 0066 00BF .align 2 140 .L9: 141 0068 00000000 .word sectStartAddr 142 .cfi_endproc 143 .LFE235: 145 .section .text.Flash_WriteData,"ax",%progbits 146 .align 1 147 .global Flash_WriteData 148 .syntax unified 149 .thumb 150 .thumb_func 152 Flash_WriteData: 153 .LFB236: 40:Core/Src/soft_flash.c **** //FLASH写 41:Core/Src/soft_flash.c **** uint32_t Flash_WriteData(uint32_t addr, uint16_t *data, uint16_t Size) 42:Core/Src/soft_flash.c **** { 154 .loc 1 42 1 155 .cfi_startproc 156 @ args = 0, pretend = 0, frame = 24 157 @ frame_needed = 1, uses_anonymous_args = 0 158 0000 B0B5 push {r4, r5, r7, lr} 159 .LCFI6: 160 .cfi_def_cfa_offset 16 161 .cfi_offset 4, -16 162 .cfi_offset 5, -12 163 .cfi_offset 7, -8 164 .cfi_offset 14, -4 165 0002 86B0 sub sp, sp, #24 166 .LCFI7: 167 .cfi_def_cfa_offset 40 168 0004 00AF add r7, sp, #0 169 .LCFI8: 170 .cfi_def_cfa_register 7 171 0006 F860 str r0, [r7, #12] 172 0008 B960 str r1, [r7, #8] 173 000a 1346 mov r3, r2 174 000c FB80 strh r3, [r7, #6] @ movhi 43:Core/Src/soft_flash.c **** static int8_t cur_sector = -1; 44:Core/Src/soft_flash.c **** uint8_t tar_sector = 0; 175 .loc 1 44 13 176 000e 0023 movs r3, #0 177 0010 7B75 strb r3, [r7, #21] 178 .LBB15: 179 .LBB16: 180 .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.0.4 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 5 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 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))) 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 6 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 **** 117:Drivers/CMSIS/Include/cmsis_gcc.h **** 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 7 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 123:Drivers/CMSIS/Include/cmsis_gcc.h **** 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } 133:Drivers/CMSIS/Include/cmsis_gcc.h **** 134:Drivers/CMSIS/Include/cmsis_gcc.h **** 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); 181 .loc 2 142 3 182 .syntax unified 183 @ 142 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 184 0012 72B6 cpsid i 185 @ 0 "" 2 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } 186 .loc 2 143 1 187 .thumb 188 .syntax unified 189 0014 00BF nop 190 .LBE16: 191 .LBE15: 45:Core/Src/soft_flash.c **** 46:Core/Src/soft_flash.c **** __disable_irq(); 47:Core/Src/soft_flash.c **** HAL_FLASH_Unlock(); 192 .loc 1 47 5 193 0016 FFF7FEFF bl HAL_FLASH_Unlock 48:Core/Src/soft_flash.c **** 49:Core/Src/soft_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | 194 .loc 1 49 5 195 001a 254B ldr r3, .L17 196 001c F322 movs r2, #243 197 001e DA60 str r2, [r3, #12] 50:Core/Src/soft_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);//清除一些 51:Core/Src/soft_flash.c **** 52:Core/Src/soft_flash.c **** //是否要擦扇区 53:Core/Src/soft_flash.c **** tar_sector = GetSectorFromAddress(addr);//获取地址所在的扇区 198 .loc 1 53 18 199 0020 F868 ldr r0, [r7, #12] 200 0022 FFF7FEFF bl GetSectorFromAddress 201 0026 0346 mov r3, r0 202 .loc 1 53 16 203 0028 7B75 strb r3, [r7, #21] 54:Core/Src/soft_flash.c **** if(tar_sector != cur_sector) 204 .loc 1 54 19 205 002a 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 8 206 002c 214A ldr r2, .L17+4 207 002e 92F90020 ldrsb r2, [r2] 208 .loc 1 54 7 209 0032 9342 cmp r3, r2 210 0034 08D0 beq .L12 55:Core/Src/soft_flash.c **** { 56:Core/Src/soft_flash.c **** FLASH_Erase_Sector(tar_sector,FLASH_VOLTAGE_RANGE_3);//擦除指定的闪存扇区(0~11) 211 .loc 1 56 9 212 0036 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2 213 0038 0221 movs r1, #2 214 003a 1846 mov r0, r3 215 003c FFF7FEFF bl FLASH_Erase_Sector 57:Core/Src/soft_flash.c **** cur_sector = tar_sector; 216 .loc 1 57 20 217 0040 97F91520 ldrsb r2, [r7, #21] 218 0044 1B4B ldr r3, .L17+4 219 0046 1A70 strb r2, [r3] 220 .L12: 58:Core/Src/soft_flash.c **** } 59:Core/Src/soft_flash.c **** 60:Core/Src/soft_flash.c **** uint16_t TempBuf = 0; 221 .loc 1 60 14 222 0048 0023 movs r3, #0 223 004a 7B82 strh r3, [r7, #18] @ movhi 224 .LBB17: 61:Core/Src/soft_flash.c **** for (uint16_t i = 0; i < Size; i++) 225 .loc 1 61 19 226 004c 0023 movs r3, #0 227 004e FB82 strh r3, [r7, #22] @ movhi 228 .loc 1 61 5 229 0050 21E0 b .L13 230 .L16: 231 .LBB18: 62:Core/Src/soft_flash.c **** { 63:Core/Src/soft_flash.c **** TempBuf = *(data + i); 232 .loc 1 63 26 233 0052 FB8A ldrh r3, [r7, #22] 234 0054 5B00 lsls r3, r3, #1 235 0056 BA68 ldr r2, [r7, #8] 236 0058 1344 add r3, r3, r2 237 .loc 1 63 17 238 005a 1B88 ldrh r3, [r3] @ movhi 239 005c 7B82 strh r3, [r7, #18] @ movhi 64:Core/Src/soft_flash.c **** HAL_StatusTypeDef a = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr + i * 2, TempBuf); 240 .loc 1 64 86 241 005e FB8A ldrh r3, [r7, #22] 242 0060 5B00 lsls r3, r3, #1 243 0062 1A46 mov r2, r3 244 .loc 1 64 31 245 0064 FB68 ldr r3, [r7, #12] 246 0066 D118 adds r1, r2, r3 247 0068 7B8A ldrh r3, [r7, #18] 248 006a 0022 movs r2, #0 249 006c 1C46 mov r4, r3 250 006e 1546 mov r5, r2 251 0070 2246 mov r2, r4 252 0072 2B46 mov r3, r5 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 9 253 0074 0120 movs r0, #1 254 0076 FFF7FEFF bl HAL_FLASH_Program 255 007a 0346 mov r3, r0 256 007c 7B74 strb r3, [r7, #17] 65:Core/Src/soft_flash.c **** if (a != HAL_OK) 257 .loc 1 65 12 258 007e 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2 259 0080 002B cmp r3, #0 260 0082 05D0 beq .L14 66:Core/Src/soft_flash.c **** { 67:Core/Src/soft_flash.c **** HAL_FLASH_Lock(); 261 .loc 1 67 13 262 0084 FFF7FEFF bl HAL_FLASH_Lock 263 .LBB19: 264 .LBB20: 131:Drivers/CMSIS/Include/cmsis_gcc.h **** } 265 .loc 2 131 3 266 .syntax unified 267 @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 268 0088 62B6 cpsie i 269 @ 0 "" 2 132:Drivers/CMSIS/Include/cmsis_gcc.h **** 270 .loc 2 132 1 271 .thumb 272 .syntax unified 273 008a 00BF nop 274 .LBE20: 275 .LBE19: 68:Core/Src/soft_flash.c **** __enable_irq(); 69:Core/Src/soft_flash.c **** return WRITE_FAIL; 276 .loc 1 69 20 277 008c 0223 movs r3, #2 278 008e 0BE0 b .L15 279 .L14: 280 .LBE18: 61:Core/Src/soft_flash.c **** { 281 .loc 1 61 37 discriminator 2 282 0090 FB8A ldrh r3, [r7, #22] 283 0092 0133 adds r3, r3, #1 284 0094 FB82 strh r3, [r7, #22] @ movhi 285 .L13: 61:Core/Src/soft_flash.c **** { 286 .loc 1 61 5 discriminator 1 287 0096 FA8A ldrh r2, [r7, #22] 288 0098 FB88 ldrh r3, [r7, #6] 289 009a 9A42 cmp r2, r3 290 009c D9D3 bcc .L16 291 .LBE17: 70:Core/Src/soft_flash.c **** } 71:Core/Src/soft_flash.c **** } 72:Core/Src/soft_flash.c **** HAL_FLASH_Lock(); 292 .loc 1 72 5 293 009e FFF7FEFF bl HAL_FLASH_Lock 294 .LBB21: 295 .LBB22: 131:Drivers/CMSIS/Include/cmsis_gcc.h **** } 296 .loc 2 131 3 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 10 297 .syntax unified 298 @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 299 00a2 62B6 cpsie i 300 @ 0 "" 2 132:Drivers/CMSIS/Include/cmsis_gcc.h **** 301 .loc 2 132 1 302 .thumb 303 .syntax unified 304 00a4 00BF nop 305 .LBE22: 306 .LBE21: 73:Core/Src/soft_flash.c **** __enable_irq(); 74:Core/Src/soft_flash.c **** 75:Core/Src/soft_flash.c **** return WRITE_SUCCESS; 307 .loc 1 75 12 308 00a6 0323 movs r3, #3 309 .L15: 76:Core/Src/soft_flash.c **** } 310 .loc 1 76 1 311 00a8 1846 mov r0, r3 312 00aa 1837 adds r7, r7, #24 313 .LCFI9: 314 .cfi_def_cfa_offset 16 315 00ac BD46 mov sp, r7 316 .LCFI10: 317 .cfi_def_cfa_register 13 318 @ sp needed 319 00ae B0BD pop {r4, r5, r7, pc} 320 .L18: 321 .align 2 322 .L17: 323 00b0 003C0240 .word 1073888256 324 00b4 00000000 .word cur_sector.0 325 .cfi_endproc 326 .LFE236: 328 .section .text.wirte_update_flag,"ax",%progbits 329 .align 1 330 .global wirte_update_flag 331 .syntax unified 332 .thumb 333 .thumb_func 335 wirte_update_flag: 336 .LFB237: 77:Core/Src/soft_flash.c **** 78:Core/Src/soft_flash.c **** 79:Core/Src/soft_flash.c **** bool wirte_update_flag() 80:Core/Src/soft_flash.c **** { 337 .loc 1 80 1 338 .cfi_startproc 339 @ args = 0, pretend = 0, frame = 8 340 @ frame_needed = 1, uses_anonymous_args = 0 341 0000 80B5 push {r7, lr} 342 .LCFI11: 343 .cfi_def_cfa_offset 8 344 .cfi_offset 7, -8 345 .cfi_offset 14, -4 346 0002 82B0 sub sp, sp, #8 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 11 347 .LCFI12: 348 .cfi_def_cfa_offset 16 349 0004 00AF add r7, sp, #0 350 .LCFI13: 351 .cfi_def_cfa_register 7 81:Core/Src/soft_flash.c **** uint8_t sect = 0; 352 .loc 1 81 13 353 0006 0023 movs r3, #0 354 0008 FB71 strb r3, [r7, #7] 355 .LBB23: 356 .LBB24: 142:Drivers/CMSIS/Include/cmsis_gcc.h **** } 357 .loc 2 142 3 358 .syntax unified 359 @ 142 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 360 000a 72B6 cpsid i 361 @ 0 "" 2 362 .loc 2 143 1 363 .thumb 364 .syntax unified 365 000c 00BF nop 366 .LBE24: 367 .LBE23: 82:Core/Src/soft_flash.c **** HAL_StatusTypeDef status; 83:Core/Src/soft_flash.c **** __disable_irq(); 84:Core/Src/soft_flash.c **** HAL_FLASH_Unlock(); 368 .loc 1 84 5 369 000e FFF7FEFF bl HAL_FLASH_Unlock 85:Core/Src/soft_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | 370 .loc 1 85 5 371 0012 124B ldr r3, .L22 372 0014 F322 movs r2, #243 373 0016 DA60 str r2, [r3, #12] 86:Core/Src/soft_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);//清除一些 87:Core/Src/soft_flash.c **** 88:Core/Src/soft_flash.c **** sect = GetSectorFromAddress(FLASH_UPDATE_ADDR);//获取地址所在的扇区 374 .loc 1 88 12 375 0018 1148 ldr r0, .L22+4 376 001a FFF7FEFF bl GetSectorFromAddress 377 001e 0346 mov r3, r0 378 .loc 1 88 10 379 0020 FB71 strb r3, [r7, #7] 89:Core/Src/soft_flash.c **** 90:Core/Src/soft_flash.c **** FLASH_Erase_Sector(sect,FLASH_VOLTAGE_RANGE_3);//擦除指定的闪存扇区(0~11) 380 .loc 1 90 5 381 0022 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 382 0024 0221 movs r1, #2 383 0026 1846 mov r0, r3 384 0028 FFF7FEFF bl FLASH_Erase_Sector 91:Core/Src/soft_flash.c **** 92:Core/Src/soft_flash.c **** status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FLASH_UPDATE_ADDR, 0XF); 385 .loc 1 92 14 386 002c 4FF00F02 mov r2, #15 387 0030 4FF00003 mov r3, #0 388 0034 0A49 ldr r1, .L22+4 389 0036 0120 movs r0, #1 390 0038 FFF7FEFF bl HAL_FLASH_Program ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 12 391 003c 0346 mov r3, r0 392 003e BB71 strb r3, [r7, #6] 93:Core/Src/soft_flash.c **** HAL_FLASH_Lock(); 393 .loc 1 93 5 394 0040 FFF7FEFF bl HAL_FLASH_Lock 395 .LBB25: 396 .LBB26: 131:Drivers/CMSIS/Include/cmsis_gcc.h **** } 397 .loc 2 131 3 398 .syntax unified 399 @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 400 0044 62B6 cpsie i 401 @ 0 "" 2 132:Drivers/CMSIS/Include/cmsis_gcc.h **** 402 .loc 2 132 1 403 .thumb 404 .syntax unified 405 0046 00BF nop 406 .LBE26: 407 .LBE25: 94:Core/Src/soft_flash.c **** __enable_irq(); 95:Core/Src/soft_flash.c **** 96:Core/Src/soft_flash.c **** if(status == HAL_OK) 408 .loc 1 96 7 409 0048 BB79 ldrb r3, [r7, #6] @ zero_extendqisi2 410 004a 002B cmp r3, #0 411 004c 01D1 bne .L20 97:Core/Src/soft_flash.c **** return true; 412 .loc 1 97 16 413 004e 0123 movs r3, #1 414 0050 00E0 b .L21 415 .L20: 98:Core/Src/soft_flash.c **** else 99:Core/Src/soft_flash.c **** return false; 416 .loc 1 99 16 417 0052 0023 movs r3, #0 418 .L21: 100:Core/Src/soft_flash.c **** } 419 .loc 1 100 1 420 0054 1846 mov r0, r3 421 0056 0837 adds r7, r7, #8 422 .LCFI14: 423 .cfi_def_cfa_offset 8 424 0058 BD46 mov sp, r7 425 .LCFI15: 426 .cfi_def_cfa_register 13 427 @ sp needed 428 005a 80BD pop {r7, pc} 429 .L23: 430 .align 2 431 .L22: 432 005c 003C0240 .word 1073888256 433 0060 00800008 .word 134250496 434 .cfi_endproc 435 .LFE237: 437 .section .text.ReadFlashNBtye,"ax",%progbits 438 .align 1 ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 13 439 .global ReadFlashNBtye 440 .syntax unified 441 .thumb 442 .thumb_func 444 ReadFlashNBtye: 445 .LFB238: 101:Core/Src/soft_flash.c **** 102:Core/Src/soft_flash.c **** 103:Core/Src/soft_flash.c **** //FLASH读地址 104:Core/Src/soft_flash.c **** uint16_t ReadFlashNBtye(uint32_t ReadAddress, uint16_t *ReadBuf, int32_t ReadNum) 105:Core/Src/soft_flash.c **** { 446 .loc 1 105 1 447 .cfi_startproc 448 @ args = 0, pretend = 0, frame = 24 449 @ frame_needed = 1, uses_anonymous_args = 0 450 @ link register save eliminated. 451 0000 80B4 push {r7} 452 .LCFI16: 453 .cfi_def_cfa_offset 4 454 .cfi_offset 7, -4 455 0002 87B0 sub sp, sp, #28 456 .LCFI17: 457 .cfi_def_cfa_offset 32 458 0004 00AF add r7, sp, #0 459 .LCFI18: 460 .cfi_def_cfa_register 7 461 0006 F860 str r0, [r7, #12] 462 0008 B960 str r1, [r7, #8] 463 000a 7A60 str r2, [r7, #4] 106:Core/Src/soft_flash.c **** int DataNum = 0; 464 .loc 1 106 9 465 000c 0023 movs r3, #0 466 000e 7B61 str r3, [r7, #20] 107:Core/Src/soft_flash.c **** uint16_t up_flag = 0; 467 .loc 1 107 14 468 0010 0023 movs r3, #0 469 0012 7B82 strh r3, [r7, #18] @ movhi 108:Core/Src/soft_flash.c **** 109:Core/Src/soft_flash.c **** *ReadBuf = *(__IO uint16_t *)ReadAddress; 470 .loc 1 109 17 471 0014 FB68 ldr r3, [r7, #12] 472 .loc 1 109 16 473 0016 1B88 ldrh r3, [r3] @ movhi 474 0018 9AB2 uxth r2, r3 475 .loc 1 109 14 476 001a BB68 ldr r3, [r7, #8] 477 001c 1A80 strh r2, [r3] @ movhi 110:Core/Src/soft_flash.c **** up_flag = *ReadBuf; 478 .loc 1 110 13 479 001e BB68 ldr r3, [r7, #8] 480 0020 1B88 ldrh r3, [r3] @ movhi 481 0022 7B82 strh r3, [r7, #18] @ movhi 111:Core/Src/soft_flash.c **** DataNum++; 482 .loc 1 111 12 483 0024 7B69 ldr r3, [r7, #20] 484 0026 0133 adds r3, r3, #1 485 0028 7B61 str r3, [r7, #20] ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 14 112:Core/Src/soft_flash.c **** 113:Core/Src/soft_flash.c **** return up_flag; 486 .loc 1 113 12 487 002a 7B8A ldrh r3, [r7, #18] 114:Core/Src/soft_flash.c **** } 488 .loc 1 114 1 489 002c 1846 mov r0, r3 490 002e 1C37 adds r7, r7, #28 491 .LCFI19: 492 .cfi_def_cfa_offset 4 493 0030 BD46 mov sp, r7 494 .LCFI20: 495 .cfi_def_cfa_register 13 496 @ sp needed 497 0032 5DF8047B ldr r7, [sp], #4 498 .LCFI21: 499 .cfi_restore 7 500 .cfi_def_cfa_offset 0 501 0036 7047 bx lr 502 .cfi_endproc 503 .LFE238: 505 .section .text.flash_read_updata_flag,"ax",%progbits 506 .align 1 507 .global flash_read_updata_flag 508 .syntax unified 509 .thumb 510 .thumb_func 512 flash_read_updata_flag: 513 .LFB239: 115:Core/Src/soft_flash.c **** //读取标志位 116:Core/Src/soft_flash.c **** uint32_t flash_read_updata_flag(void) 117:Core/Src/soft_flash.c **** { 514 .loc 1 117 1 515 .cfi_startproc 516 @ args = 0, pretend = 0, frame = 8 517 @ frame_needed = 1, uses_anonymous_args = 0 518 0000 80B5 push {r7, lr} 519 .LCFI22: 520 .cfi_def_cfa_offset 8 521 .cfi_offset 7, -8 522 .cfi_offset 14, -4 523 0002 82B0 sub sp, sp, #8 524 .LCFI23: 525 .cfi_def_cfa_offset 16 526 0004 00AF add r7, sp, #0 527 .LCFI24: 528 .cfi_def_cfa_register 7 118:Core/Src/soft_flash.c **** uint16_t temp_buff = 0; 529 .loc 1 118 14 530 0006 0023 movs r3, #0 531 0008 FB80 strh r3, [r7, #6] @ movhi 119:Core/Src/soft_flash.c **** uint32_t Address = 0; 532 .loc 1 119 14 533 000a 0023 movs r3, #0 534 000c 3B60 str r3, [r7] 120:Core/Src/soft_flash.c **** 121:Core/Src/soft_flash.c **** temp_buff = ReadFlashNBtye(FLASH_UPDATE_ADDR, (uint16_t *)&Address, 1); ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 15 535 .loc 1 121 17 536 000e 3B46 mov r3, r7 537 0010 0122 movs r2, #1 538 0012 1946 mov r1, r3 539 0014 0448 ldr r0, .L28 540 0016 FFF7FEFF bl ReadFlashNBtye 541 001a 0346 mov r3, r0 542 001c FB80 strh r3, [r7, #6] @ movhi 122:Core/Src/soft_flash.c **** 123:Core/Src/soft_flash.c **** return temp_buff; 543 .loc 1 123 12 544 001e FB88 ldrh r3, [r7, #6] 124:Core/Src/soft_flash.c **** } 545 .loc 1 124 1 546 0020 1846 mov r0, r3 547 0022 0837 adds r7, r7, #8 548 .LCFI25: 549 .cfi_def_cfa_offset 8 550 0024 BD46 mov sp, r7 551 .LCFI26: 552 .cfi_def_cfa_register 13 553 @ sp needed 554 0026 80BD pop {r7, pc} 555 .L29: 556 .align 2 557 .L28: 558 0028 00800008 .word 134250496 559 .cfi_endproc 560 .LFE239: 562 .section .data.cur_sector.0,"aw" 565 cur_sector.0: 566 0000 FF .byte -1 567 .text 568 .Letext0: 569 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 570 .file 4 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 571 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h" 572 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 16 DEFINED SYMBOLS *ABS*:00000000 soft_flash.c C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:24 .data.sectStartAddr:00000000 sectStartAddr C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:21 .data.sectStartAddr:00000000 $d C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:38 .text.GetSectorFromAddress:00000000 $t C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:44 .text.GetSectorFromAddress:00000000 GetSectorFromAddress C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:141 .text.GetSectorFromAddress:00000068 $d C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:146 .text.Flash_WriteData:00000000 $t C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:152 .text.Flash_WriteData:00000000 Flash_WriteData C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:323 .text.Flash_WriteData:000000b0 $d C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:565 .data.cur_sector.0:00000000 cur_sector.0 C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:329 .text.wirte_update_flag:00000000 $t C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:335 .text.wirte_update_flag:00000000 wirte_update_flag C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:432 .text.wirte_update_flag:0000005c $d C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:438 .text.ReadFlashNBtye:00000000 $t C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:444 .text.ReadFlashNBtye:00000000 ReadFlashNBtye C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:506 .text.flash_read_updata_flag:00000000 $t C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:512 .text.flash_read_updata_flag:00000000 flash_read_updata_flag C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:558 .text.flash_read_updata_flag:00000028 $d UNDEFINED SYMBOLS HAL_FLASH_Unlock FLASH_Erase_Sector HAL_FLASH_Program HAL_FLASH_Lock