soft_uart.lst 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057
  1. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.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_uart.c"
  17. 16 .text
  18. 17 .Ltext0:
  19. 18 .cfi_sections .debug_frame
  20. 19 .section .text.uart1_send_msg,"ax",%progbits
  21. 20 .align 1
  22. 21 .global uart1_send_msg
  23. 22 .syntax unified
  24. 23 .thumb
  25. 24 .thumb_func
  26. 26 uart1_send_msg:
  27. 27 .LFB238:
  28. 28 .file 1 "Core/Src/soft_uart.c"
  29. 1:Core/Src/soft_uart.c **** #include "soft_uart.h"
  30. 2:Core/Src/soft_uart.c **** #include "stm32f4xx_hal_uart.h"
  31. 3:Core/Src/soft_uart.c **** #include "string.h"
  32. 4:Core/Src/soft_uart.c **** #include "soft_flash.h"
  33. 5:Core/Src/soft_uart.c **** #include "soft_crc.h"
  34. 6:Core/Src/soft_uart.c ****
  35. 7:Core/Src/soft_uart.c **** extern UART_HandleTypeDef huart1;
  36. 8:Core/Src/soft_uart.c **** void uart1_send_msg(uint8_t *data, uint8_t size)
  37. 9:Core/Src/soft_uart.c **** {
  38. 29 .loc 1 9 1
  39. 30 .cfi_startproc
  40. 31 @ args = 0, pretend = 0, frame = 8
  41. 32 @ frame_needed = 1, uses_anonymous_args = 0
  42. 33 0000 80B5 push {r7, lr}
  43. 34 .LCFI0:
  44. 35 .cfi_def_cfa_offset 8
  45. 36 .cfi_offset 7, -8
  46. 37 .cfi_offset 14, -4
  47. 38 0002 82B0 sub sp, sp, #8
  48. 39 .LCFI1:
  49. 40 .cfi_def_cfa_offset 16
  50. 41 0004 00AF add r7, sp, #0
  51. 42 .LCFI2:
  52. 43 .cfi_def_cfa_register 7
  53. 44 0006 7860 str r0, [r7, #4]
  54. 45 0008 0B46 mov r3, r1
  55. 46 000a FB70 strb r3, [r7, #3]
  56. 10:Core/Src/soft_uart.c **** static uint32_t send_time = 0;
  57. 11:Core/Src/soft_uart.c ****
  58. 12:Core/Src/soft_uart.c **** send_time = HAL_GetTick();
  59. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 2
  60. 47 .loc 1 12 17
  61. 48 000c FFF7FEFF bl HAL_GetTick
  62. 49 0010 0346 mov r3, r0
  63. 50 .loc 1 12 15
  64. 51 0012 0A4A ldr r2, .L3
  65. 52 0014 1360 str r3, [r2]
  66. 13:Core/Src/soft_uart.c **** while (HAL_GetTick() - send_time < 1)
  67. 53 .loc 1 13 11
  68. 54 0016 00BF nop
  69. 55 .L2:
  70. 56 .loc 1 13 12 discriminator 1
  71. 57 0018 FFF7FEFF bl HAL_GetTick
  72. 58 001c 0246 mov r2, r0
  73. 59 .loc 1 13 38 discriminator 1
  74. 60 001e 074B ldr r3, .L3
  75. 61 0020 1B68 ldr r3, [r3]
  76. 62 .loc 1 13 11 discriminator 1
  77. 63 0022 9A42 cmp r2, r3
  78. 64 0024 F8D0 beq .L2
  79. 14:Core/Src/soft_uart.c **** ;
  80. 15:Core/Src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart1, data, size);
  81. 65 .loc 1 15 5
  82. 66 0026 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2
  83. 67 0028 9BB2 uxth r3, r3
  84. 68 002a 1A46 mov r2, r3
  85. 69 002c 7968 ldr r1, [r7, #4]
  86. 70 002e 0448 ldr r0, .L3+4
  87. 71 0030 FFF7FEFF bl HAL_UART_Transmit_DMA
  88. 16:Core/Src/soft_uart.c **** }
  89. 72 .loc 1 16 1
  90. 73 0034 00BF nop
  91. 74 0036 0837 adds r7, r7, #8
  92. 75 .LCFI3:
  93. 76 .cfi_def_cfa_offset 8
  94. 77 0038 BD46 mov sp, r7
  95. 78 .LCFI4:
  96. 79 .cfi_def_cfa_register 13
  97. 80 @ sp needed
  98. 81 003a 80BD pop {r7, pc}
  99. 82 .L4:
  100. 83 .align 2
  101. 84 .L3:
  102. 85 003c 00000000 .word send_time.0
  103. 86 0040 00000000 .word huart1
  104. 87 .cfi_endproc
  105. 88 .LFE238:
  106. 90 .global FMU_uart_buf
  107. 91 .section .bss.FMU_uart_buf,"aw",%nobits
  108. 92 .align 2
  109. 95 FMU_uart_buf:
  110. 96 0000 00000000 .space 256
  111. 96 00000000
  112. 96 00000000
  113. 96 00000000
  114. 96 00000000
  115. 97 .global update
  116. 98 .section .bss.update,"aw",%nobits
  117. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 3
  118. 99 .align 2
  119. 102 update:
  120. 103 0000 00000000 .space 257
  121. 103 00000000
  122. 103 00000000
  123. 103 00000000
  124. 103 00000000
  125. 104 .section .text.USER_UART_IRQHandler,"ax",%progbits
  126. 105 .align 1
  127. 106 .global USER_UART_IRQHandler
  128. 107 .syntax unified
  129. 108 .thumb
  130. 109 .thumb_func
  131. 111 USER_UART_IRQHandler:
  132. 112 .LFB239:
  133. 17:Core/Src/soft_uart.c ****
  134. 18:Core/Src/soft_uart.c **** uint8_t FMU_uart_buf[MAX_UART_BUF] = {0};
  135. 19:Core/Src/soft_uart.c **** Update update;
  136. 20:Core/Src/soft_uart.c **** void USER_UART_IRQHandler(UART_HandleTypeDef *huart)
  137. 21:Core/Src/soft_uart.c **** {
  138. 113 .loc 1 21 1
  139. 114 .cfi_startproc
  140. 115 @ args = 0, pretend = 0, frame = 16
  141. 116 @ frame_needed = 1, uses_anonymous_args = 0
  142. 117 0000 80B5 push {r7, lr}
  143. 118 .LCFI5:
  144. 119 .cfi_def_cfa_offset 8
  145. 120 .cfi_offset 7, -8
  146. 121 .cfi_offset 14, -4
  147. 122 0002 84B0 sub sp, sp, #16
  148. 123 .LCFI6:
  149. 124 .cfi_def_cfa_offset 24
  150. 125 0004 00AF add r7, sp, #0
  151. 126 .LCFI7:
  152. 127 .cfi_def_cfa_register 7
  153. 128 0006 7860 str r0, [r7, #4]
  154. 22:Core/Src/soft_uart.c **** uint32_t recv_count = 0;
  155. 129 .loc 1 22 14
  156. 130 0008 0023 movs r3, #0
  157. 131 000a FB60 str r3, [r7, #12]
  158. 23:Core/Src/soft_uart.c **** if (huart == &huart1)
  159. 132 .loc 1 23 8
  160. 133 000c 7B68 ldr r3, [r7, #4]
  161. 134 000e 244A ldr r2, .L9
  162. 135 0010 9342 cmp r3, r2
  163. 136 0012 40D1 bne .L8
  164. 24:Core/Src/soft_uart.c **** {
  165. 25:Core/Src/soft_uart.c **** if (RESET != __HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))
  166. 137 .loc 1 25 22
  167. 138 0014 7B68 ldr r3, [r7, #4]
  168. 139 0016 1B68 ldr r3, [r3]
  169. 140 0018 1B68 ldr r3, [r3]
  170. 141 001a 03F01003 and r3, r3, #16
  171. 142 .loc 1 25 12
  172. 143 001e 102B cmp r3, #16
  173. 144 0020 39D1 bne .L8
  174. 145 .LBB2:
  175. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 4
  176. 26:Core/Src/soft_uart.c **** {
  177. 27:Core/Src/soft_uart.c **** __HAL_UART_CLEAR_IDLEFLAG(huart);
  178. 146 .loc 1 27 13
  179. 147 0022 0023 movs r3, #0
  180. 148 0024 BB60 str r3, [r7, #8]
  181. 149 0026 7B68 ldr r3, [r7, #4]
  182. 150 0028 1B68 ldr r3, [r3]
  183. 151 002a 1B68 ldr r3, [r3]
  184. 152 002c BB60 str r3, [r7, #8]
  185. 153 002e 7B68 ldr r3, [r7, #4]
  186. 154 0030 1B68 ldr r3, [r3]
  187. 155 0032 5B68 ldr r3, [r3, #4]
  188. 156 0034 BB60 str r3, [r7, #8]
  189. 157 0036 BB68 ldr r3, [r7, #8]
  190. 158 .LBE2:
  191. 28:Core/Src/soft_uart.c **** HAL_UART_AbortReceive(huart);
  192. 159 .loc 1 28 13
  193. 160 0038 7868 ldr r0, [r7, #4]
  194. 161 003a FFF7FEFF bl HAL_UART_AbortReceive
  195. 29:Core/Src/soft_uart.c **** recv_count = MAX_UART_BUF - __HAL_DMA_GET_COUNTER(huart->hdmarx);
  196. 162 .loc 1 29 41
  197. 163 003e 7B68 ldr r3, [r7, #4]
  198. 164 0040 9B6B ldr r3, [r3, #56]
  199. 165 0042 1B68 ldr r3, [r3]
  200. 166 0044 5B68 ldr r3, [r3, #4]
  201. 167 .loc 1 29 24
  202. 168 0046 C3F58073 rsb r3, r3, #256
  203. 169 004a FB60 str r3, [r7, #12]
  204. 30:Core/Src/soft_uart.c ****
  205. 31:Core/Src/soft_uart.c **** // 检测是否是新的一包数据
  206. 32:Core/Src/soft_uart.c **** if (FMU_uart_buf[0] == 0xFE && FMU_uart_buf[4] == 204 && update.usebuf_flag == false)
  207. 170 .loc 1 32 29
  208. 171 004c 154B ldr r3, .L9+4
  209. 172 004e 1B78 ldrb r3, [r3] @ zero_extendqisi2
  210. 173 .loc 1 32 16
  211. 174 0050 FE2B cmp r3, #254
  212. 175 0052 14D1 bne .L7
  213. 176 .loc 1 32 56 discriminator 1
  214. 177 0054 134B ldr r3, .L9+4
  215. 178 0056 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2
  216. 179 .loc 1 32 41 discriminator 1
  217. 180 0058 CC2B cmp r3, #204
  218. 181 005a 10D1 bne .L7
  219. 182 .loc 1 32 76 discriminator 2
  220. 183 005c 124B ldr r3, .L9+8
  221. 184 005e 93F80031 ldrb r3, [r3, #256] @ zero_extendqisi2
  222. 185 .loc 1 32 89 discriminator 2
  223. 186 0062 83F00103 eor r3, r3, #1
  224. 187 0066 DBB2 uxtb r3, r3
  225. 188 .loc 1 32 67 discriminator 2
  226. 189 0068 002B cmp r3, #0
  227. 190 006a 08D0 beq .L7
  228. 33:Core/Src/soft_uart.c **** {
  229. 34:Core/Src/soft_uart.c **** memcpy(update.data, FMU_uart_buf, recv_count);
  230. 191 .loc 1 34 17
  231. 192 006c FA68 ldr r2, [r7, #12]
  232. 193 006e 0D49 ldr r1, .L9+4
  233. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 5
  234. 194 0070 0D48 ldr r0, .L9+8
  235. 195 0072 FFF7FEFF bl memcpy
  236. 35:Core/Src/soft_uart.c **** update.usebuf_flag = true;
  237. 196 .loc 1 35 36
  238. 197 0076 0C4B ldr r3, .L9+8
  239. 198 0078 0122 movs r2, #1
  240. 199 007a 83F80021 strb r2, [r3, #256]
  241. 200 .L7:
  242. 36:Core/Src/soft_uart.c **** }
  243. 37:Core/Src/soft_uart.c ****
  244. 38:Core/Src/soft_uart.c **** memset(FMU_uart_buf, 0, MAX_UART_BUF);
  245. 201 .loc 1 38 13
  246. 202 007e 4FF48072 mov r2, #256
  247. 203 0082 0021 movs r1, #0
  248. 204 0084 0748 ldr r0, .L9+4
  249. 205 0086 FFF7FEFF bl memset
  250. 39:Core/Src/soft_uart.c **** HAL_UART_Receive_DMA(huart, FMU_uart_buf, MAX_UART_BUF);
  251. 206 .loc 1 39 13
  252. 207 008a 4FF48072 mov r2, #256
  253. 208 008e 0549 ldr r1, .L9+4
  254. 209 0090 7868 ldr r0, [r7, #4]
  255. 210 0092 FFF7FEFF bl HAL_UART_Receive_DMA
  256. 211 .L8:
  257. 40:Core/Src/soft_uart.c **** }
  258. 41:Core/Src/soft_uart.c **** }
  259. 42:Core/Src/soft_uart.c **** }
  260. 212 .loc 1 42 1
  261. 213 0096 00BF nop
  262. 214 0098 1037 adds r7, r7, #16
  263. 215 .LCFI8:
  264. 216 .cfi_def_cfa_offset 8
  265. 217 009a BD46 mov sp, r7
  266. 218 .LCFI9:
  267. 219 .cfi_def_cfa_register 13
  268. 220 @ sp needed
  269. 221 009c 80BD pop {r7, pc}
  270. 222 .L10:
  271. 223 009e 00BF .align 2
  272. 224 .L9:
  273. 225 00a0 00000000 .word huart1
  274. 226 00a4 00000000 .word FMU_uart_buf
  275. 227 00a8 00000000 .word update
  276. 228 .cfi_endproc
  277. 229 .LFE239:
  278. 231 .global msg_buf
  279. 232 .section .bss.msg_buf,"aw",%nobits
  280. 233 .align 2
  281. 236 msg_buf:
  282. 237 0000 00000000 .space 64
  283. 237 00000000
  284. 237 00000000
  285. 237 00000000
  286. 237 00000000
  287. 238 .section .text.Update_ack_fmu,"ax",%progbits
  288. 239 .align 1
  289. 240 .global Update_ack_fmu
  290. 241 .syntax unified
  291. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 6
  292. 242 .thumb
  293. 243 .thumb_func
  294. 245 Update_ack_fmu:
  295. 246 .LFB240:
  296. 43:Core/Src/soft_uart.c ****
  297. 44:Core/Src/soft_uart.c **** uint8_t msg_buf[64] = {0};
  298. 45:Core/Src/soft_uart.c **** void Update_ack_fmu(uint8_t msg_id, uint8_t *ackbuf)
  299. 46:Core/Src/soft_uart.c **** {
  300. 247 .loc 1 46 1
  301. 248 .cfi_startproc
  302. 249 @ args = 0, pretend = 0, frame = 16
  303. 250 @ frame_needed = 1, uses_anonymous_args = 0
  304. 251 0000 80B5 push {r7, lr}
  305. 252 .LCFI10:
  306. 253 .cfi_def_cfa_offset 8
  307. 254 .cfi_offset 7, -8
  308. 255 .cfi_offset 14, -4
  309. 256 0002 84B0 sub sp, sp, #16
  310. 257 .LCFI11:
  311. 258 .cfi_def_cfa_offset 24
  312. 259 0004 00AF add r7, sp, #0
  313. 260 .LCFI12:
  314. 261 .cfi_def_cfa_register 7
  315. 262 0006 0346 mov r3, r0
  316. 263 0008 3960 str r1, [r7]
  317. 264 000a FB71 strb r3, [r7, #7]
  318. 47:Core/Src/soft_uart.c ****
  319. 48:Core/Src/soft_uart.c **** int index = 0;
  320. 265 .loc 1 48 9
  321. 266 000c 0023 movs r3, #0
  322. 267 000e FB60 str r3, [r7, #12]
  323. 49:Core/Src/soft_uart.c **** msg_buf[index++] = 0xFE;
  324. 268 .loc 1 49 18
  325. 269 0010 FB68 ldr r3, [r7, #12]
  326. 270 0012 5A1C adds r2, r3, #1
  327. 271 0014 FA60 str r2, [r7, #12]
  328. 272 .loc 1 49 22
  329. 273 0016 2D4A ldr r2, .L12
  330. 274 0018 FE21 movs r1, #254
  331. 275 001a D154 strb r1, [r2, r3]
  332. 50:Core/Src/soft_uart.c **** msg_buf[index++] = 0;
  333. 276 .loc 1 50 18
  334. 277 001c FB68 ldr r3, [r7, #12]
  335. 278 001e 5A1C adds r2, r3, #1
  336. 279 0020 FA60 str r2, [r7, #12]
  337. 280 .loc 1 50 22
  338. 281 0022 2A4A ldr r2, .L12
  339. 282 0024 0021 movs r1, #0
  340. 283 0026 D154 strb r1, [r2, r3]
  341. 51:Core/Src/soft_uart.c **** msg_buf[index++] = 0;
  342. 284 .loc 1 51 18
  343. 285 0028 FB68 ldr r3, [r7, #12]
  344. 286 002a 5A1C adds r2, r3, #1
  345. 287 002c FA60 str r2, [r7, #12]
  346. 288 .loc 1 51 22
  347. 289 002e 274A ldr r2, .L12
  348. 290 0030 0021 movs r1, #0
  349. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 7
  350. 291 0032 D154 strb r1, [r2, r3]
  351. 52:Core/Src/soft_uart.c **** msg_buf[index++] = 0x00;
  352. 292 .loc 1 52 18
  353. 293 0034 FB68 ldr r3, [r7, #12]
  354. 294 0036 5A1C adds r2, r3, #1
  355. 295 0038 FA60 str r2, [r7, #12]
  356. 296 .loc 1 52 22
  357. 297 003a 244A ldr r2, .L12
  358. 298 003c 0021 movs r1, #0
  359. 299 003e D154 strb r1, [r2, r3]
  360. 53:Core/Src/soft_uart.c **** msg_buf[index++] = 204;
  361. 300 .loc 1 53 18
  362. 301 0040 FB68 ldr r3, [r7, #12]
  363. 302 0042 5A1C adds r2, r3, #1
  364. 303 0044 FA60 str r2, [r7, #12]
  365. 304 .loc 1 53 22
  366. 305 0046 214A ldr r2, .L12
  367. 306 0048 CC21 movs r1, #204
  368. 307 004a D154 strb r1, [r2, r3]
  369. 54:Core/Src/soft_uart.c **** msg_buf[index++] = 21;
  370. 308 .loc 1 54 18
  371. 309 004c FB68 ldr r3, [r7, #12]
  372. 310 004e 5A1C adds r2, r3, #1
  373. 311 0050 FA60 str r2, [r7, #12]
  374. 312 .loc 1 54 22
  375. 313 0052 1E4A ldr r2, .L12
  376. 314 0054 1521 movs r1, #21
  377. 315 0056 D154 strb r1, [r2, r3]
  378. 55:Core/Src/soft_uart.c ****
  379. 56:Core/Src/soft_uart.c **** msg_buf[index++] = msg_id;
  380. 316 .loc 1 56 18
  381. 317 0058 FB68 ldr r3, [r7, #12]
  382. 318 005a 5A1C adds r2, r3, #1
  383. 319 005c FA60 str r2, [r7, #12]
  384. 320 .loc 1 56 22
  385. 321 005e 1B49 ldr r1, .L12
  386. 322 0060 FA79 ldrb r2, [r7, #7]
  387. 323 0062 CA54 strb r2, [r1, r3]
  388. 57:Core/Src/soft_uart.c **** msg_buf[index++] = *ackbuf;
  389. 324 .loc 1 57 18
  390. 325 0064 FB68 ldr r3, [r7, #12]
  391. 326 0066 5A1C adds r2, r3, #1
  392. 327 0068 FA60 str r2, [r7, #12]
  393. 328 .loc 1 57 24
  394. 329 006a 3A68 ldr r2, [r7]
  395. 330 006c 1178 ldrb r1, [r2] @ zero_extendqisi2
  396. 331 .loc 1 57 22
  397. 332 006e 174A ldr r2, .L12
  398. 333 0070 D154 strb r1, [r2, r3]
  399. 58:Core/Src/soft_uart.c **** msg_buf[index++] = *(ackbuf + 1);
  400. 334 .loc 1 58 18
  401. 335 0072 FB68 ldr r3, [r7, #12]
  402. 336 0074 5A1C adds r2, r3, #1
  403. 337 0076 FA60 str r2, [r7, #12]
  404. 338 .loc 1 58 22
  405. 339 0078 3A68 ldr r2, [r7]
  406. 340 007a 5178 ldrb r1, [r2, #1] @ zero_extendqisi2
  407. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 8
  408. 341 007c 134A ldr r2, .L12
  409. 342 007e D154 strb r1, [r2, r3]
  410. 59:Core/Src/soft_uart.c **** msg_buf[index++] = 1;
  411. 343 .loc 1 59 18
  412. 344 0080 FB68 ldr r3, [r7, #12]
  413. 345 0082 5A1C adds r2, r3, #1
  414. 346 0084 FA60 str r2, [r7, #12]
  415. 347 .loc 1 59 22
  416. 348 0086 114A ldr r2, .L12
  417. 349 0088 0121 movs r1, #1
  418. 350 008a D154 strb r1, [r2, r3]
  419. 60:Core/Src/soft_uart.c ****
  420. 61:Core/Src/soft_uart.c **** msg_buf[1] = index - 6;
  421. 351 .loc 1 61 24
  422. 352 008c FB68 ldr r3, [r7, #12]
  423. 353 008e DBB2 uxtb r3, r3
  424. 354 0090 063B subs r3, r3, #6
  425. 355 0092 DAB2 uxtb r2, r3
  426. 356 .loc 1 61 16
  427. 357 0094 0D4B ldr r3, .L12
  428. 358 0096 5A70 strb r2, [r3, #1]
  429. 62:Core/Src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index);
  430. 359 .loc 1 62 25
  431. 360 0098 FB68 ldr r3, [r7, #12]
  432. 361 009a 9BB2 uxth r3, r3
  433. 362 009c 1946 mov r1, r3
  434. 363 009e 0B48 ldr r0, .L12
  435. 364 00a0 FFF7FEFF bl Get_Crc16
  436. 365 00a4 0346 mov r3, r0
  437. 366 .loc 1 62 14
  438. 367 00a6 7B81 strh r3, [r7, #10] @ movhi
  439. 63:Core/Src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2);
  440. 368 .loc 1 63 12
  441. 369 00a8 FB68 ldr r3, [r7, #12]
  442. 370 00aa 084A ldr r2, .L12
  443. 371 00ac 1344 add r3, r3, r2
  444. 372 00ae 7A89 ldrh r2, [r7, #10]
  445. 373 .loc 1 63 5
  446. 374 00b0 1A80 strh r2, [r3] @ unaligned
  447. 64:Core/Src/soft_uart.c **** index += 2;
  448. 375 .loc 1 64 11
  449. 376 00b2 FB68 ldr r3, [r7, #12]
  450. 377 00b4 0233 adds r3, r3, #2
  451. 378 00b6 FB60 str r3, [r7, #12]
  452. 65:Core/Src/soft_uart.c ****
  453. 66:Core/Src/soft_uart.c **** uart1_send_msg(msg_buf, index);
  454. 379 .loc 1 66 5
  455. 380 00b8 FB68 ldr r3, [r7, #12]
  456. 381 00ba DBB2 uxtb r3, r3
  457. 382 00bc 1946 mov r1, r3
  458. 383 00be 0348 ldr r0, .L12
  459. 384 00c0 FFF7FEFF bl uart1_send_msg
  460. 67:Core/Src/soft_uart.c **** }
  461. 385 .loc 1 67 1
  462. 386 00c4 00BF nop
  463. 387 00c6 1037 adds r7, r7, #16
  464. 388 .LCFI13:
  465. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 9
  466. 389 .cfi_def_cfa_offset 8
  467. 390 00c8 BD46 mov sp, r7
  468. 391 .LCFI14:
  469. 392 .cfi_def_cfa_register 13
  470. 393 @ sp needed
  471. 394 00ca 80BD pop {r7, pc}
  472. 395 .L13:
  473. 396 .align 2
  474. 397 .L12:
  475. 398 00cc 00000000 .word msg_buf
  476. 399 .cfi_endproc
  477. 400 .LFE240:
  478. 402 .section .text.check_usart_is_ok,"ax",%progbits
  479. 403 .align 1
  480. 404 .global check_usart_is_ok
  481. 405 .syntax unified
  482. 406 .thumb
  483. 407 .thumb_func
  484. 409 check_usart_is_ok:
  485. 410 .LFB241:
  486. 68:Core/Src/soft_uart.c ****
  487. 69:Core/Src/soft_uart.c **** bool check_usart_is_ok(void)
  488. 70:Core/Src/soft_uart.c **** {
  489. 411 .loc 1 70 1
  490. 412 .cfi_startproc
  491. 413 @ args = 0, pretend = 0, frame = 0
  492. 414 @ frame_needed = 1, uses_anonymous_args = 0
  493. 415 @ link register save eliminated.
  494. 416 0000 80B4 push {r7}
  495. 417 .LCFI15:
  496. 418 .cfi_def_cfa_offset 4
  497. 419 .cfi_offset 7, -4
  498. 420 0002 00AF add r7, sp, #0
  499. 421 .LCFI16:
  500. 422 .cfi_def_cfa_register 7
  501. 71:Core/Src/soft_uart.c **** if (huart1.gState == HAL_UART_STATE_READY && (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) != RES
  502. 423 .loc 1 71 15
  503. 424 0004 0D4B ldr r3, .L19
  504. 425 0006 93F83D30 ldrb r3, [r3, #61]
  505. 426 000a DBB2 uxtb r3, r3
  506. 427 .loc 1 71 8
  507. 428 000c 202B cmp r3, #32
  508. 429 000e 0DD1 bne .L15
  509. 430 .loc 1 71 51 discriminator 1
  510. 431 0010 0A4B ldr r3, .L19
  511. 432 0012 1B68 ldr r3, [r3]
  512. 433 0014 1B68 ldr r3, [r3]
  513. 434 0016 03F04003 and r3, r3, #64
  514. 435 .loc 1 71 47 discriminator 1
  515. 436 001a 402B cmp r3, #64
  516. 437 001c 06D1 bne .L15
  517. 438 .loc 1 71 106 discriminator 2
  518. 439 001e 074B ldr r3, .L19
  519. 440 0020 1B68 ldr r3, [r3]
  520. 441 0022 1B68 ldr r3, [r3]
  521. 442 0024 03F08003 and r3, r3, #128
  522. 443 .loc 1 71 103 discriminator 2
  523. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 10
  524. 444 0028 802B cmp r3, #128
  525. 445 002a 01D0 beq .L18
  526. 446 .L15:
  527. 72:Core/Src/soft_uart.c **** {
  528. 73:Core/Src/soft_uart.c **** }
  529. 74:Core/Src/soft_uart.c **** else
  530. 75:Core/Src/soft_uart.c **** {
  531. 76:Core/Src/soft_uart.c **** return false;
  532. 447 .loc 1 76 16
  533. 448 002c 0023 movs r3, #0
  534. 449 002e 00E0 b .L17
  535. 450 .L18:
  536. 77:Core/Src/soft_uart.c **** }
  537. 78:Core/Src/soft_uart.c **** return true;
  538. 451 .loc 1 78 12
  539. 452 0030 0123 movs r3, #1
  540. 453 .L17:
  541. 79:Core/Src/soft_uart.c **** }
  542. 454 .loc 1 79 1
  543. 455 0032 1846 mov r0, r3
  544. 456 0034 BD46 mov sp, r7
  545. 457 .LCFI17:
  546. 458 .cfi_def_cfa_register 13
  547. 459 @ sp needed
  548. 460 0036 5DF8047B ldr r7, [sp], #4
  549. 461 .LCFI18:
  550. 462 .cfi_restore 7
  551. 463 .cfi_def_cfa_offset 0
  552. 464 003a 7047 bx lr
  553. 465 .L20:
  554. 466 .align 2
  555. 467 .L19:
  556. 468 003c 00000000 .word huart1
  557. 469 .cfi_endproc
  558. 470 .LFE241:
  559. 472 .global addr_offset
  560. 473 .section .bss.addr_offset,"aw",%nobits
  561. 474 .align 2
  562. 477 addr_offset:
  563. 478 0000 00000000 .space 4
  564. 479 .global cur_pack_num
  565. 480 .section .bss.cur_pack_num,"aw",%nobits
  566. 481 .align 2
  567. 484 cur_pack_num:
  568. 485 0000 00000000 .space 4
  569. 486 .global update_complete
  570. 487 .section .bss.update_complete,"aw",%nobits
  571. 490 update_complete:
  572. 491 0000 00 .space 1
  573. 492 .section .text.update_function,"ax",%progbits
  574. 493 .align 1
  575. 494 .global update_function
  576. 495 .syntax unified
  577. 496 .thumb
  578. 497 .thumb_func
  579. 499 update_function:
  580. 500 .LFB242:
  581. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 11
  582. 80:Core/Src/soft_uart.c ****
  583. 81:Core/Src/soft_uart.c **** uint32_t addr_offset = 0;
  584. 82:Core/Src/soft_uart.c **** uint32_t cur_pack_num = 0;
  585. 83:Core/Src/soft_uart.c **** bool update_complete = false;
  586. 84:Core/Src/soft_uart.c **** void update_function(void)
  587. 85:Core/Src/soft_uart.c **** {
  588. 501 .loc 1 85 1
  589. 502 .cfi_startproc
  590. 503 @ args = 0, pretend = 0, frame = 8
  591. 504 @ frame_needed = 1, uses_anonymous_args = 0
  592. 505 0000 80B5 push {r7, lr}
  593. 506 .LCFI19:
  594. 507 .cfi_def_cfa_offset 8
  595. 508 .cfi_offset 7, -8
  596. 509 .cfi_offset 14, -4
  597. 510 0002 82B0 sub sp, sp, #8
  598. 511 .LCFI20:
  599. 512 .cfi_def_cfa_offset 16
  600. 513 0004 00AF add r7, sp, #0
  601. 514 .LCFI21:
  602. 515 .cfi_def_cfa_register 7
  603. 86:Core/Src/soft_uart.c **** uint16_t crc = Get_Crc16(update.data, (uint16_t)update.data[LEN] + 2 + 6);
  604. 516 .loc 1 86 64
  605. 517 0006 594B ldr r3, .L39
  606. 518 0008 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
  607. 519 000a 9BB2 uxth r3, r3
  608. 520 .loc 1 86 20
  609. 521 000c 0833 adds r3, r3, #8
  610. 522 000e 9BB2 uxth r3, r3
  611. 523 0010 1946 mov r1, r3
  612. 524 0012 5648 ldr r0, .L39
  613. 525 0014 FFF7FEFF bl Get_Crc16
  614. 526 0018 0346 mov r3, r0
  615. 527 001a FB80 strh r3, [r7, #6] @ movhi
  616. 87:Core/Src/soft_uart.c **** int temp_32t = 0;
  617. 528 .loc 1 87 9
  618. 529 001c 0023 movs r3, #0
  619. 530 001e 3B60 str r3, [r7]
  620. 88:Core/Src/soft_uart.c ****
  621. 89:Core/Src/soft_uart.c **** if (crc != 0 || check_usart_is_ok() != true)
  622. 531 .loc 1 89 8
  623. 532 0020 FB88 ldrh r3, [r7, #6]
  624. 533 0022 002B cmp r3, #0
  625. 534 0024 07D1 bne .L22
  626. 535 .loc 1 89 21 discriminator 1
  627. 536 0026 FFF7FEFF bl check_usart_is_ok
  628. 537 002a 0346 mov r3, r0
  629. 538 .loc 1 89 41 discriminator 1
  630. 539 002c 83F00103 eor r3, r3, #1
  631. 540 0030 DBB2 uxtb r3, r3
  632. 541 .loc 1 89 18 discriminator 1
  633. 542 0032 002B cmp r3, #0
  634. 543 0034 04D0 beq .L23
  635. 544 .L22:
  636. 90:Core/Src/soft_uart.c **** {
  637. 91:Core/Src/soft_uart.c **** update.usebuf_flag = false;
  638. 545 .loc 1 91 28
  639. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 12
  640. 546 0036 4D4B ldr r3, .L39
  641. 547 0038 0022 movs r2, #0
  642. 548 003a 83F80021 strb r2, [r3, #256]
  643. 549 003e 92E0 b .L21
  644. 550 .L23:
  645. 92:Core/Src/soft_uart.c **** return;
  646. 93:Core/Src/soft_uart.c **** }
  647. 94:Core/Src/soft_uart.c ****
  648. 95:Core/Src/soft_uart.c **** switch (update.data[MSGID_ID])
  649. 551 .loc 1 95 24
  650. 552 0040 4A4B ldr r3, .L39
  651. 553 0042 5B79 ldrb r3, [r3, #5] @ zero_extendqisi2
  652. 554 .loc 1 95 5
  653. 555 0044 CA2B cmp r3, #202
  654. 556 0046 61D0 beq .L25
  655. 557 0048 CA2B cmp r3, #202
  656. 558 004a 7BDC bgt .L35
  657. 559 004c C82B cmp r3, #200
  658. 560 004e 02D0 beq .L27
  659. 561 0050 C92B cmp r3, #201
  660. 562 0052 16D0 beq .L28
  661. 96:Core/Src/soft_uart.c **** {
  662. 97:Core/Src/soft_uart.c **** case UPDATE_START:
  663. 98:Core/Src/soft_uart.c **** memcpy(&temp_32t, &update.data[PAYLOAD], 4);
  664. 99:Core/Src/soft_uart.c **** if (temp_32t < 512000) // 500kb 避免把FMU固件刷到pmu
  665. 100:Core/Src/soft_uart.c **** {
  666. 101:Core/Src/soft_uart.c **** temp_32t = 0;
  667. 102:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_START, (uint8_t *)&temp_32t);
  668. 103:Core/Src/soft_uart.c **** addr_offset = 0;
  669. 104:Core/Src/soft_uart.c **** cur_pack_num = 1;
  670. 105:Core/Src/soft_uart.c **** }
  671. 106:Core/Src/soft_uart.c **** break;
  672. 107:Core/Src/soft_uart.c **** case UPDATE_ING:
  673. 108:Core/Src/soft_uart.c **** if (cur_pack_num == update.data[PAYLOAD] + update.data[PAYLOAD + 1] * 256)
  674. 109:Core/Src/soft_uart.c **** {
  675. 110:Core/Src/soft_uart.c **** temp_32t = Flash_WriteData(FLASH_APP_ADDR + addr_offset, (uint16_t *)&update.data[PAYLO
  676. 111:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  677. 112:Core/Src/soft_uart.c **** {
  678. 113:Core/Src/soft_uart.c **** cur_pack_num++;
  679. 114:Core/Src/soft_uart.c **** addr_offset += update.data[LEN] - 2;
  680. 115:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]);
  681. 116:Core/Src/soft_uart.c **** }
  682. 117:Core/Src/soft_uart.c **** }
  683. 118:Core/Src/soft_uart.c **** else if(cur_pack_num > update.data[PAYLOAD] + update.data[PAYLOAD + 1] * 256)
  684. 119:Core/Src/soft_uart.c **** {
  685. 120:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]);
  686. 121:Core/Src/soft_uart.c **** }
  687. 122:Core/Src/soft_uart.c **** break;
  688. 123:Core/Src/soft_uart.c **** case UPDATE_END:
  689. 124:Core/Src/soft_uart.c **** temp_32t = 0;
  690. 125:Core/Src/soft_uart.c **** if(update_complete != true)
  691. 126:Core/Src/soft_uart.c **** {
  692. 127:Core/Src/soft_uart.c **** update_complete = wirte_update_flag();
  693. 128:Core/Src/soft_uart.c **** if(update_complete == true)
  694. 129:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_END, (uint8_t *)&temp_32t);
  695. 130:Core/Src/soft_uart.c **** HAL_Delay(50);
  696. 131:Core/Src/soft_uart.c **** }
  697. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 13
  698. 132:Core/Src/soft_uart.c **** break;
  699. 133:Core/Src/soft_uart.c ****
  700. 134:Core/Src/soft_uart.c **** default:
  701. 135:Core/Src/soft_uart.c **** break;
  702. 563 .loc 1 135 9
  703. 564 0054 76E0 b .L35
  704. 565 .L27:
  705. 566 0056 454B ldr r3, .L39
  706. 567 0058 D3F80630 ldr r3, [r3, #6] @ unaligned
  707. 98:Core/Src/soft_uart.c **** if (temp_32t < 512000) // 500kb 避免把FMU固件刷到pmu
  708. 568 .loc 1 98 9
  709. 569 005c 3B60 str r3, [r7]
  710. 99:Core/Src/soft_uart.c **** {
  711. 570 .loc 1 99 22
  712. 571 005e 3B68 ldr r3, [r7]
  713. 99:Core/Src/soft_uart.c **** {
  714. 572 .loc 1 99 12
  715. 573 0060 B3F5FA2F cmp r3, #512000
  716. 574 0064 70DA bge .L36
  717. 101:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_START, (uint8_t *)&temp_32t);
  718. 575 .loc 1 101 22
  719. 576 0066 0023 movs r3, #0
  720. 577 0068 3B60 str r3, [r7]
  721. 102:Core/Src/soft_uart.c **** addr_offset = 0;
  722. 578 .loc 1 102 13
  723. 579 006a 3B46 mov r3, r7
  724. 580 006c 1946 mov r1, r3
  725. 581 006e C820 movs r0, #200
  726. 582 0070 FFF7FEFF bl Update_ack_fmu
  727. 103:Core/Src/soft_uart.c **** cur_pack_num = 1;
  728. 583 .loc 1 103 25
  729. 584 0074 3E4B ldr r3, .L39+4
  730. 585 0076 0022 movs r2, #0
  731. 586 0078 1A60 str r2, [r3]
  732. 104:Core/Src/soft_uart.c **** }
  733. 587 .loc 1 104 26
  734. 588 007a 3E4B ldr r3, .L39+8
  735. 589 007c 0122 movs r2, #1
  736. 590 007e 1A60 str r2, [r3]
  737. 106:Core/Src/soft_uart.c **** case UPDATE_ING:
  738. 591 .loc 1 106 9
  739. 592 0080 62E0 b .L36
  740. 593 .L28:
  741. 108:Core/Src/soft_uart.c **** {
  742. 594 .loc 1 108 40
  743. 595 0082 3A4B ldr r3, .L39
  744. 596 0084 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2
  745. 597 0086 1A46 mov r2, r3
  746. 108:Core/Src/soft_uart.c **** {
  747. 598 .loc 1 108 63
  748. 599 0088 384B ldr r3, .L39
  749. 600 008a DB79 ldrb r3, [r3, #7] @ zero_extendqisi2
  750. 108:Core/Src/soft_uart.c **** {
  751. 601 .loc 1 108 77
  752. 602 008c 1B02 lsls r3, r3, #8
  753. 108:Core/Src/soft_uart.c **** {
  754. 603 .loc 1 108 50
  755. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 14
  756. 604 008e 1344 add r3, r3, r2
  757. 108:Core/Src/soft_uart.c **** {
  758. 605 .loc 1 108 26
  759. 606 0090 384A ldr r2, .L39+8
  760. 607 0092 1268 ldr r2, [r2]
  761. 108:Core/Src/soft_uart.c **** {
  762. 608 .loc 1 108 12
  763. 609 0094 9342 cmp r3, r2
  764. 610 0096 28D1 bne .L31
  765. 110:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  766. 611 .loc 1 110 24
  767. 612 0098 354B ldr r3, .L39+4
  768. 613 009a 1B68 ldr r3, [r3]
  769. 614 009c 03F10063 add r3, r3, #134217728
  770. 615 00a0 03F50033 add r3, r3, #131072
  771. 110:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  772. 616 .loc 1 110 121
  773. 617 00a4 314A ldr r2, .L39
  774. 618 00a6 5278 ldrb r2, [r2, #1] @ zero_extendqisi2
  775. 110:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  776. 619 .loc 1 110 127
  777. 620 00a8 023A subs r2, r2, #2
  778. 110:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  779. 621 .loc 1 110 132
  780. 622 00aa D10F lsrs r1, r2, #31
  781. 623 00ac 0A44 add r2, r2, r1
  782. 624 00ae 5210 asrs r2, r2, #1
  783. 110:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  784. 625 .loc 1 110 24
  785. 626 00b0 92B2 uxth r2, r2
  786. 627 00b2 3149 ldr r1, .L39+12
  787. 628 00b4 1846 mov r0, r3
  788. 629 00b6 FFF7FEFF bl Flash_WriteData
  789. 630 00ba 0346 mov r3, r0
  790. 110:Core/Src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS)
  791. 631 .loc 1 110 22
  792. 632 00bc 3B60 str r3, [r7]
  793. 111:Core/Src/soft_uart.c **** {
  794. 633 .loc 1 111 26
  795. 634 00be 3B68 ldr r3, [r7]
  796. 111:Core/Src/soft_uart.c **** {
  797. 635 .loc 1 111 16
  798. 636 00c0 032B cmp r3, #3
  799. 637 00c2 43D1 bne .L37
  800. 113:Core/Src/soft_uart.c **** addr_offset += update.data[LEN] - 2;
  801. 638 .loc 1 113 29
  802. 639 00c4 2B4B ldr r3, .L39+8
  803. 640 00c6 1B68 ldr r3, [r3]
  804. 641 00c8 0133 adds r3, r3, #1
  805. 642 00ca 2A4A ldr r2, .L39+8
  806. 643 00cc 1360 str r3, [r2]
  807. 114:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]);
  808. 644 .loc 1 114 43
  809. 645 00ce 274B ldr r3, .L39
  810. 646 00d0 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2
  811. 114:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]);
  812. 647 .loc 1 114 29
  813. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 15
  814. 648 00d2 1A46 mov r2, r3
  815. 649 00d4 264B ldr r3, .L39+4
  816. 650 00d6 1B68 ldr r3, [r3]
  817. 651 00d8 1344 add r3, r3, r2
  818. 652 00da 023B subs r3, r3, #2
  819. 653 00dc 244A ldr r2, .L39+4
  820. 654 00de 1360 str r3, [r2]
  821. 115:Core/Src/soft_uart.c **** }
  822. 655 .loc 1 115 17
  823. 656 00e0 2649 ldr r1, .L39+16
  824. 657 00e2 C920 movs r0, #201
  825. 658 00e4 FFF7FEFF bl Update_ack_fmu
  826. 122:Core/Src/soft_uart.c **** case UPDATE_END:
  827. 659 .loc 1 122 9
  828. 660 00e8 30E0 b .L37
  829. 661 .L31:
  830. 118:Core/Src/soft_uart.c **** {
  831. 662 .loc 1 118 43
  832. 663 00ea 204B ldr r3, .L39
  833. 664 00ec 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2
  834. 665 00ee 1A46 mov r2, r3
  835. 118:Core/Src/soft_uart.c **** {
  836. 666 .loc 1 118 66
  837. 667 00f0 1E4B ldr r3, .L39
  838. 668 00f2 DB79 ldrb r3, [r3, #7] @ zero_extendqisi2
  839. 118:Core/Src/soft_uart.c **** {
  840. 669 .loc 1 118 80
  841. 670 00f4 1B02 lsls r3, r3, #8
  842. 118:Core/Src/soft_uart.c **** {
  843. 671 .loc 1 118 53
  844. 672 00f6 1344 add r3, r3, r2
  845. 673 00f8 1A46 mov r2, r3
  846. 118:Core/Src/soft_uart.c **** {
  847. 674 .loc 1 118 30
  848. 675 00fa 1E4B ldr r3, .L39+8
  849. 676 00fc 1B68 ldr r3, [r3]
  850. 118:Core/Src/soft_uart.c **** {
  851. 677 .loc 1 118 16
  852. 678 00fe 9A42 cmp r2, r3
  853. 679 0100 24D2 bcs .L37
  854. 120:Core/Src/soft_uart.c **** }
  855. 680 .loc 1 120 13
  856. 681 0102 1E49 ldr r1, .L39+16
  857. 682 0104 C920 movs r0, #201
  858. 683 0106 FFF7FEFF bl Update_ack_fmu
  859. 122:Core/Src/soft_uart.c **** case UPDATE_END:
  860. 684 .loc 1 122 9
  861. 685 010a 1FE0 b .L37
  862. 686 .L25:
  863. 124:Core/Src/soft_uart.c **** if(update_complete != true)
  864. 687 .loc 1 124 18
  865. 688 010c 0023 movs r3, #0
  866. 689 010e 3B60 str r3, [r7]
  867. 125:Core/Src/soft_uart.c **** {
  868. 690 .loc 1 125 28
  869. 691 0110 1B4B ldr r3, .L39+20
  870. 692 0112 1B78 ldrb r3, [r3] @ zero_extendqisi2
  871. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 16
  872. 693 0114 83F00103 eor r3, r3, #1
  873. 694 0118 DBB2 uxtb r3, r3
  874. 125:Core/Src/soft_uart.c **** {
  875. 695 .loc 1 125 11
  876. 696 011a 002B cmp r3, #0
  877. 697 011c 18D0 beq .L38
  878. 127:Core/Src/soft_uart.c **** if(update_complete == true)
  879. 698 .loc 1 127 31
  880. 699 011e FFF7FEFF bl wirte_update_flag
  881. 700 0122 0346 mov r3, r0
  882. 701 0124 1A46 mov r2, r3
  883. 127:Core/Src/soft_uart.c **** if(update_complete == true)
  884. 702 .loc 1 127 29
  885. 703 0126 164B ldr r3, .L39+20
  886. 704 0128 1A70 strb r2, [r3]
  887. 128:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_END, (uint8_t *)&temp_32t);
  888. 705 .loc 1 128 32
  889. 706 012a 154B ldr r3, .L39+20
  890. 707 012c 1B78 ldrb r3, [r3] @ zero_extendqisi2
  891. 128:Core/Src/soft_uart.c **** Update_ack_fmu(UPDATE_END, (uint8_t *)&temp_32t);
  892. 708 .loc 1 128 15
  893. 709 012e 002B cmp r3, #0
  894. 710 0130 04D0 beq .L34
  895. 129:Core/Src/soft_uart.c **** HAL_Delay(50);
  896. 711 .loc 1 129 17
  897. 712 0132 3B46 mov r3, r7
  898. 713 0134 1946 mov r1, r3
  899. 714 0136 CA20 movs r0, #202
  900. 715 0138 FFF7FEFF bl Update_ack_fmu
  901. 716 .L34:
  902. 130:Core/Src/soft_uart.c **** }
  903. 717 .loc 1 130 13
  904. 718 013c 3220 movs r0, #50
  905. 719 013e FFF7FEFF bl HAL_Delay
  906. 132:Core/Src/soft_uart.c ****
  907. 720 .loc 1 132 9
  908. 721 0142 05E0 b .L38
  909. 722 .L35:
  910. 723 .loc 1 135 9
  911. 724 0144 00BF nop
  912. 725 0146 04E0 b .L30
  913. 726 .L36:
  914. 106:Core/Src/soft_uart.c **** case UPDATE_ING:
  915. 727 .loc 1 106 9
  916. 728 0148 00BF nop
  917. 729 014a 02E0 b .L30
  918. 730 .L37:
  919. 122:Core/Src/soft_uart.c **** case UPDATE_END:
  920. 731 .loc 1 122 9
  921. 732 014c 00BF nop
  922. 733 014e 00E0 b .L30
  923. 734 .L38:
  924. 132:Core/Src/soft_uart.c ****
  925. 735 .loc 1 132 9
  926. 736 0150 00BF nop
  927. 737 .L30:
  928. 136:Core/Src/soft_uart.c **** }
  929. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 17
  930. 137:Core/Src/soft_uart.c **** update.usebuf_flag = false;
  931. 738 .loc 1 137 24 discriminator 3
  932. 739 0152 064B ldr r3, .L39
  933. 740 0154 0022 movs r2, #0
  934. 741 0156 83F80021 strb r2, [r3, #256]
  935. 138:Core/Src/soft_uart.c **** memset(update.data, 0, MAX_UART_BUF);
  936. 742 .loc 1 138 5 discriminator 3
  937. 743 015a 4FF48072 mov r2, #256
  938. 744 015e 0021 movs r1, #0
  939. 745 0160 0248 ldr r0, .L39
  940. 746 0162 FFF7FEFF bl memset
  941. 747 .L21:
  942. 139:Core/Src/soft_uart.c **** }...
  943. 748 .loc 1 139 1
  944. 749 0166 0837 adds r7, r7, #8
  945. 750 .LCFI22:
  946. 751 .cfi_def_cfa_offset 8
  947. 752 0168 BD46 mov sp, r7
  948. 753 .LCFI23:
  949. 754 .cfi_def_cfa_register 13
  950. 755 @ sp needed
  951. 756 016a 80BD pop {r7, pc}
  952. 757 .L40:
  953. 758 .align 2
  954. 759 .L39:
  955. 760 016c 00000000 .word update
  956. 761 0170 00000000 .word addr_offset
  957. 762 0174 00000000 .word cur_pack_num
  958. 763 0178 08000000 .word update+8
  959. 764 017c 06000000 .word update+6
  960. 765 0180 00000000 .word update_complete
  961. 766 .cfi_endproc
  962. 767 .LFE242:
  963. 769 .section .bss.send_time.0,"aw",%nobits
  964. 770 .align 2
  965. 773 send_time.0:
  966. 774 0000 00000000 .space 4
  967. 775 .text
  968. 776 .Letext0:
  969. 777 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h"
  970. 778 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h"
  971. 779 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h"
  972. 780 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h"
  973. 781 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h"
  974. 782 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h"
  975. 783 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_uart.h"
  976. 784 .file 9 "Core/Inc/soft_uart.h"
  977. ARM GAS C:\Users\10728\AppData\Local\Temp\cc82yckV.s page 18
  978. DEFINED SYMBOLS
  979. *ABS*:00000000 soft_uart.c
  980. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:20 .text.uart1_send_msg:00000000 $t
  981. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:26 .text.uart1_send_msg:00000000 uart1_send_msg
  982. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:85 .text.uart1_send_msg:0000003c $d
  983. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:773 .bss.send_time.0:00000000 send_time.0
  984. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:95 .bss.FMU_uart_buf:00000000 FMU_uart_buf
  985. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:92 .bss.FMU_uart_buf:00000000 $d
  986. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:102 .bss.update:00000000 update
  987. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:99 .bss.update:00000000 $d
  988. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:105 .text.USER_UART_IRQHandler:00000000 $t
  989. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:111 .text.USER_UART_IRQHandler:00000000 USER_UART_IRQHandler
  990. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:225 .text.USER_UART_IRQHandler:000000a0 $d
  991. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:236 .bss.msg_buf:00000000 msg_buf
  992. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:233 .bss.msg_buf:00000000 $d
  993. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:239 .text.Update_ack_fmu:00000000 $t
  994. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:245 .text.Update_ack_fmu:00000000 Update_ack_fmu
  995. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:398 .text.Update_ack_fmu:000000cc $d
  996. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:403 .text.check_usart_is_ok:00000000 $t
  997. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:409 .text.check_usart_is_ok:00000000 check_usart_is_ok
  998. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:468 .text.check_usart_is_ok:0000003c $d
  999. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:477 .bss.addr_offset:00000000 addr_offset
  1000. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:474 .bss.addr_offset:00000000 $d
  1001. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:484 .bss.cur_pack_num:00000000 cur_pack_num
  1002. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:481 .bss.cur_pack_num:00000000 $d
  1003. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:490 .bss.update_complete:00000000 update_complete
  1004. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:491 .bss.update_complete:00000000 $d
  1005. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:493 .text.update_function:00000000 $t
  1006. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:499 .text.update_function:00000000 update_function
  1007. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:760 .text.update_function:0000016c $d
  1008. C:\Users\10728\AppData\Local\Temp\cc82yckV.s:770 .bss.send_time.0:00000000 $d
  1009. UNDEFINED SYMBOLS
  1010. HAL_GetTick
  1011. HAL_UART_Transmit_DMA
  1012. huart1
  1013. HAL_UART_AbortReceive
  1014. memcpy
  1015. memset
  1016. HAL_UART_Receive_DMA
  1017. Get_Crc16
  1018. Flash_WriteData
  1019. wirte_update_flag
  1020. HAL_Delay