ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.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_uart.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .global Update_buf 20 .section .bss.Update_buf,"aw",%nobits 21 .align 2 24 Update_buf: 25 0000 00000000 .space 150 25 00000000 25 00000000 25 00000000 25 00000000 26 .global vk_protocol 27 .section .bss.vk_protocol,"aw",%nobits 28 .align 2 31 vk_protocol: 32 0000 00000000 .space 266 32 00000000 32 00000000 32 00000000 32 00000000 33 .global send_uart_rkfifo 34 .section .bss.send_uart_rkfifo,"aw",%nobits 35 .align 2 38 send_uart_rkfifo: 39 0000 00000000 .space 24 39 00000000 39 00000000 39 00000000 39 00000000 40 .global radar_update_flag 41 .section .bss.radar_update_flag,"aw",%nobits 44 radar_update_flag: 45 0000 00 .space 1 46 .global uart_info 47 .section .data.uart_info,"aw" 48 .align 2 51 uart_info: 52 0000 00000000 .space 286 52 00000000 52 00000000 52 00000000 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 2 52 00000000 53 011e 0100 .short 1 54 0120 00000000 .space 7 54 000000 55 .section .text._write,"ax",%progbits 56 .align 1 57 .global _write 58 .syntax unified 59 .thumb 60 .thumb_func 62 _write: 63 .LFB133: 64 .file 1 "user_src/soft_uart.c" 1:user_src/soft_uart.c **** #include "soft_uart.h" 2:user_src/soft_uart.c **** #include "usart.h" 3:user_src/soft_uart.c **** #include "stdbool.h" 4:user_src/soft_uart.c **** #include "soft_timer.h" 5:user_src/soft_uart.c **** #include "soft_adc.h" 6:user_src/soft_uart.c **** #include "soft_flow.h" 7:user_src/soft_uart.c **** #include "soft_crc.h" 8:user_src/soft_uart.c **** #include 9:user_src/soft_uart.c **** #include "stdbool.h" 10:user_src/soft_uart.c **** #include "tim.h" 11:user_src/soft_uart.c **** #include "hard_led.h" 12:user_src/soft_uart.c **** #include "soft_can.h" 13:user_src/soft_uart.c **** #include "stdio.h" 14:user_src/soft_uart.c **** #include "soft_bms.h" 15:user_src/soft_uart.c **** #include "soft_terrain.h" 16:user_src/soft_uart.c **** #include "soft_obstacle.h" 17:user_src/soft_uart.c **** #include "soft_okcell.h" 18:user_src/soft_uart.c **** #include "soft_adc.h" 19:user_src/soft_uart.c **** #include "soft_p_2_c.h" 20:user_src/soft_uart.c **** #include "soft_engine.h" 21:user_src/soft_uart.c **** #include "bsp_serial.h" 22:user_src/soft_uart.c **** #include "rkfifo.h" 23:user_src/soft_uart.c **** #include "soft_update.h" 24:user_src/soft_uart.c **** #include "common.h" 25:user_src/soft_uart.c **** #include "soft_water_device.h" 26:user_src/soft_uart.c **** #include "config.h" 27:user_src/soft_uart.c **** #include "soft_seed_device.h" 28:user_src/soft_uart.c **** 29:user_src/soft_uart.c **** uint8_t Update_buf[150] = {0}; 30:user_src/soft_uart.c **** 31:user_src/soft_uart.c **** Vk_protocol vk_protocol; 32:user_src/soft_uart.c **** rkfifo_t send_uart_rkfifo; 33:user_src/soft_uart.c **** 34:user_src/soft_uart.c **** bool radar_update_flag = false; //雷达升级标志 35:user_src/soft_uart.c **** Uart uart_info = {.vk_dev_pack_num = 1}; 36:user_src/soft_uart.c **** 37:user_src/soft_uart.c **** 38:user_src/soft_uart.c **** /** 39:user_src/soft_uart.c **** * @file printf 40:user_src/soft_uart.c **** * @brief 串口发送重定向 41:user_src/soft_uart.c **** * @param 42:user_src/soft_uart.c **** * @details 43:user_src/soft_uart.c **** * @author Zhang Sir 44:user_src/soft_uart.c **** **/ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 3 45:user_src/soft_uart.c **** int _write(int fd, char *pBuffer, int size) 46:user_src/soft_uart.c **** { 65 .loc 1 46 1 66 .cfi_startproc 67 @ args = 0, pretend = 0, frame = 24 68 @ frame_needed = 1, uses_anonymous_args = 0 69 0000 80B5 push {r7, lr} 70 .LCFI0: 71 .cfi_def_cfa_offset 8 72 .cfi_offset 7, -8 73 .cfi_offset 14, -4 74 0002 86B0 sub sp, sp, #24 75 .LCFI1: 76 .cfi_def_cfa_offset 32 77 0004 00AF add r7, sp, #0 78 .LCFI2: 79 .cfi_def_cfa_register 7 80 0006 F860 str r0, [r7, #12] 81 0008 B960 str r1, [r7, #8] 82 000a 7A60 str r2, [r7, #4] 47:user_src/soft_uart.c **** uint32_t uart3_send_count_time = HAL_GetTick(); 83 .loc 1 47 35 84 000c FFF7FEFF bl HAL_GetTick 85 0010 7861 str r0, [r7, #20] 48:user_src/soft_uart.c **** while (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) == 0 && 86 .loc 1 48 8 87 0012 00BF nop 88 .L3: 89 .loc 1 48 9 discriminator 2 90 0014 0C4B ldr r3, .L5 91 0016 1B68 ldr r3, [r3] 92 0018 DB69 ldr r3, [r3, #28] 93 001a 03F04003 and r3, r3, #64 94 .loc 1 48 8 discriminator 2 95 001e 402B cmp r3, #64 96 0020 06D0 beq .L2 49:user_src/soft_uart.c **** HAL_GetTick() - uart3_send_count_time < 5) 97 .loc 1 49 6 discriminator 1 98 0022 FFF7FEFF bl HAL_GetTick 99 0026 0246 mov r2, r0 100 .loc 1 49 20 discriminator 1 101 0028 7B69 ldr r3, [r7, #20] 102 002a D31A subs r3, r2, r3 48:user_src/soft_uart.c **** while (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) == 0 && 103 .loc 1 48 57 discriminator 1 104 002c 042B cmp r3, #4 105 002e F1D9 bls .L3 106 .L2: 50:user_src/soft_uart.c **** ; 51:user_src/soft_uart.c **** HAL_UART_Transmit(&huart3, (uint8_t *)pBuffer, size, 0xff); 107 .loc 1 51 2 108 0030 7B68 ldr r3, [r7, #4] 109 0032 9AB2 uxth r2, r3 110 0034 FF23 movs r3, #255 111 0036 B968 ldr r1, [r7, #8] 112 0038 0348 ldr r0, .L5 113 003a FFF7FEFF bl HAL_UART_Transmit ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 4 52:user_src/soft_uart.c **** return size; 114 .loc 1 52 9 115 003e 7B68 ldr r3, [r7, #4] 53:user_src/soft_uart.c **** } 116 .loc 1 53 1 117 0040 1846 mov r0, r3 118 0042 1837 adds r7, r7, #24 119 .LCFI3: 120 .cfi_def_cfa_offset 8 121 0044 BD46 mov sp, r7 122 .LCFI4: 123 .cfi_def_cfa_register 13 124 @ sp needed 125 0046 80BD pop {r7, pc} 126 .L6: 127 .align 2 128 .L5: 129 0048 00000000 .word huart3 130 .cfi_endproc 131 .LFE133: 133 .section .text.uart_send_is_ok,"ax",%progbits 134 .align 1 135 .global uart_send_is_ok 136 .syntax unified 137 .thumb 138 .thumb_func 140 uart_send_is_ok: 141 .LFB134: 54:user_src/soft_uart.c **** 55:user_src/soft_uart.c **** 56:user_src/soft_uart.c **** /** 57:user_src/soft_uart.c **** * @file uart_send_is_ok 58:user_src/soft_uart.c **** * @brief 检测串口是否可用 59:user_src/soft_uart.c **** * @param uart_num 串口号 60:user_src/soft_uart.c **** * @details 61:user_src/soft_uart.c **** * @author Zhang Sir 62:user_src/soft_uart.c **** **/ 63:user_src/soft_uart.c **** bool uart_send_is_ok(uint8_t uart_num) 64:user_src/soft_uart.c **** { 142 .loc 1 64 1 143 .cfi_startproc 144 @ args = 0, pretend = 0, frame = 8 145 @ frame_needed = 1, uses_anonymous_args = 0 146 0000 80B5 push {r7, lr} 147 .LCFI5: 148 .cfi_def_cfa_offset 8 149 .cfi_offset 7, -8 150 .cfi_offset 14, -4 151 0002 82B0 sub sp, sp, #8 152 .LCFI6: 153 .cfi_def_cfa_offset 16 154 0004 00AF add r7, sp, #0 155 .LCFI7: 156 .cfi_def_cfa_register 7 157 0006 0346 mov r3, r0 158 0008 FB71 strb r3, [r7, #7] 65:user_src/soft_uart.c **** //设备升级不发送 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 5 66:user_src/soft_uart.c **** //if(radar_update_flag == true) 67:user_src/soft_uart.c **** // return false; 68:user_src/soft_uart.c **** // if(uart_info.vk_dev_update_flag == true) 69:user_src/soft_uart.c **** // return false; 70:user_src/soft_uart.c **** 71:user_src/soft_uart.c **** if (uart_num == USART_2) 159 .loc 1 71 5 160 000a FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 161 000c 022B cmp r3, #2 162 000e 1DD1 bne .L8 72:user_src/soft_uart.c **** { 73:user_src/soft_uart.c **** if (huart2.gState == HAL_UART_STATE_READY && (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_TC) != RESET 163 .loc 1 73 13 164 0010 214B ldr r3, .L17 165 0012 DB6F ldr r3, [r3, #124] 166 .loc 1 73 6 167 0014 202B cmp r3, #32 168 0016 0DD1 bne .L9 169 .loc 1 73 49 discriminator 1 170 0018 1F4B ldr r3, .L17 171 001a 1B68 ldr r3, [r3] 172 001c DB69 ldr r3, [r3, #28] 173 001e 03F04003 and r3, r3, #64 174 .loc 1 73 45 discriminator 1 175 0022 402B cmp r3, #64 176 0024 06D1 bne .L9 177 .loc 1 73 104 discriminator 2 178 0026 1C4B ldr r3, .L17 179 0028 1B68 ldr r3, [r3] 180 002a DB69 ldr r3, [r3, #28] 181 002c 03F08003 and r3, r3, #128 182 .loc 1 73 101 discriminator 2 183 0030 802B cmp r3, #128 184 0032 01D0 beq .L15 185 .L9: 74:user_src/soft_uart.c **** { 75:user_src/soft_uart.c **** } 76:user_src/soft_uart.c **** else 77:user_src/soft_uart.c **** { 78:user_src/soft_uart.c **** return false; 186 .loc 1 78 11 187 0034 0023 movs r3, #0 188 0036 2BE0 b .L11 189 .L15: 79:user_src/soft_uart.c **** } 80:user_src/soft_uart.c **** 81:user_src/soft_uart.c **** //延迟1ms发送,防止如果是空闲中断接收,连续发送变成一包 82:user_src/soft_uart.c **** if(HAL_GetTick() - uart2_send_delay_time <= 1) 190 .loc 1 82 6 191 0038 FFF7FEFF bl HAL_GetTick 192 003c 0246 mov r2, r0 193 .loc 1 82 20 194 003e 174B ldr r3, .L17+4 195 0040 1B68 ldr r3, [r3] 196 0042 D31A subs r3, r2, r3 197 .loc 1 82 5 198 0044 012B cmp r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 6 199 0046 22D8 bhi .L12 83:user_src/soft_uart.c **** { 84:user_src/soft_uart.c **** return false; 200 .loc 1 84 11 201 0048 0023 movs r3, #0 202 004a 21E0 b .L11 203 .L8: 85:user_src/soft_uart.c **** } 86:user_src/soft_uart.c **** } 87:user_src/soft_uart.c **** else if (uart_num == USART_3) 204 .loc 1 87 10 205 004c FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 206 004e 032B cmp r3, #3 207 0050 1DD1 bne .L12 88:user_src/soft_uart.c **** { 89:user_src/soft_uart.c **** if (huart3.gState == HAL_UART_STATE_READY && (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_TC) != RESET 208 .loc 1 89 13 209 0052 134B ldr r3, .L17+8 210 0054 DB6F ldr r3, [r3, #124] 211 .loc 1 89 6 212 0056 202B cmp r3, #32 213 0058 0DD1 bne .L13 214 .loc 1 89 49 discriminator 1 215 005a 114B ldr r3, .L17+8 216 005c 1B68 ldr r3, [r3] 217 005e DB69 ldr r3, [r3, #28] 218 0060 03F04003 and r3, r3, #64 219 .loc 1 89 45 discriminator 1 220 0064 402B cmp r3, #64 221 0066 06D1 bne .L13 222 .loc 1 89 104 discriminator 2 223 0068 0D4B ldr r3, .L17+8 224 006a 1B68 ldr r3, [r3] 225 006c DB69 ldr r3, [r3, #28] 226 006e 03F08003 and r3, r3, #128 227 .loc 1 89 101 discriminator 2 228 0072 802B cmp r3, #128 229 0074 01D0 beq .L16 230 .L13: 90:user_src/soft_uart.c **** { 91:user_src/soft_uart.c **** } 92:user_src/soft_uart.c **** else 93:user_src/soft_uart.c **** { 94:user_src/soft_uart.c **** return false; 231 .loc 1 94 11 232 0076 0023 movs r3, #0 233 0078 0AE0 b .L11 234 .L16: 95:user_src/soft_uart.c **** } 96:user_src/soft_uart.c **** 97:user_src/soft_uart.c **** if(HAL_GetTick() - uart3_send_delay_time <= 1) 235 .loc 1 97 6 236 007a FFF7FEFF bl HAL_GetTick 237 007e 0246 mov r2, r0 238 .loc 1 97 20 239 0080 084B ldr r3, .L17+12 240 0082 1B68 ldr r3, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 7 241 0084 D31A subs r3, r2, r3 242 .loc 1 97 5 243 0086 012B cmp r3, #1 244 0088 01D8 bhi .L12 98:user_src/soft_uart.c **** { 99:user_src/soft_uart.c **** return false; 245 .loc 1 99 11 246 008a 0023 movs r3, #0 247 008c 00E0 b .L11 248 .L12: 100:user_src/soft_uart.c **** } 101:user_src/soft_uart.c **** } 102:user_src/soft_uart.c **** 103:user_src/soft_uart.c **** return true; 249 .loc 1 103 9 250 008e 0123 movs r3, #1 251 .L11: 104:user_src/soft_uart.c **** 105:user_src/soft_uart.c **** } 252 .loc 1 105 1 253 0090 1846 mov r0, r3 254 0092 0837 adds r7, r7, #8 255 .LCFI8: 256 .cfi_def_cfa_offset 8 257 0094 BD46 mov sp, r7 258 .LCFI9: 259 .cfi_def_cfa_register 13 260 @ sp needed 261 0096 80BD pop {r7, pc} 262 .L18: 263 .align 2 264 .L17: 265 0098 00000000 .word huart2 266 009c 00000000 .word uart2_send_delay_time 267 00a0 00000000 .word huart3 268 00a4 00000000 .word uart3_send_delay_time 269 .cfi_endproc 270 .LFE134: 272 .global uart2_send_delay_time 273 .section .bss.uart2_send_delay_time,"aw",%nobits 274 .align 2 277 uart2_send_delay_time: 278 0000 00000000 .space 4 279 .global uart3_send_delay_time 280 .section .bss.uart3_send_delay_time,"aw",%nobits 281 .align 2 284 uart3_send_delay_time: 285 0000 00000000 .space 4 286 .section .text.uart2_send_msg,"ax",%progbits 287 .align 1 288 .global uart2_send_msg 289 .syntax unified 290 .thumb 291 .thumb_func 293 uart2_send_msg: 294 .LFB135: 106:user_src/soft_uart.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 8 107:user_src/soft_uart.c **** /** 108:user_src/soft_uart.c **** * @file uart2_send_msg 109:user_src/soft_uart.c **** * @brief 串口2发送 110:user_src/soft_uart.c **** * @param 111:user_src/soft_uart.c **** * @details 112:user_src/soft_uart.c **** * @author Zhang Sir 113:user_src/soft_uart.c **** **/ 114:user_src/soft_uart.c **** uint32_t uart2_send_delay_time = 0; 115:user_src/soft_uart.c **** uint32_t uart3_send_delay_time = 0; 116:user_src/soft_uart.c **** void uart2_send_msg(uint8_t *data, uint8_t size) 117:user_src/soft_uart.c **** { 295 .loc 1 117 1 296 .cfi_startproc 297 @ args = 0, pretend = 0, frame = 8 298 @ frame_needed = 1, uses_anonymous_args = 0 299 0000 80B5 push {r7, lr} 300 .LCFI10: 301 .cfi_def_cfa_offset 8 302 .cfi_offset 7, -8 303 .cfi_offset 14, -4 304 0002 82B0 sub sp, sp, #8 305 .LCFI11: 306 .cfi_def_cfa_offset 16 307 0004 00AF add r7, sp, #0 308 .LCFI12: 309 .cfi_def_cfa_register 7 310 0006 7860 str r0, [r7, #4] 311 0008 0B46 mov r3, r1 312 000a FB70 strb r3, [r7, #3] 118:user_src/soft_uart.c **** // static uint32_t send_time = 0; 119:user_src/soft_uart.c **** 120:user_src/soft_uart.c **** // send_time = HAL_GetTick(); 121:user_src/soft_uart.c **** // //防止连续发送使多个数据变成一个 122:user_src/soft_uart.c **** // while (HAL_GetTick() - send_time <= 1) 123:user_src/soft_uart.c **** // ; 124:user_src/soft_uart.c **** 125:user_src/soft_uart.c **** rkfifo_in(&send_uart_rkfifo,data,size); 313 .loc 1 125 2 314 000c FB78 ldrb r3, [r7, #3] @ zero_extendqisi2 315 000e 1A46 mov r2, r3 316 0010 7968 ldr r1, [r7, #4] 317 0012 0348 ldr r0, .L20 318 0014 FFF7FEFF bl rkfifo_in 126:user_src/soft_uart.c **** // HAL_UART_Transmit_DMA(&huart2, data, size); 127:user_src/soft_uart.c **** 128:user_src/soft_uart.c **** // uart2_send_delay_time = HAL_GetTick(); 129:user_src/soft_uart.c **** //bspSerialWrite(&serial2,data,size); 130:user_src/soft_uart.c **** } 319 .loc 1 130 1 320 0018 00BF nop 321 001a 0837 adds r7, r7, #8 322 .LCFI13: 323 .cfi_def_cfa_offset 8 324 001c BD46 mov sp, r7 325 .LCFI14: 326 .cfi_def_cfa_register 13 327 @ sp needed ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 9 328 001e 80BD pop {r7, pc} 329 .L21: 330 .align 2 331 .L20: 332 0020 00000000 .word send_uart_rkfifo 333 .cfi_endproc 334 .LFE135: 336 .global send_uart_buf 337 .section .bss.send_uart_buf,"aw",%nobits 338 .align 2 341 send_uart_buf: 342 0000 00000000 .space 256 342 00000000 342 00000000 342 00000000 342 00000000 343 .section .text.send_uartfifo_msg,"ax",%progbits 344 .align 1 345 .global send_uartfifo_msg 346 .syntax unified 347 .thumb 348 .thumb_func 350 send_uartfifo_msg: 351 .LFB136: 131:user_src/soft_uart.c **** uint8_t send_uart_buf[256] = {0}; 132:user_src/soft_uart.c **** 133:user_src/soft_uart.c **** void send_uartfifo_msg(void) 134:user_src/soft_uart.c **** { 352 .loc 1 134 1 353 .cfi_startproc 354 @ args = 0, pretend = 0, frame = 8 355 @ frame_needed = 1, uses_anonymous_args = 0 356 0000 80B5 push {r7, lr} 357 .LCFI15: 358 .cfi_def_cfa_offset 8 359 .cfi_offset 7, -8 360 .cfi_offset 14, -4 361 0002 82B0 sub sp, sp, #8 362 .LCFI16: 363 .cfi_def_cfa_offset 16 364 0004 00AF add r7, sp, #0 365 .LCFI17: 366 .cfi_def_cfa_register 7 135:user_src/soft_uart.c **** uint16_t len = 0; 367 .loc 1 135 11 368 0006 0023 movs r3, #0 369 0008 FB80 strh r3, [r7, #6] @ movhi 136:user_src/soft_uart.c **** if(uart_send_is_ok(USART_2) == true) 370 .loc 1 136 5 371 000a 0220 movs r0, #2 372 000c FFF7FEFF bl uart_send_is_ok 373 0010 0346 mov r3, r0 374 .loc 1 136 4 375 0012 002B cmp r3, #0 376 0014 15D0 beq .L24 137:user_src/soft_uart.c **** { 138:user_src/soft_uart.c **** len = rkfifo_out(&send_uart_rkfifo, &send_uart_buf, 256); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 10 377 .loc 1 138 9 378 0016 4FF48072 mov r2, #256 379 001a 0C49 ldr r1, .L25 380 001c 0C48 ldr r0, .L25+4 381 001e FFF7FEFF bl rkfifo_out 382 0022 0346 mov r3, r0 383 .loc 1 138 7 384 0024 FB80 strh r3, [r7, #6] @ movhi 139:user_src/soft_uart.c **** 140:user_src/soft_uart.c **** if(len > 0) 385 .loc 1 140 5 386 0026 FB88 ldrh r3, [r7, #6] 387 0028 002B cmp r3, #0 388 002a 0AD0 beq .L24 141:user_src/soft_uart.c **** { 142:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart2, send_uart_buf, len); 389 .loc 1 142 4 390 002c FB88 ldrh r3, [r7, #6] 391 002e 1A46 mov r2, r3 392 0030 0649 ldr r1, .L25 393 0032 0848 ldr r0, .L25+8 394 0034 FFF7FEFF bl HAL_UART_Transmit_DMA 143:user_src/soft_uart.c **** uart2_send_delay_time = HAL_GetTick(); 395 .loc 1 143 28 396 0038 FFF7FEFF bl HAL_GetTick 397 003c 0346 mov r3, r0 398 .loc 1 143 26 399 003e 064A ldr r2, .L25+12 400 0040 1360 str r3, [r2] 401 .L24: 144:user_src/soft_uart.c **** } 145:user_src/soft_uart.c **** } 146:user_src/soft_uart.c **** } 402 .loc 1 146 1 403 0042 00BF nop 404 0044 0837 adds r7, r7, #8 405 .LCFI18: 406 .cfi_def_cfa_offset 8 407 0046 BD46 mov sp, r7 408 .LCFI19: 409 .cfi_def_cfa_register 13 410 @ sp needed 411 0048 80BD pop {r7, pc} 412 .L26: 413 004a 00BF .align 2 414 .L25: 415 004c 00000000 .word send_uart_buf 416 0050 00000000 .word send_uart_rkfifo 417 0054 00000000 .word huart2 418 0058 00000000 .word uart2_send_delay_time 419 .cfi_endproc 420 .LFE136: 422 .section .text.uart3_send_msg,"ax",%progbits 423 .align 1 424 .global uart3_send_msg 425 .syntax unified 426 .thumb ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 11 427 .thumb_func 429 uart3_send_msg: 430 .LFB137: 147:user_src/soft_uart.c **** 148:user_src/soft_uart.c **** //uart3 发送调用函数 149:user_src/soft_uart.c **** void uart3_send_msg(uint8_t *data, uint8_t size) 150:user_src/soft_uart.c **** { 431 .loc 1 150 1 432 .cfi_startproc 433 @ args = 0, pretend = 0, frame = 8 434 @ frame_needed = 1, uses_anonymous_args = 0 435 0000 80B5 push {r7, lr} 436 .LCFI20: 437 .cfi_def_cfa_offset 8 438 .cfi_offset 7, -8 439 .cfi_offset 14, -4 440 0002 82B0 sub sp, sp, #8 441 .LCFI21: 442 .cfi_def_cfa_offset 16 443 0004 00AF add r7, sp, #0 444 .LCFI22: 445 .cfi_def_cfa_register 7 446 0006 7860 str r0, [r7, #4] 447 0008 0B46 mov r3, r1 448 000a FB70 strb r3, [r7, #3] 151:user_src/soft_uart.c **** static uint32_t send_time3 = 0; 152:user_src/soft_uart.c **** 153:user_src/soft_uart.c **** send_time3 = HAL_GetTick(); 449 .loc 1 153 15 450 000c FFF7FEFF bl HAL_GetTick 451 0010 0346 mov r3, r0 452 .loc 1 153 13 453 0012 0D4A ldr r2, .L29 454 0014 1360 str r3, [r2] 154:user_src/soft_uart.c **** while (HAL_GetTick() - send_time3 <= 1) 455 .loc 1 154 8 456 0016 00BF nop 457 .L28: 458 .loc 1 154 9 discriminator 1 459 0018 FFF7FEFF bl HAL_GetTick 460 001c 0246 mov r2, r0 461 .loc 1 154 23 discriminator 1 462 001e 0A4B ldr r3, .L29 463 0020 1B68 ldr r3, [r3] 464 0022 D31A subs r3, r2, r3 465 .loc 1 154 8 discriminator 1 466 0024 012B cmp r3, #1 467 0026 F7D9 bls .L28 155:user_src/soft_uart.c **** ; 156:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart3, data, size); 468 .loc 1 156 2 469 0028 FB78 ldrb r3, [r7, #3] @ zero_extendqisi2 470 002a 9BB2 uxth r3, r3 471 002c 1A46 mov r2, r3 472 002e 7968 ldr r1, [r7, #4] 473 0030 0648 ldr r0, .L29+4 474 0032 FFF7FEFF bl HAL_UART_Transmit_DMA ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 12 157:user_src/soft_uart.c **** uart3_send_delay_time = HAL_GetTick(); 475 .loc 1 157 26 476 0036 FFF7FEFF bl HAL_GetTick 477 003a 0346 mov r3, r0 478 .loc 1 157 24 479 003c 044A ldr r2, .L29+8 480 003e 1360 str r3, [r2] 158:user_src/soft_uart.c **** } 481 .loc 1 158 1 482 0040 00BF nop 483 0042 0837 adds r7, r7, #8 484 .LCFI23: 485 .cfi_def_cfa_offset 8 486 0044 BD46 mov sp, r7 487 .LCFI24: 488 .cfi_def_cfa_register 13 489 @ sp needed 490 0046 80BD pop {r7, pc} 491 .L30: 492 .align 2 493 .L29: 494 0048 00000000 .word send_time3.2 495 004c 00000000 .word huart3 496 0050 00000000 .word uart3_send_delay_time 497 .cfi_endproc 498 .LFE137: 500 .section .text.UART_Init,"ax",%progbits 501 .align 1 502 .global UART_Init 503 .syntax unified 504 .thumb 505 .thumb_func 507 UART_Init: 508 .LFB138: 159:user_src/soft_uart.c **** 160:user_src/soft_uart.c **** 161:user_src/soft_uart.c **** /** 162:user_src/soft_uart.c **** * @file UART_Init 163:user_src/soft_uart.c **** * @brief UART23初始化接收空闲中断 开起DMA 164:user_src/soft_uart.c **** * @param 165:user_src/soft_uart.c **** * @details 166:user_src/soft_uart.c **** * @author Zhang Sir 167:user_src/soft_uart.c **** **/ 168:user_src/soft_uart.c **** void UART_Init(void) 169:user_src/soft_uart.c **** { 509 .loc 1 169 1 510 .cfi_startproc 511 @ args = 0, pretend = 0, frame = 0 512 @ frame_needed = 1, uses_anonymous_args = 0 513 0000 80B5 push {r7, lr} 514 .LCFI25: 515 .cfi_def_cfa_offset 8 516 .cfi_offset 7, -8 517 .cfi_offset 14, -4 518 0002 00AF add r7, sp, #0 519 .LCFI26: 520 .cfi_def_cfa_register 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 13 170:user_src/soft_uart.c **** //uart2 171:user_src/soft_uart.c **** //__HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); //接收到一个字节产生一次中断 172:user_src/soft_uart.c **** //HAL_UART_Receive_IT(&huart2, &test_buf, 1); 173:user_src/soft_uart.c **** 174:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); //uart2 空闲中断 521 .loc 1 174 2 522 0004 164B ldr r3, .L32 523 0006 1B68 ldr r3, [r3] 524 0008 1A68 ldr r2, [r3] 525 000a 154B ldr r3, .L32 526 000c 1B68 ldr r3, [r3] 527 000e 42F01002 orr r2, r2, #16 528 0012 1A60 str r2, [r3] 175:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart2, (uint8_t *)uart_info.uart2_recv_buf, MAX_UART_BUF); 529 .loc 1 175 2 530 0014 4FF48072 mov r2, #256 531 0018 1249 ldr r1, .L32+4 532 001a 1148 ldr r0, .L32 533 001c FFF7FEFF bl HAL_UART_Receive_DMA 176:user_src/soft_uart.c **** //开启错误处理机制 177:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart2, UART_IT_ERR); 534 .loc 1 177 2 535 0020 0F4B ldr r3, .L32 536 0022 1B68 ldr r3, [r3] 537 0024 9A68 ldr r2, [r3, #8] 538 0026 0E4B ldr r3, .L32 539 0028 1B68 ldr r3, [r3] 540 002a 42F00102 orr r2, r2, #1 541 002e 9A60 str r2, [r3, #8] 178:user_src/soft_uart.c **** 179:user_src/soft_uart.c **** //uart3 180:user_src/soft_uart.c **** //HAL_UART_Receive_IT(&huart3, (uint8_t *)uart_info.uart3_recv_buf, 1); 181:user_src/soft_uart.c **** 182:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE); 542 .loc 1 182 2 543 0030 0D4B ldr r3, .L32+8 544 0032 1B68 ldr r3, [r3] 545 0034 1A68 ldr r2, [r3] 546 0036 0C4B ldr r3, .L32+8 547 0038 1B68 ldr r3, [r3] 548 003a 42F01002 orr r2, r2, #16 549 003e 1A60 str r2, [r3] 183:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart3, (uint8_t *)uart_info.uart3_recv_buf, MAX_UART_BUF); 550 .loc 1 183 2 551 0040 4FF48072 mov r2, #256 552 0044 0949 ldr r1, .L32+12 553 0046 0848 ldr r0, .L32+8 554 0048 FFF7FEFF bl HAL_UART_Receive_DMA 184:user_src/soft_uart.c **** //开启错误处理机制 185:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart3, UART_IT_ERR); 555 .loc 1 185 2 556 004c 064B ldr r3, .L32+8 557 004e 1B68 ldr r3, [r3] 558 0050 9A68 ldr r2, [r3, #8] 559 0052 054B ldr r3, .L32+8 560 0054 1B68 ldr r3, [r3] 561 0056 42F00102 orr r2, r2, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 14 562 005a 9A60 str r2, [r3, #8] 186:user_src/soft_uart.c **** 187:user_src/soft_uart.c **** } 563 .loc 1 187 1 564 005c 00BF nop 565 005e 80BD pop {r7, pc} 566 .L33: 567 .align 2 568 .L32: 569 0060 00000000 .word huart2 570 0064 02000000 .word uart_info+2 571 0068 00000000 .word huart3 572 006c 98000000 .word uart_info+152 573 .cfi_endproc 574 .LFE138: 576 .global read_DR 577 .section .bss.read_DR,"aw",%nobits 578 .align 2 581 read_DR: 582 0000 00000000 .space 4 583 .global recv_rkfifo 584 .section .bss.recv_rkfifo,"aw",%nobits 585 .align 2 588 recv_rkfifo: 589 0000 00000000 .space 24 589 00000000 589 00000000 589 00000000 589 00000000 590 .section .text.USER_UART_IRQHandler,"ax",%progbits 591 .align 1 592 .global USER_UART_IRQHandler 593 .syntax unified 594 .thumb 595 .thumb_func 597 USER_UART_IRQHandler: 598 .LFB139: 188:user_src/soft_uart.c **** 189:user_src/soft_uart.c **** 190:user_src/soft_uart.c **** /** 191:user_src/soft_uart.c **** * @file USER_UART_IRQHandler 192:user_src/soft_uart.c **** * @brief user用户中断函数 193:user_src/soft_uart.c **** * @param 194:user_src/soft_uart.c **** * @details 195:user_src/soft_uart.c **** * @author Zhang Sir 196:user_src/soft_uart.c **** **/ 197:user_src/soft_uart.c **** uint32_t read_DR; 198:user_src/soft_uart.c **** rkfifo_t recv_rkfifo; 199:user_src/soft_uart.c **** void USER_UART_IRQHandler(UART_HandleTypeDef *huart) 200:user_src/soft_uart.c **** { 599 .loc 1 200 1 600 .cfi_startproc 601 @ args = 0, pretend = 0, frame = 8 602 @ frame_needed = 1, uses_anonymous_args = 0 603 0000 80B5 push {r7, lr} 604 .LCFI27: 605 .cfi_def_cfa_offset 8 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 15 606 .cfi_offset 7, -8 607 .cfi_offset 14, -4 608 0002 82B0 sub sp, sp, #8 609 .LCFI28: 610 .cfi_def_cfa_offset 16 611 0004 00AF add r7, sp, #0 612 .LCFI29: 613 .cfi_def_cfa_register 7 614 0006 7860 str r0, [r7, #4] 201:user_src/soft_uart.c **** if (huart == &huart2) 615 .loc 1 201 5 616 0008 7B68 ldr r3, [r7, #4] 617 000a 3C4A ldr r2, .L41 618 000c 9342 cmp r3, r2 619 000e 25D1 bne .L35 202:user_src/soft_uart.c **** { 203:user_src/soft_uart.c **** if (RESET != __HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE)) 620 .loc 1 203 16 621 0010 3A4B ldr r3, .L41 622 0012 1B68 ldr r3, [r3] 623 0014 DB69 ldr r3, [r3, #28] 624 0016 03F01003 and r3, r3, #16 625 .loc 1 203 6 626 001a 102B cmp r3, #16 627 001c 1ED1 bne .L35 204:user_src/soft_uart.c **** { 205:user_src/soft_uart.c **** __HAL_UART_CLEAR_IDLEFLAG(&huart2); 628 .loc 1 205 4 629 001e 374B ldr r3, .L41 630 0020 1B68 ldr r3, [r3] 631 0022 1022 movs r2, #16 632 0024 1A62 str r2, [r3, #32] 206:user_src/soft_uart.c **** HAL_UART_AbortReceive(&huart2);//HAL_UART_DMAStop 有问题 633 .loc 1 206 4 634 0026 3548 ldr r0, .L41 635 0028 FFF7FEFF bl HAL_UART_AbortReceive 207:user_src/soft_uart.c **** uart_info.uart_dma_recv_counts = MAX_UART_BUF - __HAL_DMA_GET_COUNTER(huart->hdmarx); 636 .loc 1 207 52 637 002c 7B68 ldr r3, [r7, #4] 638 002e 5B6F ldr r3, [r3, #116] 639 0030 1B68 ldr r3, [r3] 640 0032 5B68 ldr r3, [r3, #4] 641 .loc 1 207 50 642 0034 DBB2 uxtb r3, r3 643 0036 5B42 rsbs r3, r3, #0 644 0038 DAB2 uxtb r2, r3 645 .loc 1 207 35 646 003a 314B ldr r3, .L41+4 647 003c 83F81821 strb r2, [r3, #280] 208:user_src/soft_uart.c **** rkfifo_in(&recv_rkfifo,uart_info.uart2_recv_buf,uart_info.uart_dma_recv_counts); 648 .loc 1 208 61 649 0040 2F4B ldr r3, .L41+4 650 0042 93F81831 ldrb r3, [r3, #280] @ zero_extendqisi2 651 .loc 1 208 4 652 0046 1A46 mov r2, r3 653 0048 2E49 ldr r1, .L41+8 654 004a 2F48 ldr r0, .L41+12 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 16 655 004c FFF7FEFF bl rkfifo_in 209:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart2, uart_info.uart2_recv_buf, MAX_UART_BUF); 656 .loc 1 209 4 657 0050 4FF48072 mov r2, #256 658 0054 2B49 ldr r1, .L41+8 659 0056 2948 ldr r0, .L41 660 0058 FFF7FEFF bl HAL_UART_Receive_DMA 661 .L35: 210:user_src/soft_uart.c **** } 211:user_src/soft_uart.c **** } 212:user_src/soft_uart.c **** 213:user_src/soft_uart.c **** if(huart == &huart3) 662 .loc 1 213 7 663 005c 7B68 ldr r3, [r7, #4] 664 005e 2B4A ldr r2, .L41+16 665 0060 9342 cmp r3, r2 666 0062 46D1 bne .L40 214:user_src/soft_uart.c **** { 215:user_src/soft_uart.c **** if (RESET != __HAL_UART_GET_FLAG(&huart3, UART_FLAG_IDLE)) 667 .loc 1 215 16 668 0064 294B ldr r3, .L41+16 669 0066 1B68 ldr r3, [r3] 670 0068 DB69 ldr r3, [r3, #28] 671 006a 03F01003 and r3, r3, #16 672 .loc 1 215 6 673 006e 102B cmp r3, #16 674 0070 3FD1 bne .L40 216:user_src/soft_uart.c **** { 217:user_src/soft_uart.c **** __HAL_UART_CLEAR_IDLEFLAG(&huart3); //清除中断标志位,不清除一直在中断里 675 .loc 1 217 4 676 0072 264B ldr r3, .L41+16 677 0074 1B68 ldr r3, [r3] 678 0076 1022 movs r2, #16 679 0078 1A62 str r2, [r3, #32] 218:user_src/soft_uart.c **** HAL_UART_AbortReceive(&huart3); 680 .loc 1 218 4 681 007a 2448 ldr r0, .L41+16 682 007c FFF7FEFF bl HAL_UART_AbortReceive 219:user_src/soft_uart.c **** 220:user_src/soft_uart.c **** uart_info.uart_dma_recv_counts = MAX_UART_BUF - __HAL_DMA_GET_COUNTER(huart->hdmarx); 683 .loc 1 220 52 684 0080 7B68 ldr r3, [r7, #4] 685 0082 5B6F ldr r3, [r3, #116] 686 0084 1B68 ldr r3, [r3] 687 0086 5B68 ldr r3, [r3, #4] 688 .loc 1 220 50 689 0088 DBB2 uxtb r3, r3 690 008a 5B42 rsbs r3, r3, #0 691 008c DAB2 uxtb r2, r3 692 .loc 1 220 35 693 008e 1C4B ldr r3, .L41+4 694 0090 83F81821 strb r2, [r3, #280] 221:user_src/soft_uart.c **** 222:user_src/soft_uart.c **** //串口三接奥安,上飞发动机 223:user_src/soft_uart.c **** if (aoan_engine_Link.connect_status != COMP_NOEXIST) 695 .loc 1 223 24 696 0094 1E4B ldr r3, .L41+20 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 17 697 0096 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 698 .loc 1 223 7 699 0098 002B cmp r3, #0 700 009a 08D0 beq .L37 224:user_src/soft_uart.c **** { 225:user_src/soft_uart.c **** decode_aoan_engine(uart_info.uart3_recv_buf, uart_info.uart_dma_recv_counts); 701 .loc 1 225 59 702 009c 184B ldr r3, .L41+4 703 009e 93F81831 ldrb r3, [r3, #280] @ zero_extendqisi2 704 .loc 1 225 5 705 00a2 9BB2 uxth r3, r3 706 00a4 1946 mov r1, r3 707 00a6 1B48 ldr r0, .L41+24 708 00a8 FFF7FEFF bl decode_aoan_engine 709 00ac 1CE0 b .L38 710 .L37: 226:user_src/soft_uart.c **** } 227:user_src/soft_uart.c **** else if (vkv3_engine_link.connect_status != COMP_NOEXIST) 711 .loc 1 227 29 712 00ae 1A4B ldr r3, .L41+28 713 00b0 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 714 .loc 1 227 12 715 00b2 002B cmp r3, #0 716 00b4 08D0 beq .L39 228:user_src/soft_uart.c **** { 229:user_src/soft_uart.c **** decode_vkv3_engine(uart_info.uart3_recv_buf, uart_info.uart_dma_recv_counts); 717 .loc 1 229 59 718 00b6 124B ldr r3, .L41+4 719 00b8 93F81831 ldrb r3, [r3, #280] @ zero_extendqisi2 720 .loc 1 229 5 721 00bc 9BB2 uxth r3, r3 722 00be 1946 mov r1, r3 723 00c0 1448 ldr r0, .L41+24 724 00c2 FFF7FEFF bl decode_vkv3_engine 725 00c6 0FE0 b .L38 726 .L39: 230:user_src/soft_uart.c **** } 231:user_src/soft_uart.c **** else 232:user_src/soft_uart.c **** { 233:user_src/soft_uart.c **** //根据协议选择设备 234:user_src/soft_uart.c **** decode_vkv3_engine(uart_info.uart3_recv_buf, uart_info.uart_dma_recv_counts); 727 .loc 1 234 59 728 00c8 0D4B ldr r3, .L41+4 729 00ca 93F81831 ldrb r3, [r3, #280] @ zero_extendqisi2 730 .loc 1 234 5 731 00ce 9BB2 uxth r3, r3 732 00d0 1946 mov r1, r3 733 00d2 1048 ldr r0, .L41+24 734 00d4 FFF7FEFF bl decode_vkv3_engine 235:user_src/soft_uart.c **** decode_aoan_engine(uart_info.uart3_recv_buf, uart_info.uart_dma_recv_counts); 735 .loc 1 235 59 736 00d8 094B ldr r3, .L41+4 737 00da 93F81831 ldrb r3, [r3, #280] @ zero_extendqisi2 738 .loc 1 235 5 739 00de 9BB2 uxth r3, r3 740 00e0 1946 mov r1, r3 741 00e2 0C48 ldr r0, .L41+24 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 18 742 00e4 FFF7FEFF bl decode_aoan_engine 743 .L38: 236:user_src/soft_uart.c **** } 237:user_src/soft_uart.c **** 238:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart3, (uint8_t *)uart_info.uart3_recv_buf, MAX_UART_BUF/2); 744 .loc 1 238 4 745 00e8 8022 movs r2, #128 746 00ea 0A49 ldr r1, .L41+24 747 00ec 0748 ldr r0, .L41+16 748 00ee FFF7FEFF bl HAL_UART_Receive_DMA 749 .L40: 239:user_src/soft_uart.c **** } 240:user_src/soft_uart.c **** } 241:user_src/soft_uart.c **** } 750 .loc 1 241 1 751 00f2 00BF nop 752 00f4 0837 adds r7, r7, #8 753 .LCFI30: 754 .cfi_def_cfa_offset 8 755 00f6 BD46 mov sp, r7 756 .LCFI31: 757 .cfi_def_cfa_register 13 758 @ sp needed 759 00f8 80BD pop {r7, pc} 760 .L42: 761 00fa 00BF .align 2 762 .L41: 763 00fc 00000000 .word huart2 764 0100 00000000 .word uart_info 765 0104 02000000 .word uart_info+2 766 0108 00000000 .word recv_rkfifo 767 010c 00000000 .word huart3 768 0110 00000000 .word aoan_engine_Link 769 0114 98000000 .word uart_info+152 770 0118 00000000 .word vkv3_engine_link 771 .cfi_endproc 772 .LFE139: 774 .section .text.HAL_UART_ErrorCallback,"ax",%progbits 775 .align 1 776 .global HAL_UART_ErrorCallback 777 .syntax unified 778 .thumb 779 .thumb_func 781 HAL_UART_ErrorCallback: 782 .LFB140: 242:user_src/soft_uart.c **** 243:user_src/soft_uart.c **** 244:user_src/soft_uart.c **** /** 245:user_src/soft_uart.c **** * @file HAL_UART_ErrorCallback 246:user_src/soft_uart.c **** * @brief uart错误中断回调函数 247:user_src/soft_uart.c **** * @param 248:user_src/soft_uart.c **** * @details 249:user_src/soft_uart.c **** * @author Zhang Sir 250:user_src/soft_uart.c **** **/ 251:user_src/soft_uart.c **** void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) 252:user_src/soft_uart.c **** { 783 .loc 1 252 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 19 784 .cfi_startproc 785 @ args = 0, pretend = 0, frame = 8 786 @ frame_needed = 1, uses_anonymous_args = 0 787 0000 80B5 push {r7, lr} 788 .LCFI32: 789 .cfi_def_cfa_offset 8 790 .cfi_offset 7, -8 791 .cfi_offset 14, -4 792 0002 82B0 sub sp, sp, #8 793 .LCFI33: 794 .cfi_def_cfa_offset 16 795 0004 00AF add r7, sp, #0 796 .LCFI34: 797 .cfi_def_cfa_register 7 798 0006 7860 str r0, [r7, #4] 253:user_src/soft_uart.c **** if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) != RESET) //接收溢出检测 799 .loc 1 253 6 800 0008 7B68 ldr r3, [r7, #4] 801 000a 1B68 ldr r3, [r3] 802 000c DB69 ldr r3, [r3, #28] 803 000e 03F00803 and r3, r3, #8 804 .loc 1 253 5 805 0012 082B cmp r3, #8 806 0014 03D1 bne .L44 254:user_src/soft_uart.c **** { 255:user_src/soft_uart.c **** __HAL_UART_CLEAR_OREFLAG(huart); 807 .loc 1 255 3 808 0016 7B68 ldr r3, [r7, #4] 809 0018 1B68 ldr r3, [r3] 810 001a 0822 movs r2, #8 811 001c 1A62 str r2, [r3, #32] 812 .L44: 256:user_src/soft_uart.c **** } 257:user_src/soft_uart.c **** 258:user_src/soft_uart.c **** if (__HAL_UART_GET_FLAG (huart, UART_FLAG_RXNE) != RESET)//接收数据 813 .loc 1 258 6 814 001e 7B68 ldr r3, [r7, #4] 815 0020 1B68 ldr r3, [r3] 816 0022 DB69 ldr r3, [r3, #28] 817 0024 03F02003 and r3, r3, #32 818 .loc 1 258 5 819 0028 202B cmp r3, #32 820 002a 03D1 bne .L45 259:user_src/soft_uart.c **** { 260:user_src/soft_uart.c **** __HAL_UART_CLEAR_FLAG (huart, UART_FLAG_RXNE); 821 .loc 1 260 5 822 002c 7B68 ldr r3, [r7, #4] 823 002e 1B68 ldr r3, [r3] 824 0030 2022 movs r2, #32 825 0032 1A62 str r2, [r3, #32] 826 .L45: 261:user_src/soft_uart.c **** } 262:user_src/soft_uart.c **** 263:user_src/soft_uart.c **** __HAL_UART_CLEAR_PEFLAG (huart); 827 .loc 1 263 2 828 0034 7B68 ldr r3, [r7, #4] 829 0036 1B68 ldr r3, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 20 830 0038 0122 movs r2, #1 831 003a 1A62 str r2, [r3, #32] 264:user_src/soft_uart.c **** 265:user_src/soft_uart.c **** if (huart == &huart2) 832 .loc 1 265 5 833 003c 7B68 ldr r3, [r7, #4] 834 003e 0B4A ldr r2, .L49 835 0040 9342 cmp r3, r2 836 0042 06D1 bne .L46 266:user_src/soft_uart.c **** { 267:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart2, (uint8_t *)uart_info.uart2_recv_buf, MAX_UART_BUF); 837 .loc 1 267 3 838 0044 4FF48072 mov r2, #256 839 0048 0949 ldr r1, .L49+4 840 004a 0848 ldr r0, .L49 841 004c FFF7FEFF bl HAL_UART_Receive_DMA 268:user_src/soft_uart.c **** } 269:user_src/soft_uart.c **** else if (huart == &huart3) 270:user_src/soft_uart.c **** { 271:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart3, (uint8_t *)uart_info.uart3_recv_buf, MAX_UART_BUF/2); 272:user_src/soft_uart.c **** } 273:user_src/soft_uart.c **** 274:user_src/soft_uart.c **** } 842 .loc 1 274 1 843 0050 08E0 b .L48 844 .L46: 269:user_src/soft_uart.c **** { 845 .loc 1 269 10 846 0052 7B68 ldr r3, [r7, #4] 847 0054 074A ldr r2, .L49+8 848 0056 9342 cmp r3, r2 849 0058 04D1 bne .L48 271:user_src/soft_uart.c **** } 850 .loc 1 271 3 851 005a 8022 movs r2, #128 852 005c 0649 ldr r1, .L49+12 853 005e 0548 ldr r0, .L49+8 854 0060 FFF7FEFF bl HAL_UART_Receive_DMA 855 .L48: 856 .loc 1 274 1 857 0064 00BF nop 858 0066 0837 adds r7, r7, #8 859 .LCFI35: 860 .cfi_def_cfa_offset 8 861 0068 BD46 mov sp, r7 862 .LCFI36: 863 .cfi_def_cfa_register 13 864 @ sp needed 865 006a 80BD pop {r7, pc} 866 .L50: 867 .align 2 868 .L49: 869 006c 00000000 .word huart2 870 0070 02000000 .word uart_info+2 871 0074 00000000 .word huart3 872 0078 98000000 .word uart_info+152 873 .cfi_endproc ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 21 874 .LFE140: 876 .section .text.HAL_UART_TxCpltCallback,"ax",%progbits 877 .align 1 878 .global HAL_UART_TxCpltCallback 879 .syntax unified 880 .thumb 881 .thumb_func 883 HAL_UART_TxCpltCallback: 884 .LFB141: 275:user_src/soft_uart.c **** 276:user_src/soft_uart.c **** 277:user_src/soft_uart.c **** /** 278:user_src/soft_uart.c **** * @file HAL_UART_TxCpltCallback 279:user_src/soft_uart.c **** * @brief uart发送回调 280:user_src/soft_uart.c **** * @param 281:user_src/soft_uart.c **** * @details 282:user_src/soft_uart.c **** * @author Zhang Sir 283:user_src/soft_uart.c **** **/ 284:user_src/soft_uart.c **** void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) 285:user_src/soft_uart.c **** { 885 .loc 1 285 1 886 .cfi_startproc 887 @ args = 0, pretend = 0, frame = 8 888 @ frame_needed = 1, uses_anonymous_args = 0 889 @ link register save eliminated. 890 0000 80B4 push {r7} 891 .LCFI37: 892 .cfi_def_cfa_offset 4 893 .cfi_offset 7, -4 894 0002 83B0 sub sp, sp, #12 895 .LCFI38: 896 .cfi_def_cfa_offset 16 897 0004 00AF add r7, sp, #0 898 .LCFI39: 899 .cfi_def_cfa_register 7 900 0006 7860 str r0, [r7, #4] 286:user_src/soft_uart.c **** if (huart == &huart2) 287:user_src/soft_uart.c **** { 288:user_src/soft_uart.c **** 289:user_src/soft_uart.c **** } 290:user_src/soft_uart.c **** } 901 .loc 1 290 1 902 0008 00BF nop 903 000a 0C37 adds r7, r7, #12 904 .LCFI40: 905 .cfi_def_cfa_offset 4 906 000c BD46 mov sp, r7 907 .LCFI41: 908 .cfi_def_cfa_register 13 909 @ sp needed 910 000e 5DF8047B ldr r7, [sp], #4 911 .LCFI42: 912 .cfi_restore 7 913 .cfi_def_cfa_offset 0 914 0012 7047 bx lr 915 .cfi_endproc 916 .LFE141: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 22 918 .global recv_step 919 .section .bss.recv_step,"aw",%nobits 922 recv_step: 923 0000 00 .space 1 924 .global fcu_protocol 925 .section .bss.fcu_protocol,"aw",%nobits 926 .align 2 929 fcu_protocol: 930 0000 00000000 .space 266 930 00000000 930 00000000 930 00000000 930 00000000 931 .global vk_data 932 .section .data.vk_data,"aw" 933 .align 2 936 vk_data: 937 0000 FE .byte -2 938 0001 0000 .space 2 939 0003 00 .byte 0 940 0004 0000 .space 2 941 0006 06 .byte 6 942 0007 02 .byte 2 943 0008 00000000 .space 258 943 00000000 943 00000000 943 00000000 943 00000000 944 .section .text.check_uart_data,"ax",%progbits 945 .align 1 946 .global check_uart_data 947 .syntax unified 948 .thumb 949 .thumb_func 951 check_uart_data: 952 .LFB142: 291:user_src/soft_uart.c **** 292:user_src/soft_uart.c **** 293:user_src/soft_uart.c **** /** 294:user_src/soft_uart.c **** * @file check_uart_data 295:user_src/soft_uart.c **** * @brief 接收数据组包解析 296:user_src/soft_uart.c **** * @param 297:user_src/soft_uart.c **** * @details 298:user_src/soft_uart.c **** * @author Zhang Sir 299:user_src/soft_uart.c **** **/ 300:user_src/soft_uart.c **** Msg_Rx_Stage recv_step; 301:user_src/soft_uart.c **** Vk_protocol fcu_protocol; 302:user_src/soft_uart.c **** Vk_protocol vk_data = {.head = 0XFE, 303:user_src/soft_uart.c **** .system_id = 0, 304:user_src/soft_uart.c **** .head_bytes = 6, 305:user_src/soft_uart.c **** .check_bytes = 2}; 306:user_src/soft_uart.c **** 307:user_src/soft_uart.c **** void check_uart_data(rkfifo_t *fifo) 308:user_src/soft_uart.c **** { 953 .loc 1 308 1 954 .cfi_startproc 955 @ args = 0, pretend = 0, frame = 16 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 23 956 @ frame_needed = 1, uses_anonymous_args = 0 957 0000 80B5 push {r7, lr} 958 .LCFI43: 959 .cfi_def_cfa_offset 8 960 .cfi_offset 7, -8 961 .cfi_offset 14, -4 962 0002 84B0 sub sp, sp, #16 963 .LCFI44: 964 .cfi_def_cfa_offset 24 965 0004 00AF add r7, sp, #0 966 .LCFI45: 967 .cfi_def_cfa_register 7 968 0006 7860 str r0, [r7, #4] 309:user_src/soft_uart.c **** uint8_t c = 0; 969 .loc 1 309 10 970 0008 0023 movs r3, #0 971 000a FB73 strb r3, [r7, #15] 310:user_src/soft_uart.c **** static uint32_t vk_recv_time = 0; 311:user_src/soft_uart.c **** static uint8_t i = 0; 312:user_src/soft_uart.c **** 313:user_src/soft_uart.c **** while (rkfifo_out(fifo, &c, 1) != 0) 972 .loc 1 313 8 973 000c C9E1 b .L53 974 .L89: 314:user_src/soft_uart.c **** { 315:user_src/soft_uart.c **** 316:user_src/soft_uart.c **** if(recv_step != RX_HEAD && HAL_GetTick() - vk_recv_time > 200) 975 .loc 1 316 16 976 000e 844B ldr r3, .L95 977 0010 1B78 ldrb r3, [r3] @ zero_extendqisi2 978 .loc 1 316 5 979 0012 002B cmp r3, #0 980 0014 0AD0 beq .L54 981 .loc 1 316 30 discriminator 1 982 0016 FFF7FEFF bl HAL_GetTick 983 001a 0246 mov r2, r0 984 .loc 1 316 44 discriminator 1 985 001c 814B ldr r3, .L95+4 986 001e 1B68 ldr r3, [r3] 987 0020 D31A subs r3, r2, r3 988 .loc 1 316 27 discriminator 1 989 0022 C82B cmp r3, #200 990 0024 02D9 bls .L54 317:user_src/soft_uart.c **** { 318:user_src/soft_uart.c **** recv_step = RX_HEAD; 991 .loc 1 318 14 992 0026 7E4B ldr r3, .L95 993 0028 0022 movs r2, #0 994 002a 1A70 strb r2, [r3] 995 .L54: 319:user_src/soft_uart.c **** } 320:user_src/soft_uart.c **** 321:user_src/soft_uart.c **** //解析出一包完整的数据 322:user_src/soft_uart.c **** switch (recv_step) 996 .loc 1 322 3 997 002c 7C4B ldr r3, .L95 998 002e 1B78 ldrb r3, [r3] @ zero_extendqisi2 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 24 999 0030 082B cmp r3, #8 1000 0032 00F2AB81 bhi .L55 1001 0036 01A2 adr r2, .L57 1002 0038 52F823F0 ldr pc, [r2, r3, lsl #2] 1003 .p2align 2 1004 .L57: 1005 003c 61000000 .word .L65+1 1006 0040 7F000000 .word .L64+1 1007 0044 8D000000 .word .L63+1 1008 0048 9B000000 .word .L62+1 1009 004c B5000000 .word .L61+1 1010 0050 EF000000 .word .L60+1 1011 0054 03010000 .word .L59+1 1012 0058 4B010000 .word .L58+1 1013 005c 75010000 .word .L56+1 1014 .p2align 1 1015 .L65: 323:user_src/soft_uart.c **** { 324:user_src/soft_uart.c **** case RX_HEAD: 325:user_src/soft_uart.c **** if(c == vk_data.head) 1016 .loc 1 325 19 1017 0060 714B ldr r3, .L95+8 1018 0062 1A78 ldrb r2, [r3] @ zero_extendqisi2 1019 .loc 1 325 9 1020 0064 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1021 .loc 1 325 6 1022 0066 9A42 cmp r2, r3 1023 0068 40F09481 bne .L90 326:user_src/soft_uart.c **** { 327:user_src/soft_uart.c **** vk_recv_time = HAL_GetTick(); 1024 .loc 1 327 20 1025 006c FFF7FEFF bl HAL_GetTick 1026 0070 0346 mov r3, r0 1027 .loc 1 327 18 1028 0072 6C4A ldr r2, .L95+4 1029 0074 1360 str r3, [r2] 328:user_src/soft_uart.c **** recv_step = RX_PAYLOAD_LEN; 1030 .loc 1 328 15 1031 0076 6A4B ldr r3, .L95 1032 0078 0122 movs r2, #1 1033 007a 1A70 strb r2, [r3] 329:user_src/soft_uart.c **** } 330:user_src/soft_uart.c **** break; 1034 .loc 1 330 4 1035 007c 8AE1 b .L90 1036 .L64: 331:user_src/soft_uart.c **** case RX_PAYLOAD_LEN: 332:user_src/soft_uart.c **** vk_data.len = c; 1037 .loc 1 332 16 1038 007e FA7B ldrb r2, [r7, #15] @ zero_extendqisi2 1039 0080 694B ldr r3, .L95+8 1040 0082 5A70 strb r2, [r3, #1] 333:user_src/soft_uart.c **** recv_step = RX_SEQ; 1041 .loc 1 333 14 1042 0084 664B ldr r3, .L95 1043 0086 0222 movs r2, #2 1044 0088 1A70 strb r2, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 25 334:user_src/soft_uart.c **** break; 1045 .loc 1 334 4 1046 008a 86E1 b .L67 1047 .L63: 335:user_src/soft_uart.c **** case RX_SEQ: 336:user_src/soft_uart.c **** vk_data.seq = c; 1048 .loc 1 336 16 1049 008c FA7B ldrb r2, [r7, #15] @ zero_extendqisi2 1050 008e 664B ldr r3, .L95+8 1051 0090 9A70 strb r2, [r3, #2] 337:user_src/soft_uart.c **** recv_step = RX_SYSID; 1052 .loc 1 337 14 1053 0092 634B ldr r3, .L95 1054 0094 0322 movs r2, #3 1055 0096 1A70 strb r2, [r3] 338:user_src/soft_uart.c **** break; 1056 .loc 1 338 4 1057 0098 7FE1 b .L67 1058 .L62: 339:user_src/soft_uart.c **** case RX_SYSID: 340:user_src/soft_uart.c **** if(c == vk_data.system_id) 1059 .loc 1 340 19 1060 009a 634B ldr r3, .L95+8 1061 009c DA78 ldrb r2, [r3, #3] @ zero_extendqisi2 1062 .loc 1 340 9 1063 009e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1064 .loc 1 340 6 1065 00a0 9A42 cmp r2, r3 1066 00a2 03D1 bne .L68 341:user_src/soft_uart.c **** { 342:user_src/soft_uart.c **** recv_step = RX_GROUPID; 1067 .loc 1 342 15 1068 00a4 5E4B ldr r3, .L95 1069 00a6 0422 movs r2, #4 1070 00a8 1A70 strb r2, [r3] 343:user_src/soft_uart.c **** } 344:user_src/soft_uart.c **** else 345:user_src/soft_uart.c **** { 346:user_src/soft_uart.c **** recv_step = RX_HEAD; 347:user_src/soft_uart.c **** } 348:user_src/soft_uart.c **** break; 1071 .loc 1 348 4 1072 00aa 76E1 b .L67 1073 .L68: 346:user_src/soft_uart.c **** } 1074 .loc 1 346 15 1075 00ac 5C4B ldr r3, .L95 1076 00ae 0022 movs r2, #0 1077 00b0 1A70 strb r2, [r3] 1078 .loc 1 348 4 1079 00b2 72E1 b .L67 1080 .L61: 349:user_src/soft_uart.c **** case RX_GROUPID: 350:user_src/soft_uart.c **** if(c == GROUP_ID_FCU || c == GROUP_ID_PMU_UPDATE || c == GROUP_ID_F_UPDATE || 1081 .loc 1 350 9 1082 00b4 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1083 .loc 1 350 6 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 26 1084 00b6 002B cmp r3, #0 1085 00b8 0ED0 beq .L70 1086 .loc 1 350 30 discriminator 1 1087 00ba FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1088 .loc 1 350 25 discriminator 1 1089 00bc CC2B cmp r3, #204 1090 00be 0BD0 beq .L70 1091 .loc 1 350 58 discriminator 2 1092 00c0 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1093 .loc 1 350 53 discriminator 2 1094 00c2 332B cmp r3, #51 1095 00c4 08D0 beq .L70 351:user_src/soft_uart.c **** c == GROUP_ID_B_UPDATE || c == GROUP_ID_T_UPDATE|| c == GROUP_ID_WEIGHT_UPDATE) 1096 .loc 1 351 7 discriminator 3 1097 00c6 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 350:user_src/soft_uart.c **** c == GROUP_ID_B_UPDATE || c == GROUP_ID_T_UPDATE|| c == GROUP_ID_WEIGHT_UPDATE) 1098 .loc 1 350 79 discriminator 3 1099 00c8 342B cmp r3, #52 1100 00ca 05D0 beq .L70 1101 .loc 1 351 33 1102 00cc FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1103 .loc 1 351 28 1104 00ce 382B cmp r3, #56 1105 00d0 02D0 beq .L70 1106 .loc 1 351 58 discriminator 1 1107 00d2 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1108 .loc 1 351 53 discriminator 1 1109 00d4 DE2B cmp r3, #222 1110 00d6 06D1 bne .L71 1111 .L70: 352:user_src/soft_uart.c **** { 353:user_src/soft_uart.c **** vk_data.group_id = c; 1112 .loc 1 353 22 1113 00d8 FA7B ldrb r2, [r7, #15] @ zero_extendqisi2 1114 00da 534B ldr r3, .L95+8 1115 00dc 1A71 strb r2, [r3, #4] 354:user_src/soft_uart.c **** recv_step = RX_MSGID; 1116 .loc 1 354 15 1117 00de 504B ldr r3, .L95 1118 00e0 0522 movs r2, #5 1119 00e2 1A70 strb r2, [r3] 355:user_src/soft_uart.c **** } 356:user_src/soft_uart.c **** else 357:user_src/soft_uart.c **** { 358:user_src/soft_uart.c **** recv_step = RX_HEAD; 359:user_src/soft_uart.c **** } 360:user_src/soft_uart.c **** break; 1120 .loc 1 360 4 1121 00e4 59E1 b .L67 1122 .L71: 358:user_src/soft_uart.c **** } 1123 .loc 1 358 15 1124 00e6 4E4B ldr r3, .L95 1125 00e8 0022 movs r2, #0 1126 00ea 1A70 strb r2, [r3] 1127 .loc 1 360 4 1128 00ec 55E1 b .L67 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 27 1129 .L60: 361:user_src/soft_uart.c **** case RX_MSGID: 362:user_src/soft_uart.c **** vk_data.msg_id = c; 1130 .loc 1 362 19 1131 00ee FA7B ldrb r2, [r7, #15] @ zero_extendqisi2 1132 00f0 4D4B ldr r3, .L95+8 1133 00f2 5A71 strb r2, [r3, #5] 363:user_src/soft_uart.c **** recv_step = RX_PAYLOAD; 1134 .loc 1 363 14 1135 00f4 4A4B ldr r3, .L95 1136 00f6 0622 movs r2, #6 1137 00f8 1A70 strb r2, [r3] 364:user_src/soft_uart.c **** i = 0; 1138 .loc 1 364 6 1139 00fa 4C4B ldr r3, .L95+12 1140 00fc 0022 movs r2, #0 1141 00fe 1A70 strb r2, [r3] 365:user_src/soft_uart.c **** break; 1142 .loc 1 365 4 1143 0100 4BE1 b .L67 1144 .L59: 366:user_src/soft_uart.c **** case RX_PAYLOAD: 367:user_src/soft_uart.c **** vk_data.payload[vk_data.head_bytes + i] = c; 1145 .loc 1 367 27 1146 0102 494B ldr r3, .L95+8 1147 0104 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1148 0106 1A46 mov r2, r3 1149 .loc 1 367 39 1150 0108 484B ldr r3, .L95+12 1151 010a 1B78 ldrb r3, [r3] @ zero_extendqisi2 1152 010c 1344 add r3, r3, r2 1153 .loc 1 367 44 1154 010e F97B ldrb r1, [r7, #15] @ zero_extendqisi2 1155 0110 454A ldr r2, .L95+8 1156 0112 1344 add r3, r3, r2 1157 0114 0A46 mov r2, r1 1158 0116 9A72 strb r2, [r3, #10] 368:user_src/soft_uart.c **** i++; 1159 .loc 1 368 5 1160 0118 444B ldr r3, .L95+12 1161 011a 1B78 ldrb r3, [r3] @ zero_extendqisi2 1162 011c 0133 adds r3, r3, #1 1163 011e DAB2 uxtb r2, r3 1164 0120 424B ldr r3, .L95+12 1165 0122 1A70 strb r2, [r3] 369:user_src/soft_uart.c **** if(i == vk_data.len) 1166 .loc 1 369 19 1167 0124 404B ldr r3, .L95+8 1168 0126 5A78 ldrb r2, [r3, #1] @ zero_extendqisi2 1169 .loc 1 369 9 1170 0128 404B ldr r3, .L95+12 1171 012a 1B78 ldrb r3, [r3] @ zero_extendqisi2 1172 .loc 1 369 6 1173 012c 9A42 cmp r2, r3 1174 012e 03D1 bne .L73 370:user_src/soft_uart.c **** { 371:user_src/soft_uart.c **** recv_step = RX_CHECK_LOW; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 28 1175 .loc 1 371 15 1176 0130 3B4B ldr r3, .L95 1177 0132 0722 movs r2, #7 1178 0134 1A70 strb r2, [r3] 372:user_src/soft_uart.c **** } 373:user_src/soft_uart.c **** else if(vk_data.len == 0) //没有payload 374:user_src/soft_uart.c **** { 375:user_src/soft_uart.c **** recv_step = RX_CHECK_HIGH; 376:user_src/soft_uart.c **** } 377:user_src/soft_uart.c **** break; 1179 .loc 1 377 4 1180 0136 2FE1 b .L91 1181 .L73: 373:user_src/soft_uart.c **** { 1182 .loc 1 373 19 1183 0138 3B4B ldr r3, .L95+8 1184 013a 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2 373:user_src/soft_uart.c **** { 1185 .loc 1 373 11 1186 013c 002B cmp r3, #0 1187 013e 40F02B81 bne .L91 375:user_src/soft_uart.c **** } 1188 .loc 1 375 15 1189 0142 374B ldr r3, .L95 1190 0144 0822 movs r2, #8 1191 0146 1A70 strb r2, [r3] 1192 .loc 1 377 4 1193 0148 26E1 b .L91 1194 .L58: 378:user_src/soft_uart.c **** case RX_CHECK_LOW: 379:user_src/soft_uart.c **** vk_data.payload[vk_data.head_bytes + i] = c; 1195 .loc 1 379 27 1196 014a 374B ldr r3, .L95+8 1197 014c 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1198 014e 1A46 mov r2, r3 1199 .loc 1 379 39 1200 0150 364B ldr r3, .L95+12 1201 0152 1B78 ldrb r3, [r3] @ zero_extendqisi2 1202 0154 1344 add r3, r3, r2 1203 .loc 1 379 44 1204 0156 F97B ldrb r1, [r7, #15] @ zero_extendqisi2 1205 0158 334A ldr r2, .L95+8 1206 015a 1344 add r3, r3, r2 1207 015c 0A46 mov r2, r1 1208 015e 9A72 strb r2, [r3, #10] 380:user_src/soft_uart.c **** i++; 1209 .loc 1 380 5 1210 0160 324B ldr r3, .L95+12 1211 0162 1B78 ldrb r3, [r3] @ zero_extendqisi2 1212 0164 0133 adds r3, r3, #1 1213 0166 DAB2 uxtb r2, r3 1214 0168 304B ldr r3, .L95+12 1215 016a 1A70 strb r2, [r3] 381:user_src/soft_uart.c **** recv_step = RX_CHECK_HIGH; 1216 .loc 1 381 14 1217 016c 2C4B ldr r3, .L95 1218 016e 0822 movs r2, #8 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 29 1219 0170 1A70 strb r2, [r3] 382:user_src/soft_uart.c **** break; 1220 .loc 1 382 4 1221 0172 12E1 b .L67 1222 .L56: 383:user_src/soft_uart.c **** case RX_CHECK_HIGH: 384:user_src/soft_uart.c **** vk_data.payload[vk_data.head_bytes + i] = c; 1223 .loc 1 384 27 1224 0174 2C4B ldr r3, .L95+8 1225 0176 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1226 0178 1A46 mov r2, r3 1227 .loc 1 384 39 1228 017a 2C4B ldr r3, .L95+12 1229 017c 1B78 ldrb r3, [r3] @ zero_extendqisi2 1230 017e 1344 add r3, r3, r2 1231 .loc 1 384 44 1232 0180 F97B ldrb r1, [r7, #15] @ zero_extendqisi2 1233 0182 294A ldr r2, .L95+8 1234 0184 1344 add r3, r3, r2 1235 0186 0A46 mov r2, r1 1236 0188 9A72 strb r2, [r3, #10] 385:user_src/soft_uart.c **** 386:user_src/soft_uart.c **** vk_data.payload[0] = vk_data.head; 1237 .loc 1 386 32 1238 018a 274B ldr r3, .L95+8 1239 018c 1A78 ldrb r2, [r3] @ zero_extendqisi2 1240 .loc 1 386 23 1241 018e 264B ldr r3, .L95+8 1242 0190 9A72 strb r2, [r3, #10] 387:user_src/soft_uart.c **** vk_data.payload[1] = vk_data.len; 1243 .loc 1 387 32 1244 0192 254B ldr r3, .L95+8 1245 0194 5A78 ldrb r2, [r3, #1] @ zero_extendqisi2 1246 .loc 1 387 23 1247 0196 244B ldr r3, .L95+8 1248 0198 DA72 strb r2, [r3, #11] 388:user_src/soft_uart.c **** vk_data.payload[2] = vk_data.seq; 1249 .loc 1 388 32 1250 019a 234B ldr r3, .L95+8 1251 019c 9A78 ldrb r2, [r3, #2] @ zero_extendqisi2 1252 .loc 1 388 23 1253 019e 224B ldr r3, .L95+8 1254 01a0 1A73 strb r2, [r3, #12] 389:user_src/soft_uart.c **** vk_data.payload[3] = vk_data.system_id; 1255 .loc 1 389 32 1256 01a2 214B ldr r3, .L95+8 1257 01a4 DA78 ldrb r2, [r3, #3] @ zero_extendqisi2 1258 .loc 1 389 23 1259 01a6 204B ldr r3, .L95+8 1260 01a8 5A73 strb r2, [r3, #13] 390:user_src/soft_uart.c **** vk_data.payload[4] = vk_data.group_id; 1261 .loc 1 390 32 1262 01aa 1F4B ldr r3, .L95+8 1263 01ac 1A79 ldrb r2, [r3, #4] @ zero_extendqisi2 1264 .loc 1 390 23 1265 01ae 1E4B ldr r3, .L95+8 1266 01b0 9A73 strb r2, [r3, #14] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 30 391:user_src/soft_uart.c **** vk_data.payload[5] = vk_data.msg_id; 1267 .loc 1 391 32 1268 01b2 1D4B ldr r3, .L95+8 1269 01b4 5A79 ldrb r2, [r3, #5] @ zero_extendqisi2 1270 .loc 1 391 23 1271 01b6 1C4B ldr r3, .L95+8 1272 01b8 DA73 strb r2, [r3, #15] 392:user_src/soft_uart.c **** 393:user_src/soft_uart.c **** if(0 == Get_Crc16(&vk_data.payload[0],vk_data.len + vk_data.head_bytes + vk_data.check_bytes)) 1273 .loc 1 393 49 1274 01ba 1B4B ldr r3, .L95+8 1275 01bc 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2 1276 01be 9AB2 uxth r2, r3 1277 .loc 1 393 63 1278 01c0 194B ldr r3, .L95+8 1279 01c2 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1280 01c4 9BB2 uxth r3, r3 1281 .loc 1 393 54 1282 01c6 1344 add r3, r3, r2 1283 01c8 9AB2 uxth r2, r3 1284 .loc 1 393 84 1285 01ca 174B ldr r3, .L95+8 1286 01cc DB79 ldrb r3, [r3, #7] @ zero_extendqisi2 1287 01ce 9BB2 uxth r3, r3 1288 .loc 1 393 12 1289 01d0 1344 add r3, r3, r2 1290 01d2 9BB2 uxth r3, r3 1291 01d4 1946 mov r1, r3 1292 01d6 1648 ldr r0, .L95+16 1293 01d8 FFF7FEFF bl Get_Crc16 1294 01dc 0346 mov r3, r0 1295 .loc 1 393 6 1296 01de 002B cmp r3, #0 1297 01e0 40F0D080 bne .L75 394:user_src/soft_uart.c **** { 395:user_src/soft_uart.c **** if(vk_data.group_id == GROUP_ID_FCU || vk_data.group_id == GROUP_ID_PMU_UPDATE) 1298 .loc 1 395 15 1299 01e4 104B ldr r3, .L95+8 1300 01e6 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 1301 .loc 1 395 7 1302 01e8 002B cmp r3, #0 1303 01ea 03D0 beq .L76 1304 .loc 1 395 51 discriminator 1 1305 01ec 0E4B ldr r3, .L95+8 1306 01ee 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 1307 .loc 1 395 41 discriminator 1 1308 01f0 CC2B cmp r3, #204 1309 01f2 25D1 bne .L77 1310 .L76: 396:user_src/soft_uart.c **** { 397:user_src/soft_uart.c **** fcu_protocol.msg_id = vk_data.msg_id; 1311 .loc 1 397 35 1312 01f4 0C4B ldr r3, .L95+8 1313 01f6 5A79 ldrb r2, [r3, #5] @ zero_extendqisi2 1314 .loc 1 397 26 1315 01f8 0E4B ldr r3, .L95+20 1316 01fa 5A71 strb r2, [r3, #5] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 31 398:user_src/soft_uart.c **** memcpy(&fcu_protocol.payload[0],&vk_data.payload[0],vk_data.len + vk_data.head_bytes + vk_data 1317 .loc 1 398 65 1318 01fc 0A4B ldr r3, .L95+8 1319 01fe 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2 1320 0200 1A46 mov r2, r3 1321 .loc 1 398 79 1322 0202 094B ldr r3, .L95+8 1323 0204 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1324 .loc 1 398 70 1325 0206 1344 add r3, r3, r2 1326 .loc 1 398 100 1327 0208 074A ldr r2, .L95+8 1328 020a D279 ldrb r2, [r2, #7] @ zero_extendqisi2 1329 .loc 1 398 91 1330 020c 1344 add r3, r3, r2 1331 .loc 1 398 6 1332 020e 1A46 mov r2, r3 1333 0210 0749 ldr r1, .L95+16 1334 0212 0948 ldr r0, .L95+24 1335 0214 FFF7FEFF bl memcpy 399:user_src/soft_uart.c **** uart_info.fcu_buf_flag = true; 1336 .loc 1 399 29 1337 0218 084B ldr r3, .L95+28 1338 021a 0122 movs r2, #1 1339 021c 1A70 strb r2, [r3] 1340 021e B1E0 b .L75 1341 .L96: 1342 .align 2 1343 .L95: 1344 0220 00000000 .word recv_step 1345 0224 00000000 .word vk_recv_time.1 1346 0228 00000000 .word vk_data 1347 022c 00000000 .word i.0 1348 0230 0A000000 .word vk_data+10 1349 0234 00000000 .word fcu_protocol 1350 0238 0A000000 .word fcu_protocol+10 1351 023c 00000000 .word uart_info 1352 .L77: 400:user_src/soft_uart.c **** } 401:user_src/soft_uart.c **** //莫之比雷达升级 402:user_src/soft_uart.c **** else if((vk_data.group_id == GROUP_ID_F_UPDATE && uavr11_info.Link.connect_status != COMP_NOEXI 1353 .loc 1 402 21 1354 0240 604B ldr r3, .L97 1355 0242 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 1356 .loc 1 402 12 1357 0244 332B cmp r3, #51 1358 0246 03D1 bne .L79 1359 .loc 1 402 71 discriminator 1 1360 0248 5F4B ldr r3, .L97+4 1361 024a 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 1362 .loc 1 402 52 discriminator 1 1363 024c 002B cmp r3, #0 1364 024e 0FD1 bne .L80 1365 .L79: 403:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_B_UPDATE && uavr12_info.Link.connect_status != COMP_NOEXIST) | 1366 .loc 1 403 16 discriminator 3 1367 0250 5C4B ldr r3, .L97 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 32 1368 0252 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 402:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_B_UPDATE && uavr12_info.Link.connect_status != COMP_NOEXIST) | 1369 .loc 1 402 104 discriminator 3 1370 0254 342B cmp r3, #52 1371 0256 03D1 bne .L81 1372 .loc 1 403 66 1373 0258 5C4B ldr r3, .L97+8 1374 025a 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 1375 .loc 1 403 47 1376 025c 002B cmp r3, #0 1377 025e 07D1 bne .L80 1378 .L81: 404:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_T_UPDATE && uavr56_info.Link.connect_status != COMP_NOEXIST) 1379 .loc 1 404 18 discriminator 1 1380 0260 584B ldr r3, .L97 1381 0262 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 403:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_B_UPDATE && uavr12_info.Link.connect_status != COMP_NOEXIST) | 1382 .loc 1 403 99 discriminator 1 1383 0264 382B cmp r3, #56 1384 0266 3BD1 bne .L82 1385 .loc 1 404 68 1386 0268 594B ldr r3, .L97+12 1387 026a 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 1388 .loc 1 404 49 1389 026c 002B cmp r3, #0 1390 026e 37D0 beq .L82 1391 .L80: 405:user_src/soft_uart.c **** { 406:user_src/soft_uart.c **** if(uart_info.use_update_buf_flag == false) 1392 .loc 1 406 18 1393 0270 584B ldr r3, .L97+16 1394 0272 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2 1395 .loc 1 406 39 1396 0274 83F00103 eor r3, r3, #1 1397 0278 DBB2 uxtb r3, r3 1398 .loc 1 406 8 1399 027a 002B cmp r3, #0 1400 027c 21D0 beq .L83 407:user_src/soft_uart.c **** { 408:user_src/soft_uart.c **** uart_info.update_time = HAL_GetTick(); 1401 .loc 1 408 31 1402 027e FFF7FEFF bl HAL_GetTick 1403 0282 0346 mov r3, r0 1404 .loc 1 408 29 1405 0284 534A ldr r2, .L97+16 1406 0286 C2F81931 str r3, [r2, #281] @ unaligned 409:user_src/soft_uart.c **** memcpy(&Update_buf[0],&vk_data.payload[0],vk_data.len + vk_data.head_bytes + vk_data.check_by 1407 .loc 1 409 56 1408 028a 4E4B ldr r3, .L97 1409 028c 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2 1410 028e 1A46 mov r2, r3 1411 .loc 1 409 70 1412 0290 4C4B ldr r3, .L97 1413 0292 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1414 .loc 1 409 61 1415 0294 1344 add r3, r3, r2 1416 .loc 1 409 91 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 33 1417 0296 4B4A ldr r2, .L97 1418 0298 D279 ldrb r2, [r2, #7] @ zero_extendqisi2 1419 .loc 1 409 82 1420 029a 1344 add r3, r3, r2 1421 .loc 1 409 7 1422 029c 1A46 mov r2, r3 1423 029e 4E49 ldr r1, .L97+20 1424 02a0 4E48 ldr r0, .L97+24 1425 02a2 FFF7FEFF bl memcpy 410:user_src/soft_uart.c **** uart_info.use_update_buf_flag = true; 1426 .loc 1 410 37 1427 02a6 4B4B ldr r3, .L97+16 1428 02a8 0122 movs r2, #1 1429 02aa 5A70 strb r2, [r3, #1] 411:user_src/soft_uart.c **** 412:user_src/soft_uart.c **** if (vk_data.msg_id == 200) 1430 .loc 1 412 18 1431 02ac 454B ldr r3, .L97 1432 02ae 5B79 ldrb r3, [r3, #5] @ zero_extendqisi2 1433 .loc 1 412 10 1434 02b0 C82B cmp r3, #200 1435 02b2 66D1 bne .L92 413:user_src/soft_uart.c **** { 414:user_src/soft_uart.c **** { 415:user_src/soft_uart.c **** radar_update_flag = true; 1436 .loc 1 415 27 1437 02b4 4A4B ldr r3, .L97+28 1438 02b6 0122 movs r2, #1 1439 02b8 1A70 strb r2, [r3] 416:user_src/soft_uart.c **** update_count = 0; 1440 .loc 1 416 22 1441 02ba 4A4B ldr r3, .L97+32 1442 02bc 0022 movs r2, #0 1443 02be 1A60 str r2, [r3] 406:user_src/soft_uart.c **** { 1444 .loc 1 406 8 1445 02c0 5FE0 b .L92 1446 .L83: 417:user_src/soft_uart.c **** } 418:user_src/soft_uart.c **** } 419:user_src/soft_uart.c **** } 420:user_src/soft_uart.c **** else 421:user_src/soft_uart.c **** { 422:user_src/soft_uart.c **** if(HAL_GetTick() - uart_info.update_time > 3000) 1447 .loc 1 422 10 1448 02c2 FFF7FEFF bl HAL_GetTick 1449 02c6 0246 mov r2, r0 1450 .loc 1 422 35 1451 02c8 424B ldr r3, .L97+16 1452 02ca D3F81931 ldr r3, [r3, #281] @ unaligned 1453 .loc 1 422 24 1454 02ce D31A subs r3, r2, r3 1455 .loc 1 422 9 1456 02d0 40F6B832 movw r2, #3000 1457 02d4 9342 cmp r3, r2 1458 02d6 54D9 bls .L92 423:user_src/soft_uart.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 34 424:user_src/soft_uart.c **** uart_info.use_update_buf_flag = false; 1459 .loc 1 424 38 1460 02d8 3E4B ldr r3, .L97+16 1461 02da 0022 movs r2, #0 1462 02dc 5A70 strb r2, [r3, #1] 406:user_src/soft_uart.c **** { 1463 .loc 1 406 8 1464 02de 50E0 b .L92 1465 .L82: 425:user_src/soft_uart.c **** } 426:user_src/soft_uart.c **** } 427:user_src/soft_uart.c **** } 428:user_src/soft_uart.c **** //VK协议设备升级 429:user_src/soft_uart.c **** else if (vk_data.group_id == GROUP_ID_WEIGHT_UPDATE || 1466 .loc 1 429 21 1467 02e0 384B ldr r3, .L97 1468 02e2 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 1469 .loc 1 429 13 1470 02e4 DE2B cmp r3, #222 1471 02e6 0BD0 beq .L85 430:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_F_UPDATE /*&& mimo_f_info.Link.connect_status != COMP_NOEXIST*/ 1472 .loc 1 430 15 discriminator 1 1473 02e8 364B ldr r3, .L97 1474 02ea 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 429:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_F_UPDATE /*&& mimo_f_info.Link.connect_status != COMP_NOEXIST*/ 1475 .loc 1 429 57 discriminator 1 1476 02ec 332B cmp r3, #51 1477 02ee 07D0 beq .L85 431:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_B_UPDATE /*&& mimo_b_info.Link.connect_status != COMP_NOEXIST* 1478 .loc 1 431 16 1479 02f0 344B ldr r3, .L97 1480 02f2 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 430:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_F_UPDATE /*&& mimo_f_info.Link.connect_status != COMP_NOEXIST*/ 1481 .loc 1 430 102 1482 02f4 342B cmp r3, #52 1483 02f6 03D0 beq .L85 432:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_T_UPDATE /*&& mimo_ter_info.Link.connect_status != COMP_NOEX 1484 .loc 1 432 18 1485 02f8 324B ldr r3, .L97 1486 02fa 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 431:user_src/soft_uart.c **** (vk_data.group_id == GROUP_ID_B_UPDATE /*&& mimo_b_info.Link.connect_status != COMP_NOEXIST* 1487 .loc 1 431 103 1488 02fc 382B cmp r3, #56 1489 02fe 41D1 bne .L75 1490 .L85: 433:user_src/soft_uart.c **** { 434:user_src/soft_uart.c **** #ifdef mimo_update 435:user_src/soft_uart.c **** if(vk_data.msg_id == 200) 436:user_src/soft_uart.c **** { 437:user_src/soft_uart.c **** if(EZup_par.step == STEP_DEFAULT)//mimo 438:user_src/soft_uart.c **** {//mimo 439:user_src/soft_uart.c **** memset(&EZup_par,0,sizeof(ez_update));//mimo 440:user_src/soft_uart.c **** memset(&uart_info.fcu_buf_flag,0,sizeof(Uart)); 441:user_src/soft_uart.c **** memcpy(&uart_info.bin_size,&vk_data.payload[6],4); 442:user_src/soft_uart.c **** uart_info.vk_dev_pack_num = 1; 443:user_src/soft_uart.c **** uart_info.vk_dev_update_flag = true; 444:user_src/soft_uart.c **** EZup_par.update_flag = true;//mimo ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 35 445:user_src/soft_uart.c **** 446:user_src/soft_uart.c **** EZup_par.step = STEP_FIND_NODE;//mimo 447:user_src/soft_uart.c **** } 448:user_src/soft_uart.c **** } 449:user_src/soft_uart.c **** #else 450:user_src/soft_uart.c **** if(vk_data.msg_id == 200) 1491 .loc 1 450 16 1492 0300 304B ldr r3, .L97 1493 0302 5B79 ldrb r3, [r3, #5] @ zero_extendqisi2 1494 .loc 1 450 8 1495 0304 C82B cmp r3, #200 1496 0306 12D1 bne .L86 451:user_src/soft_uart.c **** { 452:user_src/soft_uart.c **** memset(&uart_info.fcu_buf_flag,0,sizeof(Uart)); 1497 .loc 1 452 7 1498 0308 40F22712 movw r2, #295 1499 030c 0021 movs r1, #0 1500 030e 3148 ldr r0, .L97+16 1501 0310 FFF7FEFF bl memset 1502 0314 2B4B ldr r3, .L97 1503 0316 1B69 ldr r3, [r3, #16] 453:user_src/soft_uart.c **** memcpy(&uart_info.bin_size,&vk_data.payload[6],4); 1504 .loc 1 453 7 1505 0318 2E4A ldr r2, .L97+16 1506 031a C2F82031 str r3, [r2, #288] 454:user_src/soft_uart.c **** uart_info.vk_dev_pack_num = 1; 1507 .loc 1 454 33 1508 031e 2D4B ldr r3, .L97+16 1509 0320 0122 movs r2, #1 1510 0322 A3F81E21 strh r2, [r3, #286] @ movhi 455:user_src/soft_uart.c **** uart_info.vk_dev_update_flag = true; 1511 .loc 1 455 36 1512 0326 2B4B ldr r3, .L97+16 1513 0328 0122 movs r2, #1 1514 032a 83F81D21 strb r2, [r3, #285] 1515 .L86: 456:user_src/soft_uart.c **** } 457:user_src/soft_uart.c **** #endif 458:user_src/soft_uart.c **** 459:user_src/soft_uart.c **** //if(uart_info.use_update_buf_flag == false) 460:user_src/soft_uart.c **** //{ 461:user_src/soft_uart.c **** memcpy(&Update_buf[0],&vk_data.payload[0],vk_data.len + vk_data.head_bytes + vk_data.check_by 1516 .loc 1 461 56 1517 032e 254B ldr r3, .L97 1518 0330 5B78 ldrb r3, [r3, #1] @ zero_extendqisi2 1519 0332 1A46 mov r2, r3 1520 .loc 1 461 70 1521 0334 234B ldr r3, .L97 1522 0336 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1523 .loc 1 461 61 1524 0338 1344 add r3, r3, r2 1525 .loc 1 461 91 1526 033a 224A ldr r2, .L97 1527 033c D279 ldrb r2, [r2, #7] @ zero_extendqisi2 1528 .loc 1 461 82 1529 033e 1344 add r3, r3, r2 1530 .loc 1 461 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 36 1531 0340 1A46 mov r2, r3 1532 0342 2549 ldr r1, .L97+20 1533 0344 2548 ldr r0, .L97+24 1534 0346 FFF7FEFF bl memcpy 462:user_src/soft_uart.c **** //判断是否是需要的包序号 463:user_src/soft_uart.c **** if(uart_info.vk_dev_pack_num > (Update_buf[PACK_NUM] + Update_buf[PACK_NUM + 1] * 256) && 1535 .loc 1 463 19 1536 034a 224B ldr r3, .L97+16 1537 034c B3F81E31 ldrh r3, [r3, #286] 1538 0350 1A46 mov r2, r3 1539 .loc 1 463 49 1540 0352 224B ldr r3, .L97+24 1541 0354 9B79 ldrb r3, [r3, #6] @ zero_extendqisi2 1542 0356 1946 mov r1, r3 1543 .loc 1 463 72 1544 0358 204B ldr r3, .L97+24 1545 035a DB79 ldrb r3, [r3, #7] @ zero_extendqisi2 1546 .loc 1 463 87 1547 035c 1B02 lsls r3, r3, #8 1548 .loc 1 463 60 1549 035e 0B44 add r3, r3, r1 1550 .loc 1 463 9 1551 0360 9A42 cmp r2, r3 1552 0362 0ADD ble .L87 464:user_src/soft_uart.c **** vk_data.msg_id == 201) 1553 .loc 1 464 15 discriminator 1 1554 0364 174B ldr r3, .L97 1555 0366 5B79 ldrb r3, [r3, #5] @ zero_extendqisi2 463:user_src/soft_uart.c **** vk_data.msg_id == 201) 1556 .loc 1 463 94 discriminator 1 1557 0368 C92B cmp r3, #201 1558 036a 06D1 bne .L87 465:user_src/soft_uart.c **** { 466:user_src/soft_uart.c **** Update_ack_func(Update_buf[DEVICE],201,&Update_buf[PACK_NUM]); 1559 .loc 1 466 8 1560 036c 1B4B ldr r3, .L97+24 1561 036e 1B79 ldrb r3, [r3, #4] @ zero_extendqisi2 1562 0370 1D4A ldr r2, .L97+36 1563 0372 C921 movs r1, #201 1564 0374 1846 mov r0, r3 1565 0376 FFF7FEFF bl Update_ack_func 1566 .L87: 467:user_src/soft_uart.c **** } 468:user_src/soft_uart.c **** 469:user_src/soft_uart.c **** uart_info.use_update_buf_flag = true; 1567 .loc 1 469 37 1568 037a 164B ldr r3, .L97+16 1569 037c 0122 movs r2, #1 1570 037e 5A70 strb r2, [r3, #1] 1571 0380 00E0 b .L75 1572 .L92: 406:user_src/soft_uart.c **** { 1573 .loc 1 406 8 1574 0382 00BF nop 1575 .L75: 470:user_src/soft_uart.c **** 471:user_src/soft_uart.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 37 472:user_src/soft_uart.c **** //} 473:user_src/soft_uart.c **** 474:user_src/soft_uart.c **** 475:user_src/soft_uart.c **** } 476:user_src/soft_uart.c **** 477:user_src/soft_uart.c **** } 478:user_src/soft_uart.c **** else 479:user_src/soft_uart.c **** { 480:user_src/soft_uart.c **** //vk_protocol_test[4]++; 481:user_src/soft_uart.c **** } 482:user_src/soft_uart.c **** recv_step = RX_HEAD; 1576 .loc 1 482 14 1577 0384 194B ldr r3, .L97+40 1578 0386 0022 movs r2, #0 1579 0388 1A70 strb r2, [r3] 483:user_src/soft_uart.c **** break; 1580 .loc 1 483 4 1581 038a 06E0 b .L67 1582 .L55: 484:user_src/soft_uart.c **** default: 485:user_src/soft_uart.c **** recv_step = RX_HEAD; 1583 .loc 1 485 14 1584 038c 174B ldr r3, .L97+40 1585 038e 0022 movs r2, #0 1586 0390 1A70 strb r2, [r3] 486:user_src/soft_uart.c **** //vk_protocol_test[5]++; 487:user_src/soft_uart.c **** break; 1587 .loc 1 487 4 1588 0392 02E0 b .L67 1589 .L90: 330:user_src/soft_uart.c **** case RX_PAYLOAD_LEN: 1590 .loc 1 330 4 1591 0394 00BF nop 1592 0396 00E0 b .L67 1593 .L91: 377:user_src/soft_uart.c **** case RX_CHECK_LOW: 1594 .loc 1 377 4 1595 0398 00BF nop 1596 .L67: 488:user_src/soft_uart.c **** } 489:user_src/soft_uart.c **** if( uart_info.fcu_buf_flag == true) 1597 .loc 1 489 16 1598 039a 0E4B ldr r3, .L97+16 1599 039c 1B78 ldrb r3, [r3] @ zero_extendqisi2 1600 .loc 1 489 5 1601 039e 002B cmp r3, #0 1602 03a0 0BD1 bne .L93 1603 .L53: 313:user_src/soft_uart.c **** { 1604 .loc 1 313 9 1605 03a2 07F10F03 add r3, r7, #15 1606 03a6 0122 movs r2, #1 1607 03a8 1946 mov r1, r3 1608 03aa 7868 ldr r0, [r7, #4] 1609 03ac FFF7FEFF bl rkfifo_out 1610 03b0 0346 mov r3, r0 313:user_src/soft_uart.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 38 1611 .loc 1 313 8 1612 03b2 002B cmp r3, #0 1613 03b4 7FF42BAE bne .L89 490:user_src/soft_uart.c **** break; 491:user_src/soft_uart.c **** } 492:user_src/soft_uart.c **** } 1614 .loc 1 492 1 1615 03b8 00E0 b .L94 1616 .L93: 490:user_src/soft_uart.c **** break; 1617 .loc 1 490 4 1618 03ba 00BF nop 1619 .L94: 1620 .loc 1 492 1 1621 03bc 00BF nop 1622 03be 1037 adds r7, r7, #16 1623 .LCFI46: 1624 .cfi_def_cfa_offset 8 1625 03c0 BD46 mov sp, r7 1626 .LCFI47: 1627 .cfi_def_cfa_register 13 1628 @ sp needed 1629 03c2 80BD pop {r7, pc} 1630 .L98: 1631 .align 2 1632 .L97: 1633 03c4 00000000 .word vk_data 1634 03c8 00000000 .word uavr11_info 1635 03cc 00000000 .word uavr12_info 1636 03d0 00000000 .word uavr56_info 1637 03d4 00000000 .word uart_info 1638 03d8 0A000000 .word vk_data+10 1639 03dc 00000000 .word Update_buf 1640 03e0 00000000 .word radar_update_flag 1641 03e4 00000000 .word update_count 1642 03e8 06000000 .word Update_buf+6 1643 03ec 00000000 .word recv_step 1644 .cfi_endproc 1645 .LFE142: 1647 .section .bss.send_time3.2,"aw",%nobits 1648 .align 2 1651 send_time3.2: 1652 0000 00000000 .space 4 1653 .section .bss.vk_recv_time.1,"aw",%nobits 1654 .align 2 1657 vk_recv_time.1: 1658 0000 00000000 .space 4 1659 .section .bss.i.0,"aw",%nobits 1662 i.0: 1663 0000 00 .space 1 1664 .text 1665 .Letext0: 1666 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 1667 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 1668 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 1669 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 1670 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 39 1671 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 1672 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_uart.h" 1673 .file 9 "user_inc/rkfifo.h" 1674 .file 10 "user_inc/soft_uart.h" 1675 .file 11 "user_inc/soft_can.h" 1676 .file 12 "Core/Inc/usart.h" 1677 .file 13 "user_inc/common.h" 1678 .file 14 "user_inc/soft_terrain.h" 1679 .file 15 "user_inc/soft_obstacle.h" 1680 .file 16 "user_inc/soft_p_2_c.h" 1681 .file 17 "user_inc/soft_engine.h" 1682 .file 18 "user_inc/soft_update.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 40 DEFINED SYMBOLS *ABS*:00000000 soft_uart.c C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:24 .bss.Update_buf:00000000 Update_buf C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:21 .bss.Update_buf:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:31 .bss.vk_protocol:00000000 vk_protocol C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:28 .bss.vk_protocol:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:38 .bss.send_uart_rkfifo:00000000 send_uart_rkfifo C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:35 .bss.send_uart_rkfifo:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:44 .bss.radar_update_flag:00000000 radar_update_flag C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:45 .bss.radar_update_flag:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:51 .data.uart_info:00000000 uart_info C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:48 .data.uart_info:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:56 .text._write:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:62 .text._write:00000000 _write C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:129 .text._write:00000048 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:134 .text.uart_send_is_ok:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:140 .text.uart_send_is_ok:00000000 uart_send_is_ok C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:265 .text.uart_send_is_ok:00000098 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:277 .bss.uart2_send_delay_time:00000000 uart2_send_delay_time C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:284 .bss.uart3_send_delay_time:00000000 uart3_send_delay_time C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:274 .bss.uart2_send_delay_time:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:281 .bss.uart3_send_delay_time:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:287 .text.uart2_send_msg:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:293 .text.uart2_send_msg:00000000 uart2_send_msg C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:332 .text.uart2_send_msg:00000020 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:341 .bss.send_uart_buf:00000000 send_uart_buf C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:338 .bss.send_uart_buf:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:344 .text.send_uartfifo_msg:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:350 .text.send_uartfifo_msg:00000000 send_uartfifo_msg C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:415 .text.send_uartfifo_msg:0000004c $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:423 .text.uart3_send_msg:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:429 .text.uart3_send_msg:00000000 uart3_send_msg C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:494 .text.uart3_send_msg:00000048 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1651 .bss.send_time3.2:00000000 send_time3.2 C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:501 .text.UART_Init:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:507 .text.UART_Init:00000000 UART_Init C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:569 .text.UART_Init:00000060 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:581 .bss.read_DR:00000000 read_DR C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:578 .bss.read_DR:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:588 .bss.recv_rkfifo:00000000 recv_rkfifo C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:585 .bss.recv_rkfifo:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:591 .text.USER_UART_IRQHandler:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:597 .text.USER_UART_IRQHandler:00000000 USER_UART_IRQHandler C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:763 .text.USER_UART_IRQHandler:000000fc $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:775 .text.HAL_UART_ErrorCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:781 .text.HAL_UART_ErrorCallback:00000000 HAL_UART_ErrorCallback C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:869 .text.HAL_UART_ErrorCallback:0000006c $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:877 .text.HAL_UART_TxCpltCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:883 .text.HAL_UART_TxCpltCallback:00000000 HAL_UART_TxCpltCallback C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:922 .bss.recv_step:00000000 recv_step C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:923 .bss.recv_step:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:929 .bss.fcu_protocol:00000000 fcu_protocol C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:926 .bss.fcu_protocol:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:936 .data.vk_data:00000000 vk_data C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:933 .data.vk_data:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:945 .text.check_uart_data:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:951 .text.check_uart_data:00000000 check_uart_data ARM GAS C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s page 41 C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1005 .text.check_uart_data:0000003c $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1014 .text.check_uart_data:00000060 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1344 .text.check_uart_data:00000220 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1657 .bss.vk_recv_time.1:00000000 vk_recv_time.1 C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1662 .bss.i.0:00000000 i.0 C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1354 .text.check_uart_data:00000240 $t C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1633 .text.check_uart_data:000003c4 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1648 .bss.send_time3.2:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1654 .bss.vk_recv_time.1:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccIHNTG9.s:1663 .bss.i.0:00000000 $d UNDEFINED SYMBOLS HAL_GetTick HAL_UART_Transmit huart3 huart2 rkfifo_in rkfifo_out HAL_UART_Transmit_DMA HAL_UART_Receive_DMA HAL_UART_AbortReceive decode_aoan_engine decode_vkv3_engine aoan_engine_Link vkv3_engine_link Get_Crc16 memcpy memset Update_ack_func uavr11_info uavr12_info uavr56_info update_count