ARM GAS /tmp/cc16Zqrx.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, 1 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "ADBMS_Abstraction.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Core/Src/ADBMS_Abstraction.c" 20 .section .text.amsConfig,"ax",%progbits 21 .align 1 22 .global amsConfig 23 .syntax unified 24 .thumb 25 .thumb_func 27 amsConfig: 28 .LFB125: 1:Core/Src/ADBMS_Abstraction.c **** /* 2:Core/Src/ADBMS_Abstraction.c **** * ADBMS_Abstraction.c 3:Core/Src/ADBMS_Abstraction.c **** * 4:Core/Src/ADBMS_Abstraction.c **** * Created on: 14.07.2022 5:Core/Src/ADBMS_Abstraction.c **** * Author: max 6:Core/Src/ADBMS_Abstraction.c **** */ 7:Core/Src/ADBMS_Abstraction.c **** 8:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_Abstraction.h" 9:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_CMD_MAKROS.h" 10:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_LL_Driver.h" 11:Core/Src/ADBMS_Abstraction.c **** #include "ADBMS_I2C.h" 12:Core/Src/ADBMS_Abstraction.c **** #include 13:Core/Src/ADBMS_Abstraction.c **** 14:Core/Src/ADBMS_Abstraction.c **** uint8 numberofcells; 15:Core/Src/ADBMS_Abstraction.c **** uint8 numberofauxchannels; 16:Core/Src/ADBMS_Abstraction.c **** 17:Core/Src/ADBMS_Abstraction.c **** #define CHECK_RETURN(x) \ 18:Core/Src/ADBMS_Abstraction.c **** { \ 19:Core/Src/ADBMS_Abstraction.c **** uint8 status = x; \ 20:Core/Src/ADBMS_Abstraction.c **** if (status != 0) \ 21:Core/Src/ADBMS_Abstraction.c **** return status; \ 22:Core/Src/ADBMS_Abstraction.c **** } 23:Core/Src/ADBMS_Abstraction.c **** 24:Core/Src/ADBMS_Abstraction.c **** uint8 amsReset() { 25:Core/Src/ADBMS_Abstraction.c **** amsWakeUp(); 26:Core/Src/ADBMS_Abstraction.c **** readCMD(SRST, NULL, 0); 27:Core/Src/ADBMS_Abstraction.c **** mcuDelay(10); 28:Core/Src/ADBMS_Abstraction.c **** amsWakeUp(); 29:Core/Src/ADBMS_Abstraction.c **** amsStopBalancing(); 30:Core/Src/ADBMS_Abstraction.c **** amsConfigOverUnderVoltage(DEFAULT_OV, DEFAULT_UV); ARM GAS /tmp/cc16Zqrx.s page 2 31:Core/Src/ADBMS_Abstraction.c **** 32:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; 33:Core/Src/ADBMS_Abstraction.c **** 34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLRFLAG, buffer, 6)); //clear flags, 35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags 36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas 37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement 38:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 39:Core/Src/ADBMS_Abstraction.c **** 40:Core/Src/ADBMS_Abstraction.c **** return 0; 41:Core/Src/ADBMS_Abstraction.c **** } 42:Core/Src/ADBMS_Abstraction.c **** 43:Core/Src/ADBMS_Abstraction.c **** uint8 initAMS(SPI_HandleTypeDef* hspi, uint8 numofcells, uint8 numofaux) { 44:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi); 45:Core/Src/ADBMS_Abstraction.c **** numberofcells = numofcells; 46:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux; 47:Core/Src/ADBMS_Abstraction.c **** 48:Core/Src/ADBMS_Abstraction.c **** return amsReset(); 49:Core/Src/ADBMS_Abstraction.c **** } 50:Core/Src/ADBMS_Abstraction.c **** 51:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfig() { 29 .loc 1 51 19 view -0 30 .cfi_startproc 31 @ args = 0, pretend = 0, frame = 8 32 @ frame_needed = 0, uses_anonymous_args = 0 33 0000 00B5 push {lr} 34 .cfi_def_cfa_offset 4 35 .cfi_offset 14, -4 36 0002 83B0 sub sp, sp, #12 37 .cfi_def_cfa_offset 16 52:Core/Src/ADBMS_Abstraction.c **** uint8 buf[6] = {}; 38 .loc 1 52 3 view .LVU1 39 .loc 1 52 9 is_stmt 0 view .LVU2 40 0004 0023 movs r3, #0 41 0006 0093 str r3, [sp] 42 0008 ADF80430 strh r3, [sp, #4] @ movhi 43 .LBB2: 53:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGA, buf, CFG_GROUP_A_SIZE)); 44 .loc 1 53 3 is_stmt 1 view .LVU3 45 000c 0622 movs r2, #6 46 000e 6946 mov r1, sp 47 0010 0220 movs r0, #2 48 0012 FFF7FEFF bl readCMD 49 .LVL0: 50 .loc 1 53 3 discriminator 1 view .LVU4 51 0016 10B1 cbz r0, .L4 52 .L1: 53 .LBE2: 54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000; 55:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCFGA, buf, CFG_GROUP_A_SIZE)) 56:Core/Src/ADBMS_Abstraction.c **** } 54 .loc 1 56 1 is_stmt 0 view .LVU5 55 0018 03B0 add sp, sp, #12 56 .cfi_remember_state 57 .cfi_def_cfa_offset 4 58 @ sp needed 59 001a 5DF804FB ldr pc, [sp], #4 ARM GAS /tmp/cc16Zqrx.s page 3 60 .L4: 61 .cfi_restore_state 53:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGA, buf, CFG_GROUP_A_SIZE)); 62 .loc 1 53 55 is_stmt 1 discriminator 2 view .LVU6 54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000; 63 .loc 1 54 3 view .LVU7 54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000; 64 .loc 1 54 15 is_stmt 0 view .LVU8 65 001e 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 54:Core/Src/ADBMS_Abstraction.c **** buf[3] = buf[3] | 0b00011000; 66 .loc 1 54 10 view .LVU9 67 0022 43F01803 orr r3, r3, #24 68 0026 8DF80330 strb r3, [sp, #3] 69 .LBB3: 55:Core/Src/ADBMS_Abstraction.c **** } 70 .loc 1 55 3 is_stmt 1 view .LVU10 71 002a 0622 movs r2, #6 72 002c 6946 mov r1, sp 73 002e 0120 movs r0, #1 74 0030 FFF7FEFF bl writeCMD 75 .LVL1: 55:Core/Src/ADBMS_Abstraction.c **** } 76 .loc 1 55 3 discriminator 1 view .LVU11 77 0034 F0E7 b .L1 78 .LBE3: 79 .cfi_endproc 80 .LFE125: 82 .section .text.amsWakeUp,"ax",%progbits 83 .align 1 84 .global amsWakeUp 85 .syntax unified 86 .thumb 87 .thumb_func 89 amsWakeUp: 90 .LFB126: 57:Core/Src/ADBMS_Abstraction.c **** 58:Core/Src/ADBMS_Abstraction.c **** uint8 amsWakeUp() { 91 .loc 1 58 19 view -0 92 .cfi_startproc 93 @ args = 0, pretend = 0, frame = 8 94 @ frame_needed = 0, uses_anonymous_args = 0 95 0000 00B5 push {lr} 96 .cfi_def_cfa_offset 4 97 .cfi_offset 14, -4 98 0002 83B0 sub sp, sp, #12 99 .cfi_def_cfa_offset 16 59:Core/Src/ADBMS_Abstraction.c **** uint8 buf[6]; 100 .loc 1 59 3 view .LVU13 60:Core/Src/ADBMS_Abstraction.c **** return readCMD(RDCFGA, buf, 6); 101 .loc 1 60 3 view .LVU14 102 .loc 1 60 10 is_stmt 0 view .LVU15 103 0004 0622 movs r2, #6 104 0006 6946 mov r1, sp 105 0008 0220 movs r0, #2 106 000a FFF7FEFF bl readCMD 107 .LVL2: 61:Core/Src/ADBMS_Abstraction.c **** } ARM GAS /tmp/cc16Zqrx.s page 4 108 .loc 1 61 1 view .LVU16 109 000e 03B0 add sp, sp, #12 110 .cfi_def_cfa_offset 4 111 @ sp needed 112 0010 5DF804FB ldr pc, [sp], #4 113 .cfi_endproc 114 .LFE126: 116 .section .text.amsConfigCellMeasurement,"ax",%progbits 117 .align 1 118 .global amsConfigCellMeasurement 119 .syntax unified 120 .thumb 121 .thumb_func 123 amsConfigCellMeasurement: 124 .LVL3: 125 .LFB128: 62:Core/Src/ADBMS_Abstraction.c **** 63:Core/Src/ADBMS_Abstraction.c **** uint8 amsCellMeasurement(Cell_Module* module) { 64:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped 65:Core/Src/ADBMS_Abstraction.c **** #warning check for OW conditions: ADSV | ADSV_OW_0 / ADSV_OW_1 66:Core/Src/ADBMS_Abstraction.c **** return amsReadCellVoltages(module); 67:Core/Src/ADBMS_Abstraction.c **** } 68:Core/Src/ADBMS_Abstraction.c **** 69:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigCellMeasurement(uint8 numberofChannels) { 126 .loc 1 69 56 is_stmt 1 view -0 127 .cfi_startproc 128 @ args = 0, pretend = 0, frame = 0 129 @ frame_needed = 0, uses_anonymous_args = 0 130 @ link register save eliminated. 70:Core/Src/ADBMS_Abstraction.c **** numberofcells = numberofChannels; 131 .loc 1 70 3 view .LVU18 132 .loc 1 70 17 is_stmt 0 view .LVU19 133 0000 014B ldr r3, .L8 134 0002 1870 strb r0, [r3] 71:Core/Src/ADBMS_Abstraction.c **** return 0; 135 .loc 1 71 3 is_stmt 1 view .LVU20 72:Core/Src/ADBMS_Abstraction.c **** } 136 .loc 1 72 1 is_stmt 0 view .LVU21 137 0004 0020 movs r0, #0 138 .LVL4: 139 .loc 1 72 1 view .LVU22 140 0006 7047 bx lr 141 .L9: 142 .align 2 143 .L8: 144 0008 00000000 .word numberofcells 145 .cfi_endproc 146 .LFE128: 148 .global __aeabi_i2d 149 .global __aeabi_dmul 150 .global __aeabi_dadd 151 .global __aeabi_d2iz 152 .global __aeabi_d2uiz 153 .section .text.amsAuxAndStatusMeasurement,"ax",%progbits 154 .align 1 155 .global amsAuxAndStatusMeasurement 156 .syntax unified ARM GAS /tmp/cc16Zqrx.s page 5 157 .thumb 158 .thumb_func 160 amsAuxAndStatusMeasurement: 161 .LVL5: 162 .LFB129: 73:Core/Src/ADBMS_Abstraction.c **** 74:Core/Src/ADBMS_Abstraction.c **** uint8 amsAuxAndStatusMeasurement(Cell_Module* module) { 163 .loc 1 74 55 is_stmt 1 view -0 164 .cfi_startproc 165 @ args = 0, pretend = 0, frame = 16 166 @ frame_needed = 0, uses_anonymous_args = 0 167 .loc 1 74 55 is_stmt 0 view .LVU24 168 0000 10B5 push {r4, lr} 169 .cfi_def_cfa_offset 8 170 .cfi_offset 4, -8 171 .cfi_offset 14, -4 172 0002 84B0 sub sp, sp, #16 173 .cfi_def_cfa_offset 24 174 0004 0446 mov r4, r0 75:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuf[AUX_GROUP_A_SIZE] = {}; 175 .loc 1 75 3 is_stmt 1 view .LVU25 176 .loc 1 75 9 is_stmt 0 view .LVU26 177 0006 0023 movs r3, #0 178 0008 0293 str r3, [sp, #8] 179 000a ADF80C30 strh r3, [sp, #12] @ movhi 180 .LBB4: 76:Core/Src/ADBMS_Abstraction.c **** 77:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATC, rxbuf, STATUS_GROUP_C_SIZE)); 181 .loc 1 77 3 is_stmt 1 view .LVU27 182 000e 0622 movs r2, #6 183 0010 02A9 add r1, sp, #8 184 0012 3220 movs r0, #50 185 .LVL6: 186 .loc 1 77 3 is_stmt 0 view .LVU28 187 0014 FFF7FEFF bl readCMD 188 .LVL7: 189 .loc 1 77 3 is_stmt 1 discriminator 1 view .LVU29 190 0018 08B1 cbz r0, .L13 191 .L11: 192 .LBE4: 78:Core/Src/ADBMS_Abstraction.c **** 79:Core/Src/ADBMS_Abstraction.c **** module->status.CS_FLT = rxbuf[0] | (rxbuf[1] << 8); 80:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8); 81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01; 82:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01; 83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01; 84:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01; 85:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01; 86:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01; 87:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01; 88:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01; 89:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01; 90:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01; 91:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01; 92:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01; 93:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01; 94:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01; ARM GAS /tmp/cc16Zqrx.s page 6 95:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01; 96:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01; 97:Core/Src/ADBMS_Abstraction.c **** 98:Core/Src/ADBMS_Abstraction.c **** if (pollCMD(PLAUX) == 0x0) { //TODO: check for SPI fault 99:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready 100:Core/Src/ADBMS_Abstraction.c **** } 101:Core/Src/ADBMS_Abstraction.c **** 102:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXA, rxbuf, AUX_GROUP_A_SIZE)); 103:Core/Src/ADBMS_Abstraction.c **** 104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[0] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8)); 105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 106:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 107:Core/Src/ADBMS_Abstraction.c **** 108:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXB, rxbuf, AUX_GROUP_A_SIZE)); 109:Core/Src/ADBMS_Abstraction.c **** 110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[3] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8)); 111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 112:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 113:Core/Src/ADBMS_Abstraction.c **** 114:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXC, rxbuf, AUX_GROUP_A_SIZE)); 115:Core/Src/ADBMS_Abstraction.c **** 116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[6] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8)); 117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 118:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 119:Core/Src/ADBMS_Abstraction.c **** 120:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDAUXD, rxbuf, AUX_GROUP_A_SIZE)); 121:Core/Src/ADBMS_Abstraction.c **** 122:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[9] = mV_from_ADBMS6830(rxbuf[0] | (rxbuf[1] << 8)); 123:Core/Src/ADBMS_Abstraction.c **** 124:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuffer[STATUS_GROUP_A_SIZE]; 125:Core/Src/ADBMS_Abstraction.c **** 126:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATA, rxbuffer, STATUS_GROUP_A_SIZE)); 127:Core/Src/ADBMS_Abstraction.c **** 128:Core/Src/ADBMS_Abstraction.c **** module->internalDieTemp = rxbuffer[2] | (rxbuffer[3] << 8); 129:Core/Src/ADBMS_Abstraction.c **** 130:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATB, rxbuffer, STATUS_GROUP_B_SIZE)); 131:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 132:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 133:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 134:Core/Src/ADBMS_Abstraction.c **** 135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement for next cycle 136:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 137:Core/Src/ADBMS_Abstraction.c **** 138:Core/Src/ADBMS_Abstraction.c **** return 0; 139:Core/Src/ADBMS_Abstraction.c **** } 193 .loc 1 139 1 is_stmt 0 view .LVU30 194 001a 04B0 add sp, sp, #16 195 .cfi_remember_state 196 .cfi_def_cfa_offset 8 197 @ sp needed 198 001c 10BD pop {r4, pc} 199 .LVL8: 200 .L13: 201 .cfi_restore_state 77:Core/Src/ADBMS_Abstraction.c **** 202 .loc 1 77 61 is_stmt 1 discriminator 2 view .LVU31 79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8); ARM GAS /tmp/cc16Zqrx.s page 7 203 .loc 1 79 3 view .LVU32 79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8); 204 .loc 1 79 32 is_stmt 0 view .LVU33 205 001e 9DF80830 ldrb r3, [sp, #8] @ zero_extendqisi2 79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8); 206 .loc 1 79 44 view .LVU34 207 0022 9DF80920 ldrb r2, [sp, #9] @ zero_extendqisi2 79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8); 208 .loc 1 79 36 view .LVU35 209 0026 43EA0223 orr r3, r3, r2, lsl #8 79:Core/Src/ADBMS_Abstraction.c **** module->status.CCTS = rxbuf[2] | (rxbuf[3] << 8); 210 .loc 1 79 25 view .LVU36 211 002a A386 strh r3, [r4, #52] @ movhi 80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01; 212 .loc 1 80 3 is_stmt 1 view .LVU37 80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01; 213 .loc 1 80 32 is_stmt 0 view .LVU38 214 002c 9DF80A30 ldrb r3, [sp, #10] @ zero_extendqisi2 80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01; 215 .loc 1 80 44 view .LVU39 216 0030 9DF80B20 ldrb r2, [sp, #11] @ zero_extendqisi2 80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01; 217 .loc 1 80 36 view .LVU40 218 0034 43EA0223 orr r3, r3, r2, lsl #8 80:Core/Src/ADBMS_Abstraction.c **** module->status.VA_OV = (rxbuf[4] >> 7) & 0x01; 219 .loc 1 80 25 view .LVU41 220 0038 E28E ldrh r2, [r4, #54] 221 003a 63F3CF02 bfi r2, r3, #3, #13 222 003e E286 strh r2, [r4, #54] @ movhi 81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01; 223 .loc 1 81 3 is_stmt 1 view .LVU42 81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01; 224 .loc 1 81 33 is_stmt 0 view .LVU43 225 0040 9DF80C30 ldrb r3, [sp, #12] @ zero_extendqisi2 81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01; 226 .loc 1 81 43 view .LVU44 227 0044 D909 lsrs r1, r3, #7 81:Core/Src/ADBMS_Abstraction.c **** module->status.VA_UV = (rxbuf[4] >> 6) & 0x01; 228 .loc 1 81 25 view .LVU45 229 0046 94F83820 ldrb r2, [r4, #56] @ zero_extendqisi2 230 004a 61F30002 bfi r2, r1, #0, #1 231 004e 84F83820 strb r2, [r4, #56] 82:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01; 232 .loc 1 82 3 is_stmt 1 view .LVU46 82:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01; 233 .loc 1 82 43 is_stmt 0 view .LVU47 234 0052 C3F38011 ubfx r1, r3, #6, #1 82:Core/Src/ADBMS_Abstraction.c **** module->status.VD_OV = (rxbuf[4] >> 5) & 0x01; 235 .loc 1 82 25 view .LVU48 236 0056 D2B2 uxtb r2, r2 237 0058 61F34102 bfi r2, r1, #1, #1 238 005c 84F83820 strb r2, [r4, #56] 83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01; 239 .loc 1 83 3 is_stmt 1 view .LVU49 83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01; 240 .loc 1 83 43 is_stmt 0 view .LVU50 241 0060 C3F34011 ubfx r1, r3, #5, #1 ARM GAS /tmp/cc16Zqrx.s page 8 83:Core/Src/ADBMS_Abstraction.c **** module->status.VD_UV = (rxbuf[4] >> 4) & 0x01; 242 .loc 1 83 25 view .LVU51 243 0064 D2B2 uxtb r2, r2 244 0066 61F38202 bfi r2, r1, #2, #1 245 006a 84F83820 strb r2, [r4, #56] 84:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01; 246 .loc 1 84 3 is_stmt 1 view .LVU52 84:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01; 247 .loc 1 84 43 is_stmt 0 view .LVU53 248 006e C3F30011 ubfx r1, r3, #4, #1 84:Core/Src/ADBMS_Abstraction.c **** module->status.CED = (rxbuf[4] >> 3) & 0x01; 249 .loc 1 84 25 view .LVU54 250 0072 D2B2 uxtb r2, r2 251 0074 61F3C302 bfi r2, r1, #3, #1 252 0078 84F83820 strb r2, [r4, #56] 85:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01; 253 .loc 1 85 3 is_stmt 1 view .LVU55 85:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01; 254 .loc 1 85 43 is_stmt 0 view .LVU56 255 007c C3F3C001 ubfx r1, r3, #3, #1 85:Core/Src/ADBMS_Abstraction.c **** module->status.CMED = (rxbuf[4] >> 2) & 0x01; 256 .loc 1 85 25 view .LVU57 257 0080 D2B2 uxtb r2, r2 258 0082 61F30412 bfi r2, r1, #4, #1 259 0086 84F83820 strb r2, [r4, #56] 86:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01; 260 .loc 1 86 3 is_stmt 1 view .LVU58 86:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01; 261 .loc 1 86 43 is_stmt 0 view .LVU59 262 008a C3F38001 ubfx r1, r3, #2, #1 86:Core/Src/ADBMS_Abstraction.c **** module->status.SED = (rxbuf[4] >> 1) & 0x01; 263 .loc 1 86 25 view .LVU60 264 008e D2B2 uxtb r2, r2 265 0090 61F34512 bfi r2, r1, #5, #1 266 0094 84F83820 strb r2, [r4, #56] 87:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01; 267 .loc 1 87 3 is_stmt 1 view .LVU61 87:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01; 268 .loc 1 87 43 is_stmt 0 view .LVU62 269 0098 C3F34001 ubfx r1, r3, #1, #1 87:Core/Src/ADBMS_Abstraction.c **** module->status.SMED = (rxbuf[4] >> 0) & 0x01; 270 .loc 1 87 25 view .LVU63 271 009c D2B2 uxtb r2, r2 272 009e 61F38612 bfi r2, r1, #6, #1 273 00a2 84F83820 strb r2, [r4, #56] 88:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01; 274 .loc 1 88 3 is_stmt 1 view .LVU64 88:Core/Src/ADBMS_Abstraction.c **** module->status.VDEL = (rxbuf[5] >> 7) & 0x01; 275 .loc 1 88 25 is_stmt 0 view .LVU65 276 00a6 D2B2 uxtb r2, r2 277 00a8 63F3C712 bfi r2, r3, #7, #1 278 00ac 84F83820 strb r2, [r4, #56] 89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01; 279 .loc 1 89 3 is_stmt 1 view .LVU66 89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01; 280 .loc 1 89 33 is_stmt 0 view .LVU67 281 00b0 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2 ARM GAS /tmp/cc16Zqrx.s page 9 89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01; 282 .loc 1 89 43 view .LVU68 283 00b4 D909 lsrs r1, r3, #7 89:Core/Src/ADBMS_Abstraction.c **** module->status.VDE = (rxbuf[5] >> 6) & 0x01; 284 .loc 1 89 25 view .LVU69 285 00b6 94F83920 ldrb r2, [r4, #57] @ zero_extendqisi2 286 00ba 61F30002 bfi r2, r1, #0, #1 287 00be 84F83920 strb r2, [r4, #57] 90:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01; 288 .loc 1 90 3 is_stmt 1 view .LVU70 90:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01; 289 .loc 1 90 43 is_stmt 0 view .LVU71 290 00c2 C3F38011 ubfx r1, r3, #6, #1 90:Core/Src/ADBMS_Abstraction.c **** module->status.COMPARE= (rxbuf[5] >> 5) & 0x01; 291 .loc 1 90 25 view .LVU72 292 00c6 D2B2 uxtb r2, r2 293 00c8 61F34102 bfi r2, r1, #1, #1 294 00cc 84F83920 strb r2, [r4, #57] 91:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01; 295 .loc 1 91 3 is_stmt 1 view .LVU73 91:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01; 296 .loc 1 91 43 is_stmt 0 view .LVU74 297 00d0 C3F34011 ubfx r1, r3, #5, #1 91:Core/Src/ADBMS_Abstraction.c **** module->status.SPIFLT = (rxbuf[5] >> 4) & 0x01; 298 .loc 1 91 25 view .LVU75 299 00d4 D2B2 uxtb r2, r2 300 00d6 61F38202 bfi r2, r1, #2, #1 301 00da 84F83920 strb r2, [r4, #57] 92:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01; 302 .loc 1 92 3 is_stmt 1 view .LVU76 92:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01; 303 .loc 1 92 43 is_stmt 0 view .LVU77 304 00de C3F30011 ubfx r1, r3, #4, #1 92:Core/Src/ADBMS_Abstraction.c **** module->status.SLEEP = (rxbuf[5] >> 3) & 0x01; 305 .loc 1 92 25 view .LVU78 306 00e2 D2B2 uxtb r2, r2 307 00e4 61F3C302 bfi r2, r1, #3, #1 308 00e8 84F83920 strb r2, [r4, #57] 93:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01; 309 .loc 1 93 3 is_stmt 1 view .LVU79 93:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01; 310 .loc 1 93 43 is_stmt 0 view .LVU80 311 00ec C3F3C001 ubfx r1, r3, #3, #1 93:Core/Src/ADBMS_Abstraction.c **** module->status.THSD = (rxbuf[5] >> 2) & 0x01; 312 .loc 1 93 25 view .LVU81 313 00f0 D2B2 uxtb r2, r2 314 00f2 61F30412 bfi r2, r1, #4, #1 315 00f6 84F83920 strb r2, [r4, #57] 94:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01; 316 .loc 1 94 3 is_stmt 1 view .LVU82 94:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01; 317 .loc 1 94 43 is_stmt 0 view .LVU83 318 00fa C3F38001 ubfx r1, r3, #2, #1 94:Core/Src/ADBMS_Abstraction.c **** module->status.TMODCHK= (rxbuf[5] >> 1) & 0x01; 319 .loc 1 94 25 view .LVU84 320 00fe D2B2 uxtb r2, r2 321 0100 61F34512 bfi r2, r1, #5, #1 ARM GAS /tmp/cc16Zqrx.s page 10 322 0104 84F83920 strb r2, [r4, #57] 95:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01; 323 .loc 1 95 3 is_stmt 1 view .LVU85 95:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01; 324 .loc 1 95 43 is_stmt 0 view .LVU86 325 0108 C3F34001 ubfx r1, r3, #1, #1 95:Core/Src/ADBMS_Abstraction.c **** module->status.OSCCHK = (rxbuf[5] >> 0) & 0x01; 326 .loc 1 95 25 view .LVU87 327 010c D2B2 uxtb r2, r2 328 010e 61F38612 bfi r2, r1, #6, #1 329 0112 84F83920 strb r2, [r4, #57] 96:Core/Src/ADBMS_Abstraction.c **** 330 .loc 1 96 3 is_stmt 1 view .LVU88 96:Core/Src/ADBMS_Abstraction.c **** 331 .loc 1 96 25 is_stmt 0 view .LVU89 332 0116 D2B2 uxtb r2, r2 333 0118 63F3C712 bfi r2, r3, #7, #1 334 011c 84F83920 strb r2, [r4, #57] 98:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready 335 .loc 1 98 3 is_stmt 1 view .LVU90 98:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready 336 .loc 1 98 7 is_stmt 0 view .LVU91 337 0120 40F21E70 movw r0, #1822 338 0124 FFF7FEFF bl pollCMD 339 .LVL9: 98:Core/Src/ADBMS_Abstraction.c **** return 0; // aux ADC data not ready 340 .loc 1 98 6 discriminator 1 view .LVU92 341 0128 0028 cmp r0, #0 342 012a 3FF476AF beq .L11 343 .LBB5: 102:Core/Src/ADBMS_Abstraction.c **** 344 .loc 1 102 3 is_stmt 1 view .LVU93 345 012e 0622 movs r2, #6 346 0130 02A9 add r1, sp, #8 347 0132 1920 movs r0, #25 348 0134 FFF7FEFF bl readCMD 349 .LVL10: 102:Core/Src/ADBMS_Abstraction.c **** 350 .loc 1 102 3 discriminator 1 view .LVU94 351 0138 0028 cmp r0, #0 352 013a 7FF46EAF bne .L11 353 .LBE5: 102:Core/Src/ADBMS_Abstraction.c **** 354 .loc 1 102 57 discriminator 2 view .LVU95 104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 355 .loc 1 104 3 view .LVU96 104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 356 .loc 1 104 28 is_stmt 0 view .LVU97 357 013e 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2 358 .LVL11: 104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 359 .loc 1 104 28 view .LVU98 360 0142 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2 361 0146 40EA0320 orr r0, r0, r3, lsl #8 362 014a 00B2 sxth r0, r0 363 014c FFF7FEFF bl __aeabi_i2d 364 .LVL12: ARM GAS /tmp/cc16Zqrx.s page 11 365 0150 ABA3 adr r3, .L14 366 0152 D3E90023 ldrd r2, [r3] 367 0156 FFF7FEFF bl __aeabi_dmul 368 .LVL13: 369 015a ABA3 adr r3, .L14+8 370 015c D3E90023 ldrd r2, [r3] 371 0160 FFF7FEFF bl __aeabi_dadd 372 .LVL14: 104:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[1] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 373 .loc 1 104 26 view .LVU99 374 0164 FFF7FEFF bl __aeabi_d2iz 375 .LVL15: 376 0168 2084 strh r0, [r4, #32] @ movhi 105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 377 .loc 1 105 3 is_stmt 1 view .LVU100 105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 378 .loc 1 105 28 is_stmt 0 view .LVU101 379 016a 9DF80A00 ldrb r0, [sp, #10] @ zero_extendqisi2 380 016e 9DF80B30 ldrb r3, [sp, #11] @ zero_extendqisi2 381 0172 40EA0320 orr r0, r0, r3, lsl #8 382 0176 00B2 sxth r0, r0 383 0178 FFF7FEFF bl __aeabi_i2d 384 .LVL16: 385 017c A0A3 adr r3, .L14 386 017e D3E90023 ldrd r2, [r3] 387 0182 FFF7FEFF bl __aeabi_dmul 388 .LVL17: 389 0186 A0A3 adr r3, .L14+8 390 0188 D3E90023 ldrd r2, [r3] 391 018c FFF7FEFF bl __aeabi_dadd 392 .LVL18: 105:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[2] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 393 .loc 1 105 26 view .LVU102 394 0190 FFF7FEFF bl __aeabi_d2iz 395 .LVL19: 396 0194 6084 strh r0, [r4, #34] @ movhi 106:Core/Src/ADBMS_Abstraction.c **** 397 .loc 1 106 3 is_stmt 1 view .LVU103 106:Core/Src/ADBMS_Abstraction.c **** 398 .loc 1 106 28 is_stmt 0 view .LVU104 399 0196 9DF80C00 ldrb r0, [sp, #12] @ zero_extendqisi2 400 019a 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2 401 019e 40EA0320 orr r0, r0, r3, lsl #8 402 01a2 00B2 sxth r0, r0 403 01a4 FFF7FEFF bl __aeabi_i2d 404 .LVL20: 405 01a8 95A3 adr r3, .L14 406 01aa D3E90023 ldrd r2, [r3] 407 01ae FFF7FEFF bl __aeabi_dmul 408 .LVL21: 409 01b2 95A3 adr r3, .L14+8 410 01b4 D3E90023 ldrd r2, [r3] 411 01b8 FFF7FEFF bl __aeabi_dadd 412 .LVL22: 106:Core/Src/ADBMS_Abstraction.c **** 413 .loc 1 106 26 view .LVU105 414 01bc FFF7FEFF bl __aeabi_d2iz ARM GAS /tmp/cc16Zqrx.s page 12 415 .LVL23: 416 01c0 A084 strh r0, [r4, #36] @ movhi 417 .LBB6: 108:Core/Src/ADBMS_Abstraction.c **** 418 .loc 1 108 3 is_stmt 1 view .LVU106 419 01c2 0622 movs r2, #6 420 01c4 02A9 add r1, sp, #8 421 01c6 1A20 movs r0, #26 422 01c8 FFF7FEFF bl readCMD 423 .LVL24: 108:Core/Src/ADBMS_Abstraction.c **** 424 .loc 1 108 3 discriminator 1 view .LVU107 425 01cc 0028 cmp r0, #0 426 01ce 7FF424AF bne .L11 427 .LBE6: 108:Core/Src/ADBMS_Abstraction.c **** 428 .loc 1 108 57 discriminator 2 view .LVU108 110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 429 .loc 1 110 3 view .LVU109 110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 430 .loc 1 110 28 is_stmt 0 view .LVU110 431 01d2 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2 432 .LVL25: 110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 433 .loc 1 110 28 view .LVU111 434 01d6 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2 435 01da 40EA0320 orr r0, r0, r3, lsl #8 436 01de 00B2 sxth r0, r0 437 01e0 FFF7FEFF bl __aeabi_i2d 438 .LVL26: 439 01e4 86A3 adr r3, .L14 440 01e6 D3E90023 ldrd r2, [r3] 441 01ea FFF7FEFF bl __aeabi_dmul 442 .LVL27: 443 01ee 86A3 adr r3, .L14+8 444 01f0 D3E90023 ldrd r2, [r3] 445 01f4 FFF7FEFF bl __aeabi_dadd 446 .LVL28: 110:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[4] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 447 .loc 1 110 26 view .LVU112 448 01f8 FFF7FEFF bl __aeabi_d2iz 449 .LVL29: 450 01fc E084 strh r0, [r4, #38] @ movhi 111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 451 .loc 1 111 3 is_stmt 1 view .LVU113 111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 452 .loc 1 111 28 is_stmt 0 view .LVU114 453 01fe 9DF80A00 ldrb r0, [sp, #10] @ zero_extendqisi2 454 0202 9DF80B30 ldrb r3, [sp, #11] @ zero_extendqisi2 455 0206 40EA0320 orr r0, r0, r3, lsl #8 456 020a 00B2 sxth r0, r0 457 020c FFF7FEFF bl __aeabi_i2d 458 .LVL30: 459 0210 7BA3 adr r3, .L14 460 0212 D3E90023 ldrd r2, [r3] 461 0216 FFF7FEFF bl __aeabi_dmul 462 .LVL31: ARM GAS /tmp/cc16Zqrx.s page 13 463 021a 7BA3 adr r3, .L14+8 464 021c D3E90023 ldrd r2, [r3] 465 0220 FFF7FEFF bl __aeabi_dadd 466 .LVL32: 111:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[5] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 467 .loc 1 111 26 view .LVU115 468 0224 FFF7FEFF bl __aeabi_d2iz 469 .LVL33: 470 0228 2085 strh r0, [r4, #40] @ movhi 112:Core/Src/ADBMS_Abstraction.c **** 471 .loc 1 112 3 is_stmt 1 view .LVU116 112:Core/Src/ADBMS_Abstraction.c **** 472 .loc 1 112 28 is_stmt 0 view .LVU117 473 022a 9DF80C00 ldrb r0, [sp, #12] @ zero_extendqisi2 474 022e 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2 475 0232 40EA0320 orr r0, r0, r3, lsl #8 476 0236 00B2 sxth r0, r0 477 0238 FFF7FEFF bl __aeabi_i2d 478 .LVL34: 479 023c 70A3 adr r3, .L14 480 023e D3E90023 ldrd r2, [r3] 481 0242 FFF7FEFF bl __aeabi_dmul 482 .LVL35: 483 0246 70A3 adr r3, .L14+8 484 0248 D3E90023 ldrd r2, [r3] 485 024c FFF7FEFF bl __aeabi_dadd 486 .LVL36: 112:Core/Src/ADBMS_Abstraction.c **** 487 .loc 1 112 26 view .LVU118 488 0250 FFF7FEFF bl __aeabi_d2iz 489 .LVL37: 490 0254 6085 strh r0, [r4, #42] @ movhi 491 .LBB7: 114:Core/Src/ADBMS_Abstraction.c **** 492 .loc 1 114 3 is_stmt 1 view .LVU119 493 0256 0622 movs r2, #6 494 0258 02A9 add r1, sp, #8 495 025a 1B20 movs r0, #27 496 025c FFF7FEFF bl readCMD 497 .LVL38: 114:Core/Src/ADBMS_Abstraction.c **** 498 .loc 1 114 3 discriminator 1 view .LVU120 499 0260 0028 cmp r0, #0 500 0262 7FF4DAAE bne .L11 501 .LBE7: 114:Core/Src/ADBMS_Abstraction.c **** 502 .loc 1 114 57 discriminator 2 view .LVU121 116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 503 .loc 1 116 3 view .LVU122 116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 504 .loc 1 116 28 is_stmt 0 view .LVU123 505 0266 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2 506 .LVL39: 116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 507 .loc 1 116 28 view .LVU124 508 026a 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2 509 026e 40EA0320 orr r0, r0, r3, lsl #8 ARM GAS /tmp/cc16Zqrx.s page 14 510 0272 00B2 sxth r0, r0 511 0274 FFF7FEFF bl __aeabi_i2d 512 .LVL40: 513 0278 61A3 adr r3, .L14 514 027a D3E90023 ldrd r2, [r3] 515 027e FFF7FEFF bl __aeabi_dmul 516 .LVL41: 517 0282 61A3 adr r3, .L14+8 518 0284 D3E90023 ldrd r2, [r3] 519 0288 FFF7FEFF bl __aeabi_dadd 520 .LVL42: 116:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[7] = mV_from_ADBMS6830(rxbuf[2] | (rxbuf[3] << 8)); 521 .loc 1 116 26 view .LVU125 522 028c FFF7FEFF bl __aeabi_d2iz 523 .LVL43: 524 0290 A085 strh r0, [r4, #44] @ movhi 117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 525 .loc 1 117 3 is_stmt 1 view .LVU126 117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 526 .loc 1 117 28 is_stmt 0 view .LVU127 527 0292 9DF80A00 ldrb r0, [sp, #10] @ zero_extendqisi2 528 0296 9DF80B30 ldrb r3, [sp, #11] @ zero_extendqisi2 529 029a 40EA0320 orr r0, r0, r3, lsl #8 530 029e 00B2 sxth r0, r0 531 02a0 FFF7FEFF bl __aeabi_i2d 532 .LVL44: 533 02a4 56A3 adr r3, .L14 534 02a6 D3E90023 ldrd r2, [r3] 535 02aa FFF7FEFF bl __aeabi_dmul 536 .LVL45: 537 02ae 56A3 adr r3, .L14+8 538 02b0 D3E90023 ldrd r2, [r3] 539 02b4 FFF7FEFF bl __aeabi_dadd 540 .LVL46: 117:Core/Src/ADBMS_Abstraction.c **** module->auxVoltages[8] = mV_from_ADBMS6830(rxbuf[4] | (rxbuf[5] << 8)); 541 .loc 1 117 26 view .LVU128 542 02b8 FFF7FEFF bl __aeabi_d2iz 543 .LVL47: 544 02bc E085 strh r0, [r4, #46] @ movhi 118:Core/Src/ADBMS_Abstraction.c **** 545 .loc 1 118 3 is_stmt 1 view .LVU129 118:Core/Src/ADBMS_Abstraction.c **** 546 .loc 1 118 28 is_stmt 0 view .LVU130 547 02be 9DF80C00 ldrb r0, [sp, #12] @ zero_extendqisi2 548 02c2 9DF80D30 ldrb r3, [sp, #13] @ zero_extendqisi2 549 02c6 40EA0320 orr r0, r0, r3, lsl #8 550 02ca 00B2 sxth r0, r0 551 02cc FFF7FEFF bl __aeabi_i2d 552 .LVL48: 553 02d0 4BA3 adr r3, .L14 554 02d2 D3E90023 ldrd r2, [r3] 555 02d6 FFF7FEFF bl __aeabi_dmul 556 .LVL49: 557 02da 4BA3 adr r3, .L14+8 558 02dc D3E90023 ldrd r2, [r3] 559 02e0 FFF7FEFF bl __aeabi_dadd 560 .LVL50: ARM GAS /tmp/cc16Zqrx.s page 15 118:Core/Src/ADBMS_Abstraction.c **** 561 .loc 1 118 26 view .LVU131 562 02e4 FFF7FEFF bl __aeabi_d2iz 563 .LVL51: 564 02e8 2086 strh r0, [r4, #48] @ movhi 565 .LBB8: 120:Core/Src/ADBMS_Abstraction.c **** 566 .loc 1 120 3 is_stmt 1 view .LVU132 567 02ea 0622 movs r2, #6 568 02ec 02A9 add r1, sp, #8 569 02ee 1F20 movs r0, #31 570 02f0 FFF7FEFF bl readCMD 571 .LVL52: 120:Core/Src/ADBMS_Abstraction.c **** 572 .loc 1 120 3 discriminator 1 view .LVU133 573 02f4 0028 cmp r0, #0 574 02f6 7FF490AE bne .L11 575 .LBE8: 120:Core/Src/ADBMS_Abstraction.c **** 576 .loc 1 120 57 discriminator 2 view .LVU134 122:Core/Src/ADBMS_Abstraction.c **** 577 .loc 1 122 3 view .LVU135 122:Core/Src/ADBMS_Abstraction.c **** 578 .loc 1 122 28 is_stmt 0 view .LVU136 579 02fa 9DF80800 ldrb r0, [sp, #8] @ zero_extendqisi2 580 .LVL53: 122:Core/Src/ADBMS_Abstraction.c **** 581 .loc 1 122 28 view .LVU137 582 02fe 9DF80930 ldrb r3, [sp, #9] @ zero_extendqisi2 583 0302 40EA0320 orr r0, r0, r3, lsl #8 584 0306 00B2 sxth r0, r0 585 0308 FFF7FEFF bl __aeabi_i2d 586 .LVL54: 587 030c 3CA3 adr r3, .L14 588 030e D3E90023 ldrd r2, [r3] 589 0312 FFF7FEFF bl __aeabi_dmul 590 .LVL55: 591 0316 3CA3 adr r3, .L14+8 592 0318 D3E90023 ldrd r2, [r3] 593 031c FFF7FEFF bl __aeabi_dadd 594 .LVL56: 122:Core/Src/ADBMS_Abstraction.c **** 595 .loc 1 122 26 view .LVU138 596 0320 FFF7FEFF bl __aeabi_d2iz 597 .LVL57: 598 0324 6086 strh r0, [r4, #50] @ movhi 124:Core/Src/ADBMS_Abstraction.c **** 599 .loc 1 124 3 is_stmt 1 view .LVU139 600 .LBB9: 126:Core/Src/ADBMS_Abstraction.c **** 601 .loc 1 126 3 view .LVU140 602 0326 0622 movs r2, #6 603 0328 6946 mov r1, sp 604 032a 3020 movs r0, #48 605 032c FFF7FEFF bl readCMD 606 .LVL58: 126:Core/Src/ADBMS_Abstraction.c **** ARM GAS /tmp/cc16Zqrx.s page 16 607 .loc 1 126 3 discriminator 1 view .LVU141 608 0330 0028 cmp r0, #0 609 0332 7FF472AE bne .L11 610 .LBE9: 126:Core/Src/ADBMS_Abstraction.c **** 611 .loc 1 126 64 discriminator 2 view .LVU142 128:Core/Src/ADBMS_Abstraction.c **** 612 .loc 1 128 3 view .LVU143 128:Core/Src/ADBMS_Abstraction.c **** 613 .loc 1 128 37 is_stmt 0 view .LVU144 614 0336 9DF80230 ldrb r3, [sp, #2] @ zero_extendqisi2 128:Core/Src/ADBMS_Abstraction.c **** 615 .loc 1 128 52 view .LVU145 616 033a 9DF80320 ldrb r2, [sp, #3] @ zero_extendqisi2 128:Core/Src/ADBMS_Abstraction.c **** 617 .loc 1 128 41 view .LVU146 618 033e 43EA0223 orr r3, r3, r2, lsl #8 128:Core/Src/ADBMS_Abstraction.c **** 619 .loc 1 128 27 view .LVU147 620 0342 6387 strh r3, [r4, #58] @ movhi 621 .LBB10: 130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 622 .loc 1 130 3 is_stmt 1 view .LVU148 623 0344 0622 movs r2, #6 624 0346 6946 mov r1, sp 625 0348 3120 movs r0, #49 626 .LVL59: 130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 627 .loc 1 130 3 is_stmt 0 view .LVU149 628 034a FFF7FEFF bl readCMD 629 .LVL60: 130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 630 .loc 1 130 3 is_stmt 1 discriminator 1 view .LVU150 631 034e 0028 cmp r0, #0 632 0350 7FF463AE bne .L11 633 .LBE10: 130:Core/Src/ADBMS_Abstraction.c **** module->digitalSupplyVoltage = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 634 .loc 1 130 64 discriminator 2 view .LVU151 131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 635 .loc 1 131 3 view .LVU152 131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 636 .loc 1 131 34 is_stmt 0 view .LVU153 637 0354 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 638 .LVL61: 131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 639 .loc 1 131 34 view .LVU154 640 0358 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 641 035c 40EA0320 orr r0, r0, r3, lsl #8 642 0360 00B2 sxth r0, r0 643 0362 FFF7FEFF bl __aeabi_i2d 644 .LVL62: 645 0366 26A3 adr r3, .L14 646 0368 D3E90023 ldrd r2, [r3] 647 036c FFF7FEFF bl __aeabi_dmul 648 .LVL63: 649 0370 25A3 adr r3, .L14+8 650 0372 D3E90023 ldrd r2, [r3] ARM GAS /tmp/cc16Zqrx.s page 17 651 0376 FFF7FEFF bl __aeabi_dadd 652 .LVL64: 131:Core/Src/ADBMS_Abstraction.c **** module->analogSupplyVoltage = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 653 .loc 1 131 32 view .LVU155 654 037a FFF7FEFF bl __aeabi_d2uiz 655 .LVL65: 656 037e E087 strh r0, [r4, #62] @ movhi 132:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 657 .loc 1 132 3 is_stmt 1 view .LVU156 132:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 658 .loc 1 132 34 is_stmt 0 view .LVU157 659 0380 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2 660 0384 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 661 0388 40EA0320 orr r0, r0, r3, lsl #8 662 038c 00B2 sxth r0, r0 663 038e FFF7FEFF bl __aeabi_i2d 664 .LVL66: 665 0392 1BA3 adr r3, .L14 666 0394 D3E90023 ldrd r2, [r3] 667 0398 FFF7FEFF bl __aeabi_dmul 668 .LVL67: 669 039c 1AA3 adr r3, .L14+8 670 039e D3E90023 ldrd r2, [r3] 671 03a2 FFF7FEFF bl __aeabi_dadd 672 .LVL68: 132:Core/Src/ADBMS_Abstraction.c **** module->refVoltage = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 673 .loc 1 132 32 view .LVU158 674 03a6 FFF7FEFF bl __aeabi_d2uiz 675 .LVL69: 676 03aa A087 strh r0, [r4, #60] @ movhi 133:Core/Src/ADBMS_Abstraction.c **** 677 .loc 1 133 3 is_stmt 1 view .LVU159 133:Core/Src/ADBMS_Abstraction.c **** 678 .loc 1 133 34 is_stmt 0 view .LVU160 679 03ac 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2 680 03b0 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2 681 03b4 40EA0320 orr r0, r0, r3, lsl #8 682 03b8 00B2 sxth r0, r0 683 03ba FFF7FEFF bl __aeabi_i2d 684 .LVL70: 685 03be 10A3 adr r3, .L14 686 03c0 D3E90023 ldrd r2, [r3] 687 03c4 FFF7FEFF bl __aeabi_dmul 688 .LVL71: 689 03c8 0FA3 adr r3, .L14+8 690 03ca D3E90023 ldrd r2, [r3] 691 03ce FFF7FEFF bl __aeabi_dadd 692 .LVL72: 133:Core/Src/ADBMS_Abstraction.c **** 693 .loc 1 133 32 view .LVU161 694 03d2 FFF7FEFF bl __aeabi_d2uiz 695 .LVL73: 696 03d6 A4F84200 strh r0, [r4, #66] @ movhi 697 .LBB11: 135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 698 .loc 1 135 3 is_stmt 1 view .LVU162 699 03da 0022 movs r2, #0 ARM GAS /tmp/cc16Zqrx.s page 18 700 .LVL74: 135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 701 .loc 1 135 3 is_stmt 0 view .LVU163 702 03dc 1146 mov r1, r2 703 03de 40F21140 movw r0, #1041 704 03e2 FFF7FEFF bl writeCMD 705 .LVL75: 135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 706 .loc 1 135 3 is_stmt 1 discriminator 1 view .LVU164 707 03e6 0028 cmp r0, #0 708 03e8 7FF417AE bne .L11 709 .LBE11: 135:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 710 .loc 1 135 40 discriminator 2 view .LVU165 711 .LBB12: 136:Core/Src/ADBMS_Abstraction.c **** 712 .loc 1 136 3 view .LVU166 713 03ec 0022 movs r2, #0 714 .LVL76: 136:Core/Src/ADBMS_Abstraction.c **** 715 .loc 1 136 3 is_stmt 0 view .LVU167 716 03ee 1146 mov r1, r2 717 03f0 40F20140 movw r0, #1025 718 .LVL77: 136:Core/Src/ADBMS_Abstraction.c **** 719 .loc 1 136 3 view .LVU168 720 03f4 FFF7FEFF bl writeCMD 721 .LVL78: 136:Core/Src/ADBMS_Abstraction.c **** 722 .loc 1 136 3 is_stmt 1 discriminator 1 view .LVU169 723 03f8 0FE6 b .L11 724 .L15: 725 03fa 00BFAFF3 .align 3 725 0080 726 .L14: 727 0400 33333333 .word 858993459 728 0404 3333C33F .word 1069757235 729 0408 00000000 .word 0 730 040c 00709740 .word 1083666432 731 .LBE12: 732 .cfi_endproc 733 .LFE129: 735 .section .text.amsConfigBalancing,"ax",%progbits 736 .align 1 737 .global amsConfigBalancing 738 .syntax unified 739 .thumb 740 .thumb_func 742 amsConfigBalancing: 743 .LVL79: 744 .LFB130: 140:Core/Src/ADBMS_Abstraction.c **** 141:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigBalancing(uint32 channels, uint8 dutyCycle) { 745 .loc 1 141 60 view -0 746 .cfi_startproc 747 @ args = 0, pretend = 0, frame = 16 748 @ frame_needed = 0, uses_anonymous_args = 0 ARM GAS /tmp/cc16Zqrx.s page 19 749 .loc 1 141 60 is_stmt 0 view .LVU171 750 0000 30B5 push {r4, r5, lr} 751 .cfi_def_cfa_offset 12 752 .cfi_offset 4, -12 753 .cfi_offset 5, -8 754 .cfi_offset 14, -4 755 0002 85B0 sub sp, sp, #20 756 .cfi_def_cfa_offset 32 757 0004 0446 mov r4, r0 758 0006 0D46 mov r5, r1 142:Core/Src/ADBMS_Abstraction.c **** uint8 buffer_a[PWM_GROUP_A_SIZE] = {}; 759 .loc 1 142 3 is_stmt 1 view .LVU172 760 .loc 1 142 9 is_stmt 0 view .LVU173 761 0008 0023 movs r3, #0 762 000a 0293 str r3, [sp, #8] 763 000c ADF80C30 strh r3, [sp, #12] @ movhi 143:Core/Src/ADBMS_Abstraction.c **** uint8 buffer_b[PWM_GROUP_B_SIZE] = {}; 764 .loc 1 143 3 is_stmt 1 view .LVU174 765 .loc 1 143 9 is_stmt 0 view .LVU175 766 0010 ADF80430 strh r3, [sp, #4] @ movhi 767 .LBB13: 144:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMA, buffer_a, CFG_GROUP_A_SIZE)); 768 .loc 1 144 3 is_stmt 1 view .LVU176 769 0014 0622 movs r2, #6 770 0016 02A9 add r1, sp, #8 771 .LVL80: 772 .loc 1 144 3 is_stmt 0 view .LVU177 773 0018 2220 movs r0, #34 774 .LVL81: 775 .loc 1 144 3 view .LVU178 776 001a FFF7FEFF bl readCMD 777 .LVL82: 778 .loc 1 144 3 is_stmt 1 discriminator 1 view .LVU179 779 001e 0346 mov r3, r0 780 0020 10B1 cbz r0, .L32 781 .LVL83: 782 .L17: 783 .loc 1 144 3 is_stmt 0 discriminator 1 view .LVU180 784 .LBE13: 145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE)); 146:Core/Src/ADBMS_Abstraction.c **** 147:Core/Src/ADBMS_Abstraction.c **** if (dutyCycle > 0x0F) { // there are only 4 bits for duty cycle 148:Core/Src/ADBMS_Abstraction.c **** return 1; 149:Core/Src/ADBMS_Abstraction.c **** } 150:Core/Src/ADBMS_Abstraction.c **** 151:Core/Src/ADBMS_Abstraction.c **** #warning fixme 152:Core/Src/ADBMS_Abstraction.c **** 153:Core/Src/ADBMS_Abstraction.c **** for (size_t i = 0; i < 16; i += 2) { 154:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ... 155:Core/Src/ADBMS_Abstraction.c **** buffer_a[i / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) | 156:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 157:Core/Src/ADBMS_Abstraction.c **** } else { 158:Core/Src/ADBMS_Abstraction.c **** buffer_b[(i - 12) / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) | 159:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 160:Core/Src/ADBMS_Abstraction.c **** } 161:Core/Src/ADBMS_Abstraction.c **** } 162:Core/Src/ADBMS_Abstraction.c **** ARM GAS /tmp/cc16Zqrx.s page 20 163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMA, buffer_a, CFG_GROUP_A_SIZE)); 164:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE)); 165:Core/Src/ADBMS_Abstraction.c **** 166:Core/Src/ADBMS_Abstraction.c **** return 0; 167:Core/Src/ADBMS_Abstraction.c **** } 785 .loc 1 167 1 view .LVU181 786 0022 1846 mov r0, r3 787 0024 05B0 add sp, sp, #20 788 .cfi_remember_state 789 .cfi_def_cfa_offset 12 790 @ sp needed 791 0026 30BD pop {r4, r5, pc} 792 .LVL84: 793 .L32: 794 .cfi_restore_state 144:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMA, buffer_a, CFG_GROUP_A_SIZE)); 795 .loc 1 144 60 is_stmt 1 discriminator 2 view .LVU182 796 .LBB14: 145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE)); 797 .loc 1 145 3 view .LVU183 798 0028 0622 movs r2, #6 799 002a 01A9 add r1, sp, #4 800 002c 2320 movs r0, #35 801 .LVL85: 145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE)); 802 .loc 1 145 3 is_stmt 0 view .LVU184 803 002e FFF7FEFF bl readCMD 804 .LVL86: 145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE)); 805 .loc 1 145 3 is_stmt 1 discriminator 1 view .LVU185 806 0032 0346 mov r3, r0 807 0034 0028 cmp r0, #0 808 0036 F4D1 bne .L17 809 .LBE14: 145:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDPWMB, buffer_b, CFG_GROUP_B_SIZE)); 810 .loc 1 145 60 discriminator 2 view .LVU186 147:Core/Src/ADBMS_Abstraction.c **** return 1; 811 .loc 1 147 3 view .LVU187 147:Core/Src/ADBMS_Abstraction.c **** return 1; 812 .loc 1 147 6 is_stmt 0 view .LVU188 813 0038 0F2D cmp r5, #15 814 003a 44D8 bhi .L26 815 .LBB15: 153:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ... 816 .loc 1 153 15 view .LVU189 817 003c 0023 movs r3, #0 818 003e 09E0 b .L18 819 .LVL87: 820 .L27: 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 821 .loc 1 155 78 discriminator 2 view .LVU190 822 0040 0022 movs r2, #0 823 0042 12E0 b .L20 824 .L28: 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 825 .loc 1 155 78 discriminator 6 view .LVU191 826 0044 0021 movs r1, #0 ARM GAS /tmp/cc16Zqrx.s page 21 827 .L21: 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 828 .loc 1 155 78 discriminator 8 view .LVU192 829 0046 0A43 orrs r2, r2, r1 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 830 .loc 1 155 23 discriminator 8 view .LVU193 831 0048 04A9 add r1, sp, #16 832 004a 01EB5301 add r1, r1, r3, lsr #1 833 004e 01F8082C strb r2, [r1, #-8] 834 .L22: 153:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ... 835 .loc 1 153 32 is_stmt 1 discriminator 2 view .LVU194 836 0052 0233 adds r3, r3, #2 837 .LVL88: 838 .L18: 153:Core/Src/ADBMS_Abstraction.c **** if (i < 12) { // cells 0, 1 are in regbuffer[0], cells 2, 3 in regbuffer[1], ... 839 .loc 1 153 24 discriminator 1 view .LVU195 840 0054 0F2B cmp r3, #15 841 0056 27D8 bhi .L33 154:Core/Src/ADBMS_Abstraction.c **** buffer_a[i / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) | 842 .loc 1 154 5 view .LVU196 154:Core/Src/ADBMS_Abstraction.c **** buffer_a[i / 2] = ((channels & (1 << (i + 1))) ? (dutyCycle << 4) : 0) | 843 .loc 1 154 8 is_stmt 0 view .LVU197 844 0058 0B2B cmp r3, #11 845 005a 0CD8 bhi .L19 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 846 .loc 1 155 7 is_stmt 1 view .LVU198 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 847 .loc 1 155 47 is_stmt 0 view .LVU199 848 005c 591C adds r1, r3, #1 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 849 .loc 1 155 41 view .LVU200 850 005e 0122 movs r2, #1 851 0060 8A40 lsls r2, r2, r1 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 852 .loc 1 155 78 view .LVU201 853 0062 2242 tst r2, r4 854 0064 ECD0 beq .L27 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 855 .loc 1 155 78 discriminator 1 view .LVU202 856 0066 2A01 lsls r2, r5, #4 857 0068 52B2 sxtb r2, r2 858 .L20: 156:Core/Src/ADBMS_Abstraction.c **** } else { 859 .loc 1 156 42 view .LVU203 860 006a 0120 movs r0, #1 861 006c 9840 lsls r0, r0, r3 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 862 .loc 1 155 78 discriminator 4 view .LVU204 863 006e 2042 tst r0, r4 864 0070 E8D0 beq .L28 155:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 865 .loc 1 155 78 discriminator 5 view .LVU205 866 0072 69B2 sxtb r1, r5 867 0074 E7E7 b .L21 868 .L19: 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); ARM GAS /tmp/cc16Zqrx.s page 22 869 .loc 1 158 7 is_stmt 1 view .LVU206 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 870 .loc 1 158 54 is_stmt 0 view .LVU207 871 0076 591C adds r1, r3, #1 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 872 .loc 1 158 48 view .LVU208 873 0078 0122 movs r2, #1 874 007a 8A40 lsls r2, r2, r1 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 875 .loc 1 158 85 view .LVU209 876 007c 2242 tst r2, r4 877 007e 0FD0 beq .L29 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 878 .loc 1 158 85 discriminator 1 view .LVU210 879 0080 2901 lsls r1, r5, #4 880 0082 49B2 sxtb r1, r1 881 .L23: 159:Core/Src/ADBMS_Abstraction.c **** } 882 .loc 1 159 49 view .LVU211 883 0084 0122 movs r2, #1 884 0086 9A40 lsls r2, r2, r3 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 885 .loc 1 158 85 discriminator 4 view .LVU212 886 0088 2242 tst r2, r4 887 008a 0BD0 beq .L30 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 888 .loc 1 158 85 discriminator 5 view .LVU213 889 008c 68B2 sxtb r0, r5 890 .L24: 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 891 .loc 1 158 19 discriminator 8 view .LVU214 892 008e A3F10C02 sub r2, r3, #12 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 893 .loc 1 158 85 discriminator 8 view .LVU215 894 0092 0143 orrs r1, r1, r0 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 895 .loc 1 158 30 discriminator 8 view .LVU216 896 0094 04A8 add r0, sp, #16 897 0096 00EB5202 add r2, r0, r2, lsr #1 898 009a 02F80C1C strb r1, [r2, #-12] 899 009e D8E7 b .L22 900 .L29: 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 901 .loc 1 158 85 discriminator 2 view .LVU217 902 00a0 0021 movs r1, #0 903 00a2 EFE7 b .L23 904 .L30: 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 905 .loc 1 158 85 discriminator 6 view .LVU218 906 00a4 0020 movs r0, #0 907 00a6 F2E7 b .L24 908 .L33: 158:Core/Src/ADBMS_Abstraction.c **** ((channels & (1 << i)) ? dutyCycle : 0); 909 .loc 1 158 85 discriminator 6 view .LVU219 910 .LBE15: 911 .LBB16: 163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE)); ARM GAS /tmp/cc16Zqrx.s page 23 912 .loc 1 163 3 is_stmt 1 view .LVU220 913 00a8 0622 movs r2, #6 914 00aa 02A9 add r1, sp, #8 915 00ac 2020 movs r0, #32 916 00ae FFF7FEFF bl writeCMD 917 .LVL89: 163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE)); 918 .loc 1 163 3 discriminator 1 view .LVU221 919 00b2 0346 mov r3, r0 920 00b4 0028 cmp r0, #0 921 00b6 B4D1 bne .L17 922 .LBE16: 163:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRPWMB, buffer_b, CFG_GROUP_B_SIZE)); 923 .loc 1 163 61 discriminator 2 view .LVU222 924 .LBB17: 164:Core/Src/ADBMS_Abstraction.c **** 925 .loc 1 164 3 view .LVU223 926 00b8 0622 movs r2, #6 927 00ba 01A9 add r1, sp, #4 928 00bc 2120 movs r0, #33 929 .LVL90: 164:Core/Src/ADBMS_Abstraction.c **** 930 .loc 1 164 3 is_stmt 0 view .LVU224 931 00be FFF7FEFF bl writeCMD 932 .LVL91: 164:Core/Src/ADBMS_Abstraction.c **** 933 .loc 1 164 3 view .LVU225 934 00c2 0346 mov r3, r0 935 .LVL92: 164:Core/Src/ADBMS_Abstraction.c **** 936 .loc 1 164 3 is_stmt 1 discriminator 1 view .LVU226 937 00c4 ADE7 b .L17 938 .LVL93: 939 .L26: 164:Core/Src/ADBMS_Abstraction.c **** 940 .loc 1 164 3 is_stmt 0 discriminator 1 view .LVU227 941 .LBE17: 148:Core/Src/ADBMS_Abstraction.c **** } 942 .loc 1 148 12 view .LVU228 943 00c6 0123 movs r3, #1 944 00c8 ABE7 b .L17 945 .cfi_endproc 946 .LFE130: 948 .section .text.amsStartBalancing,"ax",%progbits 949 .align 1 950 .global amsStartBalancing 951 .syntax unified 952 .thumb 953 .thumb_func 955 amsStartBalancing: 956 .LVL94: 957 .LFB131: 168:Core/Src/ADBMS_Abstraction.c **** 169:Core/Src/ADBMS_Abstraction.c **** uint8 amsStartBalancing(uint8 dutyCycle) { return writeCMD(UNMUTE, NULL, 0); } 958 .loc 1 169 42 is_stmt 1 view -0 959 .cfi_startproc 960 @ args = 0, pretend = 0, frame = 0 ARM GAS /tmp/cc16Zqrx.s page 24 961 @ frame_needed = 0, uses_anonymous_args = 0 962 .loc 1 169 42 is_stmt 0 view .LVU230 963 0000 08B5 push {r3, lr} 964 .cfi_def_cfa_offset 8 965 .cfi_offset 3, -8 966 .cfi_offset 14, -4 967 .loc 1 169 44 is_stmt 1 view .LVU231 968 .loc 1 169 51 is_stmt 0 view .LVU232 969 0002 0022 movs r2, #0 970 0004 1146 mov r1, r2 971 0006 2920 movs r0, #41 972 .LVL95: 973 .loc 1 169 51 view .LVU233 974 0008 FFF7FEFF bl writeCMD 975 .LVL96: 976 .loc 1 169 78 view .LVU234 977 000c 08BD pop {r3, pc} 978 .cfi_endproc 979 .LFE131: 981 .section .text.amsStopBalancing,"ax",%progbits 982 .align 1 983 .global amsStopBalancing 984 .syntax unified 985 .thumb 986 .thumb_func 988 amsStopBalancing: 989 .LFB132: 170:Core/Src/ADBMS_Abstraction.c **** 171:Core/Src/ADBMS_Abstraction.c **** uint8 amsStopBalancing() { return writeCMD(MUTE, NULL, 0); } 990 .loc 1 171 26 is_stmt 1 view -0 991 .cfi_startproc 992 @ args = 0, pretend = 0, frame = 0 993 @ frame_needed = 0, uses_anonymous_args = 0 994 0000 08B5 push {r3, lr} 995 .cfi_def_cfa_offset 8 996 .cfi_offset 3, -8 997 .cfi_offset 14, -4 998 .loc 1 171 28 view .LVU236 999 .loc 1 171 35 is_stmt 0 view .LVU237 1000 0002 0022 movs r2, #0 1001 0004 1146 mov r1, r2 1002 0006 2820 movs r0, #40 1003 0008 FFF7FEFF bl writeCMD 1004 .LVL97: 1005 .loc 1 171 60 view .LVU238 1006 000c 08BD pop {r3, pc} 1007 .cfi_endproc 1008 .LFE132: 1010 .section .text.amsSelfTest,"ax",%progbits 1011 .align 1 1012 .global amsSelfTest 1013 .syntax unified 1014 .thumb 1015 .thumb_func 1017 amsSelfTest: 1018 .LFB133: 172:Core/Src/ADBMS_Abstraction.c **** ARM GAS /tmp/cc16Zqrx.s page 25 173:Core/Src/ADBMS_Abstraction.c **** uint8 amsSelfTest() { return 0; } 1019 .loc 1 173 21 is_stmt 1 view -0 1020 .cfi_startproc 1021 @ args = 0, pretend = 0, frame = 0 1022 @ frame_needed = 0, uses_anonymous_args = 0 1023 @ link register save eliminated. 1024 .loc 1 173 23 view .LVU240 1025 .loc 1 173 33 is_stmt 0 view .LVU241 1026 0000 0020 movs r0, #0 1027 0002 7047 bx lr 1028 .cfi_endproc 1029 .LFE133: 1031 .section .text.amsConfigOverUnderVoltage,"ax",%progbits 1032 .align 1 1033 .global amsConfigOverUnderVoltage 1034 .syntax unified 1035 .thumb 1036 .thumb_func 1038 amsConfigOverUnderVoltage: 1039 .LVL98: 1040 .LFB134: 174:Core/Src/ADBMS_Abstraction.c **** 175:Core/Src/ADBMS_Abstraction.c **** uint8 amsConfigOverUnderVoltage(uint16 overVoltage, uint16 underVoltage) { 1041 .loc 1 175 74 is_stmt 1 view -0 1042 .cfi_startproc 1043 @ args = 0, pretend = 0, frame = 8 1044 @ frame_needed = 0, uses_anonymous_args = 0 176:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[CFG_GROUP_A_SIZE]; 1045 .loc 1 176 3 view .LVU243 177:Core/Src/ADBMS_Abstraction.c **** 178:Core/Src/ADBMS_Abstraction.c **** if (underVoltage & 0xF000 || overVoltage & 0xF000) { // only 12 bits allowed 1046 .loc 1 178 3 view .LVU244 1047 .loc 1 178 6 is_stmt 0 view .LVU245 1048 0000 B1F5805F cmp r1, #4096 1049 0004 30D2 bcs .L41 175:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[CFG_GROUP_A_SIZE]; 1050 .loc 1 175 74 view .LVU246 1051 0006 30B5 push {r4, r5, lr} 1052 .cfi_def_cfa_offset 12 1053 .cfi_offset 4, -12 1054 .cfi_offset 5, -8 1055 .cfi_offset 14, -4 1056 0008 83B0 sub sp, sp, #12 1057 .cfi_def_cfa_offset 24 1058 000a 0546 mov r5, r0 1059 000c 0C46 mov r4, r1 1060 .loc 1 178 29 discriminator 1 view .LVU247 1061 000e B0F5805F cmp r0, #4096 1062 0012 02D3 bcc .L47 179:Core/Src/ADBMS_Abstraction.c **** return 1; 1063 .loc 1 179 12 view .LVU248 1064 0014 0120 movs r0, #1 1065 .LVL99: 1066 .L40: 180:Core/Src/ADBMS_Abstraction.c **** } 181:Core/Src/ADBMS_Abstraction.c **** 182:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCFGB, buffer, CFG_GROUP_A_SIZE)); ARM GAS /tmp/cc16Zqrx.s page 26 183:Core/Src/ADBMS_Abstraction.c **** 184:Core/Src/ADBMS_Abstraction.c **** //UV 185:Core/Src/ADBMS_Abstraction.c **** buffer[0] = (uint8) (underVoltage & 0xFF); 186:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0; 187:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F); 188:Core/Src/ADBMS_Abstraction.c **** 189:Core/Src/ADBMS_Abstraction.c **** //OV 190:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0x0F; 191:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4); 192:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4); 193:Core/Src/ADBMS_Abstraction.c **** 194:Core/Src/ADBMS_Abstraction.c **** return writeCMD(WRCFGB, buffer, CFG_GROUP_A_SIZE); 195:Core/Src/ADBMS_Abstraction.c **** } 1067 .loc 1 195 1 view .LVU249 1068 0016 03B0 add sp, sp, #12 1069 .cfi_remember_state 1070 .cfi_def_cfa_offset 12 1071 @ sp needed 1072 0018 30BD pop {r4, r5, pc} 1073 .LVL100: 1074 .L47: 1075 .cfi_restore_state 1076 .LBB18: 182:Core/Src/ADBMS_Abstraction.c **** 1077 .loc 1 182 3 is_stmt 1 view .LVU250 1078 001a 0622 movs r2, #6 1079 001c 6946 mov r1, sp 1080 .LVL101: 182:Core/Src/ADBMS_Abstraction.c **** 1081 .loc 1 182 3 is_stmt 0 view .LVU251 1082 001e 2620 movs r0, #38 1083 .LVL102: 182:Core/Src/ADBMS_Abstraction.c **** 1084 .loc 1 182 3 view .LVU252 1085 0020 FFF7FEFF bl readCMD 1086 .LVL103: 182:Core/Src/ADBMS_Abstraction.c **** 1087 .loc 1 182 3 is_stmt 1 discriminator 1 view .LVU253 1088 0024 0028 cmp r0, #0 1089 0026 F6D1 bne .L40 1090 .LBE18: 182:Core/Src/ADBMS_Abstraction.c **** 1091 .loc 1 182 58 discriminator 2 view .LVU254 185:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0; 1092 .loc 1 185 3 view .LVU255 185:Core/Src/ADBMS_Abstraction.c **** buffer[1] &= 0xF0; 1093 .loc 1 185 13 is_stmt 0 view .LVU256 1094 0028 8DF80040 strb r4, [sp] 186:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F); 1095 .loc 1 186 3 is_stmt 1 view .LVU257 186:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F); 1096 .loc 1 186 9 is_stmt 0 view .LVU258 1097 002c 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 186:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) ((underVoltage >> 8) & 0x0F); 1098 .loc 1 186 13 view .LVU259 1099 0030 03F0F003 and r3, r3, #240 1100 0034 8DF80130 strb r3, [sp, #1] ARM GAS /tmp/cc16Zqrx.s page 27 187:Core/Src/ADBMS_Abstraction.c **** 1101 .loc 1 187 3 is_stmt 1 view .LVU260 187:Core/Src/ADBMS_Abstraction.c **** 1102 .loc 1 187 16 is_stmt 0 view .LVU261 1103 0038 C4F30324 ubfx r4, r4, #8, #4 1104 .LVL104: 187:Core/Src/ADBMS_Abstraction.c **** 1105 .loc 1 187 13 view .LVU262 1106 003c 2343 orrs r3, r3, r4 1107 003e 8DF80130 strb r3, [sp, #1] 190:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4); 1108 .loc 1 190 3 is_stmt 1 view .LVU263 190:Core/Src/ADBMS_Abstraction.c **** buffer[1] |= (uint8) (overVoltage << 4); 1109 .loc 1 190 13 is_stmt 0 view .LVU264 1110 0042 03F00F03 and r3, r3, #15 1111 0046 8DF80130 strb r3, [sp, #1] 191:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4); 1112 .loc 1 191 3 is_stmt 1 view .LVU265 191:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4); 1113 .loc 1 191 16 is_stmt 0 view .LVU266 1114 004a 2A01 lsls r2, r5, #4 1115 004c D2B2 uxtb r2, r2 191:Core/Src/ADBMS_Abstraction.c **** buffer[2] = (uint8) (overVoltage >> 4); 1116 .loc 1 191 13 view .LVU267 1117 004e 1343 orrs r3, r3, r2 1118 0050 8DF80130 strb r3, [sp, #1] 192:Core/Src/ADBMS_Abstraction.c **** 1119 .loc 1 192 3 is_stmt 1 view .LVU268 192:Core/Src/ADBMS_Abstraction.c **** 1120 .loc 1 192 15 is_stmt 0 view .LVU269 1121 0054 C5F30715 ubfx r5, r5, #4, #8 1122 .LVL105: 192:Core/Src/ADBMS_Abstraction.c **** 1123 .loc 1 192 13 view .LVU270 1124 0058 8DF80250 strb r5, [sp, #2] 194:Core/Src/ADBMS_Abstraction.c **** } 1125 .loc 1 194 3 is_stmt 1 view .LVU271 194:Core/Src/ADBMS_Abstraction.c **** } 1126 .loc 1 194 10 is_stmt 0 view .LVU272 1127 005c 0622 movs r2, #6 1128 005e 6946 mov r1, sp 1129 0060 2420 movs r0, #36 1130 .LVL106: 194:Core/Src/ADBMS_Abstraction.c **** } 1131 .loc 1 194 10 view .LVU273 1132 0062 FFF7FEFF bl writeCMD 1133 .LVL107: 1134 0066 D6E7 b .L40 1135 .LVL108: 1136 .L41: 1137 .cfi_def_cfa_offset 0 1138 .cfi_restore 4 1139 .cfi_restore 5 1140 .cfi_restore 14 179:Core/Src/ADBMS_Abstraction.c **** } 1141 .loc 1 179 12 view .LVU274 1142 0068 0120 movs r0, #1 ARM GAS /tmp/cc16Zqrx.s page 28 1143 .LVL109: 1144 .loc 1 195 1 view .LVU275 1145 006a 7047 bx lr 1146 .cfi_endproc 1147 .LFE134: 1149 .section .rodata.amsReset.str1.4,"aMS",%progbits,1 1150 .align 2 1151 .LC0: 1152 0000 FFFFFFFF .ascii "\377\377\377\377\377\377\000" 1152 FFFF00 1153 .section .text.amsReset,"ax",%progbits 1154 .align 1 1155 .global amsReset 1156 .syntax unified 1157 .thumb 1158 .thumb_func 1160 amsReset: 1161 .LFB123: 24:Core/Src/ADBMS_Abstraction.c **** amsWakeUp(); 1162 .loc 1 24 18 is_stmt 1 view -0 1163 .cfi_startproc 1164 @ args = 0, pretend = 0, frame = 8 1165 @ frame_needed = 0, uses_anonymous_args = 0 1166 0000 00B5 push {lr} 1167 .cfi_def_cfa_offset 4 1168 .cfi_offset 14, -4 1169 0002 83B0 sub sp, sp, #12 1170 .cfi_def_cfa_offset 16 25:Core/Src/ADBMS_Abstraction.c **** readCMD(SRST, NULL, 0); 1171 .loc 1 25 3 view .LVU277 1172 0004 FFF7FEFF bl amsWakeUp 1173 .LVL110: 26:Core/Src/ADBMS_Abstraction.c **** mcuDelay(10); 1174 .loc 1 26 3 view .LVU278 1175 0008 0022 movs r2, #0 1176 000a 1146 mov r1, r2 1177 000c 2720 movs r0, #39 1178 000e FFF7FEFF bl readCMD 1179 .LVL111: 27:Core/Src/ADBMS_Abstraction.c **** amsWakeUp(); 1180 .loc 1 27 3 view .LVU279 1181 0012 0A20 movs r0, #10 1182 0014 FFF7FEFF bl mcuDelay 1183 .LVL112: 28:Core/Src/ADBMS_Abstraction.c **** amsStopBalancing(); 1184 .loc 1 28 3 view .LVU280 1185 0018 FFF7FEFF bl amsWakeUp 1186 .LVL113: 29:Core/Src/ADBMS_Abstraction.c **** amsConfigOverUnderVoltage(DEFAULT_OV, DEFAULT_UV); 1187 .loc 1 29 3 view .LVU281 1188 001c FFF7FEFF bl amsStopBalancing 1189 .LVL114: 30:Core/Src/ADBMS_Abstraction.c **** 1190 .loc 1 30 3 view .LVU282 1191 0020 40F2A111 movw r1, #417 1192 0024 40F26540 movw r0, #1125 1193 0028 FFF7FEFF bl amsConfigOverUnderVoltage ARM GAS /tmp/cc16Zqrx.s page 29 1194 .LVL115: 32:Core/Src/ADBMS_Abstraction.c **** 1195 .loc 1 32 3 view .LVU283 32:Core/Src/ADBMS_Abstraction.c **** 1196 .loc 1 32 9 is_stmt 0 view .LVU284 1197 002c 1A4B ldr r3, .L52 1198 002e 93E80300 ldm r3, {r0, r1} 1199 0032 0090 str r0, [sp] 1200 0034 ADF80410 strh r1, [sp, #4] @ movhi 1201 .LBB19: 34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags 1202 .loc 1 34 3 is_stmt 1 view .LVU285 1203 0038 0622 movs r2, #6 1204 003a 6946 mov r1, sp 1205 003c 40F21770 movw r0, #1815 1206 0040 FFF7FEFF bl writeCMD 1207 .LVL116: 34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags 1208 .loc 1 34 3 discriminator 1 view .LVU286 1209 0044 0346 mov r3, r0 1210 0046 18B1 cbz r0, .L51 1211 .LVL117: 1212 .L49: 34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags 1213 .loc 1 34 3 is_stmt 0 discriminator 1 view .LVU287 1214 .LBE19: 41:Core/Src/ADBMS_Abstraction.c **** 1215 .loc 1 41 1 view .LVU288 1216 0048 1846 mov r0, r3 1217 004a 03B0 add sp, sp, #12 1218 .cfi_remember_state 1219 .cfi_def_cfa_offset 4 1220 @ sp needed 1221 004c 5DF804FB ldr pc, [sp], #4 1222 .LVL118: 1223 .L51: 1224 .cfi_restore_state 34:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(CLOVUV, buffer, 6)); //OVUV flags 1225 .loc 1 34 45 is_stmt 1 discriminator 2 view .LVU289 1226 .LBB20: 35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas 1227 .loc 1 35 3 view .LVU290 1228 0050 0622 movs r2, #6 1229 0052 6946 mov r1, sp 1230 0054 40F21570 movw r0, #1813 1231 .LVL119: 35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas 1232 .loc 1 35 3 is_stmt 0 view .LVU291 1233 0058 FFF7FEFF bl writeCMD 1234 .LVL120: 35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas 1235 .loc 1 35 3 is_stmt 1 discriminator 1 view .LVU292 1236 005c 0346 mov r3, r0 1237 005e 0028 cmp r0, #0 1238 0060 F2D1 bne .L49 1239 .LBE20: 35:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADCV | ADCV_CONT | ADCV_RD, NULL, 0)); //start continuous cell voltage meas ARM GAS /tmp/cc16Zqrx.s page 30 1240 .loc 1 35 44 discriminator 2 view .LVU293 1241 .LBB21: 36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement 1242 .loc 1 36 3 view .LVU294 1243 0062 0022 movs r2, #0 1244 0064 1146 mov r1, r2 1245 0066 4FF47870 mov r0, #992 1246 .LVL121: 36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement 1247 .loc 1 36 3 is_stmt 0 view .LVU295 1248 006a FFF7FEFF bl writeCMD 1249 .LVL122: 36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement 1250 .loc 1 36 3 is_stmt 1 discriminator 1 view .LVU296 1251 006e 0346 mov r3, r0 1252 0070 0028 cmp r0, #0 1253 0072 E9D1 bne .L49 1254 .LBE21: 36:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX, NULL, 0)); //start aux measurement 1255 .loc 1 36 62 discriminator 2 view .LVU297 1256 .LBB22: 37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 1257 .loc 1 37 3 view .LVU298 1258 0074 0022 movs r2, #0 1259 0076 1146 mov r1, r2 1260 0078 40F21140 movw r0, #1041 1261 .LVL123: 37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 1262 .loc 1 37 3 is_stmt 0 view .LVU299 1263 007c FFF7FEFF bl writeCMD 1264 .LVL124: 37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 1265 .loc 1 37 3 is_stmt 1 discriminator 1 view .LVU300 1266 0080 0346 mov r3, r0 1267 0082 0028 cmp r0, #0 1268 0084 E0D1 bne .L49 1269 .LBE22: 37:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(ADAX2, NULL, 0)); //start aux measurement 1270 .loc 1 37 40 discriminator 2 view .LVU301 1271 .LBB23: 38:Core/Src/ADBMS_Abstraction.c **** 1272 .loc 1 38 3 view .LVU302 1273 0086 0022 movs r2, #0 1274 0088 1146 mov r1, r2 1275 008a 40F20140 movw r0, #1025 1276 .LVL125: 38:Core/Src/ADBMS_Abstraction.c **** 1277 .loc 1 38 3 is_stmt 0 view .LVU303 1278 008e FFF7FEFF bl writeCMD 1279 .LVL126: 38:Core/Src/ADBMS_Abstraction.c **** 1280 .loc 1 38 3 view .LVU304 1281 0092 0346 mov r3, r0 1282 .LVL127: 38:Core/Src/ADBMS_Abstraction.c **** 1283 .loc 1 38 3 is_stmt 1 discriminator 1 view .LVU305 1284 0094 D8E7 b .L49 ARM GAS /tmp/cc16Zqrx.s page 31 1285 .L53: 1286 0096 00BF .align 2 1287 .L52: 1288 0098 00000000 .word .LC0 1289 .LBE23: 1290 .cfi_endproc 1291 .LFE123: 1293 .section .text.initAMS,"ax",%progbits 1294 .align 1 1295 .global initAMS 1296 .syntax unified 1297 .thumb 1298 .thumb_func 1300 initAMS: 1301 .LVL128: 1302 .LFB124: 43:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi); 1303 .loc 1 43 74 view -0 1304 .cfi_startproc 1305 @ args = 0, pretend = 0, frame = 0 1306 @ frame_needed = 0, uses_anonymous_args = 0 43:Core/Src/ADBMS_Abstraction.c **** adbmsDriverInit(hspi); 1307 .loc 1 43 74 is_stmt 0 view .LVU307 1308 0000 38B5 push {r3, r4, r5, lr} 1309 .cfi_def_cfa_offset 16 1310 .cfi_offset 3, -16 1311 .cfi_offset 4, -12 1312 .cfi_offset 5, -8 1313 .cfi_offset 14, -4 1314 0002 0D46 mov r5, r1 1315 0004 1446 mov r4, r2 44:Core/Src/ADBMS_Abstraction.c **** numberofcells = numofcells; 1316 .loc 1 44 3 is_stmt 1 view .LVU308 1317 0006 FFF7FEFF bl adbmsDriverInit 1318 .LVL129: 45:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux; 1319 .loc 1 45 3 view .LVU309 45:Core/Src/ADBMS_Abstraction.c **** numberofauxchannels = numofaux; 1320 .loc 1 45 17 is_stmt 0 view .LVU310 1321 000a 034B ldr r3, .L56 1322 000c 1D70 strb r5, [r3] 46:Core/Src/ADBMS_Abstraction.c **** 1323 .loc 1 46 3 is_stmt 1 view .LVU311 46:Core/Src/ADBMS_Abstraction.c **** 1324 .loc 1 46 23 is_stmt 0 view .LVU312 1325 000e 034B ldr r3, .L56+4 1326 0010 1C70 strb r4, [r3] 48:Core/Src/ADBMS_Abstraction.c **** } 1327 .loc 1 48 3 is_stmt 1 view .LVU313 48:Core/Src/ADBMS_Abstraction.c **** } 1328 .loc 1 48 10 is_stmt 0 view .LVU314 1329 0012 FFF7FEFF bl amsReset 1330 .LVL130: 49:Core/Src/ADBMS_Abstraction.c **** 1331 .loc 1 49 1 view .LVU315 1332 0016 38BD pop {r3, r4, r5, pc} 1333 .LVL131: ARM GAS /tmp/cc16Zqrx.s page 32 1334 .L57: 49:Core/Src/ADBMS_Abstraction.c **** 1335 .loc 1 49 1 view .LVU316 1336 .align 2 1337 .L56: 1338 0018 00000000 .word numberofcells 1339 001c 00000000 .word numberofauxchannels 1340 .cfi_endproc 1341 .LFE124: 1343 .section .text.amsCheckUnderOverVoltage,"ax",%progbits 1344 .align 1 1345 .global amsCheckUnderOverVoltage 1346 .syntax unified 1347 .thumb 1348 .thumb_func 1350 amsCheckUnderOverVoltage: 1351 .LVL132: 1352 .LFB135: 196:Core/Src/ADBMS_Abstraction.c **** 197:Core/Src/ADBMS_Abstraction.c **** uint8 amsCheckUnderOverVoltage(Cell_Module* module) { 1353 .loc 1 197 53 is_stmt 1 view -0 1354 .cfi_startproc 1355 @ args = 0, pretend = 0, frame = 8 1356 @ frame_needed = 0, uses_anonymous_args = 0 1357 .loc 1 197 53 is_stmt 0 view .LVU318 1358 0000 10B5 push {r4, lr} 1359 .cfi_def_cfa_offset 8 1360 .cfi_offset 4, -8 1361 .cfi_offset 14, -4 1362 0002 82B0 sub sp, sp, #8 1363 .cfi_def_cfa_offset 16 1364 0004 0446 mov r4, r0 198:Core/Src/ADBMS_Abstraction.c **** uint8 regbuffer[STATUS_GROUP_D_SIZE]; 1365 .loc 1 198 3 is_stmt 1 view .LVU319 199:Core/Src/ADBMS_Abstraction.c **** uint32 ov_uv_data = 0; 1366 .loc 1 199 3 view .LVU320 1367 .LVL133: 1368 .LBB24: 200:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDSTATD, regbuffer, STATUS_GROUP_D_SIZE)); 1369 .loc 1 200 3 view .LVU321 1370 0006 0622 movs r2, #6 1371 0008 6946 mov r1, sp 1372 000a 3320 movs r0, #51 1373 .LVL134: 1374 .loc 1 200 3 is_stmt 0 view .LVU322 1375 000c FFF7FEFF bl readCMD 1376 .LVL135: 1377 .loc 1 200 3 is_stmt 1 discriminator 1 view .LVU323 1378 0010 38BB cbnz r0, .L59 1379 .LBE24: 1380 .loc 1 200 65 discriminator 2 view .LVU324 201:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) | 1381 .loc 1 201 3 view .LVU325 1382 .loc 1 201 26 is_stmt 0 view .LVU326 1383 0012 9DF800E0 ldrb lr, [sp] @ zero_extendqisi2 1384 .loc 1 201 49 view .LVU327 1385 0016 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 ARM GAS /tmp/cc16Zqrx.s page 33 1386 .loc 1 201 37 view .LVU328 1387 001a 4EEA032E orr lr, lr, r3, lsl #8 202:Core/Src/ADBMS_Abstraction.c **** (regbuffer[2] << 16) | (regbuffer[3] << 24); 1388 .loc 1 202 26 view .LVU329 1389 001e 9DF80230 ldrb r3, [sp, #2] @ zero_extendqisi2 201:Core/Src/ADBMS_Abstraction.c **** ov_uv_data = (regbuffer[0] << 0) | (regbuffer[1] << 8) | 1390 .loc 1 201 60 view .LVU330 1391 0022 4EEA034E orr lr, lr, r3, lsl #16 1392 .loc 1 202 49 view .LVU331 1393 0026 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 1394 .loc 1 202 37 view .LVU332 1395 002a 4EEA036E orr lr, lr, r3, lsl #24 1396 .LVL136: 203:Core/Src/ADBMS_Abstraction.c **** 204:Core/Src/ADBMS_Abstraction.c **** module->overVoltage = 0; 1397 .loc 1 204 3 is_stmt 1 view .LVU333 1398 .loc 1 204 23 is_stmt 0 view .LVU334 1399 002e 0022 movs r2, #0 1400 0030 A265 str r2, [r4, #88] 205:Core/Src/ADBMS_Abstraction.c **** module->underVoltage = 0; 1401 .loc 1 205 3 is_stmt 1 view .LVU335 1402 .loc 1 205 24 is_stmt 0 view .LVU336 1403 0032 E265 str r2, [r4, #92] 206:Core/Src/ADBMS_Abstraction.c **** 207:Core/Src/ADBMS_Abstraction.c **** for (size_t i = 0; i < numberofcells; i++) { // ov/uv flags are 1-bit flags for each cell C0UV, C 1404 .loc 1 207 3 is_stmt 1 view .LVU337 1405 .LBB25: 1406 .loc 1 207 8 view .LVU338 1407 .LVL137: 1408 .loc 1 207 3 is_stmt 0 view .LVU339 1409 0034 11E0 b .L60 1410 .LVL138: 1411 .L61: 208:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01; 1412 .loc 1 208 5 is_stmt 1 view .LVU340 1413 .loc 1 208 11 is_stmt 0 view .LVU341 1414 0036 E16D ldr r1, [r4, #92] 1415 .loc 1 208 47 view .LVU342 1416 0038 5300 lsls r3, r2, #1 1417 .loc 1 208 41 view .LVU343 1418 003a 2EFA03FC lsr ip, lr, r3 1419 .loc 1 208 53 view .LVU344 1420 003e 0CF0010C and ip, ip, #1 1421 .loc 1 208 26 view .LVU345 1422 0042 41EA0C01 orr r1, r1, ip 1423 0046 E165 str r1, [r4, #92] 209:Core/Src/ADBMS_Abstraction.c **** module->overVoltage |= (ov_uv_data >> (i * 2 + 1)) & 0x01; 1424 .loc 1 209 5 is_stmt 1 view .LVU346 1425 .loc 1 209 11 is_stmt 0 view .LVU347 1426 0048 A16D ldr r1, [r4, #88] 1427 .loc 1 209 51 view .LVU348 1428 004a 0133 adds r3, r3, #1 1429 .loc 1 209 41 view .LVU349 1430 004c 2EFA03F3 lsr r3, lr, r3 1431 .loc 1 209 57 view .LVU350 1432 0050 03F00103 and r3, r3, #1 1433 .loc 1 209 26 view .LVU351 ARM GAS /tmp/cc16Zqrx.s page 34 1434 0054 1943 orrs r1, r1, r3 1435 0056 A165 str r1, [r4, #88] 207:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01; 1436 .loc 1 207 42 is_stmt 1 discriminator 3 view .LVU352 1437 0058 0132 adds r2, r2, #1 1438 .LVL139: 1439 .L60: 207:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01; 1440 .loc 1 207 24 discriminator 1 view .LVU353 1441 005a 034B ldr r3, .L63 1442 005c 1B78 ldrb r3, [r3] @ zero_extendqisi2 1443 005e 9342 cmp r3, r2 1444 0060 E9D8 bhi .L61 1445 .LVL140: 1446 .L59: 207:Core/Src/ADBMS_Abstraction.c **** module->underVoltage |= (ov_uv_data >> (i * 2)) & 0x01; 1447 .loc 1 207 24 is_stmt 0 discriminator 1 view .LVU354 1448 .LBE25: 210:Core/Src/ADBMS_Abstraction.c **** } 211:Core/Src/ADBMS_Abstraction.c **** 212:Core/Src/ADBMS_Abstraction.c **** return 0; 213:Core/Src/ADBMS_Abstraction.c **** } 1449 .loc 1 213 1 view .LVU355 1450 0062 02B0 add sp, sp, #8 1451 .cfi_def_cfa_offset 8 1452 @ sp needed 1453 0064 10BD pop {r4, pc} 1454 .LVL141: 1455 .L64: 1456 .loc 1 213 1 view .LVU356 1457 0066 00BF .align 2 1458 .L63: 1459 0068 00000000 .word numberofcells 1460 .cfi_endproc 1461 .LFE135: 1463 .section .text.amsClearAux,"ax",%progbits 1464 .align 1 1465 .global amsClearAux 1466 .syntax unified 1467 .thumb 1468 .thumb_func 1470 amsClearAux: 1471 .LFB136: 214:Core/Src/ADBMS_Abstraction.c **** 215:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearAux() { 1472 .loc 1 215 21 is_stmt 1 view -0 1473 .cfi_startproc 1474 @ args = 0, pretend = 0, frame = 8 1475 @ frame_needed = 0, uses_anonymous_args = 0 1476 0000 00B5 push {lr} 1477 .cfi_def_cfa_offset 4 1478 .cfi_offset 14, -4 1479 0002 83B0 sub sp, sp, #12 1480 .cfi_def_cfa_offset 16 216:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[6]; 1481 .loc 1 216 3 view .LVU358 217:Core/Src/ADBMS_Abstraction.c **** return writeCMD(CLRAUX, buffer, 0); ARM GAS /tmp/cc16Zqrx.s page 35 1482 .loc 1 217 3 view .LVU359 1483 .loc 1 217 10 is_stmt 0 view .LVU360 1484 0004 0022 movs r2, #0 1485 0006 6946 mov r1, sp 1486 0008 40F21270 movw r0, #1810 1487 000c FFF7FEFF bl writeCMD 1488 .LVL142: 218:Core/Src/ADBMS_Abstraction.c **** } 1489 .loc 1 218 1 view .LVU361 1490 0010 03B0 add sp, sp, #12 1491 .cfi_def_cfa_offset 4 1492 @ sp needed 1493 0012 5DF804FB ldr pc, [sp], #4 1494 .cfi_endproc 1495 .LFE136: 1497 .section .text.amsClearCells,"ax",%progbits 1498 .align 1 1499 .global amsClearCells 1500 .syntax unified 1501 .thumb 1502 .thumb_func 1504 amsClearCells: 1505 .LFB137: 219:Core/Src/ADBMS_Abstraction.c **** 220:Core/Src/ADBMS_Abstraction.c **** uint8 amsClearCells() { 1506 .loc 1 220 23 is_stmt 1 view -0 1507 .cfi_startproc 1508 @ args = 0, pretend = 0, frame = 8 1509 @ frame_needed = 0, uses_anonymous_args = 0 1510 0000 00B5 push {lr} 1511 .cfi_def_cfa_offset 4 1512 .cfi_offset 14, -4 1513 0002 83B0 sub sp, sp, #12 1514 .cfi_def_cfa_offset 16 221:Core/Src/ADBMS_Abstraction.c **** uint8 buffer[6]; 1515 .loc 1 221 3 view .LVU363 222:Core/Src/ADBMS_Abstraction.c **** return writeCMD(CLRCELL, buffer, 0); 1516 .loc 1 222 3 view .LVU364 1517 .loc 1 222 10 is_stmt 0 view .LVU365 1518 0004 0022 movs r2, #0 1519 0006 6946 mov r1, sp 1520 0008 40F21170 movw r0, #1809 1521 000c FFF7FEFF bl writeCMD 1522 .LVL143: 223:Core/Src/ADBMS_Abstraction.c **** } 1523 .loc 1 223 1 view .LVU366 1524 0010 03B0 add sp, sp, #12 1525 .cfi_def_cfa_offset 4 1526 @ sp needed 1527 0012 5DF804FB ldr pc, [sp], #4 1528 .cfi_endproc 1529 .LFE137: 1531 .section .text.amsReadCellVoltages,"ax",%progbits 1532 .align 1 1533 .global amsReadCellVoltages 1534 .syntax unified 1535 .thumb ARM GAS /tmp/cc16Zqrx.s page 36 1536 .thumb_func 1538 amsReadCellVoltages: 1539 .LVL144: 1540 .LFB138: 224:Core/Src/ADBMS_Abstraction.c **** 225:Core/Src/ADBMS_Abstraction.c **** uint8 amsReadCellVoltages(Cell_Module* module) { 1541 .loc 1 225 48 is_stmt 1 view -0 1542 .cfi_startproc 1543 @ args = 0, pretend = 0, frame = 8 1544 @ frame_needed = 0, uses_anonymous_args = 0 1545 .loc 1 225 48 is_stmt 0 view .LVU368 1546 0000 30B5 push {r4, r5, lr} 1547 .cfi_def_cfa_offset 12 1548 .cfi_offset 4, -12 1549 .cfi_offset 5, -8 1550 .cfi_offset 14, -4 1551 0002 83B0 sub sp, sp, #12 1552 .cfi_def_cfa_offset 24 1553 0004 0446 mov r4, r0 226:Core/Src/ADBMS_Abstraction.c **** uint8 rxbuffer[CV_GROUP_A_SIZE]; 1554 .loc 1 226 3 is_stmt 1 view .LVU369 1555 .LBB26: 227:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVA, rxbuffer, CV_GROUP_A_SIZE)); 1556 .loc 1 227 3 view .LVU370 1557 0006 0622 movs r2, #6 1558 0008 6946 mov r1, sp 1559 000a 0420 movs r0, #4 1560 .LVL145: 1561 .loc 1 227 3 is_stmt 0 view .LVU371 1562 000c FFF7FEFF bl readCMD 1563 .LVL146: 1564 .loc 1 227 3 is_stmt 1 discriminator 1 view .LVU372 1565 0010 0546 mov r5, r0 1566 0012 10B1 cbz r0, .L72 1567 .LVL147: 1568 .L70: 1569 .loc 1 227 3 is_stmt 0 discriminator 1 view .LVU373 1570 .LBE26: 228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[1] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 230:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 231:Core/Src/ADBMS_Abstraction.c **** 232:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVB, rxbuffer, CV_GROUP_A_SIZE)); 233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 235:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 236:Core/Src/ADBMS_Abstraction.c **** 237:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVC, rxbuffer, CV_GROUP_A_SIZE)); 238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 240:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 241:Core/Src/ADBMS_Abstraction.c **** 242:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVD, rxbuffer, CV_GROUP_A_SIZE)); 243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 245:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 246:Core/Src/ADBMS_Abstraction.c **** ARM GAS /tmp/cc16Zqrx.s page 37 247:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVE, rxbuffer, CV_GROUP_A_SIZE)); 248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 250:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 251:Core/Src/ADBMS_Abstraction.c **** 252:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVF, rxbuffer, CV_GROUP_A_SIZE)); 253:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 254:Core/Src/ADBMS_Abstraction.c **** 255:Core/Src/ADBMS_Abstraction.c **** return 0; 256:Core/Src/ADBMS_Abstraction.c **** } 1571 .loc 1 256 1 view .LVU374 1572 0014 2846 mov r0, r5 1573 0016 03B0 add sp, sp, #12 1574 .cfi_remember_state 1575 .cfi_def_cfa_offset 12 1576 @ sp needed 1577 0018 30BD pop {r4, r5, pc} 1578 .LVL148: 1579 .L72: 1580 .cfi_restore_state 227:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(readCMD(RDCVA, rxbuffer, CV_GROUP_A_SIZE)); 1581 .loc 1 227 58 is_stmt 1 discriminator 2 view .LVU375 228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1582 .loc 1 228 3 view .LVU376 228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1583 .loc 1 228 29 is_stmt 0 view .LVU377 1584 001a 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 1585 .LVL149: 228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1586 .loc 1 228 29 view .LVU378 1587 001e 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 1588 0022 40EA0320 orr r0, r0, r3, lsl #8 1589 0026 00B2 sxth r0, r0 1590 0028 FFF7FEFF bl __aeabi_i2d 1591 .LVL150: 1592 002c C2A3 adr r3, .L73 1593 002e D3E90023 ldrd r2, [r3] 1594 0032 FFF7FEFF bl __aeabi_dmul 1595 .LVL151: 1596 0036 C2A3 adr r3, .L73+8 1597 0038 D3E90023 ldrd r2, [r3] 1598 003c FFF7FEFF bl __aeabi_dadd 1599 .LVL152: 228:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[0] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1600 .loc 1 228 27 view .LVU379 1601 0040 FFF7FEFF bl __aeabi_d2iz 1602 .LVL153: 1603 0044 2080 strh r0, [r4] @ movhi 229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1604 .loc 1 229 3 is_stmt 1 view .LVU380 229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1605 .loc 1 229 29 is_stmt 0 view .LVU381 1606 0046 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2 1607 004a 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 1608 004e 40EA0320 orr r0, r0, r3, lsl #8 1609 0052 00B2 sxth r0, r0 1610 0054 FFF7FEFF bl __aeabi_i2d ARM GAS /tmp/cc16Zqrx.s page 38 1611 .LVL154: 1612 0058 B7A3 adr r3, .L73 1613 005a D3E90023 ldrd r2, [r3] 1614 005e FFF7FEFF bl __aeabi_dmul 1615 .LVL155: 1616 0062 B7A3 adr r3, .L73+8 1617 0064 D3E90023 ldrd r2, [r3] 1618 0068 FFF7FEFF bl __aeabi_dadd 1619 .LVL156: 229:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[2] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1620 .loc 1 229 27 view .LVU382 1621 006c FFF7FEFF bl __aeabi_d2iz 1622 .LVL157: 1623 0070 6080 strh r0, [r4, #2] @ movhi 230:Core/Src/ADBMS_Abstraction.c **** 1624 .loc 1 230 3 is_stmt 1 view .LVU383 230:Core/Src/ADBMS_Abstraction.c **** 1625 .loc 1 230 29 is_stmt 0 view .LVU384 1626 0072 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2 1627 0076 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2 1628 007a 40EA0320 orr r0, r0, r3, lsl #8 1629 007e 00B2 sxth r0, r0 1630 0080 FFF7FEFF bl __aeabi_i2d 1631 .LVL158: 1632 0084 ACA3 adr r3, .L73 1633 0086 D3E90023 ldrd r2, [r3] 1634 008a FFF7FEFF bl __aeabi_dmul 1635 .LVL159: 1636 008e ACA3 adr r3, .L73+8 1637 0090 D3E90023 ldrd r2, [r3] 1638 0094 FFF7FEFF bl __aeabi_dadd 1639 .LVL160: 230:Core/Src/ADBMS_Abstraction.c **** 1640 .loc 1 230 27 view .LVU385 1641 0098 FFF7FEFF bl __aeabi_d2iz 1642 .LVL161: 1643 009c A080 strh r0, [r4, #4] @ movhi 1644 .LBB27: 232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1645 .loc 1 232 3 is_stmt 1 view .LVU386 1646 009e 0622 movs r2, #6 1647 00a0 6946 mov r1, sp 1648 00a2 1046 mov r0, r2 1649 00a4 FFF7FEFF bl readCMD 1650 .LVL162: 232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1651 .loc 1 232 3 discriminator 1 view .LVU387 1652 00a8 0546 mov r5, r0 1653 .LVL163: 232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1654 .loc 1 232 3 is_stmt 0 discriminator 1 view .LVU388 1655 00aa 0028 cmp r0, #0 1656 00ac B2D1 bne .L70 1657 .LBE27: 232:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[3] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1658 .loc 1 232 58 is_stmt 1 discriminator 2 view .LVU389 233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); ARM GAS /tmp/cc16Zqrx.s page 39 1659 .loc 1 233 3 view .LVU390 233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1660 .loc 1 233 29 is_stmt 0 view .LVU391 1661 00ae 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 1662 .LVL164: 233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1663 .loc 1 233 29 view .LVU392 1664 00b2 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 1665 00b6 40EA0320 orr r0, r0, r3, lsl #8 1666 00ba 00B2 sxth r0, r0 1667 00bc FFF7FEFF bl __aeabi_i2d 1668 .LVL165: 1669 00c0 9DA3 adr r3, .L73 1670 00c2 D3E90023 ldrd r2, [r3] 1671 00c6 FFF7FEFF bl __aeabi_dmul 1672 .LVL166: 1673 00ca 9DA3 adr r3, .L73+8 1674 00cc D3E90023 ldrd r2, [r3] 1675 00d0 FFF7FEFF bl __aeabi_dadd 1676 .LVL167: 233:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[4] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1677 .loc 1 233 27 view .LVU393 1678 00d4 FFF7FEFF bl __aeabi_d2iz 1679 .LVL168: 1680 00d8 E080 strh r0, [r4, #6] @ movhi 234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1681 .loc 1 234 3 is_stmt 1 view .LVU394 234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1682 .loc 1 234 29 is_stmt 0 view .LVU395 1683 00da 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2 1684 00de 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 1685 00e2 40EA0320 orr r0, r0, r3, lsl #8 1686 00e6 00B2 sxth r0, r0 1687 00e8 FFF7FEFF bl __aeabi_i2d 1688 .LVL169: 1689 00ec 92A3 adr r3, .L73 1690 00ee D3E90023 ldrd r2, [r3] 1691 00f2 FFF7FEFF bl __aeabi_dmul 1692 .LVL170: 1693 00f6 92A3 adr r3, .L73+8 1694 00f8 D3E90023 ldrd r2, [r3] 1695 00fc FFF7FEFF bl __aeabi_dadd 1696 .LVL171: 234:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[5] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1697 .loc 1 234 27 view .LVU396 1698 0100 FFF7FEFF bl __aeabi_d2iz 1699 .LVL172: 1700 0104 2081 strh r0, [r4, #8] @ movhi 235:Core/Src/ADBMS_Abstraction.c **** 1701 .loc 1 235 3 is_stmt 1 view .LVU397 235:Core/Src/ADBMS_Abstraction.c **** 1702 .loc 1 235 29 is_stmt 0 view .LVU398 1703 0106 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2 1704 010a 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2 1705 010e 40EA0320 orr r0, r0, r3, lsl #8 1706 0112 00B2 sxth r0, r0 1707 0114 FFF7FEFF bl __aeabi_i2d ARM GAS /tmp/cc16Zqrx.s page 40 1708 .LVL173: 1709 0118 87A3 adr r3, .L73 1710 011a D3E90023 ldrd r2, [r3] 1711 011e FFF7FEFF bl __aeabi_dmul 1712 .LVL174: 1713 0122 87A3 adr r3, .L73+8 1714 0124 D3E90023 ldrd r2, [r3] 1715 0128 FFF7FEFF bl __aeabi_dadd 1716 .LVL175: 235:Core/Src/ADBMS_Abstraction.c **** 1717 .loc 1 235 27 view .LVU399 1718 012c FFF7FEFF bl __aeabi_d2iz 1719 .LVL176: 1720 0130 6081 strh r0, [r4, #10] @ movhi 1721 .LBB28: 237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1722 .loc 1 237 3 is_stmt 1 view .LVU400 1723 0132 0622 movs r2, #6 1724 0134 6946 mov r1, sp 1725 0136 0820 movs r0, #8 1726 0138 FFF7FEFF bl readCMD 1727 .LVL177: 237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1728 .loc 1 237 3 discriminator 1 view .LVU401 1729 013c 0546 mov r5, r0 1730 .LVL178: 237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1731 .loc 1 237 3 is_stmt 0 discriminator 1 view .LVU402 1732 013e 0028 cmp r0, #0 1733 0140 7FF468AF bne .L70 1734 .LBE28: 237:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[6] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1735 .loc 1 237 58 is_stmt 1 discriminator 2 view .LVU403 238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1736 .loc 1 238 3 view .LVU404 238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1737 .loc 1 238 29 is_stmt 0 view .LVU405 1738 0144 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 1739 .LVL179: 238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1740 .loc 1 238 29 view .LVU406 1741 0148 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 1742 014c 40EA0320 orr r0, r0, r3, lsl #8 1743 0150 00B2 sxth r0, r0 1744 0152 FFF7FEFF bl __aeabi_i2d 1745 .LVL180: 1746 0156 78A3 adr r3, .L73 1747 0158 D3E90023 ldrd r2, [r3] 1748 015c FFF7FEFF bl __aeabi_dmul 1749 .LVL181: 1750 0160 77A3 adr r3, .L73+8 1751 0162 D3E90023 ldrd r2, [r3] 1752 0166 FFF7FEFF bl __aeabi_dadd 1753 .LVL182: 238:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[7] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1754 .loc 1 238 27 view .LVU407 1755 016a FFF7FEFF bl __aeabi_d2iz ARM GAS /tmp/cc16Zqrx.s page 41 1756 .LVL183: 1757 016e A081 strh r0, [r4, #12] @ movhi 239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1758 .loc 1 239 3 is_stmt 1 view .LVU408 239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1759 .loc 1 239 29 is_stmt 0 view .LVU409 1760 0170 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2 1761 0174 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 1762 0178 40EA0320 orr r0, r0, r3, lsl #8 1763 017c 00B2 sxth r0, r0 1764 017e FFF7FEFF bl __aeabi_i2d 1765 .LVL184: 1766 0182 6DA3 adr r3, .L73 1767 0184 D3E90023 ldrd r2, [r3] 1768 0188 FFF7FEFF bl __aeabi_dmul 1769 .LVL185: 1770 018c 6CA3 adr r3, .L73+8 1771 018e D3E90023 ldrd r2, [r3] 1772 0192 FFF7FEFF bl __aeabi_dadd 1773 .LVL186: 239:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[8] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1774 .loc 1 239 27 view .LVU410 1775 0196 FFF7FEFF bl __aeabi_d2iz 1776 .LVL187: 1777 019a E081 strh r0, [r4, #14] @ movhi 240:Core/Src/ADBMS_Abstraction.c **** 1778 .loc 1 240 3 is_stmt 1 view .LVU411 240:Core/Src/ADBMS_Abstraction.c **** 1779 .loc 1 240 29 is_stmt 0 view .LVU412 1780 019c 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2 1781 01a0 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2 1782 01a4 40EA0320 orr r0, r0, r3, lsl #8 1783 01a8 00B2 sxth r0, r0 1784 01aa FFF7FEFF bl __aeabi_i2d 1785 .LVL188: 1786 01ae 62A3 adr r3, .L73 1787 01b0 D3E90023 ldrd r2, [r3] 1788 01b4 FFF7FEFF bl __aeabi_dmul 1789 .LVL189: 1790 01b8 61A3 adr r3, .L73+8 1791 01ba D3E90023 ldrd r2, [r3] 1792 01be FFF7FEFF bl __aeabi_dadd 1793 .LVL190: 240:Core/Src/ADBMS_Abstraction.c **** 1794 .loc 1 240 27 view .LVU413 1795 01c2 FFF7FEFF bl __aeabi_d2iz 1796 .LVL191: 1797 01c6 2082 strh r0, [r4, #16] @ movhi 1798 .LBB29: 242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1799 .loc 1 242 3 is_stmt 1 view .LVU414 1800 01c8 0622 movs r2, #6 1801 01ca 6946 mov r1, sp 1802 01cc 0A20 movs r0, #10 1803 01ce FFF7FEFF bl readCMD 1804 .LVL192: 242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); ARM GAS /tmp/cc16Zqrx.s page 42 1805 .loc 1 242 3 discriminator 1 view .LVU415 1806 01d2 0546 mov r5, r0 1807 .LVL193: 242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1808 .loc 1 242 3 is_stmt 0 discriminator 1 view .LVU416 1809 01d4 0028 cmp r0, #0 1810 01d6 7FF41DAF bne .L70 1811 .LBE29: 242:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[9] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1812 .loc 1 242 58 is_stmt 1 discriminator 2 view .LVU417 243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1813 .loc 1 243 3 view .LVU418 243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1814 .loc 1 243 30 is_stmt 0 view .LVU419 1815 01da 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 1816 .LVL194: 243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1817 .loc 1 243 30 view .LVU420 1818 01de 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 1819 01e2 40EA0320 orr r0, r0, r3, lsl #8 1820 01e6 00B2 sxth r0, r0 1821 01e8 FFF7FEFF bl __aeabi_i2d 1822 .LVL195: 1823 01ec 52A3 adr r3, .L73 1824 01ee D3E90023 ldrd r2, [r3] 1825 01f2 FFF7FEFF bl __aeabi_dmul 1826 .LVL196: 1827 01f6 52A3 adr r3, .L73+8 1828 01f8 D3E90023 ldrd r2, [r3] 1829 01fc FFF7FEFF bl __aeabi_dadd 1830 .LVL197: 243:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[10] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1831 .loc 1 243 28 view .LVU421 1832 0200 FFF7FEFF bl __aeabi_d2iz 1833 .LVL198: 1834 0204 6082 strh r0, [r4, #18] @ movhi 244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1835 .loc 1 244 3 is_stmt 1 view .LVU422 244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1836 .loc 1 244 30 is_stmt 0 view .LVU423 1837 0206 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2 1838 020a 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 1839 020e 40EA0320 orr r0, r0, r3, lsl #8 1840 0212 00B2 sxth r0, r0 1841 0214 FFF7FEFF bl __aeabi_i2d 1842 .LVL199: 1843 0218 47A3 adr r3, .L73 1844 021a D3E90023 ldrd r2, [r3] 1845 021e FFF7FEFF bl __aeabi_dmul 1846 .LVL200: 1847 0222 47A3 adr r3, .L73+8 1848 0224 D3E90023 ldrd r2, [r3] 1849 0228 FFF7FEFF bl __aeabi_dadd 1850 .LVL201: 244:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[11] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1851 .loc 1 244 28 view .LVU424 1852 022c FFF7FEFF bl __aeabi_d2iz ARM GAS /tmp/cc16Zqrx.s page 43 1853 .LVL202: 1854 0230 A082 strh r0, [r4, #20] @ movhi 245:Core/Src/ADBMS_Abstraction.c **** 1855 .loc 1 245 3 is_stmt 1 view .LVU425 245:Core/Src/ADBMS_Abstraction.c **** 1856 .loc 1 245 30 is_stmt 0 view .LVU426 1857 0232 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2 1858 0236 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2 1859 023a 40EA0320 orr r0, r0, r3, lsl #8 1860 023e 00B2 sxth r0, r0 1861 0240 FFF7FEFF bl __aeabi_i2d 1862 .LVL203: 1863 0244 3CA3 adr r3, .L73 1864 0246 D3E90023 ldrd r2, [r3] 1865 024a FFF7FEFF bl __aeabi_dmul 1866 .LVL204: 1867 024e 3CA3 adr r3, .L73+8 1868 0250 D3E90023 ldrd r2, [r3] 1869 0254 FFF7FEFF bl __aeabi_dadd 1870 .LVL205: 245:Core/Src/ADBMS_Abstraction.c **** 1871 .loc 1 245 28 view .LVU427 1872 0258 FFF7FEFF bl __aeabi_d2iz 1873 .LVL206: 1874 025c E082 strh r0, [r4, #22] @ movhi 1875 .LBB30: 247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1876 .loc 1 247 3 is_stmt 1 view .LVU428 1877 025e 0622 movs r2, #6 1878 0260 6946 mov r1, sp 1879 0262 0920 movs r0, #9 1880 0264 FFF7FEFF bl readCMD 1881 .LVL207: 247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1882 .loc 1 247 3 discriminator 1 view .LVU429 1883 0268 0546 mov r5, r0 1884 .LVL208: 247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1885 .loc 1 247 3 is_stmt 0 discriminator 1 view .LVU430 1886 026a 0028 cmp r0, #0 1887 026c 7FF4D2AE bne .L70 1888 .LBE30: 247:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[12] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1889 .loc 1 247 58 is_stmt 1 discriminator 2 view .LVU431 248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1890 .loc 1 248 3 view .LVU432 248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1891 .loc 1 248 30 is_stmt 0 view .LVU433 1892 0270 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 1893 .LVL209: 248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1894 .loc 1 248 30 view .LVU434 1895 0274 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 1896 0278 40EA0320 orr r0, r0, r3, lsl #8 1897 027c 00B2 sxth r0, r0 1898 027e FFF7FEFF bl __aeabi_i2d 1899 .LVL210: ARM GAS /tmp/cc16Zqrx.s page 44 1900 0282 2DA3 adr r3, .L73 1901 0284 D3E90023 ldrd r2, [r3] 1902 0288 FFF7FEFF bl __aeabi_dmul 1903 .LVL211: 1904 028c 2CA3 adr r3, .L73+8 1905 028e D3E90023 ldrd r2, [r3] 1906 0292 FFF7FEFF bl __aeabi_dadd 1907 .LVL212: 248:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[13] = mV_from_ADBMS6830(rxbuffer[2] | (rxbuffer[3] << 8)); 1908 .loc 1 248 28 view .LVU435 1909 0296 FFF7FEFF bl __aeabi_d2iz 1910 .LVL213: 1911 029a 2083 strh r0, [r4, #24] @ movhi 249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1912 .loc 1 249 3 is_stmt 1 view .LVU436 249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1913 .loc 1 249 30 is_stmt 0 view .LVU437 1914 029c 9DF80200 ldrb r0, [sp, #2] @ zero_extendqisi2 1915 02a0 9DF80330 ldrb r3, [sp, #3] @ zero_extendqisi2 1916 02a4 40EA0320 orr r0, r0, r3, lsl #8 1917 02a8 00B2 sxth r0, r0 1918 02aa FFF7FEFF bl __aeabi_i2d 1919 .LVL214: 1920 02ae 22A3 adr r3, .L73 1921 02b0 D3E90023 ldrd r2, [r3] 1922 02b4 FFF7FEFF bl __aeabi_dmul 1923 .LVL215: 1924 02b8 21A3 adr r3, .L73+8 1925 02ba D3E90023 ldrd r2, [r3] 1926 02be FFF7FEFF bl __aeabi_dadd 1927 .LVL216: 249:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[14] = mV_from_ADBMS6830(rxbuffer[4] | (rxbuffer[5] << 8)); 1928 .loc 1 249 28 view .LVU438 1929 02c2 FFF7FEFF bl __aeabi_d2iz 1930 .LVL217: 1931 02c6 6083 strh r0, [r4, #26] @ movhi 250:Core/Src/ADBMS_Abstraction.c **** 1932 .loc 1 250 3 is_stmt 1 view .LVU439 250:Core/Src/ADBMS_Abstraction.c **** 1933 .loc 1 250 30 is_stmt 0 view .LVU440 1934 02c8 9DF80400 ldrb r0, [sp, #4] @ zero_extendqisi2 1935 02cc 9DF80530 ldrb r3, [sp, #5] @ zero_extendqisi2 1936 02d0 40EA0320 orr r0, r0, r3, lsl #8 1937 02d4 00B2 sxth r0, r0 1938 02d6 FFF7FEFF bl __aeabi_i2d 1939 .LVL218: 1940 02da 17A3 adr r3, .L73 1941 02dc D3E90023 ldrd r2, [r3] 1942 02e0 FFF7FEFF bl __aeabi_dmul 1943 .LVL219: 1944 02e4 16A3 adr r3, .L73+8 1945 02e6 D3E90023 ldrd r2, [r3] 1946 02ea FFF7FEFF bl __aeabi_dadd 1947 .LVL220: 250:Core/Src/ADBMS_Abstraction.c **** 1948 .loc 1 250 28 view .LVU441 1949 02ee FFF7FEFF bl __aeabi_d2iz ARM GAS /tmp/cc16Zqrx.s page 45 1950 .LVL221: 1951 02f2 A083 strh r0, [r4, #28] @ movhi 1952 .LBB31: 252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1953 .loc 1 252 3 is_stmt 1 view .LVU442 1954 02f4 0622 movs r2, #6 1955 02f6 6946 mov r1, sp 1956 02f8 0B20 movs r0, #11 1957 02fa FFF7FEFF bl readCMD 1958 .LVL222: 252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1959 .loc 1 252 3 discriminator 1 view .LVU443 1960 02fe 0546 mov r5, r0 1961 .LVL223: 252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1962 .loc 1 252 3 is_stmt 0 discriminator 1 view .LVU444 1963 0300 0028 cmp r0, #0 1964 0302 7FF487AE bne .L70 1965 .LBE31: 252:Core/Src/ADBMS_Abstraction.c **** module->cellVoltages[15] = mV_from_ADBMS6830(rxbuffer[0] | (rxbuffer[1] << 8)); 1966 .loc 1 252 58 is_stmt 1 discriminator 2 view .LVU445 253:Core/Src/ADBMS_Abstraction.c **** 1967 .loc 1 253 3 view .LVU446 253:Core/Src/ADBMS_Abstraction.c **** 1968 .loc 1 253 30 is_stmt 0 view .LVU447 1969 0306 9DF80000 ldrb r0, [sp] @ zero_extendqisi2 1970 .LVL224: 253:Core/Src/ADBMS_Abstraction.c **** 1971 .loc 1 253 30 view .LVU448 1972 030a 9DF80130 ldrb r3, [sp, #1] @ zero_extendqisi2 1973 030e 40EA0320 orr r0, r0, r3, lsl #8 1974 0312 00B2 sxth r0, r0 1975 0314 FFF7FEFF bl __aeabi_i2d 1976 .LVL225: 1977 0318 07A3 adr r3, .L73 1978 031a D3E90023 ldrd r2, [r3] 1979 031e FFF7FEFF bl __aeabi_dmul 1980 .LVL226: 1981 0322 07A3 adr r3, .L73+8 1982 0324 D3E90023 ldrd r2, [r3] 1983 0328 FFF7FEFF bl __aeabi_dadd 1984 .LVL227: 253:Core/Src/ADBMS_Abstraction.c **** 1985 .loc 1 253 28 view .LVU449 1986 032c FFF7FEFF bl __aeabi_d2iz 1987 .LVL228: 1988 0330 E083 strh r0, [r4, #30] @ movhi 255:Core/Src/ADBMS_Abstraction.c **** } 1989 .loc 1 255 3 is_stmt 1 view .LVU450 255:Core/Src/ADBMS_Abstraction.c **** } 1990 .loc 1 255 10 is_stmt 0 view .LVU451 1991 0332 6FE6 b .L70 1992 .L74: 1993 0334 AFF30080 .align 3 1994 .L73: 1995 0338 33333333 .word 858993459 1996 033c 3333C33F .word 1069757235 ARM GAS /tmp/cc16Zqrx.s page 46 1997 0340 00000000 .word 0 1998 0344 00709740 .word 1083666432 1999 .cfi_endproc 2000 .LFE138: 2002 .section .text.amsCellMeasurement,"ax",%progbits 2003 .align 1 2004 .global amsCellMeasurement 2005 .syntax unified 2006 .thumb 2007 .thumb_func 2009 amsCellMeasurement: 2010 .LVL229: 2011 .LFB127: 63:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped 2012 .loc 1 63 47 is_stmt 1 view -0 2013 .cfi_startproc 2014 @ args = 0, pretend = 0, frame = 0 2015 @ frame_needed = 0, uses_anonymous_args = 0 63:Core/Src/ADBMS_Abstraction.c **** #warning check conversion counter to ensure that continous conversion has not been stopped 2016 .loc 1 63 47 is_stmt 0 view .LVU453 2017 0000 08B5 push {r3, lr} 2018 .cfi_def_cfa_offset 8 2019 .cfi_offset 3, -8 2020 .cfi_offset 14, -4 66:Core/Src/ADBMS_Abstraction.c **** } 2021 .loc 1 66 3 is_stmt 1 view .LVU454 66:Core/Src/ADBMS_Abstraction.c **** } 2022 .loc 1 66 10 is_stmt 0 view .LVU455 2023 0002 FFF7FEFF bl amsReadCellVoltages 2024 .LVL230: 67:Core/Src/ADBMS_Abstraction.c **** 2025 .loc 1 67 1 view .LVU456 2026 0006 08BD pop {r3, pc} 2027 .cfi_endproc 2028 .LFE127: 2030 .section .text.amsWriteComm,"ax",%progbits 2031 .align 1 2032 .global amsWriteComm 2033 .syntax unified 2034 .thumb 2035 .thumb_func 2037 amsWriteComm: 2038 .LVL231: 2039 .LFB139: 257:Core/Src/ADBMS_Abstraction.c **** 258:Core/Src/ADBMS_Abstraction.c **** uint8_t amsWriteComm(uint8_t device, uint8_t addr, uint8_t data) { 2040 .loc 1 258 66 is_stmt 1 view -0 2041 .cfi_startproc 2042 @ args = 0, pretend = 0, frame = 16 2043 @ frame_needed = 0, uses_anonymous_args = 0 2044 .loc 1 258 66 is_stmt 0 view .LVU458 2045 0000 00B5 push {lr} 2046 .cfi_def_cfa_offset 4 2047 .cfi_offset 14, -4 2048 0002 85B0 sub sp, sp, #20 2049 .cfi_def_cfa_offset 24 259:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByte = (device << 1); ARM GAS /tmp/cc16Zqrx.s page 47 2050 .loc 1 259 3 is_stmt 1 view .LVU459 2051 .loc 1 259 11 is_stmt 0 view .LVU460 2052 0004 4000 lsls r0, r0, #1 2053 .LVL232: 260:Core/Src/ADBMS_Abstraction.c **** uint8_t txbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByte, 2054 .loc 1 260 3 is_stmt 1 view .LVU461 2055 .loc 1 260 11 is_stmt 0 view .LVU462 2056 0006 6723 movs r3, #103 2057 0008 8DF80830 strb r3, [sp, #8] 2058 000c 8DF80900 strb r0, [sp, #9] 2059 0010 0723 movs r3, #7 2060 0012 8DF80A30 strb r3, [sp, #10] 2061 0016 8DF80B10 strb r1, [sp, #11] 2062 001a 0123 movs r3, #1 2063 001c 8DF80C30 strb r3, [sp, #12] 2064 0020 8DF80D20 strb r2, [sp, #13] 2065 .LBB32: 261:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | SLV_ACK, addr, 262:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | SLV_ACK_STP, data}; 263:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, txbuf, COMM_GROUP_SIZE)); 2066 .loc 1 263 3 is_stmt 1 view .LVU463 2067 0024 0622 movs r2, #6 2068 .LVL233: 2069 .loc 1 263 3 is_stmt 0 view .LVU464 2070 0026 02A9 add r1, sp, #8 2071 .LVL234: 2072 .loc 1 263 3 view .LVU465 2073 0028 40F22170 movw r0, #1825 2074 .LVL235: 2075 .loc 1 263 3 view .LVU466 2076 002c FFF7FEFF bl writeCMD 2077 .LVL236: 2078 .loc 1 263 3 is_stmt 1 discriminator 1 view .LVU467 2079 0030 0346 mov r3, r0 2080 0032 18B1 cbz r0, .L82 2081 .LVL237: 2082 .L78: 2083 .loc 1 263 3 is_stmt 0 discriminator 1 view .LVU468 2084 .LBE32: 264:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0}; 265:Core/Src/ADBMS_Abstraction.c **** readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE); 266:Core/Src/ADBMS_Abstraction.c **** if (rxbuf[6] != txbuf[6]) { 267:Core/Src/ADBMS_Abstraction.c **** while(1){} 268:Core/Src/ADBMS_Abstraction.c **** } 269:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 72, NULL, 0)); 270:Core/Src/ADBMS_Abstraction.c **** return 0; 271:Core/Src/ADBMS_Abstraction.c **** } 2085 .loc 1 271 1 view .LVU469 2086 0034 1846 mov r0, r3 2087 0036 05B0 add sp, sp, #20 2088 .cfi_remember_state 2089 .cfi_def_cfa_offset 4 2090 @ sp needed 2091 0038 5DF804FB ldr pc, [sp], #4 2092 .LVL238: 2093 .L82: 2094 .cfi_restore_state ARM GAS /tmp/cc16Zqrx.s page 48 263:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0}; 2095 .loc 1 263 57 is_stmt 1 discriminator 2 view .LVU470 264:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0}; 2096 .loc 1 264 3 view .LVU471 264:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {0,0,0,0,0,0}; 2097 .loc 1 264 11 is_stmt 0 view .LVU472 2098 003c 0023 movs r3, #0 2099 003e 0093 str r3, [sp] 2100 0040 ADF80430 strh r3, [sp, #4] @ movhi 265:Core/Src/ADBMS_Abstraction.c **** if (rxbuf[6] != txbuf[6]) { 2101 .loc 1 265 3 is_stmt 1 view .LVU473 2102 0044 0622 movs r2, #6 2103 0046 6946 mov r1, sp 2104 0048 40F22270 movw r0, #1826 2105 .LVL239: 265:Core/Src/ADBMS_Abstraction.c **** if (rxbuf[6] != txbuf[6]) { 2106 .loc 1 265 3 is_stmt 0 view .LVU474 2107 004c FFF7FEFF bl readCMD 2108 .LVL240: 266:Core/Src/ADBMS_Abstraction.c **** while(1){} 2109 .loc 1 266 3 is_stmt 1 view .LVU475 266:Core/Src/ADBMS_Abstraction.c **** while(1){} 2110 .loc 1 266 12 is_stmt 0 view .LVU476 2111 0050 9DF80620 ldrb r2, [sp, #6] @ zero_extendqisi2 266:Core/Src/ADBMS_Abstraction.c **** while(1){} 2112 .loc 1 266 24 view .LVU477 2113 0054 9DF80E30 ldrb r3, [sp, #14] @ zero_extendqisi2 266:Core/Src/ADBMS_Abstraction.c **** while(1){} 2114 .loc 1 266 6 view .LVU478 2115 0058 9A42 cmp r2, r3 2116 005a 00D0 beq .L79 2117 .L80: 267:Core/Src/ADBMS_Abstraction.c **** } 2118 .loc 1 267 5 is_stmt 1 view .LVU479 267:Core/Src/ADBMS_Abstraction.c **** } 2119 .loc 1 267 14 view .LVU480 267:Core/Src/ADBMS_Abstraction.c **** } 2120 .loc 1 267 10 view .LVU481 2121 005c FEE7 b .L80 2122 .L79: 2123 .LBB33: 269:Core/Src/ADBMS_Abstraction.c **** return 0; 2124 .loc 1 269 3 view .LVU482 2125 005e 0023 movs r3, #0 2126 0060 1A46 mov r2, r3 2127 0062 4821 movs r1, #72 2128 0064 40F22370 movw r0, #1827 2129 0068 FFF7FEFF bl writeCMD_I2C 2130 .LVL241: 2131 006c 0346 mov r3, r0 2132 .LVL242: 269:Core/Src/ADBMS_Abstraction.c **** return 0; 2133 .loc 1 269 3 discriminator 1 view .LVU483 2134 006e E1E7 b .L78 2135 .LBE33: 2136 .cfi_endproc 2137 .LFE139: ARM GAS /tmp/cc16Zqrx.s page 49 2139 .section .text.amsReadComm,"ax",%progbits 2140 .align 1 2141 .global amsReadComm 2142 .syntax unified 2143 .thumb 2144 .thumb_func 2146 amsReadComm: 2147 .LVL243: 2148 .LFB140: 272:Core/Src/ADBMS_Abstraction.c **** 273:Core/Src/ADBMS_Abstraction.c **** uint8_t amsReadComm(uint8_t device, uint8_t addr, uint8_t* buf) { 2149 .loc 1 273 65 view -0 2150 .cfi_startproc 2151 @ args = 0, pretend = 0, frame = 16 2152 @ frame_needed = 0, uses_anonymous_args = 0 2153 .loc 1 273 65 is_stmt 0 view .LVU485 2154 0000 70B5 push {r4, r5, r6, lr} 2155 .cfi_def_cfa_offset 16 2156 .cfi_offset 4, -16 2157 .cfi_offset 5, -12 2158 .cfi_offset 6, -8 2159 .cfi_offset 14, -4 2160 0002 84B0 sub sp, sp, #16 2161 .cfi_def_cfa_offset 32 2162 0004 0446 mov r4, r0 2163 0006 1546 mov r5, r2 274:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteW = (device << 1); 2164 .loc 1 274 3 is_stmt 1 view .LVU486 2165 .loc 1 274 11 is_stmt 0 view .LVU487 2166 0008 4300 lsls r3, r0, #1 2167 .LVL244: 275:Core/Src/ADBMS_Abstraction.c **** uint8_t txbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteW, 2168 .loc 1 275 3 is_stmt 1 view .LVU488 2169 .loc 1 275 11 is_stmt 0 view .LVU489 2170 000a 6722 movs r2, #103 2171 .LVL245: 2172 .loc 1 275 11 view .LVU490 2173 000c 8DF80820 strb r2, [sp, #8] 2174 0010 8DF80930 strb r3, [sp, #9] 2175 0014 0723 movs r3, #7 2176 .LVL246: 2177 .loc 1 275 11 view .LVU491 2178 0016 8DF80A30 strb r3, [sp, #10] 2179 001a 8DF80B10 strb r1, [sp, #11] 2180 001e 0023 movs r3, #0 2181 0020 8DF80C30 strb r3, [sp, #12] 2182 0024 8DF80D30 strb r3, [sp, #13] 2183 .LBB34: 276:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | SLV_ACK, addr, 277:Core/Src/ADBMS_Abstraction.c **** 0, 0}; 278:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, txbuf, COMM_GROUP_SIZE)); 2184 .loc 1 278 3 is_stmt 1 view .LVU492 2185 0028 0622 movs r2, #6 2186 002a 02A9 add r1, sp, #8 2187 .LVL247: 2188 .loc 1 278 3 is_stmt 0 view .LVU493 2189 002c 40F22170 movw r0, #1825 ARM GAS /tmp/cc16Zqrx.s page 50 2190 .LVL248: 2191 .loc 1 278 3 view .LVU494 2192 0030 FFF7FEFF bl writeCMD 2193 .LVL249: 2194 .loc 1 278 3 is_stmt 1 discriminator 1 view .LVU495 2195 0034 0646 mov r6, r0 2196 0036 10B1 cbz r0, .L86 2197 .LVL250: 2198 .L84: 2199 .loc 1 278 3 is_stmt 0 discriminator 1 view .LVU496 2200 .LBE34: 279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 280:Core/Src/ADBMS_Abstraction.c **** 281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1; 282:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteR, 283:Core/Src/ADBMS_Abstraction.c **** BLANK << 4 | MSTR_NO_ACK_STP, 0, 284:Core/Src/ADBMS_Abstraction.c **** 0, 0}; 285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE)); 286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) { 288:Core/Src/ADBMS_Abstraction.c **** return 0; 289:Core/Src/ADBMS_Abstraction.c **** } 290:Core/Src/ADBMS_Abstraction.c **** 291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4]; 292:Core/Src/ADBMS_Abstraction.c **** 293:Core/Src/ADBMS_Abstraction.c **** return 0; 294:Core/Src/ADBMS_Abstraction.c **** }... 2201 .loc 1 294 1 view .LVU497 2202 0038 3046 mov r0, r6 2203 003a 04B0 add sp, sp, #16 2204 .cfi_remember_state 2205 .cfi_def_cfa_offset 16 2206 @ sp needed 2207 003c 70BD pop {r4, r5, r6, pc} 2208 .LVL251: 2209 .L86: 2210 .cfi_restore_state 278:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, txbuf, COMM_GROUP_SIZE)); 2211 .loc 1 278 57 is_stmt 1 discriminator 2 view .LVU498 2212 .LBB35: 279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2213 .loc 1 279 3 view .LVU499 2214 003e 0023 movs r3, #0 2215 0040 1A46 mov r2, r3 2216 0042 3021 movs r1, #48 2217 0044 40F22370 movw r0, #1827 2218 .LVL252: 279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2219 .loc 1 279 3 is_stmt 0 view .LVU500 2220 0048 FFF7FEFF bl writeCMD_I2C 2221 .LVL253: 279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2222 .loc 1 279 3 is_stmt 1 discriminator 1 view .LVU501 2223 004c 0646 mov r6, r0 2224 .LVL254: 279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2225 .loc 1 279 3 is_stmt 0 discriminator 1 view .LVU502 ARM GAS /tmp/cc16Zqrx.s page 51 2226 004e 0028 cmp r0, #0 2227 0050 F2D1 bne .L84 2228 .LBE35: 279:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2229 .loc 1 279 50 is_stmt 1 discriminator 2 view .LVU503 281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1; 2230 .loc 1 281 3 view .LVU504 281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1; 2231 .loc 1 281 37 is_stmt 0 view .LVU505 2232 0052 6400 lsls r4, r4, #1 2233 .LVL255: 281:Core/Src/ADBMS_Abstraction.c **** uint8_t ctrlByteR = (device << 1) | 1; 2234 .loc 1 281 37 view .LVU506 2235 0054 44F00104 orr r4, r4, #1 2236 .LVL256: 282:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteR, 2237 .loc 1 282 3 is_stmt 1 view .LVU507 282:Core/Src/ADBMS_Abstraction.c **** uint8_t rxbuf[6] = {I2C_STRT << 4 | SLV_ACK, ctrlByteR, 2238 .loc 1 282 11 is_stmt 0 view .LVU508 2239 0058 6723 movs r3, #103 2240 005a 8DF80030 strb r3, [sp] 2241 005e 8DF80140 strb r4, [sp, #1] 2242 0062 0923 movs r3, #9 2243 0064 8DF80230 strb r3, [sp, #2] 2244 0068 0023 movs r3, #0 2245 006a 8DF80330 strb r3, [sp, #3] 2246 006e 8DF80430 strb r3, [sp, #4] 2247 0072 8DF80530 strb r3, [sp, #5] 2248 .LBB36: 285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE)); 2249 .loc 1 285 3 is_stmt 1 view .LVU509 2250 0076 0622 movs r2, #6 2251 0078 6946 mov r1, sp 2252 007a 40F22170 movw r0, #1825 2253 .LVL257: 285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE)); 2254 .loc 1 285 3 is_stmt 0 view .LVU510 2255 007e FFF7FEFF bl writeCMD 2256 .LVL258: 285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE)); 2257 .loc 1 285 3 is_stmt 1 discriminator 1 view .LVU511 2258 0082 0646 mov r6, r0 2259 .LVL259: 285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE)); 2260 .loc 1 285 3 is_stmt 0 discriminator 1 view .LVU512 2261 0084 0028 cmp r0, #0 2262 0086 D7D1 bne .L84 2263 .LBE36: 285:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD(WRCOMM, rxbuf, COMM_GROUP_SIZE)); 2264 .loc 1 285 57 is_stmt 1 discriminator 2 view .LVU513 2265 .LBB37: 286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2266 .loc 1 286 3 view .LVU514 2267 0088 0023 movs r3, #0 2268 008a 1A46 mov r2, r3 2269 008c 3021 movs r1, #48 2270 008e 40F22370 movw r0, #1827 ARM GAS /tmp/cc16Zqrx.s page 52 2271 .LVL260: 286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2272 .loc 1 286 3 is_stmt 0 view .LVU515 2273 0092 FFF7FEFF bl writeCMD_I2C 2274 .LVL261: 286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2275 .loc 1 286 3 is_stmt 1 discriminator 1 view .LVU516 2276 0096 0646 mov r6, r0 2277 .LVL262: 286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2278 .loc 1 286 3 is_stmt 0 discriminator 1 view .LVU517 2279 0098 0028 cmp r0, #0 2280 009a CDD1 bne .L84 2281 .LBE37: 286:Core/Src/ADBMS_Abstraction.c **** CHECK_RETURN(writeCMD_I2C(STCOMM, 48, NULL, 0)); 2282 .loc 1 286 50 is_stmt 1 discriminator 2 view .LVU518 287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) { 2283 .loc 1 287 3 view .LVU519 287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) { 2284 .loc 1 287 6 is_stmt 0 view .LVU520 2285 009c 0622 movs r2, #6 2286 009e 6946 mov r1, sp 2287 00a0 40F22270 movw r0, #1826 2288 .LVL263: 287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) { 2289 .loc 1 287 6 view .LVU521 2290 00a4 FFF7FEFF bl readCMD 2291 .LVL264: 287:Core/Src/ADBMS_Abstraction.c **** if(readCMD(RDCOMM, rxbuf, COMM_GROUP_SIZE) != 0) { 2292 .loc 1 287 5 discriminator 1 view .LVU522 2293 00a8 0028 cmp r0, #0 2294 00aa C5D1 bne .L84 291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4]; 2295 .loc 1 291 3 is_stmt 1 view .LVU523 291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4]; 2296 .loc 1 291 15 is_stmt 0 view .LVU524 2297 00ac 9DF80420 ldrb r2, [sp, #4] @ zero_extendqisi2 291:Core/Src/ADBMS_Abstraction.c **** *buf = rxbuf[4]; 2298 .loc 1 291 8 view .LVU525 2299 00b0 2A70 strb r2, [r5] 293:Core/Src/ADBMS_Abstraction.c **** return 0; 2300 .loc 1 293 3 is_stmt 1 view .LVU526 293:Core/Src/ADBMS_Abstraction.c **** return 0; 2301 .loc 1 293 10 is_stmt 0 view .LVU527 2302 00b2 0646 mov r6, r0 2303 .LVL265: 293:Core/Src/ADBMS_Abstraction.c **** return 0; 2304 .loc 1 293 10 view .LVU528 2305 00b4 C0E7 b .L84 2306 .cfi_endproc 2307 .LFE140: 2309 .global numberofauxchannels 2310 .section .bss.numberofauxchannels,"aw",%nobits 2313 numberofauxchannels: 2314 0000 00 .space 1 2315 .global numberofcells 2316 .section .bss.numberofcells,"aw",%nobits ARM GAS /tmp/cc16Zqrx.s page 53 2319 numberofcells: 2320 0000 00 .space 1 2321 .text 2322 .Letext0: 2323 .file 2 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm- 2324 .file 3 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm- 2325 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h" 2326 .file 5 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm- 2327 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 2328 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 2329 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h" 2330 .file 9 "Core/Inc/ADBMS_LL_Driver.h" 2331 .file 10 "Core/Inc/ADBMS_Abstraction.h" ARM GAS /tmp/cc16Zqrx.s page 54 DEFINED SYMBOLS *ABS*:00000000 ADBMS_Abstraction.c /tmp/cc16Zqrx.s:21 .text.amsConfig:00000000 $t /tmp/cc16Zqrx.s:27 .text.amsConfig:00000000 amsConfig /tmp/cc16Zqrx.s:83 .text.amsWakeUp:00000000 $t /tmp/cc16Zqrx.s:89 .text.amsWakeUp:00000000 amsWakeUp /tmp/cc16Zqrx.s:117 .text.amsConfigCellMeasurement:00000000 $t /tmp/cc16Zqrx.s:123 .text.amsConfigCellMeasurement:00000000 amsConfigCellMeasurement /tmp/cc16Zqrx.s:144 .text.amsConfigCellMeasurement:00000008 $d /tmp/cc16Zqrx.s:2319 .bss.numberofcells:00000000 numberofcells /tmp/cc16Zqrx.s:154 .text.amsAuxAndStatusMeasurement:00000000 $t /tmp/cc16Zqrx.s:160 .text.amsAuxAndStatusMeasurement:00000000 amsAuxAndStatusMeasurement /tmp/cc16Zqrx.s:727 .text.amsAuxAndStatusMeasurement:00000400 $d /tmp/cc16Zqrx.s:736 .text.amsConfigBalancing:00000000 $t /tmp/cc16Zqrx.s:742 .text.amsConfigBalancing:00000000 amsConfigBalancing /tmp/cc16Zqrx.s:949 .text.amsStartBalancing:00000000 $t /tmp/cc16Zqrx.s:955 .text.amsStartBalancing:00000000 amsStartBalancing /tmp/cc16Zqrx.s:982 .text.amsStopBalancing:00000000 $t /tmp/cc16Zqrx.s:988 .text.amsStopBalancing:00000000 amsStopBalancing /tmp/cc16Zqrx.s:1011 .text.amsSelfTest:00000000 $t /tmp/cc16Zqrx.s:1017 .text.amsSelfTest:00000000 amsSelfTest /tmp/cc16Zqrx.s:1032 .text.amsConfigOverUnderVoltage:00000000 $t /tmp/cc16Zqrx.s:1038 .text.amsConfigOverUnderVoltage:00000000 amsConfigOverUnderVoltage /tmp/cc16Zqrx.s:1150 .rodata.amsReset.str1.4:00000000 $d /tmp/cc16Zqrx.s:1154 .text.amsReset:00000000 $t /tmp/cc16Zqrx.s:1160 .text.amsReset:00000000 amsReset /tmp/cc16Zqrx.s:1288 .text.amsReset:00000098 $d /tmp/cc16Zqrx.s:1294 .text.initAMS:00000000 $t /tmp/cc16Zqrx.s:1300 .text.initAMS:00000000 initAMS /tmp/cc16Zqrx.s:1338 .text.initAMS:00000018 $d /tmp/cc16Zqrx.s:2313 .bss.numberofauxchannels:00000000 numberofauxchannels /tmp/cc16Zqrx.s:1344 .text.amsCheckUnderOverVoltage:00000000 $t /tmp/cc16Zqrx.s:1350 .text.amsCheckUnderOverVoltage:00000000 amsCheckUnderOverVoltage /tmp/cc16Zqrx.s:1459 .text.amsCheckUnderOverVoltage:00000068 $d /tmp/cc16Zqrx.s:1464 .text.amsClearAux:00000000 $t /tmp/cc16Zqrx.s:1470 .text.amsClearAux:00000000 amsClearAux /tmp/cc16Zqrx.s:1498 .text.amsClearCells:00000000 $t /tmp/cc16Zqrx.s:1504 .text.amsClearCells:00000000 amsClearCells /tmp/cc16Zqrx.s:1532 .text.amsReadCellVoltages:00000000 $t /tmp/cc16Zqrx.s:1538 .text.amsReadCellVoltages:00000000 amsReadCellVoltages /tmp/cc16Zqrx.s:1995 .text.amsReadCellVoltages:00000338 $d /tmp/cc16Zqrx.s:2003 .text.amsCellMeasurement:00000000 $t /tmp/cc16Zqrx.s:2009 .text.amsCellMeasurement:00000000 amsCellMeasurement /tmp/cc16Zqrx.s:2031 .text.amsWriteComm:00000000 $t /tmp/cc16Zqrx.s:2037 .text.amsWriteComm:00000000 amsWriteComm /tmp/cc16Zqrx.s:2140 .text.amsReadComm:00000000 $t /tmp/cc16Zqrx.s:2146 .text.amsReadComm:00000000 amsReadComm /tmp/cc16Zqrx.s:2314 .bss.numberofauxchannels:00000000 $d /tmp/cc16Zqrx.s:2320 .bss.numberofcells:00000000 $d UNDEFINED SYMBOLS readCMD writeCMD __aeabi_i2d __aeabi_dmul __aeabi_dadd __aeabi_d2iz ARM GAS /tmp/cc16Zqrx.s page 55 __aeabi_d2uiz pollCMD mcuDelay adbmsDriverInit writeCMD_I2C