soft_flash.lst 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909
  1. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 1
  2. 1 .cpu cortex-m4
  3. 2 .arch armv7e-m
  4. 3 .fpu fpv4-sp-d16
  5. 4 .eabi_attribute 27, 1
  6. 5 .eabi_attribute 28, 1
  7. 6 .eabi_attribute 20, 1
  8. 7 .eabi_attribute 21, 1
  9. 8 .eabi_attribute 23, 3
  10. 9 .eabi_attribute 24, 1
  11. 10 .eabi_attribute 25, 1
  12. 11 .eabi_attribute 26, 1
  13. 12 .eabi_attribute 30, 6
  14. 13 .eabi_attribute 34, 1
  15. 14 .eabi_attribute 18, 4
  16. 15 .file "soft_flash.c"
  17. 16 .text
  18. 17 .Ltext0:
  19. 18 .cfi_sections .debug_frame
  20. 19 .global sectStartAddr
  21. 20 .section .data.sectStartAddr,"aw"
  22. 21 .align 2
  23. 24 sectStartAddr:
  24. 25 0000 00000008 .word 134217728
  25. 26 0004 00400008 .word 134234112
  26. 27 0008 00800008 .word 134250496
  27. 28 000c 00C00008 .word 134266880
  28. 29 0010 00000108 .word 134283264
  29. 30 0014 00000208 .word 134348800
  30. 31 0018 00000408 .word 134479872
  31. 32 001c 00000608 .word 134610944
  32. 33 0020 00000808 .word 134742016
  33. 34 0024 00000A08 .word 134873088
  34. 35 0028 00000C08 .word 135004160
  35. 36 002c 00000E08 .word 135135232
  36. 37 .section .text.GetSectorFromAddress,"ax",%progbits
  37. 38 .align 1
  38. 39 .global GetSectorFromAddress
  39. 40 .syntax unified
  40. 41 .thumb
  41. 42 .thumb_func
  42. 44 GetSectorFromAddress:
  43. 45 .LFB235:
  44. 46 .file 1 "Core/Src/soft_flash.c"
  45. 1:Core/Src/soft_flash.c **** #include "main.h"
  46. 2:Core/Src/soft_flash.c **** #include "soft_flash.h"
  47. 3:Core/Src/soft_flash.c **** #include <string.h>
  48. 4:Core/Src/soft_flash.c **** #include "soft_crc.h"
  49. 5:Core/Src/soft_flash.c **** #include "stm32f4xx_hal_flash_ex.h"
  50. 6:Core/Src/soft_flash.c ****
  51. 7:Core/Src/soft_flash.c **** extern UART_HandleTypeDef huart2;
  52. 8:Core/Src/soft_flash.c ****
  53. 9:Core/Src/soft_flash.c **** uint32_t sectStartAddr[12]=
  54. 10:Core/Src/soft_flash.c **** {
  55. 11:Core/Src/soft_flash.c **** 0x08000000,//0
  56. 12:Core/Src/soft_flash.c **** 0x08004000,//1
  57. 13:Core/Src/soft_flash.c **** 0x08008000,//2
  58. 14:Core/Src/soft_flash.c **** 0x0800c000,//3
  59. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 2
  60. 15:Core/Src/soft_flash.c **** 0x08010000,//4
  61. 16:Core/Src/soft_flash.c **** 0x08020000,//5
  62. 17:Core/Src/soft_flash.c **** 0x08040000,//6
  63. 18:Core/Src/soft_flash.c **** 0x08060000, //7
  64. 19:Core/Src/soft_flash.c **** 0x08080000, //8
  65. 20:Core/Src/soft_flash.c **** 0x080A0000, //9
  66. 21:Core/Src/soft_flash.c **** 0x080C0000, //10
  67. 22:Core/Src/soft_flash.c **** 0x080E0000, //11
  68. 23:Core/Src/soft_flash.c **** };
  69. 24:Core/Src/soft_flash.c ****
  70. 25:Core/Src/soft_flash.c **** int GetSectorFromAddress(uint32_t address)
  71. 26:Core/Src/soft_flash.c **** {
  72. 47 .loc 1 26 1
  73. 48 .cfi_startproc
  74. 49 @ args = 0, pretend = 0, frame = 16
  75. 50 @ frame_needed = 1, uses_anonymous_args = 0
  76. 51 @ link register save eliminated.
  77. 52 0000 80B4 push {r7}
  78. 53 .LCFI0:
  79. 54 .cfi_def_cfa_offset 4
  80. 55 .cfi_offset 7, -4
  81. 56 0002 85B0 sub sp, sp, #20
  82. 57 .LCFI1:
  83. 58 .cfi_def_cfa_offset 24
  84. 59 0004 00AF add r7, sp, #0
  85. 60 .LCFI2:
  86. 61 .cfi_def_cfa_register 7
  87. 62 0006 7860 str r0, [r7, #4]
  88. 27:Core/Src/soft_flash.c **** int sect = 0;
  89. 63 .loc 1 27 9
  90. 64 0008 0023 movs r3, #0
  91. 65 000a FB60 str r3, [r7, #12]
  92. 28:Core/Src/soft_flash.c **** if( address < 0x08000000 || address > 0x08100000 )
  93. 66 .loc 1 28 7
  94. 67 000c 7B68 ldr r3, [r7, #4]
  95. 68 000e B3F1006F cmp r3, #134217728
  96. 69 0012 03D3 bcc .L2
  97. 70 .loc 1 28 30 discriminator 1
  98. 71 0014 7B68 ldr r3, [r7, #4]
  99. 72 0016 B3F1016F cmp r3, #135266304
  100. 73 001a 02D9 bls .L3
  101. 74 .L2:
  102. 29:Core/Src/soft_flash.c **** return -1;
  103. 75 .loc 1 29 16
  104. 76 001c 4FF0FF33 mov r3, #-1
  105. 77 0020 1BE0 b .L4
  106. 78 .L3:
  107. 79 .LBB14:
  108. 30:Core/Src/soft_flash.c **** for( int i=0; i<8; i++ )
  109. 80 .loc 1 30 14
  110. 81 0022 0023 movs r3, #0
  111. 82 0024 BB60 str r3, [r7, #8]
  112. 83 .loc 1 30 5
  113. 84 0026 14E0 b .L5
  114. 85 .L8:
  115. 31:Core/Src/soft_flash.c **** {
  116. 32:Core/Src/soft_flash.c **** if( address >= sectStartAddr[i] && address < sectStartAddr[i+1] )
  117. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 3
  118. 86 .loc 1 32 37
  119. 87 0028 0F4A ldr r2, .L9
  120. 88 002a BB68 ldr r3, [r7, #8]
  121. 89 002c 52F82330 ldr r3, [r2, r3, lsl #2]
  122. 90 .loc 1 32 11
  123. 91 0030 7A68 ldr r2, [r7, #4]
  124. 92 0032 9A42 cmp r2, r3
  125. 93 0034 0AD3 bcc .L6
  126. 94 .loc 1 32 69 discriminator 1
  127. 95 0036 BB68 ldr r3, [r7, #8]
  128. 96 0038 0133 adds r3, r3, #1
  129. 97 .loc 1 32 67 discriminator 1
  130. 98 003a 0B4A ldr r2, .L9
  131. 99 003c 52F82330 ldr r3, [r2, r3, lsl #2]
  132. 100 .loc 1 32 41 discriminator 1
  133. 101 0040 7A68 ldr r2, [r7, #4]
  134. 102 0042 9A42 cmp r2, r3
  135. 103 0044 02D2 bcs .L6
  136. 33:Core/Src/soft_flash.c **** {
  137. 34:Core/Src/soft_flash.c **** sect = i;
  138. 104 .loc 1 34 18
  139. 105 0046 BB68 ldr r3, [r7, #8]
  140. 106 0048 FB60 str r3, [r7, #12]
  141. 35:Core/Src/soft_flash.c **** break;
  142. 107 .loc 1 35 13
  143. 108 004a 05E0 b .L7
  144. 109 .L6:
  145. 30:Core/Src/soft_flash.c **** {
  146. 110 .loc 1 30 25 discriminator 2
  147. 111 004c BB68 ldr r3, [r7, #8]
  148. 112 004e 0133 adds r3, r3, #1
  149. 113 0050 BB60 str r3, [r7, #8]
  150. 114 .L5:
  151. 30:Core/Src/soft_flash.c **** {
  152. 115 .loc 1 30 5 discriminator 1
  153. 116 0052 BB68 ldr r3, [r7, #8]
  154. 117 0054 072B cmp r3, #7
  155. 118 0056 E7DD ble .L8
  156. 119 .L7:
  157. 120 .LBE14:
  158. 36:Core/Src/soft_flash.c **** }
  159. 37:Core/Src/soft_flash.c **** }
  160. 38:Core/Src/soft_flash.c **** return sect;
  161. 121 .loc 1 38 12
  162. 122 0058 FB68 ldr r3, [r7, #12]
  163. 123 .L4:
  164. 39:Core/Src/soft_flash.c **** }
  165. 124 .loc 1 39 1
  166. 125 005a 1846 mov r0, r3
  167. 126 005c 1437 adds r7, r7, #20
  168. 127 .LCFI3:
  169. 128 .cfi_def_cfa_offset 4
  170. 129 005e BD46 mov sp, r7
  171. 130 .LCFI4:
  172. 131 .cfi_def_cfa_register 13
  173. 132 @ sp needed
  174. 133 0060 5DF8047B ldr r7, [sp], #4
  175. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 4
  176. 134 .LCFI5:
  177. 135 .cfi_restore 7
  178. 136 .cfi_def_cfa_offset 0
  179. 137 0064 7047 bx lr
  180. 138 .L10:
  181. 139 0066 00BF .align 2
  182. 140 .L9:
  183. 141 0068 00000000 .word sectStartAddr
  184. 142 .cfi_endproc
  185. 143 .LFE235:
  186. 145 .section .text.Flash_WriteData,"ax",%progbits
  187. 146 .align 1
  188. 147 .global Flash_WriteData
  189. 148 .syntax unified
  190. 149 .thumb
  191. 150 .thumb_func
  192. 152 Flash_WriteData:
  193. 153 .LFB236:
  194. 40:Core/Src/soft_flash.c **** //FLASH写
  195. 41:Core/Src/soft_flash.c **** uint32_t Flash_WriteData(uint32_t addr, uint16_t *data, uint16_t Size)
  196. 42:Core/Src/soft_flash.c **** {
  197. 154 .loc 1 42 1
  198. 155 .cfi_startproc
  199. 156 @ args = 0, pretend = 0, frame = 24
  200. 157 @ frame_needed = 1, uses_anonymous_args = 0
  201. 158 0000 B0B5 push {r4, r5, r7, lr}
  202. 159 .LCFI6:
  203. 160 .cfi_def_cfa_offset 16
  204. 161 .cfi_offset 4, -16
  205. 162 .cfi_offset 5, -12
  206. 163 .cfi_offset 7, -8
  207. 164 .cfi_offset 14, -4
  208. 165 0002 86B0 sub sp, sp, #24
  209. 166 .LCFI7:
  210. 167 .cfi_def_cfa_offset 40
  211. 168 0004 00AF add r7, sp, #0
  212. 169 .LCFI8:
  213. 170 .cfi_def_cfa_register 7
  214. 171 0006 F860 str r0, [r7, #12]
  215. 172 0008 B960 str r1, [r7, #8]
  216. 173 000a 1346 mov r3, r2
  217. 174 000c FB80 strh r3, [r7, #6] @ movhi
  218. 43:Core/Src/soft_flash.c **** static int8_t cur_sector = -1;
  219. 44:Core/Src/soft_flash.c **** uint8_t tar_sector = 0;
  220. 175 .loc 1 44 13
  221. 176 000e 0023 movs r3, #0
  222. 177 0010 7B75 strb r3, [r7, #21]
  223. 178 .LBB15:
  224. 179 .LBB16:
  225. 180 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h"
  226. 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//**
  227. 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h
  228. 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file
  229. 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4
  230. 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018
  231. 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/
  232. 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /*
  233. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 5
  234. 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved.
  235. 9:Drivers/CMSIS/Include/cmsis_gcc.h **** *
  236. 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0
  237. 11:Drivers/CMSIS/Include/cmsis_gcc.h **** *
  238. 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may
  239. 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License.
  240. 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at
  241. 15:Drivers/CMSIS/Include/cmsis_gcc.h **** *
  242. 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0
  243. 17:Drivers/CMSIS/Include/cmsis_gcc.h **** *
  244. 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software
  245. 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT
  246. 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  247. 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and
  248. 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License.
  249. 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */
  250. 24:Drivers/CMSIS/Include/cmsis_gcc.h ****
  251. 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H
  252. 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H
  253. 27:Drivers/CMSIS/Include/cmsis_gcc.h ****
  254. 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */
  255. 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  256. 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion"
  257. 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion"
  258. 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter"
  259. 33:Drivers/CMSIS/Include/cmsis_gcc.h ****
  260. 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */
  261. 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin
  262. 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0)
  263. 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  264. 38:Drivers/CMSIS/Include/cmsis_gcc.h ****
  265. 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */
  266. 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM
  267. 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm
  268. 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  269. 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE
  270. 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline
  271. 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  272. 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE
  273. 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline
  274. 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  275. 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE
  276. 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline
  277. 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  278. 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN
  279. 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__))
  280. 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  281. 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED
  282. 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used))
  283. 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  284. 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK
  285. 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak))
  286. 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  287. 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED
  288. 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1)))
  289. 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  290. 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT
  291. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 6
  292. 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
  293. 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  294. 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION
  295. 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1)))
  296. 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  297. 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */
  298. 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  299. 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
  300. 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
  301. 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; };
  302. 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
  303. 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
  304. 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  305. 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE
  306. 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  307. 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
  308. 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
  309. 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; };
  310. 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
  311. 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))-
  312. 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  313. 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ
  314. 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  315. 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
  316. 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
  317. 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; };
  318. 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
  319. 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add
  320. 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  321. 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE
  322. 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  323. 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
  324. 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
  325. 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; };
  326. 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
  327. 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))-
  328. 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  329. 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ
  330. 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push
  331. 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked"
  332. 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes"
  333. 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; };
  334. 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop
  335. 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add
  336. 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  337. 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED
  338. 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x)))
  339. 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  340. 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT
  341. 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict
  342. 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif
  343. 116:Drivers/CMSIS/Include/cmsis_gcc.h ****
  344. 117:Drivers/CMSIS/Include/cmsis_gcc.h ****
  345. 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */
  346. 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface
  347. 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
  348. 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{
  349. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 7
  350. 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */
  351. 123:Drivers/CMSIS/Include/cmsis_gcc.h ****
  352. 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
  353. 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts
  354. 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR.
  355. 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
  356. 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */
  357. 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void)
  358. 130:Drivers/CMSIS/Include/cmsis_gcc.h **** {
  359. 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory");
  360. 132:Drivers/CMSIS/Include/cmsis_gcc.h **** }
  361. 133:Drivers/CMSIS/Include/cmsis_gcc.h ****
  362. 134:Drivers/CMSIS/Include/cmsis_gcc.h ****
  363. 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /**
  364. 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts
  365. 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR.
  366. 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes.
  367. 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */
  368. 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void)
  369. 141:Drivers/CMSIS/Include/cmsis_gcc.h **** {
  370. 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory");
  371. 181 .loc 2 142 3
  372. 182 .syntax unified
  373. 183 @ 142 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
  374. 184 0012 72B6 cpsid i
  375. 185 @ 0 "" 2
  376. 143:Drivers/CMSIS/Include/cmsis_gcc.h **** }
  377. 186 .loc 2 143 1
  378. 187 .thumb
  379. 188 .syntax unified
  380. 189 0014 00BF nop
  381. 190 .LBE16:
  382. 191 .LBE15:
  383. 45:Core/Src/soft_flash.c ****
  384. 46:Core/Src/soft_flash.c **** __disable_irq();
  385. 47:Core/Src/soft_flash.c **** HAL_FLASH_Unlock();
  386. 192 .loc 1 47 5
  387. 193 0016 FFF7FEFF bl HAL_FLASH_Unlock
  388. 48:Core/Src/soft_flash.c ****
  389. 49:Core/Src/soft_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |
  390. 194 .loc 1 49 5
  391. 195 001a 254B ldr r3, .L17
  392. 196 001c F322 movs r2, #243
  393. 197 001e DA60 str r2, [r3, #12]
  394. 50:Core/Src/soft_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);//清除一些
  395. 51:Core/Src/soft_flash.c ****
  396. 52:Core/Src/soft_flash.c **** //是否要擦扇区
  397. 53:Core/Src/soft_flash.c **** tar_sector = GetSectorFromAddress(addr);//获取地址所在的扇区
  398. 198 .loc 1 53 18
  399. 199 0020 F868 ldr r0, [r7, #12]
  400. 200 0022 FFF7FEFF bl GetSectorFromAddress
  401. 201 0026 0346 mov r3, r0
  402. 202 .loc 1 53 16
  403. 203 0028 7B75 strb r3, [r7, #21]
  404. 54:Core/Src/soft_flash.c **** if(tar_sector != cur_sector)
  405. 204 .loc 1 54 19
  406. 205 002a 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
  407. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 8
  408. 206 002c 214A ldr r2, .L17+4
  409. 207 002e 92F90020 ldrsb r2, [r2]
  410. 208 .loc 1 54 7
  411. 209 0032 9342 cmp r3, r2
  412. 210 0034 08D0 beq .L12
  413. 55:Core/Src/soft_flash.c **** {
  414. 56:Core/Src/soft_flash.c **** FLASH_Erase_Sector(tar_sector,FLASH_VOLTAGE_RANGE_3);//擦除指定的闪存扇区(0~11)
  415. 211 .loc 1 56 9
  416. 212 0036 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2
  417. 213 0038 0221 movs r1, #2
  418. 214 003a 1846 mov r0, r3
  419. 215 003c FFF7FEFF bl FLASH_Erase_Sector
  420. 57:Core/Src/soft_flash.c **** cur_sector = tar_sector;
  421. 216 .loc 1 57 20
  422. 217 0040 97F91520 ldrsb r2, [r7, #21]
  423. 218 0044 1B4B ldr r3, .L17+4
  424. 219 0046 1A70 strb r2, [r3]
  425. 220 .L12:
  426. 58:Core/Src/soft_flash.c **** }
  427. 59:Core/Src/soft_flash.c ****
  428. 60:Core/Src/soft_flash.c **** uint16_t TempBuf = 0;
  429. 221 .loc 1 60 14
  430. 222 0048 0023 movs r3, #0
  431. 223 004a 7B82 strh r3, [r7, #18] @ movhi
  432. 224 .LBB17:
  433. 61:Core/Src/soft_flash.c **** for (uint16_t i = 0; i < Size; i++)
  434. 225 .loc 1 61 19
  435. 226 004c 0023 movs r3, #0
  436. 227 004e FB82 strh r3, [r7, #22] @ movhi
  437. 228 .loc 1 61 5
  438. 229 0050 21E0 b .L13
  439. 230 .L16:
  440. 231 .LBB18:
  441. 62:Core/Src/soft_flash.c **** {
  442. 63:Core/Src/soft_flash.c **** TempBuf = *(data + i);
  443. 232 .loc 1 63 26
  444. 233 0052 FB8A ldrh r3, [r7, #22]
  445. 234 0054 5B00 lsls r3, r3, #1
  446. 235 0056 BA68 ldr r2, [r7, #8]
  447. 236 0058 1344 add r3, r3, r2
  448. 237 .loc 1 63 17
  449. 238 005a 1B88 ldrh r3, [r3] @ movhi
  450. 239 005c 7B82 strh r3, [r7, #18] @ movhi
  451. 64:Core/Src/soft_flash.c **** HAL_StatusTypeDef a = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, addr + i * 2, TempBuf);
  452. 240 .loc 1 64 86
  453. 241 005e FB8A ldrh r3, [r7, #22]
  454. 242 0060 5B00 lsls r3, r3, #1
  455. 243 0062 1A46 mov r2, r3
  456. 244 .loc 1 64 31
  457. 245 0064 FB68 ldr r3, [r7, #12]
  458. 246 0066 D118 adds r1, r2, r3
  459. 247 0068 7B8A ldrh r3, [r7, #18]
  460. 248 006a 0022 movs r2, #0
  461. 249 006c 1C46 mov r4, r3
  462. 250 006e 1546 mov r5, r2
  463. 251 0070 2246 mov r2, r4
  464. 252 0072 2B46 mov r3, r5
  465. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 9
  466. 253 0074 0120 movs r0, #1
  467. 254 0076 FFF7FEFF bl HAL_FLASH_Program
  468. 255 007a 0346 mov r3, r0
  469. 256 007c 7B74 strb r3, [r7, #17]
  470. 65:Core/Src/soft_flash.c **** if (a != HAL_OK)
  471. 257 .loc 1 65 12
  472. 258 007e 7B7C ldrb r3, [r7, #17] @ zero_extendqisi2
  473. 259 0080 002B cmp r3, #0
  474. 260 0082 05D0 beq .L14
  475. 66:Core/Src/soft_flash.c **** {
  476. 67:Core/Src/soft_flash.c **** HAL_FLASH_Lock();
  477. 261 .loc 1 67 13
  478. 262 0084 FFF7FEFF bl HAL_FLASH_Lock
  479. 263 .LBB19:
  480. 264 .LBB20:
  481. 131:Drivers/CMSIS/Include/cmsis_gcc.h **** }
  482. 265 .loc 2 131 3
  483. 266 .syntax unified
  484. 267 @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
  485. 268 0088 62B6 cpsie i
  486. 269 @ 0 "" 2
  487. 132:Drivers/CMSIS/Include/cmsis_gcc.h ****
  488. 270 .loc 2 132 1
  489. 271 .thumb
  490. 272 .syntax unified
  491. 273 008a 00BF nop
  492. 274 .LBE20:
  493. 275 .LBE19:
  494. 68:Core/Src/soft_flash.c **** __enable_irq();
  495. 69:Core/Src/soft_flash.c **** return WRITE_FAIL;
  496. 276 .loc 1 69 20
  497. 277 008c 0223 movs r3, #2
  498. 278 008e 0BE0 b .L15
  499. 279 .L14:
  500. 280 .LBE18:
  501. 61:Core/Src/soft_flash.c **** {
  502. 281 .loc 1 61 37 discriminator 2
  503. 282 0090 FB8A ldrh r3, [r7, #22]
  504. 283 0092 0133 adds r3, r3, #1
  505. 284 0094 FB82 strh r3, [r7, #22] @ movhi
  506. 285 .L13:
  507. 61:Core/Src/soft_flash.c **** {
  508. 286 .loc 1 61 5 discriminator 1
  509. 287 0096 FA8A ldrh r2, [r7, #22]
  510. 288 0098 FB88 ldrh r3, [r7, #6]
  511. 289 009a 9A42 cmp r2, r3
  512. 290 009c D9D3 bcc .L16
  513. 291 .LBE17:
  514. 70:Core/Src/soft_flash.c **** }
  515. 71:Core/Src/soft_flash.c **** }
  516. 72:Core/Src/soft_flash.c **** HAL_FLASH_Lock();
  517. 292 .loc 1 72 5
  518. 293 009e FFF7FEFF bl HAL_FLASH_Lock
  519. 294 .LBB21:
  520. 295 .LBB22:
  521. 131:Drivers/CMSIS/Include/cmsis_gcc.h **** }
  522. 296 .loc 2 131 3
  523. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 10
  524. 297 .syntax unified
  525. 298 @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
  526. 299 00a2 62B6 cpsie i
  527. 300 @ 0 "" 2
  528. 132:Drivers/CMSIS/Include/cmsis_gcc.h ****
  529. 301 .loc 2 132 1
  530. 302 .thumb
  531. 303 .syntax unified
  532. 304 00a4 00BF nop
  533. 305 .LBE22:
  534. 306 .LBE21:
  535. 73:Core/Src/soft_flash.c **** __enable_irq();
  536. 74:Core/Src/soft_flash.c ****
  537. 75:Core/Src/soft_flash.c **** return WRITE_SUCCESS;
  538. 307 .loc 1 75 12
  539. 308 00a6 0323 movs r3, #3
  540. 309 .L15:
  541. 76:Core/Src/soft_flash.c **** }
  542. 310 .loc 1 76 1
  543. 311 00a8 1846 mov r0, r3
  544. 312 00aa 1837 adds r7, r7, #24
  545. 313 .LCFI9:
  546. 314 .cfi_def_cfa_offset 16
  547. 315 00ac BD46 mov sp, r7
  548. 316 .LCFI10:
  549. 317 .cfi_def_cfa_register 13
  550. 318 @ sp needed
  551. 319 00ae B0BD pop {r4, r5, r7, pc}
  552. 320 .L18:
  553. 321 .align 2
  554. 322 .L17:
  555. 323 00b0 003C0240 .word 1073888256
  556. 324 00b4 00000000 .word cur_sector.0
  557. 325 .cfi_endproc
  558. 326 .LFE236:
  559. 328 .section .text.wirte_update_flag,"ax",%progbits
  560. 329 .align 1
  561. 330 .global wirte_update_flag
  562. 331 .syntax unified
  563. 332 .thumb
  564. 333 .thumb_func
  565. 335 wirte_update_flag:
  566. 336 .LFB237:
  567. 77:Core/Src/soft_flash.c ****
  568. 78:Core/Src/soft_flash.c ****
  569. 79:Core/Src/soft_flash.c **** bool wirte_update_flag()
  570. 80:Core/Src/soft_flash.c **** {
  571. 337 .loc 1 80 1
  572. 338 .cfi_startproc
  573. 339 @ args = 0, pretend = 0, frame = 8
  574. 340 @ frame_needed = 1, uses_anonymous_args = 0
  575. 341 0000 80B5 push {r7, lr}
  576. 342 .LCFI11:
  577. 343 .cfi_def_cfa_offset 8
  578. 344 .cfi_offset 7, -8
  579. 345 .cfi_offset 14, -4
  580. 346 0002 82B0 sub sp, sp, #8
  581. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 11
  582. 347 .LCFI12:
  583. 348 .cfi_def_cfa_offset 16
  584. 349 0004 00AF add r7, sp, #0
  585. 350 .LCFI13:
  586. 351 .cfi_def_cfa_register 7
  587. 81:Core/Src/soft_flash.c **** uint8_t sect = 0;
  588. 352 .loc 1 81 13
  589. 353 0006 0023 movs r3, #0
  590. 354 0008 FB71 strb r3, [r7, #7]
  591. 355 .LBB23:
  592. 356 .LBB24:
  593. 142:Drivers/CMSIS/Include/cmsis_gcc.h **** }
  594. 357 .loc 2 142 3
  595. 358 .syntax unified
  596. 359 @ 142 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
  597. 360 000a 72B6 cpsid i
  598. 361 @ 0 "" 2
  599. 362 .loc 2 143 1
  600. 363 .thumb
  601. 364 .syntax unified
  602. 365 000c 00BF nop
  603. 366 .LBE24:
  604. 367 .LBE23:
  605. 82:Core/Src/soft_flash.c **** HAL_StatusTypeDef status;
  606. 83:Core/Src/soft_flash.c **** __disable_irq();
  607. 84:Core/Src/soft_flash.c **** HAL_FLASH_Unlock();
  608. 368 .loc 1 84 5
  609. 369 000e FFF7FEFF bl HAL_FLASH_Unlock
  610. 85:Core/Src/soft_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |
  611. 370 .loc 1 85 5
  612. 371 0012 124B ldr r3, .L22
  613. 372 0014 F322 movs r2, #243
  614. 373 0016 DA60 str r2, [r3, #12]
  615. 86:Core/Src/soft_flash.c **** FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);//清除一些
  616. 87:Core/Src/soft_flash.c ****
  617. 88:Core/Src/soft_flash.c **** sect = GetSectorFromAddress(FLASH_UPDATE_ADDR);//获取地址所在的扇区
  618. 374 .loc 1 88 12
  619. 375 0018 1148 ldr r0, .L22+4
  620. 376 001a FFF7FEFF bl GetSectorFromAddress
  621. 377 001e 0346 mov r3, r0
  622. 378 .loc 1 88 10
  623. 379 0020 FB71 strb r3, [r7, #7]
  624. 89:Core/Src/soft_flash.c ****
  625. 90:Core/Src/soft_flash.c **** FLASH_Erase_Sector(sect,FLASH_VOLTAGE_RANGE_3);//擦除指定的闪存扇区(0~11)
  626. 380 .loc 1 90 5
  627. 381 0022 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2
  628. 382 0024 0221 movs r1, #2
  629. 383 0026 1846 mov r0, r3
  630. 384 0028 FFF7FEFF bl FLASH_Erase_Sector
  631. 91:Core/Src/soft_flash.c ****
  632. 92:Core/Src/soft_flash.c **** status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, FLASH_UPDATE_ADDR, 0XF);
  633. 385 .loc 1 92 14
  634. 386 002c 4FF00F02 mov r2, #15
  635. 387 0030 4FF00003 mov r3, #0
  636. 388 0034 0A49 ldr r1, .L22+4
  637. 389 0036 0120 movs r0, #1
  638. 390 0038 FFF7FEFF bl HAL_FLASH_Program
  639. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 12
  640. 391 003c 0346 mov r3, r0
  641. 392 003e BB71 strb r3, [r7, #6]
  642. 93:Core/Src/soft_flash.c **** HAL_FLASH_Lock();
  643. 393 .loc 1 93 5
  644. 394 0040 FFF7FEFF bl HAL_FLASH_Lock
  645. 395 .LBB25:
  646. 396 .LBB26:
  647. 131:Drivers/CMSIS/Include/cmsis_gcc.h **** }
  648. 397 .loc 2 131 3
  649. 398 .syntax unified
  650. 399 @ 131 "Drivers/CMSIS/Include/cmsis_gcc.h" 1
  651. 400 0044 62B6 cpsie i
  652. 401 @ 0 "" 2
  653. 132:Drivers/CMSIS/Include/cmsis_gcc.h ****
  654. 402 .loc 2 132 1
  655. 403 .thumb
  656. 404 .syntax unified
  657. 405 0046 00BF nop
  658. 406 .LBE26:
  659. 407 .LBE25:
  660. 94:Core/Src/soft_flash.c **** __enable_irq();
  661. 95:Core/Src/soft_flash.c ****
  662. 96:Core/Src/soft_flash.c **** if(status == HAL_OK)
  663. 408 .loc 1 96 7
  664. 409 0048 BB79 ldrb r3, [r7, #6] @ zero_extendqisi2
  665. 410 004a 002B cmp r3, #0
  666. 411 004c 01D1 bne .L20
  667. 97:Core/Src/soft_flash.c **** return true;
  668. 412 .loc 1 97 16
  669. 413 004e 0123 movs r3, #1
  670. 414 0050 00E0 b .L21
  671. 415 .L20:
  672. 98:Core/Src/soft_flash.c **** else
  673. 99:Core/Src/soft_flash.c **** return false;
  674. 416 .loc 1 99 16
  675. 417 0052 0023 movs r3, #0
  676. 418 .L21:
  677. 100:Core/Src/soft_flash.c **** }
  678. 419 .loc 1 100 1
  679. 420 0054 1846 mov r0, r3
  680. 421 0056 0837 adds r7, r7, #8
  681. 422 .LCFI14:
  682. 423 .cfi_def_cfa_offset 8
  683. 424 0058 BD46 mov sp, r7
  684. 425 .LCFI15:
  685. 426 .cfi_def_cfa_register 13
  686. 427 @ sp needed
  687. 428 005a 80BD pop {r7, pc}
  688. 429 .L23:
  689. 430 .align 2
  690. 431 .L22:
  691. 432 005c 003C0240 .word 1073888256
  692. 433 0060 00800008 .word 134250496
  693. 434 .cfi_endproc
  694. 435 .LFE237:
  695. 437 .section .text.ReadFlashNBtye,"ax",%progbits
  696. 438 .align 1
  697. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 13
  698. 439 .global ReadFlashNBtye
  699. 440 .syntax unified
  700. 441 .thumb
  701. 442 .thumb_func
  702. 444 ReadFlashNBtye:
  703. 445 .LFB238:
  704. 101:Core/Src/soft_flash.c ****
  705. 102:Core/Src/soft_flash.c ****
  706. 103:Core/Src/soft_flash.c **** //FLASH读地址
  707. 104:Core/Src/soft_flash.c **** uint16_t ReadFlashNBtye(uint32_t ReadAddress, uint16_t *ReadBuf, int32_t ReadNum)
  708. 105:Core/Src/soft_flash.c **** {
  709. 446 .loc 1 105 1
  710. 447 .cfi_startproc
  711. 448 @ args = 0, pretend = 0, frame = 24
  712. 449 @ frame_needed = 1, uses_anonymous_args = 0
  713. 450 @ link register save eliminated.
  714. 451 0000 80B4 push {r7}
  715. 452 .LCFI16:
  716. 453 .cfi_def_cfa_offset 4
  717. 454 .cfi_offset 7, -4
  718. 455 0002 87B0 sub sp, sp, #28
  719. 456 .LCFI17:
  720. 457 .cfi_def_cfa_offset 32
  721. 458 0004 00AF add r7, sp, #0
  722. 459 .LCFI18:
  723. 460 .cfi_def_cfa_register 7
  724. 461 0006 F860 str r0, [r7, #12]
  725. 462 0008 B960 str r1, [r7, #8]
  726. 463 000a 7A60 str r2, [r7, #4]
  727. 106:Core/Src/soft_flash.c **** int DataNum = 0;
  728. 464 .loc 1 106 9
  729. 465 000c 0023 movs r3, #0
  730. 466 000e 7B61 str r3, [r7, #20]
  731. 107:Core/Src/soft_flash.c **** uint16_t up_flag = 0;
  732. 467 .loc 1 107 14
  733. 468 0010 0023 movs r3, #0
  734. 469 0012 7B82 strh r3, [r7, #18] @ movhi
  735. 108:Core/Src/soft_flash.c ****
  736. 109:Core/Src/soft_flash.c **** *ReadBuf = *(__IO uint16_t *)ReadAddress;
  737. 470 .loc 1 109 17
  738. 471 0014 FB68 ldr r3, [r7, #12]
  739. 472 .loc 1 109 16
  740. 473 0016 1B88 ldrh r3, [r3] @ movhi
  741. 474 0018 9AB2 uxth r2, r3
  742. 475 .loc 1 109 14
  743. 476 001a BB68 ldr r3, [r7, #8]
  744. 477 001c 1A80 strh r2, [r3] @ movhi
  745. 110:Core/Src/soft_flash.c **** up_flag = *ReadBuf;
  746. 478 .loc 1 110 13
  747. 479 001e BB68 ldr r3, [r7, #8]
  748. 480 0020 1B88 ldrh r3, [r3] @ movhi
  749. 481 0022 7B82 strh r3, [r7, #18] @ movhi
  750. 111:Core/Src/soft_flash.c **** DataNum++;
  751. 482 .loc 1 111 12
  752. 483 0024 7B69 ldr r3, [r7, #20]
  753. 484 0026 0133 adds r3, r3, #1
  754. 485 0028 7B61 str r3, [r7, #20]
  755. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 14
  756. 112:Core/Src/soft_flash.c ****
  757. 113:Core/Src/soft_flash.c **** return up_flag;
  758. 486 .loc 1 113 12
  759. 487 002a 7B8A ldrh r3, [r7, #18]
  760. 114:Core/Src/soft_flash.c **** }
  761. 488 .loc 1 114 1
  762. 489 002c 1846 mov r0, r3
  763. 490 002e 1C37 adds r7, r7, #28
  764. 491 .LCFI19:
  765. 492 .cfi_def_cfa_offset 4
  766. 493 0030 BD46 mov sp, r7
  767. 494 .LCFI20:
  768. 495 .cfi_def_cfa_register 13
  769. 496 @ sp needed
  770. 497 0032 5DF8047B ldr r7, [sp], #4
  771. 498 .LCFI21:
  772. 499 .cfi_restore 7
  773. 500 .cfi_def_cfa_offset 0
  774. 501 0036 7047 bx lr
  775. 502 .cfi_endproc
  776. 503 .LFE238:
  777. 505 .section .text.flash_read_updata_flag,"ax",%progbits
  778. 506 .align 1
  779. 507 .global flash_read_updata_flag
  780. 508 .syntax unified
  781. 509 .thumb
  782. 510 .thumb_func
  783. 512 flash_read_updata_flag:
  784. 513 .LFB239:
  785. 115:Core/Src/soft_flash.c **** //读取标志位
  786. 116:Core/Src/soft_flash.c **** uint32_t flash_read_updata_flag(void)
  787. 117:Core/Src/soft_flash.c **** {
  788. 514 .loc 1 117 1
  789. 515 .cfi_startproc
  790. 516 @ args = 0, pretend = 0, frame = 8
  791. 517 @ frame_needed = 1, uses_anonymous_args = 0
  792. 518 0000 80B5 push {r7, lr}
  793. 519 .LCFI22:
  794. 520 .cfi_def_cfa_offset 8
  795. 521 .cfi_offset 7, -8
  796. 522 .cfi_offset 14, -4
  797. 523 0002 82B0 sub sp, sp, #8
  798. 524 .LCFI23:
  799. 525 .cfi_def_cfa_offset 16
  800. 526 0004 00AF add r7, sp, #0
  801. 527 .LCFI24:
  802. 528 .cfi_def_cfa_register 7
  803. 118:Core/Src/soft_flash.c **** uint16_t temp_buff = 0;
  804. 529 .loc 1 118 14
  805. 530 0006 0023 movs r3, #0
  806. 531 0008 FB80 strh r3, [r7, #6] @ movhi
  807. 119:Core/Src/soft_flash.c **** uint32_t Address = 0;
  808. 532 .loc 1 119 14
  809. 533 000a 0023 movs r3, #0
  810. 534 000c 3B60 str r3, [r7]
  811. 120:Core/Src/soft_flash.c ****
  812. 121:Core/Src/soft_flash.c **** temp_buff = ReadFlashNBtye(FLASH_UPDATE_ADDR, (uint16_t *)&Address, 1);
  813. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 15
  814. 535 .loc 1 121 17
  815. 536 000e 3B46 mov r3, r7
  816. 537 0010 0122 movs r2, #1
  817. 538 0012 1946 mov r1, r3
  818. 539 0014 0448 ldr r0, .L28
  819. 540 0016 FFF7FEFF bl ReadFlashNBtye
  820. 541 001a 0346 mov r3, r0
  821. 542 001c FB80 strh r3, [r7, #6] @ movhi
  822. 122:Core/Src/soft_flash.c ****
  823. 123:Core/Src/soft_flash.c **** return temp_buff;
  824. 543 .loc 1 123 12
  825. 544 001e FB88 ldrh r3, [r7, #6]
  826. 124:Core/Src/soft_flash.c **** }
  827. 545 .loc 1 124 1
  828. 546 0020 1846 mov r0, r3
  829. 547 0022 0837 adds r7, r7, #8
  830. 548 .LCFI25:
  831. 549 .cfi_def_cfa_offset 8
  832. 550 0024 BD46 mov sp, r7
  833. 551 .LCFI26:
  834. 552 .cfi_def_cfa_register 13
  835. 553 @ sp needed
  836. 554 0026 80BD pop {r7, pc}
  837. 555 .L29:
  838. 556 .align 2
  839. 557 .L28:
  840. 558 0028 00800008 .word 134250496
  841. 559 .cfi_endproc
  842. 560 .LFE239:
  843. 562 .section .data.cur_sector.0,"aw"
  844. 565 cur_sector.0:
  845. 566 0000 FF .byte -1
  846. 567 .text
  847. 568 .Letext0:
  848. 569 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h"
  849. 570 .file 4 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h"
  850. 571 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h"
  851. 572 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h"
  852. ARM GAS C:\Users\10728\AppData\Local\Temp\cc1ni56I.s page 16
  853. DEFINED SYMBOLS
  854. *ABS*:00000000 soft_flash.c
  855. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:24 .data.sectStartAddr:00000000 sectStartAddr
  856. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:21 .data.sectStartAddr:00000000 $d
  857. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:38 .text.GetSectorFromAddress:00000000 $t
  858. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:44 .text.GetSectorFromAddress:00000000 GetSectorFromAddress
  859. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:141 .text.GetSectorFromAddress:00000068 $d
  860. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:146 .text.Flash_WriteData:00000000 $t
  861. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:152 .text.Flash_WriteData:00000000 Flash_WriteData
  862. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:323 .text.Flash_WriteData:000000b0 $d
  863. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:565 .data.cur_sector.0:00000000 cur_sector.0
  864. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:329 .text.wirte_update_flag:00000000 $t
  865. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:335 .text.wirte_update_flag:00000000 wirte_update_flag
  866. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:432 .text.wirte_update_flag:0000005c $d
  867. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:438 .text.ReadFlashNBtye:00000000 $t
  868. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:444 .text.ReadFlashNBtye:00000000 ReadFlashNBtye
  869. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:506 .text.flash_read_updata_flag:00000000 $t
  870. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:512 .text.flash_read_updata_flag:00000000 flash_read_updata_flag
  871. C:\Users\10728\AppData\Local\Temp\cc1ni56I.s:558 .text.flash_read_updata_flag:00000028 $d
  872. UNDEFINED SYMBOLS
  873. HAL_FLASH_Unlock
  874. FLASH_Erase_Sector
  875. HAL_FLASH_Program
  876. HAL_FLASH_Lock