ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.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, 2 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 .section .text.uart2_send_msg,"ax",%progbits 20 .align 1 21 .p2align 2,,3 22 .global uart2_send_msg 23 .syntax unified 24 .thumb 25 .thumb_func 27 uart2_send_msg: 28 .LVL0: 29 .LFB133: 30 .file 1 "user_src/soft_uart.c" 1:user_src/soft_uart.c **** #include "soft_uart.h" 2:user_src/soft_uart.c **** #include "string.h" 3:user_src/soft_uart.c **** #include "soft_flash.h" 4:user_src/soft_uart.c **** #include "soft_crc.h" 5:user_src/soft_uart.c **** #include "usart.h" 6:user_src/soft_uart.c **** 7:user_src/soft_uart.c **** extern UART_HandleTypeDef huart2; 8:user_src/soft_uart.c **** bool fmu_version_ack = false; 9:user_src/soft_uart.c **** void uart2_send_msg(uint8_t *data, uint8_t size) 10:user_src/soft_uart.c **** { 31 .loc 1 10 1 view -0 32 .cfi_startproc 33 @ args = 0, pretend = 0, frame = 0 34 @ frame_needed = 0, uses_anonymous_args = 0 11:user_src/soft_uart.c **** static uint32_t send_time = 0; 35 .loc 1 11 5 view .LVU1 12:user_src/soft_uart.c **** 13:user_src/soft_uart.c **** send_time = HAL_GetTick(); 36 .loc 1 13 5 view .LVU2 10:user_src/soft_uart.c **** static uint32_t send_time = 0; 37 .loc 1 10 1 is_stmt 0 view .LVU3 38 0000 70B5 push {r4, r5, r6, lr} 39 .LCFI0: 40 .cfi_def_cfa_offset 16 41 .cfi_offset 4, -16 42 .cfi_offset 5, -12 43 .cfi_offset 6, -8 44 .cfi_offset 14, -4 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 2 10:user_src/soft_uart.c **** static uint32_t send_time = 0; 45 .loc 1 10 1 view .LVU4 46 0002 0546 mov r5, r0 47 0004 0E46 mov r6, r1 48 .loc 1 13 17 view .LVU5 49 0006 FFF7FEFF bl HAL_GetTick 50 .LVL1: 51 .loc 1 13 15 view .LVU6 52 000a 074C ldr r4, .L6 53 000c 2060 str r0, [r4] 14:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 54 .loc 1 14 5 is_stmt 1 view .LVU7 55 .L2: 15:user_src/soft_uart.c **** ; 56 .loc 1 15 9 discriminator 1 view .LVU8 14:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 57 .loc 1 14 11 discriminator 1 view .LVU9 14:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 58 .loc 1 14 12 is_stmt 0 discriminator 1 view .LVU10 59 000e FFF7FEFF bl HAL_GetTick 60 .LVL2: 14:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 61 .loc 1 14 11 discriminator 1 view .LVU11 62 0012 2368 ldr r3, [r4] 63 0014 9842 cmp r0, r3 64 0016 FAD0 beq .L2 16:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart2, data, size); 65 .loc 1 16 5 is_stmt 1 view .LVU12 66 0018 3246 mov r2, r6 67 001a 2946 mov r1, r5 68 001c 0348 ldr r0, .L6+4 17:user_src/soft_uart.c **** } 69 .loc 1 17 1 is_stmt 0 view .LVU13 70 001e BDE87040 pop {r4, r5, r6, lr} 71 .LCFI1: 72 .cfi_restore 14 73 .cfi_restore 6 74 .cfi_restore 5 75 .cfi_restore 4 76 .cfi_def_cfa_offset 0 77 .LVL3: 16:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart2, data, size); 78 .loc 1 16 5 view .LVU14 79 0022 FFF7FEBF b HAL_UART_Transmit_DMA 80 .LVL4: 81 .L7: 16:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart2, data, size); 82 .loc 1 16 5 view .LVU15 83 0026 00BF .align 2 84 .L6: 85 0028 00000000 .word .LANCHOR0 86 002c 00000000 .word huart2 87 .cfi_endproc 88 .LFE133: 90 .section .text.USER_UART_IRQHandler,"ax",%progbits 91 .align 1 92 .p2align 2,,3 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 3 93 .global USER_UART_IRQHandler 94 .syntax unified 95 .thumb 96 .thumb_func 98 USER_UART_IRQHandler: 99 .LVL5: 100 .LFB134: 18:user_src/soft_uart.c **** 19:user_src/soft_uart.c **** uint8_t FMU_uart_buf[MAX_UART_BUF] = {0}; 20:user_src/soft_uart.c **** Update update; 21:user_src/soft_uart.c **** void USER_UART_IRQHandler(UART_HandleTypeDef *huart) 22:user_src/soft_uart.c **** { 101 .loc 1 22 1 is_stmt 1 view -0 102 .cfi_startproc 103 @ args = 0, pretend = 0, frame = 0 104 @ frame_needed = 0, uses_anonymous_args = 0 23:user_src/soft_uart.c **** uint32_t recv_count = 0; 105 .loc 1 23 5 view .LVU17 24:user_src/soft_uart.c **** if (huart == &huart2) 106 .loc 1 24 5 view .LVU18 107 .loc 1 24 8 is_stmt 0 view .LVU19 108 0000 204B ldr r3, .L23 109 0002 9842 cmp r0, r3 110 0004 00D0 beq .L19 111 0006 7047 bx lr 112 .L19: 25:user_src/soft_uart.c **** { 26:user_src/soft_uart.c **** if (RESET != __HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE)) 113 .loc 1 26 9 is_stmt 1 view .LVU20 114 .loc 1 26 22 is_stmt 0 view .LVU21 115 0008 0368 ldr r3, [r0] 116 000a DA69 ldr r2, [r3, #28] 117 .loc 1 26 12 view .LVU22 118 000c D206 lsls r2, r2, #27 22:user_src/soft_uart.c **** uint32_t recv_count = 0; 119 .loc 1 22 1 view .LVU23 120 000e 10B5 push {r4, lr} 121 .LCFI2: 122 .cfi_def_cfa_offset 8 123 .cfi_offset 4, -8 124 .cfi_offset 14, -4 125 0010 0446 mov r4, r0 126 .loc 1 26 12 view .LVU24 127 0012 00D4 bmi .L20 27:user_src/soft_uart.c **** { 28:user_src/soft_uart.c **** __HAL_UART_CLEAR_IDLEFLAG(huart); 29:user_src/soft_uart.c **** HAL_UART_AbortReceive(huart); 30:user_src/soft_uart.c **** recv_count = MAX_UART_BUF - __HAL_DMA_GET_COUNTER(huart->hdmarx); 31:user_src/soft_uart.c **** 32:user_src/soft_uart.c **** // 检测是否是新的一包数据 33:user_src/soft_uart.c **** if (FMU_uart_buf[0] == 0xFE && FMU_uart_buf[4] == 204 && update.usebuf_flag == false) 34:user_src/soft_uart.c **** { 35:user_src/soft_uart.c **** memcpy(update.data, FMU_uart_buf, recv_count); 36:user_src/soft_uart.c **** update.usebuf_flag = true; 37:user_src/soft_uart.c **** } 38:user_src/soft_uart.c **** else if(FMU_uart_buf[5] == 21 && FMU_uart_buf[6] == 26 && FMU_uart_buf[7] == 3) 39:user_src/soft_uart.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 4 40:user_src/soft_uart.c **** fmu_version_ack = true; 41:user_src/soft_uart.c **** } 42:user_src/soft_uart.c **** 43:user_src/soft_uart.c **** memset(FMU_uart_buf, 0, MAX_UART_BUF); 44:user_src/soft_uart.c **** HAL_UART_Receive_DMA(huart, FMU_uart_buf, MAX_UART_BUF); 45:user_src/soft_uart.c **** } 46:user_src/soft_uart.c **** } 47:user_src/soft_uart.c **** } 128 .loc 1 47 1 view .LVU25 129 0014 10BD pop {r4, pc} 130 .L20: 28:user_src/soft_uart.c **** HAL_UART_AbortReceive(huart); 131 .loc 1 28 13 is_stmt 1 view .LVU26 132 0016 1022 movs r2, #16 133 0018 1A62 str r2, [r3, #32] 29:user_src/soft_uart.c **** recv_count = MAX_UART_BUF - __HAL_DMA_GET_COUNTER(huart->hdmarx); 134 .loc 1 29 13 view .LVU27 135 001a FFF7FEFF bl HAL_UART_AbortReceive 136 .LVL6: 30:user_src/soft_uart.c **** 137 .loc 1 30 13 view .LVU28 30:user_src/soft_uart.c **** 138 .loc 1 30 41 is_stmt 0 view .LVU29 139 001e 636F ldr r3, [r4, #116] 33:user_src/soft_uart.c **** { 140 .loc 1 33 29 view .LVU30 141 0020 1949 ldr r1, .L23+4 30:user_src/soft_uart.c **** 142 .loc 1 30 41 view .LVU31 143 0022 1A68 ldr r2, [r3] 33:user_src/soft_uart.c **** { 144 .loc 1 33 16 view .LVU32 145 0024 0B78 ldrb r3, [r1] @ zero_extendqisi2 30:user_src/soft_uart.c **** 146 .loc 1 30 41 view .LVU33 147 0026 5268 ldr r2, [r2, #4] 148 .LVL7: 33:user_src/soft_uart.c **** { 149 .loc 1 33 13 is_stmt 1 view .LVU34 33:user_src/soft_uart.c **** { 150 .loc 1 33 16 is_stmt 0 view .LVU35 151 0028 FE2B cmp r3, #254 152 002a 10D0 beq .L21 153 .L10: 38:user_src/soft_uart.c **** { 154 .loc 1 38 18 is_stmt 1 view .LVU36 38:user_src/soft_uart.c **** { 155 .loc 1 38 20 is_stmt 0 view .LVU37 156 002c 4B79 ldrb r3, [r1, #5] @ zero_extendqisi2 157 002e 152B cmp r3, #21 158 0030 1ED0 beq .L22 159 .LVL8: 160 .L11: 43:user_src/soft_uart.c **** HAL_UART_Receive_DMA(huart, FMU_uart_buf, MAX_UART_BUF); 161 .loc 1 43 13 is_stmt 1 view .LVU38 162 0032 4FF48072 mov r2, #256 163 0036 0021 movs r1, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 5 164 0038 1348 ldr r0, .L23+4 165 003a FFF7FEFF bl memset 166 .LVL9: 44:user_src/soft_uart.c **** } 167 .loc 1 44 13 view .LVU39 168 .loc 1 47 1 is_stmt 0 view .LVU40 169 003e BDE81040 pop {r4, lr} 170 .LCFI3: 171 .cfi_remember_state 172 .cfi_restore 14 173 .cfi_restore 4 174 .cfi_def_cfa_offset 0 175 .LVL10: 44:user_src/soft_uart.c **** } 176 .loc 1 44 13 view .LVU41 177 0042 1149 ldr r1, .L23+4 178 0044 0F48 ldr r0, .L23 179 0046 4FF48072 mov r2, #256 180 004a FFF7FEBF b HAL_UART_Receive_DMA 181 .LVL11: 182 .L21: 183 .LCFI4: 184 .cfi_restore_state 33:user_src/soft_uart.c **** { 185 .loc 1 33 41 discriminator 1 view .LVU42 186 004e 0B79 ldrb r3, [r1, #4] @ zero_extendqisi2 187 0050 CC2B cmp r3, #204 188 0052 EBD1 bne .L10 33:user_src/soft_uart.c **** { 189 .loc 1 33 76 discriminator 2 view .LVU43 190 0054 0D4B ldr r3, .L23+8 33:user_src/soft_uart.c **** { 191 .loc 1 33 67 discriminator 2 view .LVU44 192 0056 93F80001 ldrb r0, [r3, #256] @ zero_extendqisi2 193 005a 0028 cmp r0, #0 194 005c E6D1 bne .L10 35:user_src/soft_uart.c **** update.usebuf_flag = true; 195 .loc 1 35 17 is_stmt 1 view .LVU45 196 005e C2F58072 rsb r2, r2, #256 197 .LVL12: 35:user_src/soft_uart.c **** update.usebuf_flag = true; 198 .loc 1 35 17 is_stmt 0 view .LVU46 199 0062 1846 mov r0, r3 200 0064 FFF7FEFF bl memcpy 201 .LVL13: 36:user_src/soft_uart.c **** } 202 .loc 1 36 17 is_stmt 1 view .LVU47 36:user_src/soft_uart.c **** } 203 .loc 1 36 36 is_stmt 0 view .LVU48 204 0068 0122 movs r2, #1 205 006a 80F80021 strb r2, [r0, #256] 206 006e E0E7 b .L11 207 .LVL14: 208 .L22: 38:user_src/soft_uart.c **** { 209 .loc 1 38 43 discriminator 1 view .LVU49 210 0070 8B79 ldrb r3, [r1, #6] @ zero_extendqisi2 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 6 211 0072 1A2B cmp r3, #26 212 0074 DDD1 bne .L11 38:user_src/soft_uart.c **** { 213 .loc 1 38 68 discriminator 2 view .LVU50 214 0076 CB79 ldrb r3, [r1, #7] @ zero_extendqisi2 215 0078 032B cmp r3, #3 216 007a DAD1 bne .L11 40:user_src/soft_uart.c **** } 217 .loc 1 40 17 is_stmt 1 view .LVU51 40:user_src/soft_uart.c **** } 218 .loc 1 40 33 is_stmt 0 view .LVU52 219 007c 044B ldr r3, .L23+12 220 007e 0122 movs r2, #1 221 .LVL15: 40:user_src/soft_uart.c **** } 222 .loc 1 40 33 view .LVU53 223 0080 1A70 strb r2, [r3] 224 0082 D6E7 b .L11 225 .L24: 226 .align 2 227 .L23: 228 0084 00000000 .word huart2 229 0088 00000000 .word .LANCHOR1 230 008c 00000000 .word .LANCHOR2 231 0090 00000000 .word .LANCHOR3 232 .cfi_endproc 233 .LFE134: 235 .section .text.send_pmu_version,"ax",%progbits 236 .align 1 237 .p2align 2,,3 238 .global send_pmu_version 239 .syntax unified 240 .thumb 241 .thumb_func 243 send_pmu_version: 244 .LFB135: 48:user_src/soft_uart.c **** 49:user_src/soft_uart.c **** uint8_t msg_buf[128] = {0}; 50:user_src/soft_uart.c **** 51:user_src/soft_uart.c **** uint32_t cur_pack_num = 0; 52:user_src/soft_uart.c **** void send_pmu_version(void) 53:user_src/soft_uart.c **** { 245 .loc 1 53 1 is_stmt 1 view -0 246 .cfi_startproc 247 @ args = 0, pretend = 0, frame = 24 248 @ frame_needed = 0, uses_anonymous_args = 0 54:user_src/soft_uart.c **** static int time2_hz = 0; 249 .loc 1 54 5 view .LVU55 55:user_src/soft_uart.c **** 56:user_src/soft_uart.c **** if (check_usart_is_ok() != true) 250 .loc 1 56 5 view .LVU56 251 .LBB6: 252 .LBI6: 57:user_src/soft_uart.c **** return; 58:user_src/soft_uart.c **** if(fmu_version_ack == true) 59:user_src/soft_uart.c **** return; 60:user_src/soft_uart.c **** if(cur_pack_num > 1) ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 7 61:user_src/soft_uart.c **** return; 62:user_src/soft_uart.c **** if(HAL_GetTick() - time2_hz > 500 && HAL_GetTick() > 2000) 63:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 64:user_src/soft_uart.c **** else 65:user_src/soft_uart.c **** return; 66:user_src/soft_uart.c **** 67:user_src/soft_uart.c **** uint8_t index = 0; 68:user_src/soft_uart.c **** uint16_t s16 = 0; 69:user_src/soft_uart.c **** char sn_buf[12] = {0}; 70:user_src/soft_uart.c **** char hardverison_buf[12] = {0}; 71:user_src/soft_uart.c **** 72:user_src/soft_uart.c **** memset(msg_buf,0,128); 73:user_src/soft_uart.c **** 74:user_src/soft_uart.c **** msg_buf[index++] = 0xFE; 75:user_src/soft_uart.c **** msg_buf[index++] = 0; 76:user_src/soft_uart.c **** msg_buf[index++] = 0; 77:user_src/soft_uart.c **** msg_buf[index++] = 0x00; 78:user_src/soft_uart.c **** msg_buf[index++] = 0x00; 79:user_src/soft_uart.c **** msg_buf[index++] = 26; 80:user_src/soft_uart.c **** 81:user_src/soft_uart.c **** s16 = 3; 82:user_src/soft_uart.c **** memcpy(&msg_buf[index],&s16,2); //PMU设备号 83:user_src/soft_uart.c **** index += 2; 84:user_src/soft_uart.c **** 85:user_src/soft_uart.c **** msg_buf[index++] = 1; 86:user_src/soft_uart.c **** 87:user_src/soft_uart.c **** Int2String(pmu_sn,&sn_buf[0],12); 88:user_src/soft_uart.c **** Int2String(pmu_hardversion,&hardverison_buf[0],12); 89:user_src/soft_uart.c **** 90:user_src/soft_uart.c **** memcpy(&msg_buf[index],&sn_buf[0],10);//sn 91:user_src/soft_uart.c **** index += 32; 92:user_src/soft_uart.c **** index += 16; 93:user_src/soft_uart.c **** memcpy(&msg_buf[index],&hardverison_buf[0],10);//sn 94:user_src/soft_uart.c **** index += 16;//硬件 95:user_src/soft_uart.c **** index += 16;//厂商 96:user_src/soft_uart.c **** 97:user_src/soft_uart.c **** msg_buf[1] = index - 6; 98:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 99:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 100:user_src/soft_uart.c **** index += 2; 101:user_src/soft_uart.c **** 102:user_src/soft_uart.c **** uart2_send_msg(msg_buf, index); 103:user_src/soft_uart.c **** 104:user_src/soft_uart.c **** } 105:user_src/soft_uart.c **** 106:user_src/soft_uart.c **** 107:user_src/soft_uart.c **** 108:user_src/soft_uart.c **** void Update_ack_fmu(uint8_t msg_id, uint8_t *ackbuf) 109:user_src/soft_uart.c **** { 110:user_src/soft_uart.c **** 111:user_src/soft_uart.c **** int index = 0; 112:user_src/soft_uart.c **** msg_buf[index++] = 0xFE; 113:user_src/soft_uart.c **** msg_buf[index++] = 0; 114:user_src/soft_uart.c **** msg_buf[index++] = 0; 115:user_src/soft_uart.c **** msg_buf[index++] = 0x00; 116:user_src/soft_uart.c **** msg_buf[index++] = 204; 117:user_src/soft_uart.c **** msg_buf[index++] = 21; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 8 118:user_src/soft_uart.c **** 119:user_src/soft_uart.c **** msg_buf[index++] = msg_id; 120:user_src/soft_uart.c **** msg_buf[index++] = *ackbuf; 121:user_src/soft_uart.c **** msg_buf[index++] = *(ackbuf + 1); 122:user_src/soft_uart.c **** msg_buf[index++] = 1; 123:user_src/soft_uart.c **** 124:user_src/soft_uart.c **** msg_buf[1] = index - 6; 125:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 126:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 127:user_src/soft_uart.c **** index += 2; 128:user_src/soft_uart.c **** 129:user_src/soft_uart.c **** uart2_send_msg(msg_buf, index); 130:user_src/soft_uart.c **** } 131:user_src/soft_uart.c **** 132:user_src/soft_uart.c **** bool check_usart_is_ok(void) 253 .loc 1 132 6 view .LVU57 254 .LBB7: 133:user_src/soft_uart.c **** { 134:user_src/soft_uart.c **** if (huart2.gState == HAL_UART_STATE_READY && (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_TC) != RES 255 .loc 1 134 5 view .LVU58 256 .loc 1 134 15 is_stmt 0 view .LVU59 257 0000 384B ldr r3, .L42 258 0002 DA6F ldr r2, [r3, #124] 259 .loc 1 134 8 view .LVU60 260 0004 202A cmp r2, #32 261 0006 00D0 beq .L40 262 .L37: 263 0008 7047 bx lr 264 .L40: 265 .loc 1 134 51 view .LVU61 266 000a 1B68 ldr r3, [r3] 267 000c DA69 ldr r2, [r3, #28] 268 .loc 1 134 47 view .LVU62 269 000e 5206 lsls r2, r2, #25 270 0010 FAD5 bpl .L37 271 .loc 1 134 106 view .LVU63 272 0012 DB69 ldr r3, [r3, #28] 273 .loc 1 134 103 view .LVU64 274 0014 1B06 lsls r3, r3, #24 275 0016 F7D5 bpl .L37 276 .LBE7: 277 .LBE6: 58:user_src/soft_uart.c **** return; 278 .loc 1 58 5 is_stmt 1 view .LVU65 53:user_src/soft_uart.c **** static int time2_hz = 0; 279 .loc 1 53 1 is_stmt 0 view .LVU66 280 0018 70B5 push {r4, r5, r6, lr} 281 .LCFI5: 282 .cfi_def_cfa_offset 16 283 .cfi_offset 4, -16 284 .cfi_offset 5, -12 285 .cfi_offset 6, -8 286 .cfi_offset 14, -4 58:user_src/soft_uart.c **** return; 287 .loc 1 58 24 view .LVU67 288 001a 334B ldr r3, .L42+4 58:user_src/soft_uart.c **** return; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 9 289 .loc 1 58 7 view .LVU68 290 001c 1C78 ldrb r4, [r3] @ zero_extendqisi2 53:user_src/soft_uart.c **** static int time2_hz = 0; 291 .loc 1 53 1 view .LVU69 292 001e 86B0 sub sp, sp, #24 293 .LCFI6: 294 .cfi_def_cfa_offset 40 58:user_src/soft_uart.c **** return; 295 .loc 1 58 7 view .LVU70 296 0020 1CB9 cbnz r4, .L25 60:user_src/soft_uart.c **** return; 297 .loc 1 60 5 is_stmt 1 view .LVU71 60:user_src/soft_uart.c **** return; 298 .loc 1 60 21 is_stmt 0 view .LVU72 299 0022 324B ldr r3, .L42+8 60:user_src/soft_uart.c **** return; 300 .loc 1 60 7 view .LVU73 301 0024 1B68 ldr r3, [r3] 302 0026 012B cmp r3, #1 303 0028 01D9 bls .L41 304 .L25: 104:user_src/soft_uart.c **** 305 .loc 1 104 1 view .LVU74 306 002a 06B0 add sp, sp, #24 307 .LCFI7: 308 .cfi_remember_state 309 .cfi_def_cfa_offset 16 310 @ sp needed 311 002c 70BD pop {r4, r5, r6, pc} 312 .L41: 313 .LCFI8: 314 .cfi_restore_state 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 315 .loc 1 62 5 is_stmt 1 view .LVU75 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 316 .loc 1 62 22 is_stmt 0 view .LVU76 317 002e 304E ldr r6, .L42+12 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 318 .loc 1 62 8 view .LVU77 319 0030 FFF7FEFF bl HAL_GetTick 320 .LVL16: 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 321 .loc 1 62 22 view .LVU78 322 0034 3368 ldr r3, [r6] 323 0036 C01A subs r0, r0, r3 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 324 .loc 1 62 7 view .LVU79 325 0038 B0F5FA7F cmp r0, #500 326 003c F5D9 bls .L25 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 327 .loc 1 62 42 discriminator 1 view .LVU80 328 003e FFF7FEFF bl HAL_GetTick 329 .LVL17: 62:user_src/soft_uart.c **** time2_hz = HAL_GetTick(); 330 .loc 1 62 39 discriminator 1 view .LVU81 331 0042 B0F5FA6F cmp r0, #2000 332 0046 F0D9 bls .L25 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 10 63:user_src/soft_uart.c **** else 333 .loc 1 63 9 is_stmt 1 view .LVU82 63:user_src/soft_uart.c **** else 334 .loc 1 63 20 is_stmt 0 view .LVU83 335 0048 FFF7FEFF bl HAL_GetTick 336 .LVL18: 72:user_src/soft_uart.c **** 337 .loc 1 72 5 view .LVU84 338 004c 294D ldr r5, .L42+16 63:user_src/soft_uart.c **** else 339 .loc 1 63 18 view .LVU85 340 004e 3060 str r0, [r6] 67:user_src/soft_uart.c **** uint16_t s16 = 0; 341 .loc 1 67 5 is_stmt 1 view .LVU86 342 .LVL19: 68:user_src/soft_uart.c **** char sn_buf[12] = {0}; 343 .loc 1 68 5 view .LVU87 69:user_src/soft_uart.c **** char hardverison_buf[12] = {0}; 344 .loc 1 69 5 view .LVU88 72:user_src/soft_uart.c **** 345 .loc 1 72 5 is_stmt 0 view .LVU89 346 0050 2146 mov r1, r4 347 0052 8022 movs r2, #128 348 0054 2846 mov r0, r5 69:user_src/soft_uart.c **** char hardverison_buf[12] = {0}; 349 .loc 1 69 10 view .LVU90 350 0056 CDE90044 strd r4, r4, [sp] 70:user_src/soft_uart.c **** 351 .loc 1 70 10 view .LVU91 352 005a CDE90244 strd r4, r4, [sp, #8] 353 005e CDE90444 strd r4, r4, [sp, #16] 72:user_src/soft_uart.c **** 354 .loc 1 72 5 is_stmt 1 view .LVU92 355 0062 FFF7FEFF bl memset 356 .LVL20: 74:user_src/soft_uart.c **** msg_buf[index++] = 0; 357 .loc 1 74 5 view .LVU93 87:user_src/soft_uart.c **** Int2String(pmu_hardversion,&hardverison_buf[0],12); 358 .loc 1 87 5 is_stmt 0 view .LVU94 359 0066 244B ldr r3, .L42+20 360 .LBB8: 361 .LBB9: 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 362 .loc 1 13 15 view .LVU95 363 0068 244C ldr r4, .L42+24 364 .LBE9: 365 .LBE8: 87:user_src/soft_uart.c **** Int2String(pmu_hardversion,&hardverison_buf[0],12); 366 .loc 1 87 5 view .LVU96 367 006a 1868 ldr r0, [r3] 74:user_src/soft_uart.c **** msg_buf[index++] = 0; 368 .loc 1 74 22 view .LVU97 369 006c FE23 movs r3, #254 370 006e 2B70 strb r3, [r5] 75:user_src/soft_uart.c **** msg_buf[index++] = 0; 371 .loc 1 75 5 is_stmt 1 view .LVU98 372 .LVL21: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 11 76:user_src/soft_uart.c **** msg_buf[index++] = 0x00; 373 .loc 1 76 5 view .LVU99 77:user_src/soft_uart.c **** msg_buf[index++] = 0x00; 374 .loc 1 77 5 view .LVU100 78:user_src/soft_uart.c **** msg_buf[index++] = 26; 375 .loc 1 78 5 view .LVU101 79:user_src/soft_uart.c **** 376 .loc 1 79 5 view .LVU102 79:user_src/soft_uart.c **** 377 .loc 1 79 22 is_stmt 0 view .LVU103 378 0070 1A23 movs r3, #26 379 0072 6B71 strb r3, [r5, #5] 81:user_src/soft_uart.c **** memcpy(&msg_buf[index],&s16,2); //PMU设备号 380 .loc 1 81 5 is_stmt 1 view .LVU104 381 .LVL22: 82:user_src/soft_uart.c **** index += 2; 382 .loc 1 82 5 view .LVU105 383 0074 0323 movs r3, #3 87:user_src/soft_uart.c **** Int2String(pmu_hardversion,&hardverison_buf[0],12); 384 .loc 1 87 5 is_stmt 0 view .LVU106 385 0076 0C22 movs r2, #12 386 0078 6946 mov r1, sp 82:user_src/soft_uart.c **** index += 2; 387 .loc 1 82 5 view .LVU107 388 007a EB80 strh r3, [r5, #6] @ movhi 83:user_src/soft_uart.c **** 389 .loc 1 83 5 is_stmt 1 view .LVU108 390 .LVL23: 85:user_src/soft_uart.c **** 391 .loc 1 85 5 view .LVU109 85:user_src/soft_uart.c **** 392 .loc 1 85 22 is_stmt 0 view .LVU110 393 007c 0123 movs r3, #1 394 007e 2B72 strb r3, [r5, #8] 87:user_src/soft_uart.c **** Int2String(pmu_hardversion,&hardverison_buf[0],12); 395 .loc 1 87 5 is_stmt 1 view .LVU111 396 0080 FFF7FEFF bl Int2String 397 .LVL24: 88:user_src/soft_uart.c **** 398 .loc 1 88 5 view .LVU112 399 0084 1E4B ldr r3, .L42+28 400 0086 0C22 movs r2, #12 401 0088 0DEB0201 add r1, sp, r2 402 008c 1868 ldr r0, [r3] 403 008e FFF7FEFF bl Int2String 404 .LVL25: 90:user_src/soft_uart.c **** index += 32; 405 .loc 1 90 5 view .LVU113 406 0092 6A46 mov r2, sp 407 0094 03CA ldmia r2!, {r0, r1} 93:user_src/soft_uart.c **** index += 16;//硬件 408 .loc 1 93 5 is_stmt 0 view .LVU114 409 0096 03AB add r3, sp, #12 90:user_src/soft_uart.c **** index += 32; 410 .loc 1 90 5 view .LVU115 411 0098 C5F80900 str r0, [r5, #9] @ unaligned 412 009c C5F80D10 str r1, [r5, #13] @ unaligned ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 12 93:user_src/soft_uart.c **** index += 16;//硬件 413 .loc 1 93 5 view .LVU116 414 00a0 03CB ldmia r3!, {r0, r1} 90:user_src/soft_uart.c **** index += 32; 415 .loc 1 90 5 view .LVU117 416 00a2 1288 ldrh r2, [r2] @ unaligned 417 00a4 A5F81120 strh r2, [r5, #17] @ unaligned 91:user_src/soft_uart.c **** index += 16; 418 .loc 1 91 5 is_stmt 1 view .LVU118 419 .LVL26: 92:user_src/soft_uart.c **** memcpy(&msg_buf[index],&hardverison_buf[0],10);//sn 420 .loc 1 92 5 view .LVU119 93:user_src/soft_uart.c **** index += 16;//硬件 421 .loc 1 93 5 view .LVU120 422 00a8 C5F83900 str r0, [r5, #57] @ unaligned 423 00ac 1A88 ldrh r2, [r3] @ unaligned 424 00ae C5F83D10 str r1, [r5, #61] @ unaligned 97:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 425 .loc 1 97 16 is_stmt 0 view .LVU121 426 00b2 5323 movs r3, #83 98:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 427 .loc 1 98 25 view .LVU122 428 00b4 5921 movs r1, #89 429 00b6 2846 mov r0, r5 93:user_src/soft_uart.c **** index += 16;//硬件 430 .loc 1 93 5 view .LVU123 431 00b8 A5F84120 strh r2, [r5, #65] @ unaligned 94:user_src/soft_uart.c **** index += 16;//厂商 432 .loc 1 94 5 is_stmt 1 view .LVU124 433 .LVL27: 95:user_src/soft_uart.c **** 434 .loc 1 95 5 view .LVU125 97:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 435 .loc 1 97 5 view .LVU126 97:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 436 .loc 1 97 16 is_stmt 0 view .LVU127 437 00bc 6B70 strb r3, [r5, #1] 98:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 438 .loc 1 98 5 is_stmt 1 view .LVU128 98:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 439 .loc 1 98 25 is_stmt 0 view .LVU129 440 00be FFF7FEFF bl Get_Crc16 441 .LVL28: 99:user_src/soft_uart.c **** index += 2; 442 .loc 1 99 5 is_stmt 1 view .LVU130 443 00c2 A5F85900 strh r0, [r5, #89] @ unaligned 100:user_src/soft_uart.c **** 444 .loc 1 100 5 view .LVU131 445 .LVL29: 102:user_src/soft_uart.c **** 446 .loc 1 102 5 view .LVU132 447 .LBB11: 448 .LBI8: 9:user_src/soft_uart.c **** { 449 .loc 1 9 6 view .LVU133 450 .LBB10: 11:user_src/soft_uart.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 13 451 .loc 1 11 5 view .LVU134 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 452 .loc 1 13 5 view .LVU135 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 453 .loc 1 13 17 is_stmt 0 view .LVU136 454 00c6 FFF7FEFF bl HAL_GetTick 455 .LVL30: 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 456 .loc 1 13 15 view .LVU137 457 00ca 2060 str r0, [r4] 14:user_src/soft_uart.c **** ; 458 .loc 1 14 5 is_stmt 1 view .LVU138 459 .L27: 15:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart2, data, size); 460 .loc 1 15 9 view .LVU139 14:user_src/soft_uart.c **** ; 461 .loc 1 14 11 view .LVU140 14:user_src/soft_uart.c **** ; 462 .loc 1 14 12 is_stmt 0 view .LVU141 463 00cc FFF7FEFF bl HAL_GetTick 464 .LVL31: 14:user_src/soft_uart.c **** ; 465 .loc 1 14 11 view .LVU142 466 00d0 2368 ldr r3, [r4] 467 00d2 9842 cmp r0, r3 468 00d4 FAD0 beq .L27 16:user_src/soft_uart.c **** } 469 .loc 1 16 5 is_stmt 1 view .LVU143 470 00d6 0749 ldr r1, .L42+16 471 00d8 0248 ldr r0, .L42 472 00da 5B22 movs r2, #91 473 00dc FFF7FEFF bl HAL_UART_Transmit_DMA 474 .LVL32: 16:user_src/soft_uart.c **** } 475 .loc 1 16 5 is_stmt 0 view .LVU144 476 .LBE10: 477 .LBE11: 478 00e0 A3E7 b .L25 479 .L43: 480 00e2 00BF .align 2 481 .L42: 482 00e4 00000000 .word huart2 483 00e8 00000000 .word .LANCHOR3 484 00ec 00000000 .word .LANCHOR4 485 00f0 00000000 .word .LANCHOR5 486 00f4 00000000 .word .LANCHOR6 487 00f8 00000000 .word pmu_sn 488 00fc 00000000 .word .LANCHOR0 489 0100 00000000 .word pmu_hardversion 490 .cfi_endproc 491 .LFE135: 493 .section .text.Update_ack_fmu,"ax",%progbits 494 .align 1 495 .p2align 2,,3 496 .global Update_ack_fmu 497 .syntax unified 498 .thumb ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 14 499 .thumb_func 501 Update_ack_fmu: 502 .LVL33: 503 .LFB136: 109:user_src/soft_uart.c **** 504 .loc 1 109 1 is_stmt 1 view -0 505 .cfi_startproc 506 @ args = 0, pretend = 0, frame = 0 507 @ frame_needed = 0, uses_anonymous_args = 0 111:user_src/soft_uart.c **** msg_buf[index++] = 0xFE; 508 .loc 1 111 5 view .LVU146 112:user_src/soft_uart.c **** msg_buf[index++] = 0; 509 .loc 1 112 5 view .LVU147 113:user_src/soft_uart.c **** msg_buf[index++] = 0; 510 .loc 1 113 5 view .LVU148 114:user_src/soft_uart.c **** msg_buf[index++] = 0x00; 511 .loc 1 114 5 view .LVU149 115:user_src/soft_uart.c **** msg_buf[index++] = 204; 512 .loc 1 115 5 view .LVU150 116:user_src/soft_uart.c **** msg_buf[index++] = 21; 513 .loc 1 116 5 view .LVU151 117:user_src/soft_uart.c **** 514 .loc 1 117 5 view .LVU152 109:user_src/soft_uart.c **** 515 .loc 1 109 1 is_stmt 0 view .LVU153 516 0000 38B5 push {r3, r4, r5, lr} 517 .LCFI9: 518 .cfi_def_cfa_offset 16 519 .cfi_offset 3, -16 520 .cfi_offset 4, -12 521 .cfi_offset 5, -8 522 .cfi_offset 14, -4 112:user_src/soft_uart.c **** msg_buf[index++] = 0; 523 .loc 1 112 22 view .LVU154 524 0002 124D ldr r5, .L48 525 .LBB14: 526 .LBB15: 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 527 .loc 1 13 15 view .LVU155 528 0004 124C ldr r4, .L48+4 529 .LBE15: 530 .LBE14: 119:user_src/soft_uart.c **** msg_buf[index++] = *ackbuf; 531 .loc 1 119 22 view .LVU156 532 0006 A871 strb r0, [r5, #6] 112:user_src/soft_uart.c **** msg_buf[index++] = 0; 533 .loc 1 112 22 view .LVU157 534 0008 FE22 movs r2, #254 116:user_src/soft_uart.c **** msg_buf[index++] = 21; 535 .loc 1 116 22 view .LVU158 536 000a 41F2CC53 movw r3, #5580 112:user_src/soft_uart.c **** msg_buf[index++] = 0; 537 .loc 1 112 22 view .LVU159 538 000e 2A60 str r2, [r5] 116:user_src/soft_uart.c **** msg_buf[index++] = 21; 539 .loc 1 116 22 view .LVU160 540 0010 AB80 strh r3, [r5, #4] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 15 119:user_src/soft_uart.c **** msg_buf[index++] = *ackbuf; 541 .loc 1 119 5 is_stmt 1 view .LVU161 542 .LVL34: 120:user_src/soft_uart.c **** msg_buf[index++] = *(ackbuf + 1); 543 .loc 1 120 5 view .LVU162 120:user_src/soft_uart.c **** msg_buf[index++] = *(ackbuf + 1); 544 .loc 1 120 24 is_stmt 0 view .LVU163 545 0012 0B78 ldrb r3, [r1] @ zero_extendqisi2 120:user_src/soft_uart.c **** msg_buf[index++] = *(ackbuf + 1); 546 .loc 1 120 22 view .LVU164 547 0014 EB71 strb r3, [r5, #7] 121:user_src/soft_uart.c **** msg_buf[index++] = 1; 548 .loc 1 121 5 is_stmt 1 view .LVU165 549 .LVL35: 121:user_src/soft_uart.c **** msg_buf[index++] = 1; 550 .loc 1 121 22 is_stmt 0 view .LVU166 551 0016 4878 ldrb r0, [r1, #1] @ zero_extendqisi2 552 .LVL36: 121:user_src/soft_uart.c **** msg_buf[index++] = 1; 553 .loc 1 121 22 view .LVU167 554 0018 2872 strb r0, [r5, #8] 122:user_src/soft_uart.c **** 555 .loc 1 122 5 is_stmt 1 view .LVU168 556 .LVL37: 122:user_src/soft_uart.c **** 557 .loc 1 122 22 is_stmt 0 view .LVU169 558 001a 0122 movs r2, #1 124:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 559 .loc 1 124 16 view .LVU170 560 001c 0423 movs r3, #4 125:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 561 .loc 1 125 25 view .LVU171 562 001e 0A21 movs r1, #10 563 .LVL38: 125:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 564 .loc 1 125 25 view .LVU172 565 0020 2846 mov r0, r5 122:user_src/soft_uart.c **** 566 .loc 1 122 22 view .LVU173 567 0022 6A72 strb r2, [r5, #9] 124:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 568 .loc 1 124 5 is_stmt 1 view .LVU174 124:user_src/soft_uart.c **** uint16_t uart_crc = Get_Crc16(msg_buf, index); 569 .loc 1 124 16 is_stmt 0 view .LVU175 570 0024 6B70 strb r3, [r5, #1] 125:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 571 .loc 1 125 5 is_stmt 1 view .LVU176 125:user_src/soft_uart.c **** memcpy(&msg_buf[index], &uart_crc, 2); 572 .loc 1 125 25 is_stmt 0 view .LVU177 573 0026 FFF7FEFF bl Get_Crc16 574 .LVL39: 126:user_src/soft_uart.c **** index += 2; 575 .loc 1 126 5 is_stmt 1 view .LVU178 576 002a 6881 strh r0, [r5, #10] @ movhi 127:user_src/soft_uart.c **** 577 .loc 1 127 5 view .LVU179 578 .LVL40: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 16 129:user_src/soft_uart.c **** } 579 .loc 1 129 5 view .LVU180 580 .LBB18: 581 .LBI14: 9:user_src/soft_uart.c **** { 582 .loc 1 9 6 view .LVU181 583 .LBB16: 11:user_src/soft_uart.c **** 584 .loc 1 11 5 view .LVU182 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 585 .loc 1 13 5 view .LVU183 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 586 .loc 1 13 17 is_stmt 0 view .LVU184 587 002c FFF7FEFF bl HAL_GetTick 588 .LVL41: 13:user_src/soft_uart.c **** while (HAL_GetTick() - send_time < 1) 589 .loc 1 13 15 view .LVU185 590 0030 2060 str r0, [r4] 14:user_src/soft_uart.c **** ; 591 .loc 1 14 5 is_stmt 1 view .LVU186 592 .L45: 15:user_src/soft_uart.c **** HAL_UART_Transmit_DMA(&huart2, data, size); 593 .loc 1 15 9 view .LVU187 14:user_src/soft_uart.c **** ; 594 .loc 1 14 11 view .LVU188 14:user_src/soft_uart.c **** ; 595 .loc 1 14 12 is_stmt 0 view .LVU189 596 0032 FFF7FEFF bl HAL_GetTick 597 .LVL42: 14:user_src/soft_uart.c **** ; 598 .loc 1 14 11 view .LVU190 599 0036 2368 ldr r3, [r4] 600 0038 9842 cmp r0, r3 601 003a FAD0 beq .L45 16:user_src/soft_uart.c **** } 602 .loc 1 16 5 is_stmt 1 view .LVU191 603 .LBE16: 604 .LBE18: 130:user_src/soft_uart.c **** 605 .loc 1 130 1 is_stmt 0 view .LVU192 606 003c BDE83840 pop {r3, r4, r5, lr} 607 .LCFI10: 608 .cfi_restore 14 609 .cfi_restore 5 610 .cfi_restore 4 611 .cfi_restore 3 612 .cfi_def_cfa_offset 0 613 .LBB19: 614 .LBB17: 16:user_src/soft_uart.c **** } 615 .loc 1 16 5 view .LVU193 616 0040 0249 ldr r1, .L48 617 0042 0448 ldr r0, .L48+8 618 0044 0C22 movs r2, #12 619 0046 FFF7FEBF b HAL_UART_Transmit_DMA 620 .LVL43: 621 .L49: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 17 622 004a 00BF .align 2 623 .L48: 624 004c 00000000 .word .LANCHOR6 625 0050 00000000 .word .LANCHOR0 626 0054 00000000 .word huart2 627 .LBE17: 628 .LBE19: 629 .cfi_endproc 630 .LFE136: 632 .section .text.check_usart_is_ok,"ax",%progbits 633 .align 1 634 .p2align 2,,3 635 .global check_usart_is_ok 636 .syntax unified 637 .thumb 638 .thumb_func 640 check_usart_is_ok: 641 .LFB137: 133:user_src/soft_uart.c **** if (huart2.gState == HAL_UART_STATE_READY && (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_TC) != RES 642 .loc 1 133 1 is_stmt 1 view -0 643 .cfi_startproc 644 @ args = 0, pretend = 0, frame = 0 645 @ frame_needed = 0, uses_anonymous_args = 0 646 @ link register save eliminated. 647 .loc 1 134 5 view .LVU195 648 .loc 1 134 15 is_stmt 0 view .LVU196 649 0000 074B ldr r3, .L54 650 0002 DA6F ldr r2, [r3, #124] 651 .loc 1 134 8 view .LVU197 652 0004 202A cmp r2, #32 653 0006 08D1 bne .L52 654 .loc 1 134 51 discriminator 1 view .LVU198 655 0008 1B68 ldr r3, [r3] 656 000a D869 ldr r0, [r3, #28] 657 .loc 1 134 47 discriminator 1 view .LVU199 658 000c 10F04000 ands r0, r0, #64 659 0010 04D0 beq .L51 660 .loc 1 134 106 discriminator 2 view .LVU200 661 0012 D869 ldr r0, [r3, #28] 662 .loc 1 134 103 discriminator 2 view .LVU201 663 0014 C0F3C010 ubfx r0, r0, #7, #1 664 0018 7047 bx lr 665 .L52: 135:user_src/soft_uart.c **** { 136:user_src/soft_uart.c **** } 137:user_src/soft_uart.c **** else 138:user_src/soft_uart.c **** { 139:user_src/soft_uart.c **** return false; 666 .loc 1 139 16 view .LVU202 667 001a 0020 movs r0, #0 668 .L51: 140:user_src/soft_uart.c **** } 141:user_src/soft_uart.c **** return true; 142:user_src/soft_uart.c **** } 669 .loc 1 142 1 view .LVU203 670 001c 7047 bx lr 671 .L55: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 18 672 001e 00BF .align 2 673 .L54: 674 0020 00000000 .word huart2 675 .cfi_endproc 676 .LFE137: 678 .section .text.update_function,"ax",%progbits 679 .align 1 680 .p2align 2,,3 681 .global update_function 682 .syntax unified 683 .thumb 684 .thumb_func 686 update_function: 687 .LFB138: 143:user_src/soft_uart.c **** 144:user_src/soft_uart.c **** uint32_t addr_offset = 0; 145:user_src/soft_uart.c **** bool update_complete = false; 146:user_src/soft_uart.c **** void update_function(void) 147:user_src/soft_uart.c **** { 688 .loc 1 147 1 is_stmt 1 view -0 689 .cfi_startproc 690 @ args = 0, pretend = 0, frame = 8 691 @ frame_needed = 0, uses_anonymous_args = 0 148:user_src/soft_uart.c **** uint16_t crc = Get_Crc16(update.data, (uint16_t)update.data[LEN] + 2 + 6); 692 .loc 1 148 5 view .LVU205 147:user_src/soft_uart.c **** uint16_t crc = Get_Crc16(update.data, (uint16_t)update.data[LEN] + 2 + 6); 693 .loc 1 147 1 is_stmt 0 view .LVU206 694 0000 F0B5 push {r4, r5, r6, r7, lr} 695 .LCFI11: 696 .cfi_def_cfa_offset 20 697 .cfi_offset 4, -20 698 .cfi_offset 5, -16 699 .cfi_offset 6, -12 700 .cfi_offset 7, -8 701 .cfi_offset 14, -4 702 .loc 1 148 64 view .LVU207 703 0002 434C ldr r4, .L83 704 0004 6178 ldrb r1, [r4, #1] @ zero_extendqisi2 147:user_src/soft_uart.c **** uint16_t crc = Get_Crc16(update.data, (uint16_t)update.data[LEN] + 2 + 6); 705 .loc 1 147 1 view .LVU208 706 0006 83B0 sub sp, sp, #12 707 .LCFI12: 708 .cfi_def_cfa_offset 32 709 .loc 1 148 20 view .LVU209 710 0008 2046 mov r0, r4 711 000a 0831 adds r1, r1, #8 712 000c FFF7FEFF bl Get_Crc16 713 .LVL44: 149:user_src/soft_uart.c **** int temp_32t = 0; 714 .loc 1 149 5 is_stmt 1 view .LVU210 715 .loc 1 149 9 is_stmt 0 view .LVU211 716 0010 0023 movs r3, #0 717 0012 0193 str r3, [sp, #4] 150:user_src/soft_uart.c **** 151:user_src/soft_uart.c **** if (crc != 0 || check_usart_is_ok() != true) 718 .loc 1 151 5 is_stmt 1 view .LVU212 719 .loc 1 151 8 is_stmt 0 view .LVU213 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 19 720 0014 20B1 cbz r0, .L79 721 .L57: 152:user_src/soft_uart.c **** { 153:user_src/soft_uart.c **** update.usebuf_flag = false; 722 .loc 1 153 9 is_stmt 1 view .LVU214 723 .loc 1 153 28 is_stmt 0 view .LVU215 724 0016 0023 movs r3, #0 725 0018 84F80031 strb r3, [r4, #256] 154:user_src/soft_uart.c **** return; 726 .loc 1 154 9 is_stmt 1 view .LVU216 155:user_src/soft_uart.c **** } 156:user_src/soft_uart.c **** 157:user_src/soft_uart.c **** switch (update.data[MSGID_ID]) 158:user_src/soft_uart.c **** { 159:user_src/soft_uart.c **** case UPDATE_START: 160:user_src/soft_uart.c **** memcpy(&temp_32t, &update.data[PAYLOAD], 4); 161:user_src/soft_uart.c **** if (temp_32t < 231424 && temp_32t > 112640) //新固件大小在110kb-226kb之间 162:user_src/soft_uart.c **** { 163:user_src/soft_uart.c **** if(cur_pack_num > 1) //中途重新升级 164:user_src/soft_uart.c **** HAL_NVIC_SystemReset(); 165:user_src/soft_uart.c **** 166:user_src/soft_uart.c **** temp_32t = 0; 167:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_START, (uint8_t *)&temp_32t); 168:user_src/soft_uart.c **** addr_offset = 0; 169:user_src/soft_uart.c **** cur_pack_num = 1; 170:user_src/soft_uart.c **** } 171:user_src/soft_uart.c **** break; 172:user_src/soft_uart.c **** case UPDATE_ING: 173:user_src/soft_uart.c **** if (cur_pack_num == update.data[PAYLOAD] + update.data[PAYLOAD + 1] * 256) 174:user_src/soft_uart.c **** { 175:user_src/soft_uart.c **** temp_32t = Flash_WriteData(FLASH_APP_ADDR + addr_offset, (uint16_t *)&update.data[PAYLO 176:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 177:user_src/soft_uart.c **** { 178:user_src/soft_uart.c **** cur_pack_num++; 179:user_src/soft_uart.c **** addr_offset += update.data[LEN] - 2; 180:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]); 181:user_src/soft_uart.c **** } 182:user_src/soft_uart.c **** } 183:user_src/soft_uart.c **** else if(cur_pack_num > update.data[PAYLOAD] + update.data[PAYLOAD + 1] * 256) 184:user_src/soft_uart.c **** { 185:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]); 186:user_src/soft_uart.c **** } 187:user_src/soft_uart.c **** break; 188:user_src/soft_uart.c **** case UPDATE_END: 189:user_src/soft_uart.c **** temp_32t = 0; 190:user_src/soft_uart.c **** if(update_complete != true) 191:user_src/soft_uart.c **** { 192:user_src/soft_uart.c **** update_complete = wirte_update_flag(); 193:user_src/soft_uart.c **** if(update_complete == true) 194:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_END, (uint8_t *)&temp_32t); 195:user_src/soft_uart.c **** HAL_Delay(50); 196:user_src/soft_uart.c **** } 197:user_src/soft_uart.c **** break; 198:user_src/soft_uart.c **** 199:user_src/soft_uart.c **** default: 200:user_src/soft_uart.c **** break; 201:user_src/soft_uart.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 20 202:user_src/soft_uart.c **** update.usebuf_flag = false; 203:user_src/soft_uart.c **** memset(update.data, 0, MAX_UART_BUF); 204:user_src/soft_uart.c **** } 727 .loc 1 204 1 is_stmt 0 view .LVU217 728 001c 03B0 add sp, sp, #12 729 .LCFI13: 730 .cfi_remember_state 731 .cfi_def_cfa_offset 20 732 @ sp needed 733 001e F0BD pop {r4, r5, r6, r7, pc} 734 .L79: 735 .LCFI14: 736 .cfi_restore_state 737 .LBB22: 738 .LBI22: 132:user_src/soft_uart.c **** { 739 .loc 1 132 6 is_stmt 1 view .LVU218 740 .LBB23: 134:user_src/soft_uart.c **** { 741 .loc 1 134 5 view .LVU219 134:user_src/soft_uart.c **** { 742 .loc 1 134 15 is_stmt 0 view .LVU220 743 0020 3C4B ldr r3, .L83+4 744 0022 DA6F ldr r2, [r3, #124] 134:user_src/soft_uart.c **** { 745 .loc 1 134 8 view .LVU221 746 0024 202A cmp r2, #32 747 0026 F6D1 bne .L57 134:user_src/soft_uart.c **** { 748 .loc 1 134 51 view .LVU222 749 0028 1B68 ldr r3, [r3] 750 002a DA69 ldr r2, [r3, #28] 134:user_src/soft_uart.c **** { 751 .loc 1 134 47 view .LVU223 752 002c 5206 lsls r2, r2, #25 753 002e F2D5 bpl .L57 134:user_src/soft_uart.c **** { 754 .loc 1 134 106 view .LVU224 755 0030 DB69 ldr r3, [r3, #28] 134:user_src/soft_uart.c **** { 756 .loc 1 134 103 view .LVU225 757 0032 1B06 lsls r3, r3, #24 758 0034 EFD5 bpl .L57 759 .LBE23: 760 .LBE22: 157:user_src/soft_uart.c **** { 761 .loc 1 157 5 is_stmt 1 view .LVU226 157:user_src/soft_uart.c **** { 762 .loc 1 157 24 is_stmt 0 view .LVU227 763 0036 6579 ldrb r5, [r4, #5] @ zero_extendqisi2 157:user_src/soft_uart.c **** { 764 .loc 1 157 5 view .LVU228 765 0038 C92D cmp r5, #201 766 003a 0ED0 beq .L58 767 003c CA2D cmp r5, #202 768 003e 36D0 beq .L59 769 0040 C82D cmp r5, #200 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 21 770 0042 19D0 beq .L80 771 .LVL45: 772 .L61: 202:user_src/soft_uart.c **** memset(update.data, 0, MAX_UART_BUF); 773 .loc 1 202 5 is_stmt 1 discriminator 3 view .LVU229 203:user_src/soft_uart.c **** } 774 .loc 1 203 5 is_stmt 0 discriminator 3 view .LVU230 775 0044 3248 ldr r0, .L83 202:user_src/soft_uart.c **** memset(update.data, 0, MAX_UART_BUF); 776 .loc 1 202 24 discriminator 3 view .LVU231 777 0046 0021 movs r1, #0 203:user_src/soft_uart.c **** } 778 .loc 1 203 5 discriminator 3 view .LVU232 779 0048 4FF48072 mov r2, #256 202:user_src/soft_uart.c **** memset(update.data, 0, MAX_UART_BUF); 780 .loc 1 202 24 discriminator 3 view .LVU233 781 004c 84F80011 strb r1, [r4, #256] 203:user_src/soft_uart.c **** } 782 .loc 1 203 5 is_stmt 1 discriminator 3 view .LVU234 783 .loc 1 204 1 is_stmt 0 discriminator 3 view .LVU235 784 0050 03B0 add sp, sp, #12 785 .LCFI15: 786 .cfi_remember_state 787 .cfi_def_cfa_offset 20 788 @ sp needed 789 0052 BDE8F040 pop {r4, r5, r6, r7, lr} 790 .LCFI16: 791 .cfi_restore 14 792 .cfi_restore 7 793 .cfi_restore 6 794 .cfi_restore 5 795 .cfi_restore 4 796 .cfi_def_cfa_offset 0 203:user_src/soft_uart.c **** } 797 .loc 1 203 5 discriminator 3 view .LVU236 798 0056 FFF7FEBF b memset 799 .LVL46: 800 .L58: 801 .LCFI17: 802 .cfi_restore_state 173:user_src/soft_uart.c **** { 803 .loc 1 173 9 is_stmt 1 view .LVU237 173:user_src/soft_uart.c **** { 804 .loc 1 173 63 is_stmt 0 view .LVU238 805 005a E279 ldrb r2, [r4, #7] @ zero_extendqisi2 173:user_src/soft_uart.c **** { 806 .loc 1 173 26 view .LVU239 807 005c 2E4E ldr r6, .L83+8 173:user_src/soft_uart.c **** { 808 .loc 1 173 40 view .LVU240 809 005e A379 ldrb r3, [r4, #6] @ zero_extendqisi2 173:user_src/soft_uart.c **** { 810 .loc 1 173 50 view .LVU241 811 0060 03EB0223 add r3, r3, r2, lsl #8 173:user_src/soft_uart.c **** { 812 .loc 1 173 26 view .LVU242 813 0064 3268 ldr r2, [r6] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 22 173:user_src/soft_uart.c **** { 814 .loc 1 173 12 view .LVU243 815 0066 9342 cmp r3, r2 816 0068 2DD0 beq .L81 183:user_src/soft_uart.c **** { 817 .loc 1 183 14 is_stmt 1 view .LVU244 183:user_src/soft_uart.c **** { 818 .loc 1 183 16 is_stmt 0 view .LVU245 819 006a 9A42 cmp r2, r3 820 006c EAD9 bls .L61 185:user_src/soft_uart.c **** } 821 .loc 1 185 13 is_stmt 1 view .LVU246 822 006e A11D adds r1, r4, #6 823 0070 2846 mov r0, r5 824 .LVL47: 185:user_src/soft_uart.c **** } 825 .loc 1 185 13 is_stmt 0 view .LVU247 826 0072 FFF7FEFF bl Update_ack_fmu 827 .LVL48: 828 0076 E5E7 b .L61 829 .LVL49: 830 .L80: 160:user_src/soft_uart.c **** if (temp_32t < 231424 && temp_32t > 112640) //新固件大小在110kb-226kb之间 831 .loc 1 160 9 is_stmt 1 view .LVU248 832 0078 D4F80620 ldr r2, [r4, #6] @ unaligned 161:user_src/soft_uart.c **** { 833 .loc 1 161 12 is_stmt 0 view .LVU249 834 007c 2749 ldr r1, .L83+12 160:user_src/soft_uart.c **** if (temp_32t < 231424 && temp_32t > 112640) //新固件大小在110kb-226kb之间 835 .loc 1 160 9 view .LVU250 836 007e 0192 str r2, [sp, #4] 161:user_src/soft_uart.c **** { 837 .loc 1 161 9 is_stmt 1 view .LVU251 161:user_src/soft_uart.c **** { 838 .loc 1 161 31 is_stmt 0 view .LVU252 839 0080 A2F10113 sub r3, r2, #65537 840 0084 A3F53843 sub r3, r3, #47104 161:user_src/soft_uart.c **** { 841 .loc 1 161 12 view .LVU253 842 0088 8B42 cmp r3, r1 843 008a DBD8 bhi .L61 163:user_src/soft_uart.c **** HAL_NVIC_SystemReset(); 844 .loc 1 163 13 is_stmt 1 view .LVU254 163:user_src/soft_uart.c **** HAL_NVIC_SystemReset(); 845 .loc 1 163 29 is_stmt 0 view .LVU255 846 008c 224D ldr r5, .L83+8 163:user_src/soft_uart.c **** HAL_NVIC_SystemReset(); 847 .loc 1 163 15 view .LVU256 848 008e 2B68 ldr r3, [r5] 849 0090 012B cmp r3, #1 850 0092 01D9 bls .L64 164:user_src/soft_uart.c **** 851 .loc 1 164 17 is_stmt 1 view .LVU257 852 0094 FFF7FEFF bl HAL_NVIC_SystemReset 853 .LVL50: 854 .L64: 166:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_START, (uint8_t *)&temp_32t); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 23 855 .loc 1 166 13 view .LVU258 166:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_START, (uint8_t *)&temp_32t); 856 .loc 1 166 22 is_stmt 0 view .LVU259 857 0098 0026 movs r6, #0 167:user_src/soft_uart.c **** addr_offset = 0; 858 .loc 1 167 13 view .LVU260 859 009a 01A9 add r1, sp, #4 860 009c C820 movs r0, #200 166:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_START, (uint8_t *)&temp_32t); 861 .loc 1 166 22 view .LVU261 862 009e 0196 str r6, [sp, #4] 167:user_src/soft_uart.c **** addr_offset = 0; 863 .loc 1 167 13 is_stmt 1 view .LVU262 864 00a0 FFF7FEFF bl Update_ack_fmu 865 .LVL51: 168:user_src/soft_uart.c **** cur_pack_num = 1; 866 .loc 1 168 13 view .LVU263 168:user_src/soft_uart.c **** cur_pack_num = 1; 867 .loc 1 168 25 is_stmt 0 view .LVU264 868 00a4 1E4A ldr r2, .L83+16 169:user_src/soft_uart.c **** } 869 .loc 1 169 26 view .LVU265 870 00a6 0123 movs r3, #1 168:user_src/soft_uart.c **** cur_pack_num = 1; 871 .loc 1 168 25 view .LVU266 872 00a8 1660 str r6, [r2] 169:user_src/soft_uart.c **** } 873 .loc 1 169 13 is_stmt 1 view .LVU267 169:user_src/soft_uart.c **** } 874 .loc 1 169 26 is_stmt 0 view .LVU268 875 00aa 2B60 str r3, [r5] 876 00ac CAE7 b .L61 877 .LVL52: 878 .L59: 189:user_src/soft_uart.c **** if(update_complete != true) 879 .loc 1 189 9 is_stmt 1 view .LVU269 190:user_src/soft_uart.c **** { 880 .loc 1 190 9 view .LVU270 190:user_src/soft_uart.c **** { 881 .loc 1 190 28 is_stmt 0 view .LVU271 882 00ae 1D4E ldr r6, .L83+20 190:user_src/soft_uart.c **** { 883 .loc 1 190 11 view .LVU272 884 00b0 3378 ldrb r3, [r6] @ zero_extendqisi2 885 00b2 002B cmp r3, #0 886 00b4 C6D1 bne .L61 192:user_src/soft_uart.c **** if(update_complete == true) 887 .loc 1 192 13 is_stmt 1 view .LVU273 192:user_src/soft_uart.c **** if(update_complete == true) 888 .loc 1 192 31 is_stmt 0 view .LVU274 889 00b6 FFF7FEFF bl wirte_update_flag 890 .LVL53: 192:user_src/soft_uart.c **** if(update_complete == true) 891 .loc 1 192 29 view .LVU275 892 00ba 3070 strb r0, [r6] 193:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_END, (uint8_t *)&temp_32t); 893 .loc 1 193 13 is_stmt 1 view .LVU276 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 24 193:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_END, (uint8_t *)&temp_32t); 894 .loc 1 193 15 is_stmt 0 view .LVU277 895 00bc 18BB cbnz r0, .L82 896 .L67: 195:user_src/soft_uart.c **** } 897 .loc 1 195 13 is_stmt 1 view .LVU278 898 00be 3220 movs r0, #50 899 00c0 FFF7FEFF bl HAL_Delay 900 .LVL54: 901 00c4 BEE7 b .L61 902 .LVL55: 903 .L81: 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 904 .loc 1 175 13 view .LVU279 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 905 .loc 1 175 24 is_stmt 0 view .LVU280 906 00c6 164F ldr r7, .L83+16 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 907 .loc 1 175 121 view .LVU281 908 00c8 6278 ldrb r2, [r4, #1] @ zero_extendqisi2 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 909 .loc 1 175 24 view .LVU282 910 00ca 3868 ldr r0, [r7] 911 .LVL56: 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 912 .loc 1 175 127 view .LVU283 913 00cc 023A subs r2, r2, #2 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 914 .loc 1 175 132 view .LVU284 915 00ce 02EBD272 add r2, r2, r2, lsr #31 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 916 .loc 1 175 24 view .LVU285 917 00d2 00F10060 add r0, r0, #134217728 918 00d6 C2F34F02 ubfx r2, r2, #1, #16 919 00da 00F5F040 add r0, r0, #30720 920 00de 04F10801 add r1, r4, #8 921 00e2 FFF7FEFF bl Flash_WriteData 922 .LVL57: 176:user_src/soft_uart.c **** { 923 .loc 1 176 16 view .LVU286 924 00e6 0328 cmp r0, #3 175:user_src/soft_uart.c **** if (temp_32t == WRITE_SUCCESS) 925 .loc 1 175 22 view .LVU287 926 00e8 0190 str r0, [sp, #4] 176:user_src/soft_uart.c **** { 927 .loc 1 176 13 is_stmt 1 view .LVU288 176:user_src/soft_uart.c **** { 928 .loc 1 176 16 is_stmt 0 view .LVU289 929 00ea ABD1 bne .L61 178:user_src/soft_uart.c **** addr_offset += update.data[LEN] - 2; 930 .loc 1 178 17 is_stmt 1 view .LVU290 178:user_src/soft_uart.c **** addr_offset += update.data[LEN] - 2; 931 .loc 1 178 29 is_stmt 0 view .LVU291 932 00ec 3368 ldr r3, [r6] 179:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]); 933 .loc 1 179 29 view .LVU292 934 00ee 6278 ldrb r2, [r4, #1] @ zero_extendqisi2 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 25 178:user_src/soft_uart.c **** addr_offset += update.data[LEN] - 2; 935 .loc 1 178 29 view .LVU293 936 00f0 0133 adds r3, r3, #1 937 00f2 3360 str r3, [r6] 179:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]); 938 .loc 1 179 17 is_stmt 1 view .LVU294 179:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]); 939 .loc 1 179 29 is_stmt 0 view .LVU295 940 00f4 3B68 ldr r3, [r7] 941 00f6 023B subs r3, r3, #2 942 00f8 1344 add r3, r3, r2 180:user_src/soft_uart.c **** } 943 .loc 1 180 17 view .LVU296 944 00fa 2846 mov r0, r5 945 00fc A11D adds r1, r4, #6 179:user_src/soft_uart.c **** Update_ack_fmu(UPDATE_ING, &update.data[PAYLOAD]); 946 .loc 1 179 29 view .LVU297 947 00fe 3B60 str r3, [r7] 180:user_src/soft_uart.c **** } 948 .loc 1 180 17 is_stmt 1 view .LVU298 949 0100 FFF7FEFF bl Update_ack_fmu 950 .LVL58: 951 0104 9EE7 b .L61 952 .L82: 194:user_src/soft_uart.c **** HAL_Delay(50); 953 .loc 1 194 17 view .LVU299 954 0106 01A9 add r1, sp, #4 955 0108 2846 mov r0, r5 956 010a FFF7FEFF bl Update_ack_fmu 957 .LVL59: 958 010e D6E7 b .L67 959 .L84: 960 .align 2 961 .L83: 962 0110 00000000 .word .LANCHOR2 963 0114 00000000 .word huart2 964 0118 00000000 .word .LANCHOR4 965 011c FECF0100 .word 118782 966 0120 00000000 .word .LANCHOR7 967 0124 00000000 .word .LANCHOR8 968 .cfi_endproc 969 .LFE138: 971 .section .text.init_usart,"ax",%progbits 972 .align 1 973 .p2align 2,,3 974 .global init_usart 975 .syntax unified 976 .thumb 977 .thumb_func 979 init_usart: 980 .LFB139: 205:user_src/soft_uart.c **** 206:user_src/soft_uart.c **** void init_usart(void) 207:user_src/soft_uart.c **** { 981 .loc 1 207 1 view -0 982 .cfi_startproc 983 @ args = 0, pretend = 0, frame = 0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 26 984 @ frame_needed = 0, uses_anonymous_args = 0 208:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); //uart2 空闲中断 985 .loc 1 208 5 view .LVU301 207:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); //uart2 空闲中断 986 .loc 1 207 1 is_stmt 0 view .LVU302 987 0000 10B5 push {r4, lr} 988 .LCFI18: 989 .cfi_def_cfa_offset 8 990 .cfi_offset 4, -8 991 .cfi_offset 14, -4 992 .loc 1 208 5 view .LVU303 993 0002 094C ldr r4, .L87 209:user_src/soft_uart.c **** HAL_UART_Receive_DMA(&huart2, (uint8_t *)FMU_uart_buf, MAX_UART_BUF); 994 .loc 1 209 2 view .LVU304 995 0004 0949 ldr r1, .L87+4 208:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE); //uart2 空闲中断 996 .loc 1 208 5 view .LVU305 997 0006 2068 ldr r0, [r4] 998 0008 0368 ldr r3, [r0] 999 000a 43F01003 orr r3, r3, #16 1000 000e 0360 str r3, [r0] 1001 .loc 1 209 2 is_stmt 1 view .LVU306 1002 0010 4FF48072 mov r2, #256 1003 0014 2046 mov r0, r4 1004 0016 FFF7FEFF bl HAL_UART_Receive_DMA 1005 .LVL60: 210:user_src/soft_uart.c **** //开启错误处理机制 211:user_src/soft_uart.c **** __HAL_UART_ENABLE_IT(&huart2, UART_IT_ERR); 1006 .loc 1 211 2 view .LVU307 1007 001a 2268 ldr r2, [r4] 1008 001c 9368 ldr r3, [r2, #8] 1009 001e 43F00103 orr r3, r3, #1 1010 0022 9360 str r3, [r2, #8] 212:user_src/soft_uart.c **** }... 1011 .loc 1 212 1 is_stmt 0 view .LVU308 1012 0024 10BD pop {r4, pc} 1013 .L88: 1014 0026 00BF .align 2 1015 .L87: 1016 0028 00000000 .word huart2 1017 002c 00000000 .word .LANCHOR1 1018 .cfi_endproc 1019 .LFE139: 1021 .global update_complete 1022 .global addr_offset 1023 .global cur_pack_num 1024 .global msg_buf 1025 .global update 1026 .global FMU_uart_buf 1027 .global fmu_version_ack 1028 .section .bss.FMU_uart_buf,"aw",%nobits 1029 .align 2 1030 .set .LANCHOR1,. + 0 1033 FMU_uart_buf: 1034 0000 00000000 .space 256 1034 00000000 1034 00000000 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 27 1034 00000000 1034 00000000 1035 .section .bss.addr_offset,"aw",%nobits 1036 .align 2 1037 .set .LANCHOR7,. + 0 1040 addr_offset: 1041 0000 00000000 .space 4 1042 .section .bss.cur_pack_num,"aw",%nobits 1043 .align 2 1044 .set .LANCHOR4,. + 0 1047 cur_pack_num: 1048 0000 00000000 .space 4 1049 .section .bss.fmu_version_ack,"aw",%nobits 1050 .set .LANCHOR3,. + 0 1053 fmu_version_ack: 1054 0000 00 .space 1 1055 .section .bss.msg_buf,"aw",%nobits 1056 .align 2 1057 .set .LANCHOR6,. + 0 1060 msg_buf: 1061 0000 00000000 .space 128 1061 00000000 1061 00000000 1061 00000000 1061 00000000 1062 .section .bss.send_time.1,"aw",%nobits 1063 .align 2 1064 .set .LANCHOR0,. + 0 1067 send_time.1: 1068 0000 00000000 .space 4 1069 .section .bss.time2_hz.0,"aw",%nobits 1070 .align 2 1071 .set .LANCHOR5,. + 0 1074 time2_hz.0: 1075 0000 00000000 .space 4 1076 .section .bss.update,"aw",%nobits 1077 .align 2 1078 .set .LANCHOR2,. + 0 1081 update: 1082 0000 00000000 .space 257 1082 00000000 1082 00000000 1082 00000000 1082 00000000 1083 .section .bss.update_complete,"aw",%nobits 1084 .set .LANCHOR8,. + 0 1087 update_complete: 1088 0000 00 .space 1 1089 .text 1090 .Letext0: 1091 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 1092 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 1093 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 1094 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 1095 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 1096 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 1097 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_uart.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 28 1098 .file 9 "user_inc/soft_uart.h" 1099 .file 10 "user_inc/soft_flash.h" 1100 .file 11 "Core/Inc/usart.h" 1101 .file 12 "user_inc/soft_crc.h" 1102 .file 13 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_cortex.h" 1103 .file 14 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h" 1104 .file 15 "" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 29 DEFINED SYMBOLS *ABS*:00000000 soft_uart.c C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:20 .text.uart2_send_msg:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:27 .text.uart2_send_msg:00000000 uart2_send_msg C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:85 .text.uart2_send_msg:00000028 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:91 .text.USER_UART_IRQHandler:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:98 .text.USER_UART_IRQHandler:00000000 USER_UART_IRQHandler C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:228 .text.USER_UART_IRQHandler:00000084 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:236 .text.send_pmu_version:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:243 .text.send_pmu_version:00000000 send_pmu_version C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:482 .text.send_pmu_version:000000e4 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:494 .text.Update_ack_fmu:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:501 .text.Update_ack_fmu:00000000 Update_ack_fmu C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:624 .text.Update_ack_fmu:0000004c $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:633 .text.check_usart_is_ok:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:640 .text.check_usart_is_ok:00000000 check_usart_is_ok C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:674 .text.check_usart_is_ok:00000020 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:679 .text.update_function:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:686 .text.update_function:00000000 update_function C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:962 .text.update_function:00000110 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:972 .text.init_usart:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:979 .text.init_usart:00000000 init_usart C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1016 .text.init_usart:00000028 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1087 .bss.update_complete:00000000 update_complete C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1040 .bss.addr_offset:00000000 addr_offset C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1047 .bss.cur_pack_num:00000000 cur_pack_num C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1060 .bss.msg_buf:00000000 msg_buf C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1081 .bss.update:00000000 update C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1033 .bss.FMU_uart_buf:00000000 FMU_uart_buf C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1053 .bss.fmu_version_ack:00000000 fmu_version_ack C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1029 .bss.FMU_uart_buf:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1036 .bss.addr_offset:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1043 .bss.cur_pack_num:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1054 .bss.fmu_version_ack:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1056 .bss.msg_buf:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1063 .bss.send_time.1:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1067 .bss.send_time.1:00000000 send_time.1 C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1070 .bss.time2_hz.0:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1074 .bss.time2_hz.0:00000000 time2_hz.0 C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1077 .bss.update:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s:1088 .bss.update_complete:00000000 $d UNDEFINED SYMBOLS HAL_GetTick HAL_UART_Transmit_DMA huart2 HAL_UART_AbortReceive memset HAL_UART_Receive_DMA memcpy Int2String Get_Crc16 pmu_sn pmu_hardversion HAL_NVIC_SystemReset wirte_update_flag HAL_Delay ARM GAS C:\Users\zl835\AppData\Local\Temp\ccdSndPg.s page 30 Flash_WriteData