ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.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_herewin.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .global herewin_info 20 .section .bss.herewin_info,"aw",%nobits 21 .align 2 24 herewin_info: 25 0000 00000000 .space 62 25 00000000 25 00000000 25 00000000 25 00000000 26 .global Herewin_Link 27 .section .bss.Herewin_Link,"aw",%nobits 28 .align 2 31 Herewin_Link: 32 0000 00000000 .space 12 32 00000000 32 00000000 33 .global can_info 34 .section .bss.can_info,"aw",%nobits 35 .align 2 38 can_info: 39 0000 00000000 .space 76 39 00000000 39 00000000 39 00000000 39 00000000 40 .section .text.HerewinCanRecvHookFunction,"ax",%progbits 41 .align 1 42 .global HerewinCanRecvHookFunction 43 .syntax unified 44 .thumb 45 .thumb_func 47 HerewinCanRecvHookFunction: 48 .LFB130: 49 .file 1 "user_src/soft_herewin.c" 1:user_src/soft_herewin.c **** #include "soft_herewin.h" 2:user_src/soft_herewin.c **** #include "string.h" 3:user_src/soft_herewin.c **** #include "crc.h" 4:user_src/soft_herewin.c **** #include "soft_can.h" 5:user_src/soft_herewin.c **** #include "common.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 2 6:user_src/soft_herewin.c **** 7:user_src/soft_herewin.c **** herewin_bms herewin_info; 8:user_src/soft_herewin.c **** 9:user_src/soft_herewin.c **** Connect_check Herewin_Link; 10:user_src/soft_herewin.c **** 11:user_src/soft_herewin.c **** #pragma pack(1) 12:user_src/soft_herewin.c **** typedef struct 13:user_src/soft_herewin.c **** { 14:user_src/soft_herewin.c **** uint8_t herewin_buf[64]; //临时buf 15:user_src/soft_herewin.c **** uint8_t message_num; //报文序号 16:user_src/soft_herewin.c **** uint8_t message_total;//总帧数 17:user_src/soft_herewin.c **** uint16_t byte_num; //有效字节数 18:user_src/soft_herewin.c **** int last_frame_num; //最后一包有效字节数 19:user_src/soft_herewin.c **** uint16_t crc; //和校验 20:user_src/soft_herewin.c **** uint8_t i; 21:user_src/soft_herewin.c **** bool crc_is_ok; //校验通过 22:user_src/soft_herewin.c **** }herewin_can_info; 23:user_src/soft_herewin.c **** #pragma pack() 24:user_src/soft_herewin.c **** 25:user_src/soft_herewin.c **** herewin_can_info can_info; 26:user_src/soft_herewin.c **** 27:user_src/soft_herewin.c **** void HerewinCanRecvHookFunction(uint32_t cellCanID, uint8_t data[], uint8_t len)//海盈 28:user_src/soft_herewin.c **** { 50 .loc 1 28 1 51 .cfi_startproc 52 @ args = 0, pretend = 0, frame = 24 53 @ frame_needed = 1, uses_anonymous_args = 0 54 0000 80B5 push {r7, lr} 55 .LCFI0: 56 .cfi_def_cfa_offset 8 57 .cfi_offset 7, -8 58 .cfi_offset 14, -4 59 0002 86B0 sub sp, sp, #24 60 .LCFI1: 61 .cfi_def_cfa_offset 32 62 0004 00AF add r7, sp, #0 63 .LCFI2: 64 .cfi_def_cfa_register 7 65 0006 F860 str r0, [r7, #12] 66 0008 B960 str r1, [r7, #8] 67 000a 1346 mov r3, r2 68 000c FB71 strb r3, [r7, #7] 29:user_src/soft_herewin.c **** 30:user_src/soft_herewin.c **** Herewin_Link.recv_time = HAL_GetTick(); 69 .loc 1 30 30 70 000e FFF7FEFF bl HAL_GetTick 71 0012 0346 mov r3, r0 72 .loc 1 30 28 73 0014 A84A ldr r2, .L30 74 0016 1360 str r3, [r2] 31:user_src/soft_herewin.c **** Herewin_Link.connect_status = COMP_NORMAL; 75 .loc 1 31 33 76 0018 A74B ldr r3, .L30 77 001a 0122 movs r2, #1 78 001c 1A72 strb r2, [r3, #8] 32:user_src/soft_herewin.c **** 33:user_src/soft_herewin.c **** uint8_t i = 0; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 3 79 .loc 1 33 13 80 001e 0023 movs r3, #0 81 0020 FB75 strb r3, [r7, #23] 34:user_src/soft_herewin.c **** uint8_t canid_pf = (cellCanID >> 16) & 0xff; 82 .loc 1 34 35 83 0022 FB68 ldr r3, [r7, #12] 84 0024 1B0C lsrs r3, r3, #16 85 .loc 1 34 13 86 0026 BB75 strb r3, [r7, #22] 35:user_src/soft_herewin.c **** 36:user_src/soft_herewin.c **** switch (canid_pf) 87 .loc 1 36 5 88 0028 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 89 002a 872B cmp r3, #135 90 002c 00F30082 bgt .L27 91 0030 812B cmp r3, #129 92 0032 0CDA bge .L3 93 0034 262B cmp r3, #38 94 0036 00F0DA81 beq .L4 95 003a 262B cmp r3, #38 96 003c 00F3F881 bgt .L27 97 0040 222B cmp r3, #34 98 0042 00F0AA81 beq .L5 99 0046 242B cmp r3, #36 100 0048 00F0C381 beq .L6 37:user_src/soft_herewin.c **** { 38:user_src/soft_herewin.c **** //定值查询包 39:user_src/soft_herewin.c **** case 0x81: 40:user_src/soft_herewin.c **** if((data[0] == 8 )&& (0x80 == data[2])) 41:user_src/soft_herewin.c **** { 42:user_src/soft_herewin.c **** herewin_info.battery_num = data[4]; 43:user_src/soft_herewin.c **** } 44:user_src/soft_herewin.c **** break; 45:user_src/soft_herewin.c **** 46:user_src/soft_herewin.c **** case 0x83: 47:user_src/soft_herewin.c **** herewin_info.get_temp_flag = true; 48:user_src/soft_herewin.c **** //电芯温度传感器只有三个,取前三个字节,传给APP取平均值 49:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_temp[0],&data[0],1); 50:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_temp[1],&data[1],1); 51:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_temp[2],&data[2],1); 52:user_src/soft_herewin.c **** break; 53:user_src/soft_herewin.c **** //单体电压 54:user_src/soft_herewin.c **** case 0x85: 55:user_src/soft_herewin.c **** can_info.message_num = data[0]; 56:user_src/soft_herewin.c **** //第一包 57:user_src/soft_herewin.c **** if(can_info.message_num == 1) 58:user_src/soft_herewin.c **** { 59:user_src/soft_herewin.c **** memset(&can_info,0,sizeof(can_info)); 60:user_src/soft_herewin.c **** can_info.byte_num = data[2] + data[3] * 256; 61:user_src/soft_herewin.c **** can_info.message_total = data[1]; 62:user_src/soft_herewin.c **** //算出最后一包的有效字节数 63:user_src/soft_herewin.c **** can_info.last_frame_num = can_info.byte_num - 4 -(can_info.message_total - 2) * 7; 64:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 65:user_src/soft_herewin.c **** for(i = 0;i < 4;i++) 66:user_src/soft_herewin.c **** { 67:user_src/soft_herewin.c **** can_info.crc += can_info.herewin_buf[i]; 68:user_src/soft_herewin.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 4 69:user_src/soft_herewin.c **** can_info.i += 4; 70:user_src/soft_herewin.c **** } 71:user_src/soft_herewin.c **** //最后一包 协议校验码是最后发,12S的电池校验会单独占一个字节发 72:user_src/soft_herewin.c **** //14s 73:user_src/soft_herewin.c **** else if(can_info.message_num == can_info.message_total && can_info.last_frame_num <= 5 74:user_src/soft_herewin.c **** && can_info.last_frame_num > 0 ) 75:user_src/soft_herewin.c **** { 76:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[can_info.i],&data[1],can_info.last_frame_num); 77:user_src/soft_herewin.c **** for(i = 0;i < can_info.last_frame_num;i++) 78:user_src/soft_herewin.c **** { 79:user_src/soft_herewin.c **** can_info.crc += can_info.herewin_buf[can_info.i + i]; 80:user_src/soft_herewin.c **** } 81:user_src/soft_herewin.c **** //校验 82:user_src/soft_herewin.c **** if(can_info.crc == data[ 1 + can_info.last_frame_num] + 256 * data[ 2 + can_info.last_f 83:user_src/soft_herewin.c **** { 84:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_vol[0],&can_info.herewin_buf[0],can_info.byte_num); 85:user_src/soft_herewin.c **** } 86:user_src/soft_herewin.c **** memset(&can_info,0,sizeof(can_info)); 87:user_src/soft_herewin.c **** } 88:user_src/soft_herewin.c **** //12s电池 最后一包有效字节-1 89:user_src/soft_herewin.c **** else if(can_info.message_num == can_info.message_total && can_info.last_frame_num <= 0 ) 90:user_src/soft_herewin.c **** { 91:user_src/soft_herewin.c **** //最后一包只有1字节校验 92:user_src/soft_herewin.c **** if(can_info.last_frame_num == -1) 93:user_src/soft_herewin.c **** { 94:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[can_info.i],&data[1],1); 95:user_src/soft_herewin.c **** can_info.crc -= can_info.herewin_buf[can_info.i - 1]; 96:user_src/soft_herewin.c **** //校验 97:user_src/soft_herewin.c **** if(can_info.crc == can_info.herewin_buf[can_info.i - 1] + 256 * can_info.herewin_bu 98:user_src/soft_herewin.c **** { 99:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_vol[0],&can_info.herewin_buf[0],can_info.byte_num) 100:user_src/soft_herewin.c **** } 101:user_src/soft_herewin.c **** } 102:user_src/soft_herewin.c **** //最后一包只有两字节校验 103:user_src/soft_herewin.c **** else if(can_info.last_frame_num == 0) 104:user_src/soft_herewin.c **** { 105:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[can_info.i],&data[1],2); 106:user_src/soft_herewin.c **** //校验 107:user_src/soft_herewin.c **** if(can_info.crc == can_info.herewin_buf[can_info.i] + 256 * can_info.herewin_buf[ca 108:user_src/soft_herewin.c **** { 109:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_vol[0],&can_info.herewin_buf[0],can_info.byte_num) 110:user_src/soft_herewin.c **** } 111:user_src/soft_herewin.c **** } 112:user_src/soft_herewin.c **** memset(&can_info,0,sizeof(can_info)); 113:user_src/soft_herewin.c **** 114:user_src/soft_herewin.c **** } 115:user_src/soft_herewin.c **** else 116:user_src/soft_herewin.c **** { 117:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[can_info.i],&data[1],7); 118:user_src/soft_herewin.c **** for(i = 0;i < 7;i++) 119:user_src/soft_herewin.c **** { 120:user_src/soft_herewin.c **** can_info.crc += can_info.herewin_buf[can_info.i + i]; 121:user_src/soft_herewin.c **** } 122:user_src/soft_herewin.c **** can_info.i += 7; 123:user_src/soft_herewin.c **** } 124:user_src/soft_herewin.c **** break; 125:user_src/soft_herewin.c **** //电池循环次数查询 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 5 126:user_src/soft_herewin.c **** case 0x87: 127:user_src/soft_herewin.c **** memcpy(&herewin_info.circulation_num,&data[0],2); 128:user_src/soft_herewin.c **** break; 129:user_src/soft_herewin.c **** //充电请求 130:user_src/soft_herewin.c **** case 0x22: 131:user_src/soft_herewin.c **** memcpy(&herewin_info.re_vol,&data[0],2); 132:user_src/soft_herewin.c **** memcpy(&herewin_info.re_ele,&data[2],2); 133:user_src/soft_herewin.c **** memcpy(&herewin_info.max_vol,&data[4],2); 134:user_src/soft_herewin.c **** memcpy(&herewin_info.power_status,&data[6],2); 135:user_src/soft_herewin.c **** break; 136:user_src/soft_herewin.c **** //告警信息 137:user_src/soft_herewin.c **** case 0x24: 138:user_src/soft_herewin.c **** memcpy(&herewin_info.alarm_info,&data[0],2); 139:user_src/soft_herewin.c **** memcpy(&herewin_info.warn_info,&data[2],2); 140:user_src/soft_herewin.c **** break; 141:user_src/soft_herewin.c **** //电流 电压信息 142:user_src/soft_herewin.c **** case 0x26: 143:user_src/soft_herewin.c **** memcpy(&herewin_info.total_vol,&data[0],2); 144:user_src/soft_herewin.c **** memcpy(&herewin_info.tolal_ele,&data[2],2); 145:user_src/soft_herewin.c **** memcpy(&herewin_info.SOC_info,&data[4],1); 146:user_src/soft_herewin.c **** memcpy(&herewin_info.SOH_info,&data[5],1); 147:user_src/soft_herewin.c **** memcpy(&herewin_info.SOP_info,&data[6],2); 148:user_src/soft_herewin.c **** break; 149:user_src/soft_herewin.c **** default: 150:user_src/soft_herewin.c **** break; 101 .loc 1 150 9 102 004c F0E1 b .L27 103 .L3: 36:user_src/soft_herewin.c **** { 104 .loc 1 36 5 105 004e 813B subs r3, r3, #129 106 0050 062B cmp r3, #6 107 0052 00F2ED81 bhi .L27 108 0056 01A2 adr r2, .L8 109 0058 52F823F0 ldr pc, [r2, r3, lsl #2] 110 .p2align 2 111 .L8: 112 005c 79000000 .word .L11+1 113 0060 31040000 .word .L27+1 114 0064 9B000000 .word .L10+1 115 0068 31040000 .word .L27+1 116 006c C1000000 .word .L9+1 117 0070 31040000 .word .L27+1 118 0074 8D030000 .word .L7+1 119 .p2align 1 120 .L11: 40:user_src/soft_herewin.c **** { 121 .loc 1 40 17 122 0078 BB68 ldr r3, [r7, #8] 123 007a 1B78 ldrb r3, [r3] @ zero_extendqisi2 40:user_src/soft_herewin.c **** { 124 .loc 1 40 11 125 007c 082B cmp r3, #8 126 007e 40F0D981 bne .L28 40:user_src/soft_herewin.c **** { 127 .loc 1 40 43 discriminator 1 128 0082 BB68 ldr r3, [r7, #8] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 6 129 0084 0233 adds r3, r3, #2 130 0086 1B78 ldrb r3, [r3] @ zero_extendqisi2 40:user_src/soft_herewin.c **** { 131 .loc 1 40 27 discriminator 1 132 0088 802B cmp r3, #128 133 008a 40F0D381 bne .L28 42:user_src/soft_herewin.c **** } 134 .loc 1 42 37 135 008e BB68 ldr r3, [r7, #8] 136 0090 1A79 ldrb r2, [r3, #4] @ zero_extendqisi2 137 0092 8A4B ldr r3, .L30+4 138 0094 83F83220 strb r2, [r3, #50] 44:user_src/soft_herewin.c **** 139 .loc 1 44 9 140 0098 CCE1 b .L28 141 .L10: 47:user_src/soft_herewin.c **** //电芯温度传感器只有三个,取前三个字节,传给APP取平均值 142 .loc 1 47 36 143 009a 884B ldr r3, .L30+4 144 009c 0122 movs r2, #1 145 009e 83F83D20 strb r2, [r3, #61] 146 00a2 BB68 ldr r3, [r7, #8] 147 00a4 1A78 ldrb r2, [r3] @ zero_extendqisi2 49:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_temp[1],&data[1],1); 148 .loc 1 49 9 149 00a6 854B ldr r3, .L30+4 150 00a8 1A70 strb r2, [r3] 50:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_temp[2],&data[2],1); 151 .loc 1 50 46 152 00aa BB68 ldr r3, [r7, #8] 153 00ac 0133 adds r3, r3, #1 154 00ae 1A78 ldrb r2, [r3] @ zero_extendqisi2 50:user_src/soft_herewin.c **** memcpy(&herewin_info.battery_temp[2],&data[2],1); 155 .loc 1 50 9 156 00b0 824B ldr r3, .L30+4 157 00b2 5A70 strb r2, [r3, #1] 51:user_src/soft_herewin.c **** break; 158 .loc 1 51 46 159 00b4 BB68 ldr r3, [r7, #8] 160 00b6 0233 adds r3, r3, #2 161 00b8 1A78 ldrb r2, [r3] @ zero_extendqisi2 51:user_src/soft_herewin.c **** break; 162 .loc 1 51 9 163 00ba 804B ldr r3, .L30+4 164 00bc 9A70 strb r2, [r3, #2] 52:user_src/soft_herewin.c **** //单体电压 165 .loc 1 52 9 166 00be BAE1 b .L13 167 .L9: 55:user_src/soft_herewin.c **** //第一包 168 .loc 1 55 36 169 00c0 BB68 ldr r3, [r7, #8] 170 00c2 1A78 ldrb r2, [r3] @ zero_extendqisi2 55:user_src/soft_herewin.c **** //第一包 171 .loc 1 55 30 172 00c4 7E4B ldr r3, .L30+8 173 00c6 83F84020 strb r2, [r3, #64] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 7 57:user_src/soft_herewin.c **** { 174 .loc 1 57 20 175 00ca 7D4B ldr r3, .L30+8 176 00cc 93F84030 ldrb r3, [r3, #64] @ zero_extendqisi2 57:user_src/soft_herewin.c **** { 177 .loc 1 57 11 178 00d0 012B cmp r3, #1 179 00d2 4AD1 bne .L14 59:user_src/soft_herewin.c **** can_info.byte_num = data[2] + data[3] * 256; 180 .loc 1 59 13 181 00d4 4C22 movs r2, #76 182 00d6 0021 movs r1, #0 183 00d8 7948 ldr r0, .L30+8 184 00da FFF7FEFF bl memset 60:user_src/soft_herewin.c **** can_info.message_total = data[1]; 185 .loc 1 60 37 186 00de BB68 ldr r3, [r7, #8] 187 00e0 0233 adds r3, r3, #2 188 00e2 1B78 ldrb r3, [r3] @ zero_extendqisi2 189 00e4 9AB2 uxth r2, r3 60:user_src/soft_herewin.c **** can_info.message_total = data[1]; 190 .loc 1 60 47 191 00e6 BB68 ldr r3, [r7, #8] 192 00e8 0333 adds r3, r3, #3 193 00ea 1B78 ldrb r3, [r3] @ zero_extendqisi2 60:user_src/soft_herewin.c **** can_info.message_total = data[1]; 194 .loc 1 60 41 195 00ec 9BB2 uxth r3, r3 196 00ee 1B02 lsls r3, r3, #8 197 00f0 9BB2 uxth r3, r3 198 00f2 1344 add r3, r3, r2 199 00f4 9AB2 uxth r2, r3 60:user_src/soft_herewin.c **** can_info.message_total = data[1]; 200 .loc 1 60 31 201 00f6 724B ldr r3, .L30+8 202 00f8 A3F84220 strh r2, [r3, #66] @ movhi 61:user_src/soft_herewin.c **** //算出最后一包的有效字节数 203 .loc 1 61 36 204 00fc BB68 ldr r3, [r7, #8] 205 00fe 5A78 ldrb r2, [r3, #1] @ zero_extendqisi2 206 0100 6F4B ldr r3, .L30+8 207 0102 83F84120 strb r2, [r3, #65] 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 208 .loc 1 63 47 209 0106 6E4B ldr r3, .L30+8 210 0108 B3F84230 ldrh r3, [r3, #66] 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 211 .loc 1 63 57 212 010c 1A1F subs r2, r3, #4 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 213 .loc 1 63 71 214 010e 6C4B ldr r3, .L30+8 215 0110 93F84130 ldrb r3, [r3, #65] @ zero_extendqisi2 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 216 .loc 1 63 86 217 0114 023B subs r3, r3, #2 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 8 218 .loc 1 63 91 219 0116 1946 mov r1, r3 220 0118 DB00 lsls r3, r3, #3 221 011a CB1A subs r3, r1, r3 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 222 .loc 1 63 61 223 011c 1344 add r3, r3, r2 63:user_src/soft_herewin.c **** memcpy(&can_info.herewin_buf[0],&data[4],4); 224 .loc 1 63 37 225 011e 684A ldr r2, .L30+8 226 0120 5364 str r3, [r2, #68] 64:user_src/soft_herewin.c **** for(i = 0;i < 4;i++) 227 .loc 1 64 45 228 0122 BB68 ldr r3, [r7, #8] 229 0124 0433 adds r3, r3, #4 230 0126 1B68 ldr r3, [r3] @ unaligned 231 0128 1A46 mov r2, r3 64:user_src/soft_herewin.c **** for(i = 0;i < 4;i++) 232 .loc 1 64 13 233 012a 654B ldr r3, .L30+8 234 012c 1A60 str r2, [r3] 65:user_src/soft_herewin.c **** { 235 .loc 1 65 19 236 012e 0023 movs r3, #0 237 0130 FB75 strb r3, [r7, #23] 65:user_src/soft_herewin.c **** { 238 .loc 1 65 13 239 0132 0EE0 b .L15 240 .L16: 67:user_src/soft_herewin.c **** } 241 .loc 1 67 30 discriminator 3 242 0134 624B ldr r3, .L30+8 243 0136 B3F84820 ldrh r2, [r3, #72] 67:user_src/soft_herewin.c **** } 244 .loc 1 67 53 discriminator 3 245 013a FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 246 013c 6049 ldr r1, .L30+8 247 013e CB5C ldrb r3, [r1, r3] @ zero_extendqisi2 248 0140 9BB2 uxth r3, r3 67:user_src/soft_herewin.c **** } 249 .loc 1 67 30 discriminator 3 250 0142 1344 add r3, r3, r2 251 0144 9AB2 uxth r2, r3 252 0146 5E4B ldr r3, .L30+8 253 0148 A3F84820 strh r2, [r3, #72] @ movhi 65:user_src/soft_herewin.c **** { 254 .loc 1 65 30 discriminator 3 255 014c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 256 014e 0133 adds r3, r3, #1 257 0150 FB75 strb r3, [r7, #23] 258 .L15: 65:user_src/soft_herewin.c **** { 259 .loc 1 65 13 discriminator 1 260 0152 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 261 0154 032B cmp r3, #3 262 0156 EDD9 bls .L16 69:user_src/soft_herewin.c **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 9 263 .loc 1 69 24 264 0158 594B ldr r3, .L30+8 265 015a 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 266 015e 0433 adds r3, r3, #4 267 0160 DAB2 uxtb r2, r3 268 0162 574B ldr r3, .L30+8 269 0164 83F84A20 strb r2, [r3, #74] 124:user_src/soft_herewin.c **** //电池循环次数查询 270 .loc 1 124 9 271 0168 65E1 b .L13 272 .L14: 73:user_src/soft_herewin.c **** && can_info.last_frame_num > 0 ) 273 .loc 1 73 25 274 016a 554B ldr r3, .L30+8 275 016c 93F84020 ldrb r2, [r3, #64] @ zero_extendqisi2 73:user_src/soft_herewin.c **** && can_info.last_frame_num > 0 ) 276 .loc 1 73 49 277 0170 534B ldr r3, .L30+8 278 0172 93F84130 ldrb r3, [r3, #65] @ zero_extendqisi2 73:user_src/soft_herewin.c **** && can_info.last_frame_num > 0 ) 279 .loc 1 73 16 280 0176 9A42 cmp r2, r3 281 0178 55D1 bne .L18 73:user_src/soft_herewin.c **** && can_info.last_frame_num > 0 ) 282 .loc 1 73 76 discriminator 1 283 017a 514B ldr r3, .L30+8 284 017c 5B6C ldr r3, [r3, #68] 73:user_src/soft_herewin.c **** && can_info.last_frame_num > 0 ) 285 .loc 1 73 64 discriminator 1 286 017e 052B cmp r3, #5 287 0180 51DC bgt .L18 74:user_src/soft_herewin.c **** { 288 .loc 1 74 28 289 0182 4F4B ldr r3, .L30+8 290 0184 5B6C ldr r3, [r3, #68] 74:user_src/soft_herewin.c **** { 291 .loc 1 74 17 292 0186 002B cmp r3, #0 293 0188 4DDD ble .L18 76:user_src/soft_herewin.c **** for(i = 0;i < can_info.last_frame_num;i++) 294 .loc 1 76 50 295 018a 4D4B ldr r3, .L30+8 296 018c 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 297 0190 1A46 mov r2, r3 76:user_src/soft_herewin.c **** for(i = 0;i < can_info.last_frame_num;i++) 298 .loc 1 76 20 299 0192 4B4B ldr r3, .L30+8 300 0194 D018 adds r0, r2, r3 76:user_src/soft_herewin.c **** for(i = 0;i < can_info.last_frame_num;i++) 301 .loc 1 76 54 302 0196 BB68 ldr r3, [r7, #8] 303 0198 0133 adds r3, r3, #1 76:user_src/soft_herewin.c **** for(i = 0;i < can_info.last_frame_num;i++) 304 .loc 1 76 71 305 019a 494A ldr r2, .L30+8 306 019c 526C ldr r2, [r2, #68] 76:user_src/soft_herewin.c **** for(i = 0;i < can_info.last_frame_num;i++) ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 10 307 .loc 1 76 13 308 019e 1946 mov r1, r3 309 01a0 FFF7FEFF bl memcpy 77:user_src/soft_herewin.c **** { 310 .loc 1 77 19 311 01a4 0023 movs r3, #0 312 01a6 FB75 strb r3, [r7, #23] 77:user_src/soft_herewin.c **** { 313 .loc 1 77 13 314 01a8 13E0 b .L19 315 .L20: 79:user_src/soft_herewin.c **** } 316 .loc 1 79 30 discriminator 3 317 01aa 454B ldr r3, .L30+8 318 01ac B3F84820 ldrh r2, [r3, #72] 79:user_src/soft_herewin.c **** } 319 .loc 1 79 62 discriminator 3 320 01b0 434B ldr r3, .L30+8 321 01b2 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 322 01b6 1946 mov r1, r3 79:user_src/soft_herewin.c **** } 323 .loc 1 79 65 discriminator 3 324 01b8 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 325 01ba 0B44 add r3, r3, r1 79:user_src/soft_herewin.c **** } 326 .loc 1 79 53 discriminator 3 327 01bc 4049 ldr r1, .L30+8 328 01be CB5C ldrb r3, [r1, r3] @ zero_extendqisi2 329 01c0 9BB2 uxth r3, r3 79:user_src/soft_herewin.c **** } 330 .loc 1 79 30 discriminator 3 331 01c2 1344 add r3, r3, r2 332 01c4 9AB2 uxth r2, r3 333 01c6 3E4B ldr r3, .L30+8 334 01c8 A3F84820 strh r2, [r3, #72] @ movhi 77:user_src/soft_herewin.c **** { 335 .loc 1 77 52 discriminator 3 336 01cc FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 337 01ce 0133 adds r3, r3, #1 338 01d0 FB75 strb r3, [r7, #23] 339 .L19: 77:user_src/soft_herewin.c **** { 340 .loc 1 77 25 discriminator 1 341 01d2 FA7D ldrb r2, [r7, #23] @ zero_extendqisi2 77:user_src/soft_herewin.c **** { 342 .loc 1 77 35 discriminator 1 343 01d4 3A4B ldr r3, .L30+8 344 01d6 5B6C ldr r3, [r3, #68] 77:user_src/soft_herewin.c **** { 345 .loc 1 77 13 discriminator 1 346 01d8 9A42 cmp r2, r3 347 01da E6DB blt .L20 82:user_src/soft_herewin.c **** { 348 .loc 1 82 24 349 01dc 384B ldr r3, .L30+8 350 01de B3F84830 ldrh r3, [r3, #72] 351 01e2 1A46 mov r2, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 11 82:user_src/soft_herewin.c **** { 352 .loc 1 82 50 353 01e4 364B ldr r3, .L30+8 354 01e6 5B6C ldr r3, [r3, #68] 82:user_src/soft_herewin.c **** { 355 .loc 1 82 40 356 01e8 0133 adds r3, r3, #1 357 01ea 1946 mov r1, r3 82:user_src/soft_herewin.c **** { 358 .loc 1 82 36 359 01ec BB68 ldr r3, [r7, #8] 360 01ee 0B44 add r3, r3, r1 361 01f0 1B78 ldrb r3, [r3] @ zero_extendqisi2 362 01f2 1946 mov r1, r3 82:user_src/soft_herewin.c **** { 363 .loc 1 82 93 364 01f4 324B ldr r3, .L30+8 365 01f6 5B6C ldr r3, [r3, #68] 82:user_src/soft_herewin.c **** { 366 .loc 1 82 83 367 01f8 0233 adds r3, r3, #2 368 01fa 1846 mov r0, r3 82:user_src/soft_herewin.c **** { 369 .loc 1 82 79 370 01fc BB68 ldr r3, [r7, #8] 371 01fe 0344 add r3, r3, r0 372 0200 1B78 ldrb r3, [r3] @ zero_extendqisi2 82:user_src/soft_herewin.c **** { 373 .loc 1 82 73 374 0202 1B02 lsls r3, r3, #8 82:user_src/soft_herewin.c **** { 375 .loc 1 82 67 376 0204 0B44 add r3, r3, r1 82:user_src/soft_herewin.c **** { 377 .loc 1 82 15 378 0206 9A42 cmp r2, r3 379 0208 07D1 bne .L21 84:user_src/soft_herewin.c **** } 380 .loc 1 84 86 381 020a 2D4B ldr r3, .L30+8 382 020c B3F84230 ldrh r3, [r3, #66] 84:user_src/soft_herewin.c **** } 383 .loc 1 84 17 384 0210 1A46 mov r2, r3 385 0212 2B49 ldr r1, .L30+8 386 0214 2B48 ldr r0, .L30+12 387 0216 FFF7FEFF bl memcpy 388 .L21: 86:user_src/soft_herewin.c **** } 389 .loc 1 86 13 390 021a 4C22 movs r2, #76 391 021c 0021 movs r1, #0 392 021e 2848 ldr r0, .L30+8 393 0220 FFF7FEFF bl memset 394 0224 B1E0 b .L17 395 .L18: 89:user_src/soft_herewin.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 12 396 .loc 1 89 25 397 0226 264B ldr r3, .L30+8 398 0228 93F84020 ldrb r2, [r3, #64] @ zero_extendqisi2 89:user_src/soft_herewin.c **** { 399 .loc 1 89 49 400 022c 244B ldr r3, .L30+8 401 022e 93F84130 ldrb r3, [r3, #65] @ zero_extendqisi2 89:user_src/soft_herewin.c **** { 402 .loc 1 89 16 403 0232 9A42 cmp r2, r3 404 0234 7AD1 bne .L22 89:user_src/soft_herewin.c **** { 405 .loc 1 89 75 discriminator 1 406 0236 224B ldr r3, .L30+8 407 0238 5B6C ldr r3, [r3, #68] 89:user_src/soft_herewin.c **** { 408 .loc 1 89 64 discriminator 1 409 023a 002B cmp r3, #0 410 023c 76DC bgt .L22 92:user_src/soft_herewin.c **** { 411 .loc 1 92 24 412 023e 204B ldr r3, .L30+8 413 0240 5B6C ldr r3, [r3, #68] 92:user_src/soft_herewin.c **** { 414 .loc 1 92 15 415 0242 B3F1FF3F cmp r3, #-1 416 0246 3FD1 bne .L23 94:user_src/soft_herewin.c **** can_info.crc -= can_info.herewin_buf[can_info.i - 1]; 417 .loc 1 94 54 418 0248 1D4B ldr r3, .L30+8 419 024a 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 420 024e 1A46 mov r2, r3 94:user_src/soft_herewin.c **** can_info.crc -= can_info.herewin_buf[can_info.i - 1]; 421 .loc 1 94 24 422 0250 1B4B ldr r3, .L30+8 423 0252 1344 add r3, r3, r2 94:user_src/soft_herewin.c **** can_info.crc -= can_info.herewin_buf[can_info.i - 1]; 424 .loc 1 94 58 425 0254 BA68 ldr r2, [r7, #8] 426 0256 0132 adds r2, r2, #1 427 0258 1278 ldrb r2, [r2] @ zero_extendqisi2 94:user_src/soft_herewin.c **** can_info.crc -= can_info.herewin_buf[can_info.i - 1]; 428 .loc 1 94 17 429 025a 1A70 strb r2, [r3] 95:user_src/soft_herewin.c **** //校验 430 .loc 1 95 30 431 025c 184B ldr r3, .L30+8 432 025e B3F84820 ldrh r2, [r3, #72] 95:user_src/soft_herewin.c **** //校验 433 .loc 1 95 62 434 0262 174B ldr r3, .L30+8 435 0264 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 95:user_src/soft_herewin.c **** //校验 436 .loc 1 95 65 437 0268 013B subs r3, r3, #1 95:user_src/soft_herewin.c **** //校验 438 .loc 1 95 53 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 13 439 026a 1549 ldr r1, .L30+8 440 026c CB5C ldrb r3, [r1, r3] @ zero_extendqisi2 441 026e 9BB2 uxth r3, r3 95:user_src/soft_herewin.c **** //校验 442 .loc 1 95 30 443 0270 D31A subs r3, r2, r3 444 0272 9AB2 uxth r2, r3 445 0274 124B ldr r3, .L30+8 446 0276 A3F84820 strh r2, [r3, #72] @ movhi 97:user_src/soft_herewin.c **** { 447 .loc 1 97 28 448 027a 114B ldr r3, .L30+8 449 027c B3F84830 ldrh r3, [r3, #72] 450 0280 1946 mov r1, r3 97:user_src/soft_herewin.c **** { 451 .loc 1 97 65 452 0282 0F4B ldr r3, .L30+8 453 0284 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 97:user_src/soft_herewin.c **** { 454 .loc 1 97 68 455 0288 013B subs r3, r3, #1 97:user_src/soft_herewin.c **** { 456 .loc 1 97 56 457 028a 0D4A ldr r2, .L30+8 458 028c D35C ldrb r3, [r2, r3] @ zero_extendqisi2 459 028e 1A46 mov r2, r3 97:user_src/soft_herewin.c **** { 460 .loc 1 97 110 461 0290 0B4B ldr r3, .L30+8 462 0292 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 463 0296 1846 mov r0, r3 97:user_src/soft_herewin.c **** { 464 .loc 1 97 101 465 0298 094B ldr r3, .L30+8 466 029a 1B5C ldrb r3, [r3, r0] @ zero_extendqisi2 97:user_src/soft_herewin.c **** { 467 .loc 1 97 79 468 029c 1B02 lsls r3, r3, #8 97:user_src/soft_herewin.c **** { 469 .loc 1 97 73 470 029e 1344 add r3, r3, r2 97:user_src/soft_herewin.c **** { 471 .loc 1 97 19 472 02a0 9942 cmp r1, r3 473 02a2 3DD1 bne .L24 99:user_src/soft_herewin.c **** } 474 .loc 1 99 90 475 02a4 064B ldr r3, .L30+8 476 02a6 B3F84230 ldrh r3, [r3, #66] 99:user_src/soft_herewin.c **** } 477 .loc 1 99 21 478 02aa 1A46 mov r2, r3 479 02ac 0449 ldr r1, .L30+8 480 02ae 0548 ldr r0, .L30+12 481 02b0 FFF7FEFF bl memcpy 482 02b4 34E0 b .L24 483 .L31: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 14 484 02b6 00BF .align 2 485 .L30: 486 02b8 00000000 .word Herewin_Link 487 02bc 00000000 .word herewin_info 488 02c0 00000000 .word can_info 489 02c4 03000000 .word herewin_info+3 490 .L23: 103:user_src/soft_herewin.c **** { 491 .loc 1 103 29 492 02c8 5D4B ldr r3, .L32 493 02ca 5B6C ldr r3, [r3, #68] 103:user_src/soft_herewin.c **** { 494 .loc 1 103 20 495 02cc 002B cmp r3, #0 496 02ce 27D1 bne .L24 105:user_src/soft_herewin.c **** //校验 497 .loc 1 105 54 498 02d0 5B4B ldr r3, .L32 499 02d2 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 500 02d6 1A46 mov r2, r3 105:user_src/soft_herewin.c **** //校验 501 .loc 1 105 24 502 02d8 594B ldr r3, .L32 503 02da 1344 add r3, r3, r2 105:user_src/soft_herewin.c **** //校验 504 .loc 1 105 58 505 02dc BA68 ldr r2, [r7, #8] 506 02de 0132 adds r2, r2, #1 507 02e0 1288 ldrh r2, [r2] @ unaligned 508 02e2 92B2 uxth r2, r2 105:user_src/soft_herewin.c **** //校验 509 .loc 1 105 17 510 02e4 1A80 strh r2, [r3] @ unaligned 107:user_src/soft_herewin.c **** { 511 .loc 1 107 28 512 02e6 564B ldr r3, .L32 513 02e8 B3F84830 ldrh r3, [r3, #72] 514 02ec 1946 mov r1, r3 107:user_src/soft_herewin.c **** { 515 .loc 1 107 65 516 02ee 544B ldr r3, .L32 517 02f0 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 518 02f4 1A46 mov r2, r3 107:user_src/soft_herewin.c **** { 519 .loc 1 107 56 520 02f6 524B ldr r3, .L32 521 02f8 9B5C ldrb r3, [r3, r2] @ zero_extendqisi2 522 02fa 1846 mov r0, r3 107:user_src/soft_herewin.c **** { 523 .loc 1 107 106 524 02fc 504B ldr r3, .L32 525 02fe 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 107:user_src/soft_herewin.c **** { 526 .loc 1 107 109 527 0302 0133 adds r3, r3, #1 107:user_src/soft_herewin.c **** { 528 .loc 1 107 97 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 15 529 0304 4E4A ldr r2, .L32 530 0306 D35C ldrb r3, [r2, r3] @ zero_extendqisi2 107:user_src/soft_herewin.c **** { 531 .loc 1 107 75 532 0308 1B02 lsls r3, r3, #8 107:user_src/soft_herewin.c **** { 533 .loc 1 107 69 534 030a 0344 add r3, r3, r0 107:user_src/soft_herewin.c **** { 535 .loc 1 107 19 536 030c 9942 cmp r1, r3 537 030e 07D1 bne .L24 109:user_src/soft_herewin.c **** } 538 .loc 1 109 90 539 0310 4B4B ldr r3, .L32 540 0312 B3F84230 ldrh r3, [r3, #66] 109:user_src/soft_herewin.c **** } 541 .loc 1 109 21 542 0316 1A46 mov r2, r3 543 0318 4949 ldr r1, .L32 544 031a 4A48 ldr r0, .L32+4 545 031c FFF7FEFF bl memcpy 546 .L24: 112:user_src/soft_herewin.c **** 547 .loc 1 112 13 548 0320 4C22 movs r2, #76 549 0322 0021 movs r1, #0 550 0324 4648 ldr r0, .L32 551 0326 FFF7FEFF bl memset 552 032a 2EE0 b .L17 553 .L22: 117:user_src/soft_herewin.c **** for(i = 0;i < 7;i++) 554 .loc 1 117 50 555 032c 444B ldr r3, .L32 556 032e 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 557 0332 1A46 mov r2, r3 117:user_src/soft_herewin.c **** for(i = 0;i < 7;i++) 558 .loc 1 117 20 559 0334 424B ldr r3, .L32 560 0336 D018 adds r0, r2, r3 117:user_src/soft_herewin.c **** for(i = 0;i < 7;i++) 561 .loc 1 117 54 562 0338 BB68 ldr r3, [r7, #8] 563 033a 0133 adds r3, r3, #1 117:user_src/soft_herewin.c **** for(i = 0;i < 7;i++) 564 .loc 1 117 13 565 033c 0722 movs r2, #7 566 033e 1946 mov r1, r3 567 0340 FFF7FEFF bl memcpy 118:user_src/soft_herewin.c **** { 568 .loc 1 118 19 569 0344 0023 movs r3, #0 570 0346 FB75 strb r3, [r7, #23] 118:user_src/soft_herewin.c **** { 571 .loc 1 118 13 572 0348 13E0 b .L25 573 .L26: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 16 120:user_src/soft_herewin.c **** } 574 .loc 1 120 30 discriminator 3 575 034a 3D4B ldr r3, .L32 576 034c B3F84820 ldrh r2, [r3, #72] 120:user_src/soft_herewin.c **** } 577 .loc 1 120 62 discriminator 3 578 0350 3B4B ldr r3, .L32 579 0352 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 580 0356 1946 mov r1, r3 120:user_src/soft_herewin.c **** } 581 .loc 1 120 65 discriminator 3 582 0358 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 583 035a 0B44 add r3, r3, r1 120:user_src/soft_herewin.c **** } 584 .loc 1 120 53 discriminator 3 585 035c 3849 ldr r1, .L32 586 035e CB5C ldrb r3, [r1, r3] @ zero_extendqisi2 587 0360 9BB2 uxth r3, r3 120:user_src/soft_herewin.c **** } 588 .loc 1 120 30 discriminator 3 589 0362 1344 add r3, r3, r2 590 0364 9AB2 uxth r2, r3 591 0366 364B ldr r3, .L32 592 0368 A3F84820 strh r2, [r3, #72] @ movhi 118:user_src/soft_herewin.c **** { 593 .loc 1 118 30 discriminator 3 594 036c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 595 036e 0133 adds r3, r3, #1 596 0370 FB75 strb r3, [r7, #23] 597 .L25: 118:user_src/soft_herewin.c **** { 598 .loc 1 118 13 discriminator 1 599 0372 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 600 0374 062B cmp r3, #6 601 0376 E8D9 bls .L26 122:user_src/soft_herewin.c **** } 602 .loc 1 122 24 603 0378 314B ldr r3, .L32 604 037a 93F84A30 ldrb r3, [r3, #74] @ zero_extendqisi2 605 037e 0733 adds r3, r3, #7 606 0380 DAB2 uxtb r2, r3 607 0382 2F4B ldr r3, .L32 608 0384 83F84A20 strb r2, [r3, #74] 124:user_src/soft_herewin.c **** //电池循环次数查询 609 .loc 1 124 9 610 0388 55E0 b .L13 611 .L17: 612 038a 54E0 b .L13 613 .L7: 614 038c BB68 ldr r3, [r7, #8] 615 038e 1B88 ldrh r3, [r3] @ unaligned 616 0390 9BB2 uxth r3, r3 127:user_src/soft_herewin.c **** break; 617 .loc 1 127 9 618 0392 2D4A ldr r2, .L32+8 619 0394 A2F83330 strh r3, [r2, #51] @ unaligned 128:user_src/soft_herewin.c **** //充电请求 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 17 620 .loc 1 128 9 621 0398 4DE0 b .L13 622 .L5: 623 039a BB68 ldr r3, [r7, #8] 624 039c 1B88 ldrh r3, [r3] @ unaligned 625 039e 9BB2 uxth r3, r3 131:user_src/soft_herewin.c **** memcpy(&herewin_info.re_ele,&data[2],2); 626 .loc 1 131 9 627 03a0 294A ldr r2, .L32+8 628 03a2 A2F83530 strh r3, [r2, #53] @ unaligned 132:user_src/soft_herewin.c **** memcpy(&herewin_info.max_vol,&data[4],2); 629 .loc 1 132 37 630 03a6 BB68 ldr r3, [r7, #8] 631 03a8 0233 adds r3, r3, #2 632 03aa 1B88 ldrh r3, [r3] @ unaligned 633 03ac 9BB2 uxth r3, r3 132:user_src/soft_herewin.c **** memcpy(&herewin_info.max_vol,&data[4],2); 634 .loc 1 132 9 635 03ae 264A ldr r2, .L32+8 636 03b0 A2F83730 strh r3, [r2, #55] @ unaligned 133:user_src/soft_herewin.c **** memcpy(&herewin_info.power_status,&data[6],2); 637 .loc 1 133 38 638 03b4 BB68 ldr r3, [r7, #8] 639 03b6 0433 adds r3, r3, #4 640 03b8 1B88 ldrh r3, [r3] @ unaligned 641 03ba 9BB2 uxth r3, r3 133:user_src/soft_herewin.c **** memcpy(&herewin_info.power_status,&data[6],2); 642 .loc 1 133 9 643 03bc 224A ldr r2, .L32+8 644 03be A2F83930 strh r3, [r2, #57] @ unaligned 134:user_src/soft_herewin.c **** break; 645 .loc 1 134 43 646 03c2 BB68 ldr r3, [r7, #8] 647 03c4 0633 adds r3, r3, #6 648 03c6 1B88 ldrh r3, [r3] @ unaligned 649 03c8 9BB2 uxth r3, r3 134:user_src/soft_herewin.c **** break; 650 .loc 1 134 9 651 03ca 1F4A ldr r2, .L32+8 652 03cc A2F83B30 strh r3, [r2, #59] @ unaligned 135:user_src/soft_herewin.c **** //告警信息 653 .loc 1 135 9 654 03d0 31E0 b .L13 655 .L6: 656 03d2 BB68 ldr r3, [r7, #8] 657 03d4 1B88 ldrh r3, [r3] @ unaligned 658 03d6 9BB2 uxth r3, r3 138:user_src/soft_herewin.c **** memcpy(&herewin_info.warn_info,&data[2],2); 659 .loc 1 138 9 660 03d8 1B4A ldr r2, .L32+8 661 03da A2F81F30 strh r3, [r2, #31] @ unaligned 139:user_src/soft_herewin.c **** break; 662 .loc 1 139 40 663 03de BB68 ldr r3, [r7, #8] 664 03e0 0233 adds r3, r3, #2 665 03e2 1B88 ldrh r3, [r3] @ unaligned 666 03e4 9BB2 uxth r3, r3 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 18 139:user_src/soft_herewin.c **** break; 667 .loc 1 139 9 668 03e6 184A ldr r2, .L32+8 669 03e8 A2F82130 strh r3, [r2, #33] @ unaligned 140:user_src/soft_herewin.c **** //电流 电压信息 670 .loc 1 140 9 671 03ec 23E0 b .L13 672 .L4: 673 03ee BB68 ldr r3, [r7, #8] 674 03f0 1B88 ldrh r3, [r3] @ unaligned 675 03f2 9BB2 uxth r3, r3 143:user_src/soft_herewin.c **** memcpy(&herewin_info.tolal_ele,&data[2],2); 676 .loc 1 143 9 677 03f4 144A ldr r2, .L32+8 678 03f6 A2F82330 strh r3, [r2, #35] @ unaligned 144:user_src/soft_herewin.c **** memcpy(&herewin_info.SOC_info,&data[4],1); 679 .loc 1 144 40 680 03fa BB68 ldr r3, [r7, #8] 681 03fc 0233 adds r3, r3, #2 682 03fe 1B88 ldrh r3, [r3] @ unaligned 683 0400 9BB2 uxth r3, r3 144:user_src/soft_herewin.c **** memcpy(&herewin_info.SOC_info,&data[4],1); 684 .loc 1 144 9 685 0402 114A ldr r2, .L32+8 686 0404 A2F82530 strh r3, [r2, #37] @ unaligned 145:user_src/soft_herewin.c **** memcpy(&herewin_info.SOH_info,&data[5],1); 687 .loc 1 145 39 688 0408 BB68 ldr r3, [r7, #8] 689 040a 0433 adds r3, r3, #4 690 040c 1A78 ldrb r2, [r3] @ zero_extendqisi2 145:user_src/soft_herewin.c **** memcpy(&herewin_info.SOH_info,&data[5],1); 691 .loc 1 145 9 692 040e 0E4B ldr r3, .L32+8 693 0410 83F82720 strb r2, [r3, #39] 146:user_src/soft_herewin.c **** memcpy(&herewin_info.SOP_info,&data[6],2); 694 .loc 1 146 39 695 0414 BB68 ldr r3, [r7, #8] 696 0416 0533 adds r3, r3, #5 697 0418 1A78 ldrb r2, [r3] @ zero_extendqisi2 146:user_src/soft_herewin.c **** memcpy(&herewin_info.SOP_info,&data[6],2); 698 .loc 1 146 9 699 041a 0B4B ldr r3, .L32+8 700 041c 83F82820 strb r2, [r3, #40] 147:user_src/soft_herewin.c **** break; 701 .loc 1 147 39 702 0420 BB68 ldr r3, [r7, #8] 703 0422 0633 adds r3, r3, #6 704 0424 1B88 ldrh r3, [r3] @ unaligned 705 0426 9BB2 uxth r3, r3 147:user_src/soft_herewin.c **** break; 706 .loc 1 147 9 707 0428 074A ldr r2, .L32+8 708 042a A2F82930 strh r3, [r2, #41] @ unaligned 148:user_src/soft_herewin.c **** default: 709 .loc 1 148 9 710 042e 02E0 b .L13 711 .L27: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 19 712 .loc 1 150 9 713 0430 00BF nop 714 0432 00E0 b .L29 715 .L28: 44:user_src/soft_herewin.c **** 716 .loc 1 44 9 717 0434 00BF nop 718 .L13: 719 .L29: 151:user_src/soft_herewin.c **** } 152:user_src/soft_herewin.c **** } 720 .loc 1 152 1 721 0436 00BF nop 722 0438 1837 adds r7, r7, #24 723 .LCFI3: 724 .cfi_def_cfa_offset 8 725 043a BD46 mov sp, r7 726 .LCFI4: 727 .cfi_def_cfa_register 13 728 @ sp needed 729 043c 80BD pop {r7, pc} 730 .L33: 731 043e 00BF .align 2 732 .L32: 733 0440 00000000 .word can_info 734 0444 03000000 .word herewin_info+3 735 0448 00000000 .word herewin_info 736 .cfi_endproc 737 .LFE130: 739 .section .rodata 740 .align 2 741 .LC0: 742 0000 00000001 .ascii "\000\000\000\001\000\000\000\001" 742 00000001 743 .section .text.send_msg_to_herewin,"ax",%progbits 744 .align 1 745 .global send_msg_to_herewin 746 .syntax unified 747 .thumb 748 .thumb_func 750 send_msg_to_herewin: 751 .LFB131: 153:user_src/soft_herewin.c **** 154:user_src/soft_herewin.c **** 155:user_src/soft_herewin.c **** /** 156:user_src/soft_herewin.c **** * @brief 给海盈发送数据信息 157:user_src/soft_herewin.c **** */ 158:user_src/soft_herewin.c **** //海盈电池收不到心跳包20分后停止主动发送数据 2000ms周期给海盈电池发送 159:user_src/soft_herewin.c **** void send_msg_to_herewin(void) 160:user_src/soft_herewin.c **** { 752 .loc 1 160 1 753 .cfi_startproc 754 @ args = 0, pretend = 0, frame = 24 755 @ frame_needed = 1, uses_anonymous_args = 0 756 0000 80B5 push {r7, lr} 757 .LCFI5: 758 .cfi_def_cfa_offset 8 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 20 759 .cfi_offset 7, -8 760 .cfi_offset 14, -4 761 0002 86B0 sub sp, sp, #24 762 .LCFI6: 763 .cfi_def_cfa_offset 32 764 0004 00AF add r7, sp, #0 765 .LCFI7: 766 .cfi_def_cfa_register 7 161:user_src/soft_herewin.c **** static uint32_t herewin_heart_time = 0; 162:user_src/soft_herewin.c **** static uint32_t herewin_vol_time = 0; 163:user_src/soft_herewin.c **** 164:user_src/soft_herewin.c **** static uint8_t heart_num_count = 0; 165:user_src/soft_herewin.c **** 166:user_src/soft_herewin.c **** if(Herewin_Link.connect_status == COMP_NORMAL) 767 .loc 1 166 20 768 0006 374B ldr r3, .L39 769 0008 1B7A ldrb r3, [r3, #8] @ zero_extendqisi2 770 .loc 1 166 7 771 000a 012B cmp r3, #1 772 000c 42D1 bne .L35 167:user_src/soft_herewin.c **** { 168:user_src/soft_herewin.c **** //2000ms发送心跳包 169:user_src/soft_herewin.c **** if(HAL_GetTick() - herewin_heart_time > 2000) 773 .loc 1 169 12 774 000e FFF7FEFF bl HAL_GetTick 775 0012 0246 mov r2, r0 776 .loc 1 169 26 777 0014 344B ldr r3, .L39+4 778 0016 1B68 ldr r3, [r3] 779 0018 D31A subs r3, r2, r3 780 .loc 1 169 11 781 001a B3F5FA6F cmp r3, #2000 782 001e 12D9 bls .L36 783 .LBB2: 170:user_src/soft_herewin.c **** { 171:user_src/soft_herewin.c **** uint8_t heart_buf[8] = {0x00,0x00,0x00,0x01, 784 .loc 1 171 21 785 0020 324A ldr r2, .L39+8 786 0022 07F11003 add r3, r7, #16 787 0026 92E80300 ldm r2, {r0, r1} 788 002a 83E80300 stm r3, {r0, r1} 172:user_src/soft_herewin.c **** 0x00,0x00,0x00,0x01}; 173:user_src/soft_herewin.c **** can_send_msg_normal(heart_buf, 8, HEREWIN_HEART_ID); 789 .loc 1 173 13 790 002e 07F11003 add r3, r7, #16 791 0032 2F4A ldr r2, .L39+12 792 0034 0821 movs r1, #8 793 0036 1846 mov r0, r3 794 0038 FFF7FEFF bl can_send_msg_normal 174:user_src/soft_herewin.c **** 175:user_src/soft_herewin.c **** herewin_heart_time = HAL_GetTick(); 795 .loc 1 175 34 796 003c FFF7FEFF bl HAL_GetTick 797 0040 0346 mov r3, r0 798 .loc 1 175 32 799 0042 294A ldr r2, .L39+4 800 0044 1360 str r3, [r2] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 21 801 .L36: 802 .LBE2: 176:user_src/soft_herewin.c **** } 177:user_src/soft_herewin.c **** //1000ms发送单体电压请求 和单体温度请求 发送5次电芯个数 178:user_src/soft_herewin.c **** if(HAL_GetTick() - herewin_vol_time > 1000) 803 .loc 1 178 12 804 0046 FFF7FEFF bl HAL_GetTick 805 004a 0246 mov r2, r0 806 .loc 1 178 26 807 004c 294B ldr r3, .L39+16 808 004e 1B68 ldr r3, [r3] 809 0050 D31A subs r3, r2, r3 810 .loc 1 178 11 811 0052 B3F57A7F cmp r3, #1000 812 0056 41D9 bls .L38 813 .LBB3: 179:user_src/soft_herewin.c **** { 180:user_src/soft_herewin.c **** uint8_t herewin_num = 8; 814 .loc 1 180 21 815 0058 0823 movs r3, #8 816 005a FB73 strb r3, [r7, #15] 181:user_src/soft_herewin.c **** can_send_msg_normal(0, 0, HEREWIN_VOL_ID); 817 .loc 1 181 13 818 005c 264A ldr r2, .L39+20 819 005e 0021 movs r1, #0 820 0060 0020 movs r0, #0 821 0062 FFF7FEFF bl can_send_msg_normal 182:user_src/soft_herewin.c **** can_send_msg_normal(0, 0, HEREWIN_TEM_ID); 822 .loc 1 182 13 823 0066 254A ldr r2, .L39+24 824 0068 0021 movs r1, #0 825 006a 0020 movs r0, #0 826 006c FFF7FEFF bl can_send_msg_normal 183:user_src/soft_herewin.c **** //请求5次电芯个数 5次循环次数 184:user_src/soft_herewin.c **** 185:user_src/soft_herewin.c **** can_send_msg_normal(&herewin_num, 1, HEREWIN_SEARCH_ID); 827 .loc 1 185 13 828 0070 07F10F03 add r3, r7, #15 829 0074 224A ldr r2, .L39+28 830 0076 0121 movs r1, #1 831 0078 1846 mov r0, r3 832 007a FFF7FEFF bl can_send_msg_normal 186:user_src/soft_herewin.c **** can_send_msg_normal(0, 0, HEREWIN_CIRCULATION_ID); 833 .loc 1 186 13 834 007e 214A ldr r2, .L39+32 835 0080 0021 movs r1, #0 836 0082 0020 movs r0, #0 837 0084 FFF7FEFF bl can_send_msg_normal 187:user_src/soft_herewin.c **** herewin_vol_time = HAL_GetTick(); 838 .loc 1 187 32 839 0088 FFF7FEFF bl HAL_GetTick 840 008c 0346 mov r3, r0 841 .loc 1 187 30 842 008e 194A ldr r2, .L39+16 843 0090 1360 str r3, [r2] 844 .LBE3: 188:user_src/soft_herewin.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 22 189:user_src/soft_herewin.c **** } 190:user_src/soft_herewin.c **** 191:user_src/soft_herewin.c **** } 192:user_src/soft_herewin.c **** else 193:user_src/soft_herewin.c **** { 194:user_src/soft_herewin.c **** //上电时先发送5次心跳包 防止电池休眠 195:user_src/soft_herewin.c **** if(HAL_GetTick() - herewin_heart_time > 2000 && heart_num_count > 0) 196:user_src/soft_herewin.c **** { 197:user_src/soft_herewin.c **** uint8_t heart_buf[8] = {0x00,0x00,0x00,0x01, 198:user_src/soft_herewin.c **** 0x00,0x00,0x00,0x01}; 199:user_src/soft_herewin.c **** can_send_msg_normal(heart_buf, 8, HEREWIN_HEART_ID); 200:user_src/soft_herewin.c **** 201:user_src/soft_herewin.c **** herewin_heart_time = HAL_GetTick(); 202:user_src/soft_herewin.c **** 203:user_src/soft_herewin.c **** heart_num_count--; 204:user_src/soft_herewin.c **** } 205:user_src/soft_herewin.c **** } 206:user_src/soft_herewin.c **** 207:user_src/soft_herewin.c **** } 845 .loc 1 207 1 846 0092 23E0 b .L38 847 .L35: 195:user_src/soft_herewin.c **** { 848 .loc 1 195 12 849 0094 FFF7FEFF bl HAL_GetTick 850 0098 0246 mov r2, r0 195:user_src/soft_herewin.c **** { 851 .loc 1 195 26 852 009a 134B ldr r3, .L39+4 853 009c 1B68 ldr r3, [r3] 854 009e D31A subs r3, r2, r3 195:user_src/soft_herewin.c **** { 855 .loc 1 195 11 856 00a0 B3F5FA6F cmp r3, #2000 857 00a4 1AD9 bls .L38 195:user_src/soft_herewin.c **** { 858 .loc 1 195 74 discriminator 1 859 00a6 184B ldr r3, .L39+36 860 00a8 1B78 ldrb r3, [r3] @ zero_extendqisi2 195:user_src/soft_herewin.c **** { 861 .loc 1 195 55 discriminator 1 862 00aa 002B cmp r3, #0 863 00ac 16D0 beq .L38 864 .LBB4: 197:user_src/soft_herewin.c **** 0x00,0x00,0x00,0x01}; 865 .loc 1 197 21 866 00ae 0F4A ldr r2, .L39+8 867 00b0 3B1D adds r3, r7, #4 868 00b2 92E80300 ldm r2, {r0, r1} 869 00b6 83E80300 stm r3, {r0, r1} 199:user_src/soft_herewin.c **** 870 .loc 1 199 13 871 00ba 3B1D adds r3, r7, #4 872 00bc 0C4A ldr r2, .L39+12 873 00be 0821 movs r1, #8 874 00c0 1846 mov r0, r3 875 00c2 FFF7FEFF bl can_send_msg_normal ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 23 201:user_src/soft_herewin.c **** 876 .loc 1 201 34 877 00c6 FFF7FEFF bl HAL_GetTick 878 00ca 0346 mov r3, r0 201:user_src/soft_herewin.c **** 879 .loc 1 201 32 880 00cc 064A ldr r2, .L39+4 881 00ce 1360 str r3, [r2] 203:user_src/soft_herewin.c **** } 882 .loc 1 203 28 883 00d0 0D4B ldr r3, .L39+36 884 00d2 1B78 ldrb r3, [r3] @ zero_extendqisi2 885 00d4 013B subs r3, r3, #1 886 00d6 DAB2 uxtb r2, r3 887 00d8 0B4B ldr r3, .L39+36 888 00da 1A70 strb r2, [r3] 889 .L38: 890 .LBE4: 891 .loc 1 207 1 892 00dc 00BF nop 893 00de 1837 adds r7, r7, #24 894 .LCFI8: 895 .cfi_def_cfa_offset 8 896 00e0 BD46 mov sp, r7 897 .LCFI9: 898 .cfi_def_cfa_register 13 899 @ sp needed 900 00e2 80BD pop {r7, pc} 901 .L40: 902 .align 2 903 .L39: 904 00e4 00000000 .word Herewin_Link 905 00e8 00000000 .word herewin_heart_time.2 906 00ec 00000000 .word .LC0 907 00f0 F0004300 .word 4391152 908 00f4 00000000 .word herewin_vol_time.1 909 00f8 F0008400 .word 8650992 910 00fc F0008200 .word 8519920 911 0100 F0008000 .word 8388848 912 0104 F0008600 .word 8782064 913 0108 00000000 .word heart_num_count.0 914 .cfi_endproc 915 .LFE131: 917 .section .bss.herewin_heart_time.2,"aw",%nobits 918 .align 2 921 herewin_heart_time.2: 922 0000 00000000 .space 4 923 .section .bss.herewin_vol_time.1,"aw",%nobits 924 .align 2 927 herewin_vol_time.1: 928 0000 00000000 .space 4 929 .section .bss.heart_num_count.0,"aw",%nobits 932 heart_num_count.0: 933 0000 00 .space 1 934 .text 935 .Letext0: 936 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 24 937 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 938 .file 4 "user_inc/common.h" 939 .file 5 "user_inc/soft_herewin.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s page 25 DEFINED SYMBOLS *ABS*:00000000 soft_herewin.c C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:24 .bss.herewin_info:00000000 herewin_info C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:21 .bss.herewin_info:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:31 .bss.Herewin_Link:00000000 Herewin_Link C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:28 .bss.Herewin_Link:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:38 .bss.can_info:00000000 can_info C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:35 .bss.can_info:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:41 .text.HerewinCanRecvHookFunction:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:47 .text.HerewinCanRecvHookFunction:00000000 HerewinCanRecvHookFunction C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:112 .text.HerewinCanRecvHookFunction:0000005c $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:119 .text.HerewinCanRecvHookFunction:00000078 $t C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:486 .text.HerewinCanRecvHookFunction:000002b8 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:492 .text.HerewinCanRecvHookFunction:000002c8 $t C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:733 .text.HerewinCanRecvHookFunction:00000440 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:740 .rodata:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:744 .text.send_msg_to_herewin:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:750 .text.send_msg_to_herewin:00000000 send_msg_to_herewin C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:904 .text.send_msg_to_herewin:000000e4 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:921 .bss.herewin_heart_time.2:00000000 herewin_heart_time.2 C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:927 .bss.herewin_vol_time.1:00000000 herewin_vol_time.1 C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:932 .bss.heart_num_count.0:00000000 heart_num_count.0 C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:918 .bss.herewin_heart_time.2:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:924 .bss.herewin_vol_time.1:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccrAnrjG.s:933 .bss.heart_num_count.0:00000000 $d UNDEFINED SYMBOLS HAL_GetTick memset memcpy can_send_msg_normal