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