ARM GAS  /tmp/cc6A08EU.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_LL_Driver.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.file 1 "Core/Src/ADBMS_LL_Driver.c"
  20              		.section	.text.F_CRC_ObtenValorDeTabla,"ax",%progbits
  21              		.align	1
  22              		.syntax unified
  23              		.thumb
  24              		.thumb_func
  26              	F_CRC_ObtenValorDeTabla:
  27              	.LVL0:
  28              	.LFB130:
   1:Core/Src/ADBMS_LL_Driver.c **** /*
   2:Core/Src/ADBMS_LL_Driver.c ****  * ADBMS_LL_Driver.c
   3:Core/Src/ADBMS_LL_Driver.c ****  *
   4:Core/Src/ADBMS_LL_Driver.c ****  *  Created on: 05.06.2022
   5:Core/Src/ADBMS_LL_Driver.c ****  *      Author: max
   6:Core/Src/ADBMS_LL_Driver.c ****  */
   7:Core/Src/ADBMS_LL_Driver.c **** 
   8:Core/Src/ADBMS_LL_Driver.c **** #include "ADBMS_LL_Driver.h"
   9:Core/Src/ADBMS_LL_Driver.c **** #include <stdbool.h>
  10:Core/Src/ADBMS_LL_Driver.c **** 
  11:Core/Src/ADBMS_LL_Driver.c **** #define INITIAL_COMMAND_PEC        0x0010
  12:Core/Src/ADBMS_LL_Driver.c **** #define INITIAL_DATA_PEC           0x0010 
  13:Core/Src/ADBMS_LL_Driver.c **** #define ADBMS_SPI_TIMEOUT          100 // Timeout in ms
  14:Core/Src/ADBMS_LL_Driver.c **** #warning ask about the timeout value
  15:Core/Src/ADBMS_LL_Driver.c **** 
  16:Core/Src/ADBMS_LL_Driver.c **** SPI_HandleTypeDef* adbmsspi;
  17:Core/Src/ADBMS_LL_Driver.c **** 
  18:Core/Src/ADBMS_LL_Driver.c **** uint8 adbmsDriverInit(SPI_HandleTypeDef* hspi) {
  19:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSLow();
  20:Core/Src/ADBMS_LL_Driver.c ****   HAL_Delay(1);
  21:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
  22:Core/Src/ADBMS_LL_Driver.c ****   adbmsspi = hspi;
  23:Core/Src/ADBMS_LL_Driver.c ****   return 0;
  24:Core/Src/ADBMS_LL_Driver.c **** }
  25:Core/Src/ADBMS_LL_Driver.c **** 
  26:Core/Src/ADBMS_LL_Driver.c **** //command PEC calculation
  27:Core/Src/ADBMS_LL_Driver.c **** //CRC-15
  28:Core/Src/ADBMS_LL_Driver.c **** //x^15 + x^14 + x^10 + x^8 + x^7 + x^4 + x^3 + 1
  29:Core/Src/ADBMS_LL_Driver.c **** 
  30:Core/Src/ADBMS_LL_Driver.c **** uint8 calculateCommandPEC(uint8_t* data, uint8_t datalen) {
ARM GAS  /tmp/cc6A08EU.s 			page 2


  31:Core/Src/ADBMS_LL_Driver.c ****   uint16 currentpec = INITIAL_COMMAND_PEC;
  32:Core/Src/ADBMS_LL_Driver.c ****   if (datalen >= 3) {
  33:Core/Src/ADBMS_LL_Driver.c ****     for (int i = 0; i < (datalen - 2); i++) {
  34:Core/Src/ADBMS_LL_Driver.c ****       for (int n = 0; n < 8; n++) {
  35:Core/Src/ADBMS_LL_Driver.c ****         uint8 din = data[i] << (n);
  36:Core/Src/ADBMS_LL_Driver.c ****         currentpec = updateCommandPEC(currentpec, din);
  37:Core/Src/ADBMS_LL_Driver.c ****       }
  38:Core/Src/ADBMS_LL_Driver.c ****     }
  39:Core/Src/ADBMS_LL_Driver.c **** 
  40:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 2] = (currentpec >> 7) & 0xFF;
  41:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 1] = (currentpec << 1) & 0xFF;
  42:Core/Src/ADBMS_LL_Driver.c ****     return 0;
  43:Core/Src/ADBMS_LL_Driver.c ****   } else {
  44:Core/Src/ADBMS_LL_Driver.c ****     return 1;
  45:Core/Src/ADBMS_LL_Driver.c ****   }
  46:Core/Src/ADBMS_LL_Driver.c **** }
  47:Core/Src/ADBMS_LL_Driver.c **** 
  48:Core/Src/ADBMS_LL_Driver.c **** uint8 checkCommandPEC(uint8* data, uint8 datalen) {
  49:Core/Src/ADBMS_LL_Driver.c ****   if (datalen <= 3) {
  50:Core/Src/ADBMS_LL_Driver.c ****     return 255;
  51:Core/Src/ADBMS_LL_Driver.c ****   }
  52:Core/Src/ADBMS_LL_Driver.c **** 
  53:Core/Src/ADBMS_LL_Driver.c ****   uint16 currentpec = INITIAL_COMMAND_PEC;
  54:Core/Src/ADBMS_LL_Driver.c **** 
  55:Core/Src/ADBMS_LL_Driver.c ****   for (int i = 0; i < (datalen - 2); i++) {
  56:Core/Src/ADBMS_LL_Driver.c ****     for (int n = 0; n < 8; n++) {
  57:Core/Src/ADBMS_LL_Driver.c ****       uint8 din = data[i] << (n);
  58:Core/Src/ADBMS_LL_Driver.c ****       currentpec = updateCommandPEC(currentpec, din);
  59:Core/Src/ADBMS_LL_Driver.c ****     }
  60:Core/Src/ADBMS_LL_Driver.c ****   }
  61:Core/Src/ADBMS_LL_Driver.c **** 
  62:Core/Src/ADBMS_LL_Driver.c ****   uint8 pechigh = (currentpec >> 7) & 0xFF;
  63:Core/Src/ADBMS_LL_Driver.c ****   uint8 peclow = (currentpec << 1) & 0xFF;
  64:Core/Src/ADBMS_LL_Driver.c **** 
  65:Core/Src/ADBMS_LL_Driver.c ****   if ((pechigh == data[datalen - 2]) && (peclow == data[datalen - 1])) {
  66:Core/Src/ADBMS_LL_Driver.c ****     return 0;
  67:Core/Src/ADBMS_LL_Driver.c ****   }
  68:Core/Src/ADBMS_LL_Driver.c **** 
  69:Core/Src/ADBMS_LL_Driver.c ****   return 1;
  70:Core/Src/ADBMS_LL_Driver.c **** }
  71:Core/Src/ADBMS_LL_Driver.c **** 
  72:Core/Src/ADBMS_LL_Driver.c **** uint16 updateCommandPEC(uint16 currentPEC, uint8 din) {
  73:Core/Src/ADBMS_LL_Driver.c ****   din = (din >> 7) & 0x01;
  74:Core/Src/ADBMS_LL_Driver.c ****   uint8 in0 = din ^ ((currentPEC >> 14) & 0x01);
  75:Core/Src/ADBMS_LL_Driver.c ****   uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
  76:Core/Src/ADBMS_LL_Driver.c ****   uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
  77:Core/Src/ADBMS_LL_Driver.c ****   uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
  78:Core/Src/ADBMS_LL_Driver.c ****   uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
  79:Core/Src/ADBMS_LL_Driver.c ****   uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
  80:Core/Src/ADBMS_LL_Driver.c ****   uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
  81:Core/Src/ADBMS_LL_Driver.c **** 
  82:Core/Src/ADBMS_LL_Driver.c ****   uint16 newPEC = 0;
  83:Core/Src/ADBMS_LL_Driver.c **** 
  84:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in14 << 14;
  85:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 12)) << 1;
  86:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 11)) << 1;
  87:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 10)) << 1;
ARM GAS  /tmp/cc6A08EU.s 			page 3


  88:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in10 << 10;
  89:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 8)) << 1;
  90:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in8 << 8;
  91:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in7 << 7;
  92:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 5)) << 1;
  93:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 4)) << 1;
  94:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in4 << 4;
  95:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in3 << 3;
  96:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 1)) << 1;
  97:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01)) << 1;
  98:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in0;
  99:Core/Src/ADBMS_LL_Driver.c **** 
 100:Core/Src/ADBMS_LL_Driver.c ****   return newPEC;
 101:Core/Src/ADBMS_LL_Driver.c **** }
 102:Core/Src/ADBMS_LL_Driver.c **** 
 103:Core/Src/ADBMS_LL_Driver.c **** //data PEC calculation
 104:Core/Src/ADBMS_LL_Driver.c **** //CRC-10
 105:Core/Src/ADBMS_LL_Driver.c **** //x^10 + x^7 + x^3 + x^2 + x + 1
 106:Core/Src/ADBMS_LL_Driver.c **** 
 107:Core/Src/ADBMS_LL_Driver.c **** uint16_t pec10_calc(bool rx_cmd, int len, uint8_t* data) {
 108:Core/Src/ADBMS_LL_Driver.c ****   uint16_t remainder = 16; /* PEC_SEED;   0000010000 */
 109:Core/Src/ADBMS_LL_Driver.c ****   uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
 110:Core/Src/ADBMS_LL_Driver.c ****                               100 1000 1111   48F */
 111:Core/Src/ADBMS_LL_Driver.c **** 
 112:Core/Src/ADBMS_LL_Driver.c ****   /* Perform modulo-2 division, a byte at a time. */
 113:Core/Src/ADBMS_LL_Driver.c ****   for (uint8_t pbyte = 0; pbyte < len; ++pbyte) {
 114:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 115:Core/Src/ADBMS_LL_Driver.c ****     remainder ^= (uint16_t)(data[pbyte] << 2);
 116:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time.*/
 117:Core/Src/ADBMS_LL_Driver.c ****     for (uint8_t bit_ = 8; bit_ > 0; --bit_) {
 118:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 119:Core/Src/ADBMS_LL_Driver.c ****       if ((remainder & 0x200) >
 120:Core/Src/ADBMS_LL_Driver.c ****           0) // equivalent to remainder & 2^14 simply check for MSB
 121:Core/Src/ADBMS_LL_Driver.c ****       {
 122:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)((remainder << 1));
 123:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 124:Core/Src/ADBMS_LL_Driver.c ****       } else {
 125:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder << 1);
 126:Core/Src/ADBMS_LL_Driver.c ****       }
 127:Core/Src/ADBMS_LL_Driver.c ****     }
 128:Core/Src/ADBMS_LL_Driver.c ****   }
 129:Core/Src/ADBMS_LL_Driver.c ****   if (rx_cmd == true) {
 130:Core/Src/ADBMS_LL_Driver.c ****     remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
 131:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time */
 132:Core/Src/ADBMS_LL_Driver.c ****     for (uint8_t bit_ = 6; bit_ > 0; --bit_) {
 133:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 134:Core/Src/ADBMS_LL_Driver.c ****       if ((remainder & 0x200) >
 135:Core/Src/ADBMS_LL_Driver.c ****           0) // equivalent to remainder & 2^14 simply check for MSB
 136:Core/Src/ADBMS_LL_Driver.c ****       {
 137:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)((remainder << 1));
 138:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 139:Core/Src/ADBMS_LL_Driver.c ****       } else {
 140:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)((remainder << 1));
 141:Core/Src/ADBMS_LL_Driver.c ****       }
 142:Core/Src/ADBMS_LL_Driver.c ****     }
 143:Core/Src/ADBMS_LL_Driver.c ****   }
 144:Core/Src/ADBMS_LL_Driver.c ****   return ((uint16_t)(remainder & 0x3FF));
ARM GAS  /tmp/cc6A08EU.s 			page 4


 145:Core/Src/ADBMS_LL_Driver.c **** }
 146:Core/Src/ADBMS_LL_Driver.c **** 
 147:Core/Src/ADBMS_LL_Driver.c **** typedef uint16_t crc;
 148:Core/Src/ADBMS_LL_Driver.c **** crc F_CRC_CalculaCheckSum(uint8_t const AF_Datos[], uint16_t VF_nBytes);
 149:Core/Src/ADBMS_LL_Driver.c **** 
 150:Core/Src/ADBMS_LL_Driver.c **** uint8 calculateDataPEC(uint8_t* data, uint8_t datalen) {
 151:Core/Src/ADBMS_LL_Driver.c **** 
 152:Core/Src/ADBMS_LL_Driver.c ****   if (datalen >= 3) {
 153:Core/Src/ADBMS_LL_Driver.c ****     
 154:Core/Src/ADBMS_LL_Driver.c **** 
 155:Core/Src/ADBMS_LL_Driver.c ****     crc currentpec = pec10_calc(true, datalen - 2, data) & 0x3FF; // mask to 10 bits
 156:Core/Src/ADBMS_LL_Driver.c **** 
 157:Core/Src/ADBMS_LL_Driver.c ****     // memory layout is [[zeroes], PEC[9:8]], [PEC[7:0]]
 158:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 2] = (currentpec >> 8) & 0xFF;
 159:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 1] = currentpec & 0xFF;
 160:Core/Src/ADBMS_LL_Driver.c **** 
 161:Core/Src/ADBMS_LL_Driver.c ****     volatile uint8 result = pec10_calc(true, datalen, data);
 162:Core/Src/ADBMS_LL_Driver.c **** 
 163:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 164:Core/Src/ADBMS_LL_Driver.c ****   } else {
 165:Core/Src/ADBMS_LL_Driver.c ****     return 1;
 166:Core/Src/ADBMS_LL_Driver.c ****   }
 167:Core/Src/ADBMS_LL_Driver.c **** }
 168:Core/Src/ADBMS_LL_Driver.c **** 
 169:Core/Src/ADBMS_LL_Driver.c **** uint8 checkDataPEC(uint8* data, uint8 len) {
 170:Core/Src/ADBMS_LL_Driver.c ****   if (len <= 2) {
 171:Core/Src/ADBMS_LL_Driver.c ****     return 255;
 172:Core/Src/ADBMS_LL_Driver.c ****   }
 173:Core/Src/ADBMS_LL_Driver.c **** 
 174:Core/Src/ADBMS_LL_Driver.c ****   crc currentpec = F_CRC_CalculaCheckSum(data, len);
 175:Core/Src/ADBMS_LL_Driver.c **** 
 176:Core/Src/ADBMS_LL_Driver.c ****   return (currentpec == 0) ? 0 : 1;
 177:Core/Src/ADBMS_LL_Driver.c **** }
 178:Core/Src/ADBMS_LL_Driver.c **** 
 179:Core/Src/ADBMS_LL_Driver.c **** 
 180:Core/Src/ADBMS_LL_Driver.c **** static crc F_CRC_ObtenValorDeTabla(uint8_t VP_Pos_Tabla) {
  29              		.loc 1 180 58 view -0
  30              		.cfi_startproc
  31              		@ args = 0, pretend = 0, frame = 0
  32              		@ frame_needed = 0, uses_anonymous_args = 0
  33              		@ link register save eliminated.
 181:Core/Src/ADBMS_LL_Driver.c ****   crc VP_CRCTableValue = 0;
  34              		.loc 1 181 3 view .LVU1
 182:Core/Src/ADBMS_LL_Driver.c ****   uint8_t VP_Pos_bit = 0;
  35              		.loc 1 182 3 view .LVU2
 183:Core/Src/ADBMS_LL_Driver.c **** 
 184:Core/Src/ADBMS_LL_Driver.c ****   VP_CRCTableValue = ((crc)(VP_Pos_Tabla)) << (10 - 8);
  36              		.loc 1 184 3 view .LVU3
  37              		.loc 1 184 20 is_stmt 0 view .LVU4
  38 0000 8000     		lsls	r0, r0, #2
  39              	.LVL1:
 185:Core/Src/ADBMS_LL_Driver.c **** 
 186:Core/Src/ADBMS_LL_Driver.c ****   for (VP_Pos_bit = 0; VP_Pos_bit < 8; VP_Pos_bit++) {
  40              		.loc 1 186 3 is_stmt 1 view .LVU5
  41              		.loc 1 186 19 is_stmt 0 view .LVU6
  42 0002 0023     		movs	r3, #0
  43              		.loc 1 186 3 view .LVU7
ARM GAS  /tmp/cc6A08EU.s 			page 5


  44 0004 03E0     		b	.L2
  45              	.LVL2:
  46              	.L3:
 187:Core/Src/ADBMS_LL_Driver.c ****     if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
 188:Core/Src/ADBMS_LL_Driver.c ****       VP_CRCTableValue = (VP_CRCTableValue << 1) ^ 0x8F;
 189:Core/Src/ADBMS_LL_Driver.c ****     } else {
 190:Core/Src/ADBMS_LL_Driver.c ****       VP_CRCTableValue = (VP_CRCTableValue << 1);
  47              		.loc 1 190 7 is_stmt 1 view .LVU8
  48              		.loc 1 190 24 is_stmt 0 view .LVU9
  49 0006 4000     		lsls	r0, r0, #1
  50              	.LVL3:
  51              		.loc 1 190 24 view .LVU10
  52 0008 80B2     		uxth	r0, r0
  53              	.LVL4:
  54              	.L4:
 186:Core/Src/ADBMS_LL_Driver.c ****     if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
  55              		.loc 1 186 50 is_stmt 1 discriminator 2 view .LVU11
  56 000a 0133     		adds	r3, r3, #1
  57              	.LVL5:
 186:Core/Src/ADBMS_LL_Driver.c ****     if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
  58              		.loc 1 186 50 is_stmt 0 discriminator 2 view .LVU12
  59 000c DBB2     		uxtb	r3, r3
  60              	.LVL6:
  61              	.L2:
 186:Core/Src/ADBMS_LL_Driver.c ****     if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
  62              		.loc 1 186 35 is_stmt 1 discriminator 1 view .LVU13
  63 000e 072B     		cmp	r3, #7
  64 0010 07D8     		bhi	.L6
 187:Core/Src/ADBMS_LL_Driver.c ****     if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
  65              		.loc 1 187 5 view .LVU14
 187:Core/Src/ADBMS_LL_Driver.c ****     if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
  66              		.loc 1 187 8 is_stmt 0 view .LVU15
  67 0012 10F4007F 		tst	r0, #512
  68 0016 F6D0     		beq	.L3
 188:Core/Src/ADBMS_LL_Driver.c ****     } else {
  69              		.loc 1 188 7 is_stmt 1 view .LVU16
 188:Core/Src/ADBMS_LL_Driver.c ****     } else {
  70              		.loc 1 188 50 is_stmt 0 view .LVU17
  71 0018 4000     		lsls	r0, r0, #1
  72              	.LVL7:
 188:Core/Src/ADBMS_LL_Driver.c ****     } else {
  73              		.loc 1 188 50 view .LVU18
  74 001a 80F08F00 		eor	r0, r0, #143
 188:Core/Src/ADBMS_LL_Driver.c ****     } else {
  75              		.loc 1 188 24 view .LVU19
  76 001e 80B2     		uxth	r0, r0
  77              	.LVL8:
 188:Core/Src/ADBMS_LL_Driver.c ****     } else {
  78              		.loc 1 188 24 view .LVU20
  79 0020 F3E7     		b	.L4
  80              	.L6:
 191:Core/Src/ADBMS_LL_Driver.c ****     }
 192:Core/Src/ADBMS_LL_Driver.c ****   }
 193:Core/Src/ADBMS_LL_Driver.c ****   return ((VP_CRCTableValue));
  81              		.loc 1 193 3 is_stmt 1 view .LVU21
 194:Core/Src/ADBMS_LL_Driver.c **** }
  82              		.loc 1 194 1 is_stmt 0 view .LVU22
ARM GAS  /tmp/cc6A08EU.s 			page 6


  83 0022 7047     		bx	lr
  84              		.cfi_endproc
  85              	.LFE130:
  87              		.section	.text.updateCommandPEC,"ax",%progbits
  88              		.align	1
  89              		.global	updateCommandPEC
  90              		.syntax unified
  91              		.thumb
  92              		.thumb_func
  94              	updateCommandPEC:
  95              	.LVL9:
  96              	.LFB126:
  72:Core/Src/ADBMS_LL_Driver.c ****   din = (din >> 7) & 0x01;
  97              		.loc 1 72 55 is_stmt 1 view -0
  98              		.cfi_startproc
  99              		@ args = 0, pretend = 0, frame = 0
 100              		@ frame_needed = 0, uses_anonymous_args = 0
  72:Core/Src/ADBMS_LL_Driver.c ****   din = (din >> 7) & 0x01;
 101              		.loc 1 72 55 is_stmt 0 view .LVU24
 102 0000 70B5     		push	{r4, r5, r6, lr}
 103              		.cfi_def_cfa_offset 16
 104              		.cfi_offset 4, -16
 105              		.cfi_offset 5, -12
 106              		.cfi_offset 6, -8
 107              		.cfi_offset 14, -4
  73:Core/Src/ADBMS_LL_Driver.c ****   uint8 in0 = din ^ ((currentPEC >> 14) & 0x01);
 108              		.loc 1 73 3 is_stmt 1 view .LVU25
 109              	.LVL10:
  74:Core/Src/ADBMS_LL_Driver.c ****   uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
 110              		.loc 1 74 3 view .LVU26
  74:Core/Src/ADBMS_LL_Driver.c ****   uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
 111              		.loc 1 74 41 is_stmt 0 view .LVU27
 112 0002 C0F38032 		ubfx	r2, r0, #14, #1
  74:Core/Src/ADBMS_LL_Driver.c ****   uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
 113              		.loc 1 74 19 view .LVU28
 114 0006 82EAD113 		eor	r3, r2, r1, lsr #7
  74:Core/Src/ADBMS_LL_Driver.c ****   uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
 115              		.loc 1 74 9 view .LVU29
 116 000a 1946     		mov	r1, r3
 117              	.LVL11:
  75:Core/Src/ADBMS_LL_Driver.c ****   uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
 118              		.loc 1 75 3 is_stmt 1 view .LVU30
  75:Core/Src/ADBMS_LL_Driver.c ****   uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
 119              		.loc 1 75 40 is_stmt 0 view .LVU31
 120 000c C0F38002 		ubfx	r2, r0, #2, #1
  75:Core/Src/ADBMS_LL_Driver.c ****   uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
 121              		.loc 1 75 9 view .LVU32
 122 0010 5A40     		eors	r2, r2, r3
 123              	.LVL12:
  76:Core/Src/ADBMS_LL_Driver.c ****   uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
 124              		.loc 1 76 3 is_stmt 1 view .LVU33
  76:Core/Src/ADBMS_LL_Driver.c ****   uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
 125              		.loc 1 76 40 is_stmt 0 view .LVU34
 126 0012 C0F3C00C 		ubfx	ip, r0, #3, #1
  76:Core/Src/ADBMS_LL_Driver.c ****   uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
 127              		.loc 1 76 9 view .LVU35
 128 0016 83EA0C0C 		eor	ip, r3, ip
ARM GAS  /tmp/cc6A08EU.s 			page 7


 129              	.LVL13:
  77:Core/Src/ADBMS_LL_Driver.c ****   uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
 130              		.loc 1 77 3 is_stmt 1 view .LVU36
  77:Core/Src/ADBMS_LL_Driver.c ****   uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
 131              		.loc 1 77 40 is_stmt 0 view .LVU37
 132 001a C0F3801E 		ubfx	lr, r0, #6, #1
  77:Core/Src/ADBMS_LL_Driver.c ****   uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
 133              		.loc 1 77 9 view .LVU38
 134 001e 83EA0E0E 		eor	lr, r3, lr
 135              	.LVL14:
  78:Core/Src/ADBMS_LL_Driver.c ****   uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
 136              		.loc 1 78 3 is_stmt 1 view .LVU39
  78:Core/Src/ADBMS_LL_Driver.c ****   uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
 137              		.loc 1 78 40 is_stmt 0 view .LVU40
 138 0022 C0F3C014 		ubfx	r4, r0, #7, #1
  78:Core/Src/ADBMS_LL_Driver.c ****   uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
 139              		.loc 1 78 9 view .LVU41
 140 0026 5C40     		eors	r4, r4, r3
 141              	.LVL15:
  79:Core/Src/ADBMS_LL_Driver.c ****   uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
 142              		.loc 1 79 3 is_stmt 1 view .LVU42
  79:Core/Src/ADBMS_LL_Driver.c ****   uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
 143              		.loc 1 79 41 is_stmt 0 view .LVU43
 144 0028 C0F34025 		ubfx	r5, r0, #9, #1
  79:Core/Src/ADBMS_LL_Driver.c ****   uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
 145              		.loc 1 79 9 view .LVU44
 146 002c 5D40     		eors	r5, r5, r3
 147              	.LVL16:
  80:Core/Src/ADBMS_LL_Driver.c **** 
 148              		.loc 1 80 3 is_stmt 1 view .LVU45
  80:Core/Src/ADBMS_LL_Driver.c **** 
 149              		.loc 1 80 42 is_stmt 0 view .LVU46
 150 002e C0F34036 		ubfx	r6, r0, #13, #1
 151              	.LVL17:
  82:Core/Src/ADBMS_LL_Driver.c **** 
 152              		.loc 1 82 3 is_stmt 1 view .LVU47
  84:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 12)) << 1;
 153              		.loc 1 84 3 view .LVU48
  84:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 12)) << 1;
 154              		.loc 1 84 10 is_stmt 0 view .LVU49
 155 0032 5E40     		eors	r6, r6, r3
 156              	.LVL18:
  85:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 11)) << 1;
 157              		.loc 1 85 3 is_stmt 1 view .LVU50
  85:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 11)) << 1;
 158              		.loc 1 85 41 is_stmt 0 view .LVU51
 159 0034 4000     		lsls	r0, r0, #1
 160              	.LVL19:
  85:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 11)) << 1;
 161              		.loc 1 85 41 view .LVU52
 162 0036 00F40053 		and	r3, r0, #8192
 163              	.LVL20:
  85:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 11)) << 1;
 164              		.loc 1 85 10 view .LVU53
 165 003a 43EA8633 		orr	r3, r3, r6, lsl #14
 166              	.LVL21:
  86:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 10)) << 1;
ARM GAS  /tmp/cc6A08EU.s 			page 8


 167              		.loc 1 86 3 is_stmt 1 view .LVU54
  86:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 10)) << 1;
 168              		.loc 1 86 41 is_stmt 0 view .LVU55
 169 003e 00F48056 		and	r6, r0, #4096
 170              	.LVL22:
  86:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 10)) << 1;
 171              		.loc 1 86 10 view .LVU56
 172 0042 3343     		orrs	r3, r3, r6
 173              	.LVL23:
  86:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 10)) << 1;
 174              		.loc 1 86 10 view .LVU57
 175 0044 1BB2     		sxth	r3, r3
 176              	.LVL24:
  87:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in10 << 10;
 177              		.loc 1 87 3 is_stmt 1 view .LVU58
  87:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in10 << 10;
 178              		.loc 1 87 41 is_stmt 0 view .LVU59
 179 0046 00F40066 		and	r6, r0, #2048
  87:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in10 << 10;
 180              		.loc 1 87 10 view .LVU60
 181 004a 3343     		orrs	r3, r3, r6
 182              	.LVL25:
  88:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 8)) << 1;
 183              		.loc 1 88 3 is_stmt 1 view .LVU61
  88:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 8)) << 1;
 184              		.loc 1 88 10 is_stmt 0 view .LVU62
 185 004c 43EA8523 		orr	r3, r3, r5, lsl #10
 186              	.LVL26:
  89:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in8 << 8;
 187              		.loc 1 89 3 is_stmt 1 view .LVU63
  89:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in8 << 8;
 188              		.loc 1 89 40 is_stmt 0 view .LVU64
 189 0050 00F40075 		and	r5, r0, #512
 190              	.LVL27:
  89:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in8 << 8;
 191              		.loc 1 89 10 view .LVU65
 192 0054 2B43     		orrs	r3, r3, r5
 193              	.LVL28:
  89:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in8 << 8;
 194              		.loc 1 89 10 view .LVU66
 195 0056 1BB2     		sxth	r3, r3
 196              	.LVL29:
  90:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in7 << 7;
 197              		.loc 1 90 3 is_stmt 1 view .LVU67
  90:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in7 << 7;
 198              		.loc 1 90 10 is_stmt 0 view .LVU68
 199 0058 43EA0423 		orr	r3, r3, r4, lsl #8
 200              	.LVL30:
  91:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 5)) << 1;
 201              		.loc 1 91 3 is_stmt 1 view .LVU69
  91:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 5)) << 1;
 202              		.loc 1 91 10 is_stmt 0 view .LVU70
 203 005c 43EACE13 		orr	r3, r3, lr, lsl #7
 204              	.LVL31:
  92:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 4)) << 1;
 205              		.loc 1 92 3 is_stmt 1 view .LVU71
  92:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 4)) << 1;
ARM GAS  /tmp/cc6A08EU.s 			page 9


 206              		.loc 1 92 40 is_stmt 0 view .LVU72
 207 0060 00F04004 		and	r4, r0, #64
 208              	.LVL32:
  92:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 4)) << 1;
 209              		.loc 1 92 10 view .LVU73
 210 0064 2343     		orrs	r3, r3, r4
 211              	.LVL33:
  92:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 4)) << 1;
 212              		.loc 1 92 10 view .LVU74
 213 0066 1BB2     		sxth	r3, r3
 214              	.LVL34:
  93:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in4 << 4;
 215              		.loc 1 93 3 is_stmt 1 view .LVU75
  93:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in4 << 4;
 216              		.loc 1 93 40 is_stmt 0 view .LVU76
 217 0068 00F02004 		and	r4, r0, #32
  93:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in4 << 4;
 218              		.loc 1 93 10 view .LVU77
 219 006c 2343     		orrs	r3, r3, r4
 220              	.LVL35:
  94:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in3 << 3;
 221              		.loc 1 94 3 is_stmt 1 view .LVU78
  94:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in3 << 3;
 222              		.loc 1 94 10 is_stmt 0 view .LVU79
 223 006e 43EA0C13 		orr	r3, r3, ip, lsl #4
 224              	.LVL36:
  95:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 1)) << 1;
 225              		.loc 1 95 3 is_stmt 1 view .LVU80
  95:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 1)) << 1;
 226              		.loc 1 95 10 is_stmt 0 view .LVU81
 227 0072 43EAC203 		orr	r3, r3, r2, lsl #3
 228              	.LVL37:
  96:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01)) << 1;
 229              		.loc 1 96 3 is_stmt 1 view .LVU82
  96:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01)) << 1;
 230              		.loc 1 96 40 is_stmt 0 view .LVU83
 231 0076 00F00402 		and	r2, r0, #4
 232              	.LVL38:
  96:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01)) << 1;
 233              		.loc 1 96 10 view .LVU84
 234 007a 1343     		orrs	r3, r3, r2
 235              	.LVL39:
  96:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01)) << 1;
 236              		.loc 1 96 10 view .LVU85
 237 007c 1BB2     		sxth	r3, r3
 238              	.LVL40:
  97:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in0;
 239              		.loc 1 97 3 is_stmt 1 view .LVU86
  97:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in0;
 240              		.loc 1 97 35 is_stmt 0 view .LVU87
 241 007e 00F00200 		and	r0, r0, #2
  97:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in0;
 242              		.loc 1 97 10 view .LVU88
 243 0082 0343     		orrs	r3, r3, r0
 244              	.LVL41:
  97:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in0;
 245              		.loc 1 97 10 view .LVU89
ARM GAS  /tmp/cc6A08EU.s 			page 10


 246 0084 9BB2     		uxth	r3, r3
 247              	.LVL42:
  98:Core/Src/ADBMS_LL_Driver.c **** 
 248              		.loc 1 98 3 is_stmt 1 view .LVU90
 100:Core/Src/ADBMS_LL_Driver.c **** }
 249              		.loc 1 100 3 view .LVU91
 101:Core/Src/ADBMS_LL_Driver.c **** 
 250              		.loc 1 101 1 is_stmt 0 view .LVU92
 251 0086 41EA0300 		orr	r0, r1, r3
 252              	.LVL43:
 101:Core/Src/ADBMS_LL_Driver.c **** 
 253              		.loc 1 101 1 view .LVU93
 254 008a 70BD     		pop	{r4, r5, r6, pc}
 255              		.cfi_endproc
 256              	.LFE126:
 258              		.section	.text.calculateCommandPEC,"ax",%progbits
 259              		.align	1
 260              		.global	calculateCommandPEC
 261              		.syntax unified
 262              		.thumb
 263              		.thumb_func
 265              	calculateCommandPEC:
 266              	.LVL44:
 267              	.LFB124:
  30:Core/Src/ADBMS_LL_Driver.c ****   uint16 currentpec = INITIAL_COMMAND_PEC;
 268              		.loc 1 30 59 is_stmt 1 view -0
 269              		.cfi_startproc
 270              		@ args = 0, pretend = 0, frame = 0
 271              		@ frame_needed = 0, uses_anonymous_args = 0
  31:Core/Src/ADBMS_LL_Driver.c ****   if (datalen >= 3) {
 272              		.loc 1 31 3 view .LVU95
  32:Core/Src/ADBMS_LL_Driver.c ****     for (int i = 0; i < (datalen - 2); i++) {
 273              		.loc 1 32 3 view .LVU96
  32:Core/Src/ADBMS_LL_Driver.c ****     for (int i = 0; i < (datalen - 2); i++) {
 274              		.loc 1 32 6 is_stmt 0 view .LVU97
 275 0000 0229     		cmp	r1, #2
 276 0002 0FD8     		bhi	.L14
  44:Core/Src/ADBMS_LL_Driver.c ****   }
 277              		.loc 1 44 12 view .LVU98
 278 0004 0120     		movs	r0, #1
 279              	.LVL45:
  46:Core/Src/ADBMS_LL_Driver.c **** 
 280              		.loc 1 46 1 view .LVU99
 281 0006 7047     		bx	lr
 282              	.LVL46:
 283              	.L12:
 284              		.cfi_def_cfa_offset 24
 285              		.cfi_offset 3, -24
 286              		.cfi_offset 4, -20
 287              		.cfi_offset 5, -16
 288              		.cfi_offset 6, -12
 289              		.cfi_offset 7, -8
 290              		.cfi_offset 14, -4
 291              	.LBB2:
 292              	.LBB3:
 293              	.LBB4:
  35:Core/Src/ADBMS_LL_Driver.c ****         currentpec = updateCommandPEC(currentpec, din);
ARM GAS  /tmp/cc6A08EU.s 			page 11


 294              		.loc 1 35 9 is_stmt 1 view .LVU100
  35:Core/Src/ADBMS_LL_Driver.c ****         currentpec = updateCommandPEC(currentpec, din);
 295              		.loc 1 35 25 is_stmt 0 view .LVU101
 296 0008 715D     		ldrb	r1, [r6, r5]	@ zero_extendqisi2
  35:Core/Src/ADBMS_LL_Driver.c ****         currentpec = updateCommandPEC(currentpec, din);
 297              		.loc 1 35 29 view .LVU102
 298 000a A140     		lsls	r1, r1, r4
 299              	.LVL47:
  36:Core/Src/ADBMS_LL_Driver.c ****       }
 300              		.loc 1 36 9 is_stmt 1 view .LVU103
  36:Core/Src/ADBMS_LL_Driver.c ****       }
 301              		.loc 1 36 22 is_stmt 0 view .LVU104
 302 000c C9B2     		uxtb	r1, r1
  36:Core/Src/ADBMS_LL_Driver.c ****       }
 303              		.loc 1 36 22 view .LVU105
 304 000e FFF7FEFF 		bl	updateCommandPEC
 305              	.LVL48:
  36:Core/Src/ADBMS_LL_Driver.c ****       }
 306              		.loc 1 36 22 view .LVU106
 307              	.LBE4:
  34:Core/Src/ADBMS_LL_Driver.c ****         uint8 din = data[i] << (n);
 308              		.loc 1 34 31 is_stmt 1 discriminator 3 view .LVU107
 309 0012 0134     		adds	r4, r4, #1
 310              	.LVL49:
 311              	.L13:
  34:Core/Src/ADBMS_LL_Driver.c ****         uint8 din = data[i] << (n);
 312              		.loc 1 34 25 discriminator 1 view .LVU108
 313 0014 072C     		cmp	r4, #7
 314 0016 F7DD     		ble	.L12
  34:Core/Src/ADBMS_LL_Driver.c ****         uint8 din = data[i] << (n);
 315              		.loc 1 34 25 is_stmt 0 discriminator 1 view .LVU109
 316              	.LBE3:
  33:Core/Src/ADBMS_LL_Driver.c ****       for (int n = 0; n < 8; n++) {
 317              		.loc 1 33 41 is_stmt 1 discriminator 2 view .LVU110
 318 0018 0135     		adds	r5, r5, #1
 319              	.LVL50:
 320              	.L10:
  33:Core/Src/ADBMS_LL_Driver.c ****       for (int n = 0; n < 8; n++) {
 321              		.loc 1 33 23 discriminator 1 view .LVU111
  33:Core/Src/ADBMS_LL_Driver.c ****       for (int n = 0; n < 8; n++) {
 322              		.loc 1 33 34 is_stmt 0 discriminator 1 view .LVU112
 323 001a BB1E     		subs	r3, r7, #2
  33:Core/Src/ADBMS_LL_Driver.c ****       for (int n = 0; n < 8; n++) {
 324              		.loc 1 33 23 discriminator 1 view .LVU113
 325 001c AB42     		cmp	r3, r5
 326 001e 07DD     		ble	.L19
 327              	.LBB5:
  34:Core/Src/ADBMS_LL_Driver.c ****         uint8 din = data[i] << (n);
 328              		.loc 1 34 16 view .LVU114
 329 0020 0024     		movs	r4, #0
 330 0022 F7E7     		b	.L13
 331              	.LVL51:
 332              	.L14:
 333              		.cfi_def_cfa_offset 0
 334              		.cfi_restore 3
 335              		.cfi_restore 4
 336              		.cfi_restore 5
ARM GAS  /tmp/cc6A08EU.s 			page 12


 337              		.cfi_restore 6
 338              		.cfi_restore 7
 339              		.cfi_restore 14
  34:Core/Src/ADBMS_LL_Driver.c ****         uint8 din = data[i] << (n);
 340              		.loc 1 34 16 view .LVU115
 341              	.LBE5:
 342              	.LBE2:
  30:Core/Src/ADBMS_LL_Driver.c ****   uint16 currentpec = INITIAL_COMMAND_PEC;
 343              		.loc 1 30 59 view .LVU116
 344 0024 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 345              		.cfi_def_cfa_offset 24
 346              		.cfi_offset 3, -24
 347              		.cfi_offset 4, -20
 348              		.cfi_offset 5, -16
 349              		.cfi_offset 6, -12
 350              		.cfi_offset 7, -8
 351              		.cfi_offset 14, -4
 352 0026 0646     		mov	r6, r0
 353 0028 0F46     		mov	r7, r1
 354              	.LBB6:
  33:Core/Src/ADBMS_LL_Driver.c ****       for (int n = 0; n < 8; n++) {
 355              		.loc 1 33 14 view .LVU117
 356 002a 0025     		movs	r5, #0
 357              	.LBE6:
  31:Core/Src/ADBMS_LL_Driver.c ****   if (datalen >= 3) {
 358              		.loc 1 31 10 view .LVU118
 359 002c 1020     		movs	r0, #16
 360              	.LVL52:
  31:Core/Src/ADBMS_LL_Driver.c ****   if (datalen >= 3) {
 361              		.loc 1 31 10 view .LVU119
 362 002e F4E7     		b	.L10
 363              	.LVL53:
 364              	.L19:
  40:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 1] = (currentpec << 1) & 0xFF;
 365              		.loc 1 40 5 is_stmt 1 view .LVU120
  40:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 1] = (currentpec << 1) & 0xFF;
 366              		.loc 1 40 23 is_stmt 0 view .LVU121
 367 0030 C209     		lsrs	r2, r0, #7
 368 0032 F254     		strb	r2, [r6, r3]
  41:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 369              		.loc 1 41 5 is_stmt 1 view .LVU122
  41:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 370              		.loc 1 41 9 is_stmt 0 view .LVU123
 371 0034 013F     		subs	r7, r7, #1
  41:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 372              		.loc 1 41 23 view .LVU124
 373 0036 4300     		lsls	r3, r0, #1
 374 0038 F355     		strb	r3, [r6, r7]
  42:Core/Src/ADBMS_LL_Driver.c ****   } else {
 375              		.loc 1 42 5 is_stmt 1 view .LVU125
  42:Core/Src/ADBMS_LL_Driver.c ****   } else {
 376              		.loc 1 42 12 is_stmt 0 view .LVU126
 377 003a 0020     		movs	r0, #0
 378              	.LVL54:
  46:Core/Src/ADBMS_LL_Driver.c **** 
 379              		.loc 1 46 1 view .LVU127
 380 003c F8BD     		pop	{r3, r4, r5, r6, r7, pc}
ARM GAS  /tmp/cc6A08EU.s 			page 13


  46:Core/Src/ADBMS_LL_Driver.c **** 
 381              		.loc 1 46 1 view .LVU128
 382              		.cfi_endproc
 383              	.LFE124:
 385              		.section	.text.checkCommandPEC,"ax",%progbits
 386              		.align	1
 387              		.global	checkCommandPEC
 388              		.syntax unified
 389              		.thumb
 390              		.thumb_func
 392              	checkCommandPEC:
 393              	.LVL55:
 394              	.LFB125:
  48:Core/Src/ADBMS_LL_Driver.c ****   if (datalen <= 3) {
 395              		.loc 1 48 51 is_stmt 1 view -0
 396              		.cfi_startproc
 397              		@ args = 0, pretend = 0, frame = 0
 398              		@ frame_needed = 0, uses_anonymous_args = 0
  49:Core/Src/ADBMS_LL_Driver.c ****     return 255;
 399              		.loc 1 49 3 view .LVU130
  49:Core/Src/ADBMS_LL_Driver.c ****     return 255;
 400              		.loc 1 49 6 is_stmt 0 view .LVU131
 401 0000 0329     		cmp	r1, #3
 402 0002 25D9     		bls	.L25
  48:Core/Src/ADBMS_LL_Driver.c ****   if (datalen <= 3) {
 403              		.loc 1 48 51 view .LVU132
 404 0004 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 405              		.cfi_def_cfa_offset 24
 406              		.cfi_offset 3, -24
 407              		.cfi_offset 4, -20
 408              		.cfi_offset 5, -16
 409              		.cfi_offset 6, -12
 410              		.cfi_offset 7, -8
 411              		.cfi_offset 14, -4
 412 0006 0546     		mov	r5, r0
 413 0008 0E46     		mov	r6, r1
 414              	.LBB7:
  55:Core/Src/ADBMS_LL_Driver.c ****     for (int n = 0; n < 8; n++) {
 415              		.loc 1 55 12 view .LVU133
 416 000a 0027     		movs	r7, #0
 417              	.LBE7:
  53:Core/Src/ADBMS_LL_Driver.c **** 
 418              		.loc 1 53 10 view .LVU134
 419 000c 1020     		movs	r0, #16
 420              	.LVL56:
  53:Core/Src/ADBMS_LL_Driver.c **** 
 421              		.loc 1 53 10 view .LVU135
 422 000e 08E0     		b	.L22
 423              	.LVL57:
 424              	.L23:
 425              	.LBB11:
 426              	.LBB8:
 427              	.LBB9:
  57:Core/Src/ADBMS_LL_Driver.c ****       currentpec = updateCommandPEC(currentpec, din);
 428              		.loc 1 57 7 is_stmt 1 view .LVU136
  57:Core/Src/ADBMS_LL_Driver.c ****       currentpec = updateCommandPEC(currentpec, din);
 429              		.loc 1 57 23 is_stmt 0 view .LVU137
ARM GAS  /tmp/cc6A08EU.s 			page 14


 430 0010 E95D     		ldrb	r1, [r5, r7]	@ zero_extendqisi2
  57:Core/Src/ADBMS_LL_Driver.c ****       currentpec = updateCommandPEC(currentpec, din);
 431              		.loc 1 57 27 view .LVU138
 432 0012 A140     		lsls	r1, r1, r4
 433              	.LVL58:
  58:Core/Src/ADBMS_LL_Driver.c ****     }
 434              		.loc 1 58 7 is_stmt 1 view .LVU139
  58:Core/Src/ADBMS_LL_Driver.c ****     }
 435              		.loc 1 58 20 is_stmt 0 view .LVU140
 436 0014 C9B2     		uxtb	r1, r1
  58:Core/Src/ADBMS_LL_Driver.c ****     }
 437              		.loc 1 58 20 view .LVU141
 438 0016 FFF7FEFF 		bl	updateCommandPEC
 439              	.LVL59:
  58:Core/Src/ADBMS_LL_Driver.c ****     }
 440              		.loc 1 58 20 view .LVU142
 441              	.LBE9:
  56:Core/Src/ADBMS_LL_Driver.c ****       uint8 din = data[i] << (n);
 442              		.loc 1 56 29 is_stmt 1 discriminator 3 view .LVU143
 443 001a 0134     		adds	r4, r4, #1
 444              	.LVL60:
 445              	.L24:
  56:Core/Src/ADBMS_LL_Driver.c ****       uint8 din = data[i] << (n);
 446              		.loc 1 56 23 discriminator 1 view .LVU144
 447 001c 072C     		cmp	r4, #7
 448 001e F7DD     		ble	.L23
  56:Core/Src/ADBMS_LL_Driver.c ****       uint8 din = data[i] << (n);
 449              		.loc 1 56 23 is_stmt 0 discriminator 1 view .LVU145
 450              	.LBE8:
  55:Core/Src/ADBMS_LL_Driver.c ****     for (int n = 0; n < 8; n++) {
 451              		.loc 1 55 39 is_stmt 1 discriminator 2 view .LVU146
 452 0020 0137     		adds	r7, r7, #1
 453              	.LVL61:
 454              	.L22:
  55:Core/Src/ADBMS_LL_Driver.c ****     for (int n = 0; n < 8; n++) {
 455              		.loc 1 55 21 discriminator 1 view .LVU147
  55:Core/Src/ADBMS_LL_Driver.c ****     for (int n = 0; n < 8; n++) {
 456              		.loc 1 55 32 is_stmt 0 discriminator 1 view .LVU148
 457 0022 B31E     		subs	r3, r6, #2
  55:Core/Src/ADBMS_LL_Driver.c ****     for (int n = 0; n < 8; n++) {
 458              		.loc 1 55 21 discriminator 1 view .LVU149
 459 0024 BB42     		cmp	r3, r7
 460 0026 01DD     		ble	.L33
 461              	.LBB10:
  56:Core/Src/ADBMS_LL_Driver.c ****       uint8 din = data[i] << (n);
 462              		.loc 1 56 14 view .LVU150
 463 0028 0024     		movs	r4, #0
 464 002a F7E7     		b	.L24
 465              	.L33:
 466              	.LBE10:
 467              	.LBE11:
  62:Core/Src/ADBMS_LL_Driver.c ****   uint8 peclow = (currentpec << 1) & 0xFF;
 468              		.loc 1 62 3 is_stmt 1 view .LVU151
  62:Core/Src/ADBMS_LL_Driver.c ****   uint8 peclow = (currentpec << 1) & 0xFF;
 469              		.loc 1 62 9 is_stmt 0 view .LVU152
 470 002c C0F3C712 		ubfx	r2, r0, #7, #8
 471              	.LVL62:
ARM GAS  /tmp/cc6A08EU.s 			page 15


  63:Core/Src/ADBMS_LL_Driver.c **** 
 472              		.loc 1 63 3 is_stmt 1 view .LVU153
  63:Core/Src/ADBMS_LL_Driver.c **** 
 473              		.loc 1 63 9 is_stmt 0 view .LVU154
 474 0030 4300     		lsls	r3, r0, #1
 475 0032 DBB2     		uxtb	r3, r3
 476              	.LVL63:
  65:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 477              		.loc 1 65 3 is_stmt 1 view .LVU155
  65:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 478              		.loc 1 65 23 is_stmt 0 view .LVU156
 479 0034 A919     		adds	r1, r5, r6
 480 0036 11F8021C 		ldrb	r1, [r1, #-2]	@ zero_extendqisi2
  65:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 481              		.loc 1 65 6 view .LVU157
 482 003a 9142     		cmp	r1, r2
 483 003c 01D0     		beq	.L34
  69:Core/Src/ADBMS_LL_Driver.c **** }
 484              		.loc 1 69 10 view .LVU158
 485 003e 0120     		movs	r0, #1
 486              	.LVL64:
 487              	.L21:
  70:Core/Src/ADBMS_LL_Driver.c **** 
 488              		.loc 1 70 1 view .LVU159
 489 0040 F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 490              	.LVL65:
 491              	.L34:
  65:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 492              		.loc 1 65 56 discriminator 1 view .LVU160
 493 0042 3544     		add	r5, r5, r6
 494              	.LVL66:
  65:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 495              		.loc 1 65 56 discriminator 1 view .LVU161
 496 0044 15F8012C 		ldrb	r2, [r5, #-1]	@ zero_extendqisi2
 497              	.LVL67:
  65:Core/Src/ADBMS_LL_Driver.c ****     return 0;
 498              		.loc 1 65 38 discriminator 1 view .LVU162
 499 0048 9A42     		cmp	r2, r3
 500 004a 03D0     		beq	.L28
  69:Core/Src/ADBMS_LL_Driver.c **** }
 501              		.loc 1 69 10 view .LVU163
 502 004c 0120     		movs	r0, #1
 503              	.LVL68:
  69:Core/Src/ADBMS_LL_Driver.c **** }
 504              		.loc 1 69 10 view .LVU164
 505 004e F7E7     		b	.L21
 506              	.LVL69:
 507              	.L25:
 508              		.cfi_def_cfa_offset 0
 509              		.cfi_restore 3
 510              		.cfi_restore 4
 511              		.cfi_restore 5
 512              		.cfi_restore 6
 513              		.cfi_restore 7
 514              		.cfi_restore 14
  50:Core/Src/ADBMS_LL_Driver.c ****   }
 515              		.loc 1 50 12 view .LVU165
ARM GAS  /tmp/cc6A08EU.s 			page 16


 516 0050 FF20     		movs	r0, #255
 517              	.LVL70:
  70:Core/Src/ADBMS_LL_Driver.c **** 
 518              		.loc 1 70 1 view .LVU166
 519 0052 7047     		bx	lr
 520              	.LVL71:
 521              	.L28:
 522              		.cfi_def_cfa_offset 24
 523              		.cfi_offset 3, -24
 524              		.cfi_offset 4, -20
 525              		.cfi_offset 5, -16
 526              		.cfi_offset 6, -12
 527              		.cfi_offset 7, -8
 528              		.cfi_offset 14, -4
  66:Core/Src/ADBMS_LL_Driver.c ****   }
 529              		.loc 1 66 12 view .LVU167
 530 0054 0020     		movs	r0, #0
 531              	.LVL72:
  66:Core/Src/ADBMS_LL_Driver.c ****   }
 532              		.loc 1 66 12 view .LVU168
 533 0056 F3E7     		b	.L21
 534              		.cfi_endproc
 535              	.LFE125:
 537              		.section	.text.pec10_calc,"ax",%progbits
 538              		.align	1
 539              		.global	pec10_calc
 540              		.syntax unified
 541              		.thumb
 542              		.thumb_func
 544              	pec10_calc:
 545              	.LVL73:
 546              	.LFB127:
 107:Core/Src/ADBMS_LL_Driver.c ****   uint16_t remainder = 16; /* PEC_SEED;   0000010000 */
 547              		.loc 1 107 58 is_stmt 1 view -0
 548              		.cfi_startproc
 549              		@ args = 0, pretend = 0, frame = 0
 550              		@ frame_needed = 0, uses_anonymous_args = 0
 107:Core/Src/ADBMS_LL_Driver.c ****   uint16_t remainder = 16; /* PEC_SEED;   0000010000 */
 551              		.loc 1 107 58 is_stmt 0 view .LVU170
 552 0000 10B5     		push	{r4, lr}
 553              		.cfi_def_cfa_offset 8
 554              		.cfi_offset 4, -8
 555              		.cfi_offset 14, -4
 556 0002 0446     		mov	r4, r0
 108:Core/Src/ADBMS_LL_Driver.c ****   uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
 557              		.loc 1 108 3 is_stmt 1 view .LVU171
 558              	.LVL74:
 109:Core/Src/ADBMS_LL_Driver.c ****                               100 1000 1111   48F */
 559              		.loc 1 109 3 view .LVU172
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 560              		.loc 1 113 3 view .LVU173
 561              	.LBB12:
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 562              		.loc 1 113 8 view .LVU174
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 563              		.loc 1 113 16 is_stmt 0 view .LVU175
 564 0004 4FF0000C 		mov	ip, #0
ARM GAS  /tmp/cc6A08EU.s 			page 17


 565              	.LBE12:
 108:Core/Src/ADBMS_LL_Driver.c ****   uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
 566              		.loc 1 108 12 view .LVU176
 567 0008 1023     		movs	r3, #16
 568              	.LBB15:
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 569              		.loc 1 113 3 view .LVU177
 570 000a 10E0     		b	.L36
 571              	.LVL75:
 572              	.L38:
 573              	.LBB13:
 125:Core/Src/ADBMS_LL_Driver.c ****       }
 574              		.loc 1 125 9 is_stmt 1 view .LVU178
 125:Core/Src/ADBMS_LL_Driver.c ****       }
 575              		.loc 1 125 19 is_stmt 0 view .LVU179
 576 000c 5B00     		lsls	r3, r3, #1
 577              	.LVL76:
 125:Core/Src/ADBMS_LL_Driver.c ****       }
 578              		.loc 1 125 19 view .LVU180
 579 000e 9BB2     		uxth	r3, r3
 580              	.LVL77:
 581              	.L39:
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 582              		.loc 1 117 38 is_stmt 1 discriminator 2 view .LVU181
 583 0010 0138     		subs	r0, r0, #1
 584              	.LVL78:
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 585              		.loc 1 117 38 is_stmt 0 discriminator 2 view .LVU182
 586 0012 C0B2     		uxtb	r0, r0
 587              	.LVL79:
 588              	.L37:
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 589              		.loc 1 117 33 is_stmt 1 discriminator 1 view .LVU183
 590 0014 38B1     		cbz	r0, .L48
 119:Core/Src/ADBMS_LL_Driver.c ****           0) // equivalent to remainder & 2^14 simply check for MSB
 591              		.loc 1 119 7 view .LVU184
 119:Core/Src/ADBMS_LL_Driver.c ****           0) // equivalent to remainder & 2^14 simply check for MSB
 592              		.loc 1 119 10 is_stmt 0 view .LVU185
 593 0016 13F4007F 		tst	r3, #512
 594 001a F7D0     		beq	.L38
 122:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 595              		.loc 1 122 9 is_stmt 1 view .LVU186
 122:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 596              		.loc 1 122 19 is_stmt 0 view .LVU187
 597 001c 5B00     		lsls	r3, r3, #1
 598              	.LVL80:
 122:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 599              		.loc 1 122 19 view .LVU188
 600 001e 9BB2     		uxth	r3, r3
 601              	.LVL81:
 123:Core/Src/ADBMS_LL_Driver.c ****       } else {
 602              		.loc 1 123 9 is_stmt 1 view .LVU189
 123:Core/Src/ADBMS_LL_Driver.c ****       } else {
 603              		.loc 1 123 19 is_stmt 0 view .LVU190
 604 0020 83F08F03 		eor	r3, r3, #143
 605              	.LVL82:
 123:Core/Src/ADBMS_LL_Driver.c ****       } else {
ARM GAS  /tmp/cc6A08EU.s 			page 18


 606              		.loc 1 123 19 view .LVU191
 607 0024 F4E7     		b	.L39
 608              	.L48:
 123:Core/Src/ADBMS_LL_Driver.c ****       } else {
 609              		.loc 1 123 19 view .LVU192
 610              	.LBE13:
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 611              		.loc 1 113 40 is_stmt 1 discriminator 2 view .LVU193
 612 0026 0CF1010C 		add	ip, ip, #1
 613              	.LVL83:
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 614              		.loc 1 113 40 is_stmt 0 discriminator 2 view .LVU194
 615 002a 5FFA8CFC 		uxtb	ip, ip
 616              	.LVL84:
 617              	.L36:
 113:Core/Src/ADBMS_LL_Driver.c ****     /* Bring the next byte into the remainder. */
 618              		.loc 1 113 33 is_stmt 1 discriminator 1 view .LVU195
 619 002e 8C45     		cmp	ip, r1
 620 0030 05DA     		bge	.L49
 115:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time.*/
 621              		.loc 1 115 5 view .LVU196
 115:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time.*/
 622              		.loc 1 115 33 is_stmt 0 view .LVU197
 623 0032 12F80CE0 		ldrb	lr, [r2, ip]	@ zero_extendqisi2
 115:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time.*/
 624              		.loc 1 115 15 view .LVU198
 625 0036 83EA8E03 		eor	r3, r3, lr, lsl #2
 626              	.LVL85:
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 627              		.loc 1 117 5 is_stmt 1 view .LVU199
 628              	.LBB14:
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 629              		.loc 1 117 10 view .LVU200
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 630              		.loc 1 117 18 is_stmt 0 view .LVU201
 631 003a 0820     		movs	r0, #8
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 632              		.loc 1 117 5 view .LVU202
 633 003c EAE7     		b	.L37
 634              	.LVL86:
 635              	.L49:
 117:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit. */
 636              		.loc 1 117 5 view .LVU203
 637              	.LBE14:
 638              	.LBE15:
 129:Core/Src/ADBMS_LL_Driver.c ****     remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
 639              		.loc 1 129 3 is_stmt 1 view .LVU204
 129:Core/Src/ADBMS_LL_Driver.c ****     remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
 640              		.loc 1 129 6 is_stmt 0 view .LVU205
 641 003e 9CB1     		cbz	r4, .L42
 130:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time */
 642              		.loc 1 130 5 is_stmt 1 view .LVU206
 130:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time */
 643              		.loc 1 130 34 is_stmt 0 view .LVU207
 644 0040 525C     		ldrb	r2, [r2, r1]	@ zero_extendqisi2
 645              	.LVL87:
 130:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time */
ARM GAS  /tmp/cc6A08EU.s 			page 19


 646              		.loc 1 130 48 view .LVU208
 647 0042 9200     		lsls	r2, r2, #2
 130:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time */
 648              		.loc 1 130 18 view .LVU209
 649 0044 02F47C72 		and	r2, r2, #1008
 130:Core/Src/ADBMS_LL_Driver.c ****     /* Perform modulo-2 division, a bit at a time */
 650              		.loc 1 130 15 view .LVU210
 651 0048 5340     		eors	r3, r3, r2
 652              	.LVL88:
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 653              		.loc 1 132 5 is_stmt 1 view .LVU211
 654              	.LBB16:
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 655              		.loc 1 132 10 view .LVU212
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 656              		.loc 1 132 18 is_stmt 0 view .LVU213
 657 004a 0622     		movs	r2, #6
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 658              		.loc 1 132 5 view .LVU214
 659 004c 03E0     		b	.L43
 660              	.LVL89:
 661              	.L44:
 140:Core/Src/ADBMS_LL_Driver.c ****       }
 662              		.loc 1 140 9 is_stmt 1 view .LVU215
 140:Core/Src/ADBMS_LL_Driver.c ****       }
 663              		.loc 1 140 19 is_stmt 0 view .LVU216
 664 004e 5B00     		lsls	r3, r3, #1
 665              	.LVL90:
 140:Core/Src/ADBMS_LL_Driver.c ****       }
 666              		.loc 1 140 19 view .LVU217
 667 0050 9BB2     		uxth	r3, r3
 668              	.LVL91:
 669              	.L45:
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 670              		.loc 1 132 38 is_stmt 1 discriminator 2 view .LVU218
 671 0052 013A     		subs	r2, r2, #1
 672              	.LVL92:
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 673              		.loc 1 132 38 is_stmt 0 discriminator 2 view .LVU219
 674 0054 D2B2     		uxtb	r2, r2
 675              	.LVL93:
 676              	.L43:
 132:Core/Src/ADBMS_LL_Driver.c ****       /* Try to divide the current data bit */
 677              		.loc 1 132 33 is_stmt 1 discriminator 1 view .LVU220
 678 0056 3AB1     		cbz	r2, .L42
 134:Core/Src/ADBMS_LL_Driver.c ****           0) // equivalent to remainder & 2^14 simply check for MSB
 679              		.loc 1 134 7 view .LVU221
 134:Core/Src/ADBMS_LL_Driver.c ****           0) // equivalent to remainder & 2^14 simply check for MSB
 680              		.loc 1 134 10 is_stmt 0 view .LVU222
 681 0058 13F4007F 		tst	r3, #512
 682 005c F7D0     		beq	.L44
 137:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 683              		.loc 1 137 9 is_stmt 1 view .LVU223
 137:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 684              		.loc 1 137 19 is_stmt 0 view .LVU224
 685 005e 5B00     		lsls	r3, r3, #1
 686              	.LVL94:
ARM GAS  /tmp/cc6A08EU.s 			page 20


 137:Core/Src/ADBMS_LL_Driver.c ****         remainder = (uint16_t)(remainder ^ polynom);
 687              		.loc 1 137 19 view .LVU225
 688 0060 9BB2     		uxth	r3, r3
 689              	.LVL95:
 138:Core/Src/ADBMS_LL_Driver.c ****       } else {
 690              		.loc 1 138 9 is_stmt 1 view .LVU226
 138:Core/Src/ADBMS_LL_Driver.c ****       } else {
 691              		.loc 1 138 19 is_stmt 0 view .LVU227
 692 0062 83F08F03 		eor	r3, r3, #143
 693              	.LVL96:
 138:Core/Src/ADBMS_LL_Driver.c ****       } else {
 694              		.loc 1 138 19 view .LVU228
 695 0066 F4E7     		b	.L45
 696              	.LVL97:
 697              	.L42:
 138:Core/Src/ADBMS_LL_Driver.c ****       } else {
 698              		.loc 1 138 19 view .LVU229
 699              	.LBE16:
 144:Core/Src/ADBMS_LL_Driver.c **** }
 700              		.loc 1 144 3 is_stmt 1 view .LVU230
 145:Core/Src/ADBMS_LL_Driver.c **** 
 701              		.loc 1 145 1 is_stmt 0 view .LVU231
 702 0068 C3F30900 		ubfx	r0, r3, #0, #10
 703 006c 10BD     		pop	{r4, pc}
 145:Core/Src/ADBMS_LL_Driver.c **** 
 704              		.loc 1 145 1 view .LVU232
 705              		.cfi_endproc
 706              	.LFE127:
 708              		.section	.text.calculateDataPEC,"ax",%progbits
 709              		.align	1
 710              		.global	calculateDataPEC
 711              		.syntax unified
 712              		.thumb
 713              		.thumb_func
 715              	calculateDataPEC:
 716              	.LVL98:
 717              	.LFB128:
 150:Core/Src/ADBMS_LL_Driver.c **** 
 718              		.loc 1 150 56 is_stmt 1 view -0
 719              		.cfi_startproc
 720              		@ args = 0, pretend = 0, frame = 8
 721              		@ frame_needed = 0, uses_anonymous_args = 0
 152:Core/Src/ADBMS_LL_Driver.c ****     
 722              		.loc 1 152 3 view .LVU234
 152:Core/Src/ADBMS_LL_Driver.c ****     
 723              		.loc 1 152 6 is_stmt 0 view .LVU235
 724 0000 0229     		cmp	r1, #2
 725 0002 01D8     		bhi	.L57
 165:Core/Src/ADBMS_LL_Driver.c ****   }
 726              		.loc 1 165 12 view .LVU236
 727 0004 0120     		movs	r0, #1
 728              	.LVL99:
 167:Core/Src/ADBMS_LL_Driver.c **** 
 729              		.loc 1 167 1 view .LVU237
 730 0006 7047     		bx	lr
 731              	.LVL100:
 732              	.L57:
ARM GAS  /tmp/cc6A08EU.s 			page 21


 150:Core/Src/ADBMS_LL_Driver.c **** 
 733              		.loc 1 150 56 view .LVU238
 734 0008 70B5     		push	{r4, r5, r6, lr}
 735              		.cfi_def_cfa_offset 16
 736              		.cfi_offset 4, -16
 737              		.cfi_offset 5, -12
 738              		.cfi_offset 6, -8
 739              		.cfi_offset 14, -4
 740 000a 82B0     		sub	sp, sp, #8
 741              		.cfi_def_cfa_offset 24
 742 000c 0546     		mov	r5, r0
 743 000e 0C46     		mov	r4, r1
 744              	.LBB17:
 155:Core/Src/ADBMS_LL_Driver.c **** 
 745              		.loc 1 155 5 is_stmt 1 view .LVU239
 155:Core/Src/ADBMS_LL_Driver.c **** 
 746              		.loc 1 155 22 is_stmt 0 view .LVU240
 747 0010 8E1E     		subs	r6, r1, #2
 748 0012 0246     		mov	r2, r0
 749 0014 3146     		mov	r1, r6
 750              	.LVL101:
 155:Core/Src/ADBMS_LL_Driver.c **** 
 751              		.loc 1 155 22 view .LVU241
 752 0016 0120     		movs	r0, #1
 753              	.LVL102:
 155:Core/Src/ADBMS_LL_Driver.c **** 
 754              		.loc 1 155 22 view .LVU242
 755 0018 FFF7FEFF 		bl	pec10_calc
 756              	.LVL103:
 158:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 1] = currentpec & 0xFF;
 757              		.loc 1 158 5 is_stmt 1 view .LVU243
 158:Core/Src/ADBMS_LL_Driver.c ****     data[datalen - 1] = currentpec & 0xFF;
 758              		.loc 1 158 23 is_stmt 0 view .LVU244
 759 001c C0F30123 		ubfx	r3, r0, #8, #2
 760 0020 AB55     		strb	r3, [r5, r6]
 159:Core/Src/ADBMS_LL_Driver.c **** 
 761              		.loc 1 159 5 is_stmt 1 view .LVU245
 159:Core/Src/ADBMS_LL_Driver.c **** 
 762              		.loc 1 159 9 is_stmt 0 view .LVU246
 763 0022 631E     		subs	r3, r4, #1
 159:Core/Src/ADBMS_LL_Driver.c **** 
 764              		.loc 1 159 23 view .LVU247
 765 0024 E854     		strb	r0, [r5, r3]
 161:Core/Src/ADBMS_LL_Driver.c **** 
 766              		.loc 1 161 5 is_stmt 1 view .LVU248
 161:Core/Src/ADBMS_LL_Driver.c **** 
 767              		.loc 1 161 29 is_stmt 0 view .LVU249
 768 0026 2A46     		mov	r2, r5
 769 0028 2146     		mov	r1, r4
 770 002a 0120     		movs	r0, #1
 771              	.LVL104:
 161:Core/Src/ADBMS_LL_Driver.c **** 
 772              		.loc 1 161 29 view .LVU250
 773 002c FFF7FEFF 		bl	pec10_calc
 774              	.LVL105:
 161:Core/Src/ADBMS_LL_Driver.c **** 
 775              		.loc 1 161 20 discriminator 1 view .LVU251
ARM GAS  /tmp/cc6A08EU.s 			page 22


 776 0030 C0B2     		uxtb	r0, r0
 777 0032 8DF80700 		strb	r0, [sp, #7]
 163:Core/Src/ADBMS_LL_Driver.c ****   } else {
 778              		.loc 1 163 5 is_stmt 1 view .LVU252
 163:Core/Src/ADBMS_LL_Driver.c ****   } else {
 779              		.loc 1 163 12 is_stmt 0 view .LVU253
 780 0036 0020     		movs	r0, #0
 781              	.LBE17:
 167:Core/Src/ADBMS_LL_Driver.c **** 
 782              		.loc 1 167 1 view .LVU254
 783 0038 02B0     		add	sp, sp, #8
 784              		.cfi_def_cfa_offset 16
 785              		@ sp needed
 786 003a 70BD     		pop	{r4, r5, r6, pc}
 167:Core/Src/ADBMS_LL_Driver.c **** 
 787              		.loc 1 167 1 view .LVU255
 788              		.cfi_endproc
 789              	.LFE128:
 791              		.section	.text.F_CRC_CalculaCheckSum,"ax",%progbits
 792              		.align	1
 793              		.global	F_CRC_CalculaCheckSum
 794              		.syntax unified
 795              		.thumb
 796              		.thumb_func
 798              	F_CRC_CalculaCheckSum:
 799              	.LVL106:
 800              	.LFB131:
 195:Core/Src/ADBMS_LL_Driver.c **** crc F_CRC_CalculaCheckSum(uint8_t const AF_Datos[], uint16_t VF_nBytes) {
 801              		.loc 1 195 73 is_stmt 1 view -0
 802              		.cfi_startproc
 803              		@ args = 0, pretend = 0, frame = 0
 804              		@ frame_needed = 0, uses_anonymous_args = 0
 805              		.loc 1 195 73 is_stmt 0 view .LVU257
 806 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 807              		.cfi_def_cfa_offset 24
 808              		.cfi_offset 3, -24
 809              		.cfi_offset 4, -20
 810              		.cfi_offset 5, -16
 811              		.cfi_offset 6, -12
 812              		.cfi_offset 7, -8
 813              		.cfi_offset 14, -4
 814 0002 0746     		mov	r7, r0
 815 0004 0E46     		mov	r6, r1
 196:Core/Src/ADBMS_LL_Driver.c ****   crc VP_CRCTableValue = 16;
 816              		.loc 1 196 3 is_stmt 1 view .LVU258
 817              	.LVL107:
 197:Core/Src/ADBMS_LL_Driver.c ****   int16_t VP_bytes = 0;
 818              		.loc 1 197 3 view .LVU259
 198:Core/Src/ADBMS_LL_Driver.c **** 
 199:Core/Src/ADBMS_LL_Driver.c ****   for (VP_bytes = 0; VP_bytes < VF_nBytes; VP_bytes++) {
 819              		.loc 1 199 3 view .LVU260
 820              		.loc 1 199 17 is_stmt 0 view .LVU261
 821 0006 0025     		movs	r5, #0
 196:Core/Src/ADBMS_LL_Driver.c ****   int16_t VP_bytes = 0;
 822              		.loc 1 196 7 view .LVU262
 823 0008 1024     		movs	r4, #16
 824              		.loc 1 199 3 view .LVU263
ARM GAS  /tmp/cc6A08EU.s 			page 23


 825 000a 0BE0     		b	.L59
 826              	.LVL108:
 827              	.L60:
 200:Core/Src/ADBMS_LL_Driver.c **** 
 201:Core/Src/ADBMS_LL_Driver.c ****     VP_CRCTableValue = (VP_CRCTableValue << 8) ^
 828              		.loc 1 201 5 is_stmt 1 view .LVU264
 202:Core/Src/ADBMS_LL_Driver.c ****                        F_CRC_ObtenValorDeTabla(
 203:Core/Src/ADBMS_LL_Driver.c ****                            ((uint8_t)((VP_CRCTableValue >> (10 - 8)) & 0xFF)) ^
 829              		.loc 1 203 29 is_stmt 0 view .LVU265
 830 000c C4F38700 		ubfx	r0, r4, #2, #8
 204:Core/Src/ADBMS_LL_Driver.c ****                            AF_Datos[VP_bytes]);
 831              		.loc 1 204 36 view .LVU266
 832 0010 7B5D     		ldrb	r3, [r7, r5]	@ zero_extendqisi2
 202:Core/Src/ADBMS_LL_Driver.c ****                        F_CRC_ObtenValorDeTabla(
 833              		.loc 1 202 24 view .LVU267
 834 0012 5840     		eors	r0, r0, r3
 835 0014 FFF7FEFF 		bl	F_CRC_ObtenValorDeTabla
 836              	.LVL109:
 837 0018 2402     		lsls	r4, r4, #8
 838              	.LVL110:
 202:Core/Src/ADBMS_LL_Driver.c ****                        F_CRC_ObtenValorDeTabla(
 839              		.loc 1 202 24 view .LVU268
 840 001a A4B2     		uxth	r4, r4
 201:Core/Src/ADBMS_LL_Driver.c ****                        F_CRC_ObtenValorDeTabla(
 841              		.loc 1 201 22 view .LVU269
 842 001c 6040     		eors	r0, r0, r4
 843 001e 84B2     		uxth	r4, r0
 844              	.LVL111:
 199:Core/Src/ADBMS_LL_Driver.c **** 
 845              		.loc 1 199 52 is_stmt 1 discriminator 3 view .LVU270
 846 0020 0135     		adds	r5, r5, #1
 847              	.LVL112:
 199:Core/Src/ADBMS_LL_Driver.c **** 
 848              		.loc 1 199 52 is_stmt 0 discriminator 3 view .LVU271
 849 0022 2DB2     		sxth	r5, r5
 850              	.LVL113:
 851              	.L59:
 199:Core/Src/ADBMS_LL_Driver.c **** 
 852              		.loc 1 199 31 is_stmt 1 discriminator 1 view .LVU272
 853 0024 B542     		cmp	r5, r6
 854 0026 F1DB     		blt	.L60
 205:Core/Src/ADBMS_LL_Driver.c ****   }
 206:Core/Src/ADBMS_LL_Driver.c **** 
 207:Core/Src/ADBMS_LL_Driver.c ****   if ((8 * sizeof(crc)) > 10) {
 855              		.loc 1 207 3 view .LVU273
 208:Core/Src/ADBMS_LL_Driver.c ****     VP_CRCTableValue = VP_CRCTableValue & ((((crc)(1)) << 10) - 1);
 856              		.loc 1 208 5 view .LVU274
 857              	.LVL114:
 209:Core/Src/ADBMS_LL_Driver.c ****   }
 210:Core/Src/ADBMS_LL_Driver.c **** 
 211:Core/Src/ADBMS_LL_Driver.c ****   return (VP_CRCTableValue ^ 0x0000);
 858              		.loc 1 211 3 view .LVU275
 212:Core/Src/ADBMS_LL_Driver.c **** }
 859              		.loc 1 212 1 is_stmt 0 view .LVU276
 860 0028 C4F30900 		ubfx	r0, r4, #0, #10
 861 002c F8BD     		pop	{r3, r4, r5, r6, r7, pc}
 862              		.loc 1 212 1 view .LVU277
ARM GAS  /tmp/cc6A08EU.s 			page 24


 863              		.cfi_endproc
 864              	.LFE131:
 866              		.section	.text.checkDataPEC,"ax",%progbits
 867              		.align	1
 868              		.global	checkDataPEC
 869              		.syntax unified
 870              		.thumb
 871              		.thumb_func
 873              	checkDataPEC:
 874              	.LVL115:
 875              	.LFB129:
 169:Core/Src/ADBMS_LL_Driver.c ****   if (len <= 2) {
 876              		.loc 1 169 44 is_stmt 1 view -0
 877              		.cfi_startproc
 878              		@ args = 0, pretend = 0, frame = 0
 879              		@ frame_needed = 0, uses_anonymous_args = 0
 170:Core/Src/ADBMS_LL_Driver.c ****     return 255;
 880              		.loc 1 170 3 view .LVU279
 170:Core/Src/ADBMS_LL_Driver.c ****     return 255;
 881              		.loc 1 170 6 is_stmt 0 view .LVU280
 882 0000 0229     		cmp	r1, #2
 883 0002 06D9     		bls	.L64
 169:Core/Src/ADBMS_LL_Driver.c ****   if (len <= 2) {
 884              		.loc 1 169 44 view .LVU281
 885 0004 08B5     		push	{r3, lr}
 886              		.cfi_def_cfa_offset 8
 887              		.cfi_offset 3, -8
 888              		.cfi_offset 14, -4
 174:Core/Src/ADBMS_LL_Driver.c **** 
 889              		.loc 1 174 3 is_stmt 1 view .LVU282
 174:Core/Src/ADBMS_LL_Driver.c **** 
 890              		.loc 1 174 20 is_stmt 0 view .LVU283
 891 0006 FFF7FEFF 		bl	F_CRC_CalculaCheckSum
 892              	.LVL116:
 176:Core/Src/ADBMS_LL_Driver.c **** }
 893              		.loc 1 176 3 is_stmt 1 view .LVU284
 176:Core/Src/ADBMS_LL_Driver.c **** }
 894              		.loc 1 176 32 is_stmt 0 view .LVU285
 895 000a 0038     		subs	r0, r0, #0
 176:Core/Src/ADBMS_LL_Driver.c **** }
 896              		.loc 1 176 32 view .LVU286
 897 000c 18BF     		it	ne
 898 000e 0120     		movne	r0, #1
 899              	.LVL117:
 177:Core/Src/ADBMS_LL_Driver.c **** 
 900              		.loc 1 177 1 view .LVU287
 901 0010 08BD     		pop	{r3, pc}
 902              	.LVL118:
 903              	.L64:
 904              		.cfi_def_cfa_offset 0
 905              		.cfi_restore 3
 906              		.cfi_restore 14
 171:Core/Src/ADBMS_LL_Driver.c ****   }
 907              		.loc 1 171 12 view .LVU288
 908 0012 FF20     		movs	r0, #255
 909              	.LVL119:
 177:Core/Src/ADBMS_LL_Driver.c **** 
ARM GAS  /tmp/cc6A08EU.s 			page 25


 910              		.loc 1 177 1 view .LVU289
 911 0014 7047     		bx	lr
 912              		.cfi_endproc
 913              	.LFE129:
 915              		.section	.text.updateDataPEC,"ax",%progbits
 916              		.align	1
 917              		.global	updateDataPEC
 918              		.syntax unified
 919              		.thumb
 920              		.thumb_func
 922              	updateDataPEC:
 923              	.LVL120:
 924              	.LFB132:
 213:Core/Src/ADBMS_LL_Driver.c **** 
 214:Core/Src/ADBMS_LL_Driver.c **** uint16 updateDataPEC(uint16 currentPEC, uint8 din) {
 925              		.loc 1 214 52 is_stmt 1 view -0
 926              		.cfi_startproc
 927              		@ args = 0, pretend = 0, frame = 0
 928              		@ frame_needed = 0, uses_anonymous_args = 0
 929              		.loc 1 214 52 is_stmt 0 view .LVU291
 930 0000 10B5     		push	{r4, lr}
 931              		.cfi_def_cfa_offset 8
 932              		.cfi_offset 4, -8
 933              		.cfi_offset 14, -4
 215:Core/Src/ADBMS_LL_Driver.c ****   din = (din >> 7) & 0x01;
 934              		.loc 1 215 3 is_stmt 1 view .LVU292
 935              	.LVL121:
 216:Core/Src/ADBMS_LL_Driver.c ****   uint8 in0 = din ^ ((currentPEC >> 9) & 0x01);
 936              		.loc 1 216 3 view .LVU293
 937              		.loc 1 216 40 is_stmt 0 view .LVU294
 938 0002 C0F34022 		ubfx	r2, r0, #9, #1
 939              		.loc 1 216 19 view .LVU295
 940 0006 82EAD113 		eor	r3, r2, r1, lsr #7
 941              		.loc 1 216 9 view .LVU296
 942 000a 1946     		mov	r1, r3
 943              	.LVL122:
 217:Core/Src/ADBMS_LL_Driver.c ****   uint8 in2 = in0 ^ ((currentPEC >> 1) & 0x01);
 944              		.loc 1 217 3 is_stmt 1 view .LVU297
 945              		.loc 1 217 40 is_stmt 0 view .LVU298
 946 000c C0F3400E 		ubfx	lr, r0, #1, #1
 947              		.loc 1 217 9 view .LVU299
 948 0010 83EA0E0E 		eor	lr, r3, lr
 949              	.LVL123:
 218:Core/Src/ADBMS_LL_Driver.c ****   uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
 950              		.loc 1 218 3 is_stmt 1 view .LVU300
 951              		.loc 1 218 40 is_stmt 0 view .LVU301
 952 0014 C0F38004 		ubfx	r4, r0, #2, #1
 953              		.loc 1 218 9 view .LVU302
 954 0018 5C40     		eors	r4, r4, r3
 955              	.LVL124:
 219:Core/Src/ADBMS_LL_Driver.c ****   uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
 956              		.loc 1 219 3 is_stmt 1 view .LVU303
 957              		.loc 1 219 40 is_stmt 0 view .LVU304
 958 001a C0F38012 		ubfx	r2, r0, #6, #1
 959              		.loc 1 219 9 view .LVU305
 960 001e 83EA020C 		eor	ip, r3, r2
 961              	.LVL125:
ARM GAS  /tmp/cc6A08EU.s 			page 26


 220:Core/Src/ADBMS_LL_Driver.c **** 
 221:Core/Src/ADBMS_LL_Driver.c ****   uint16 newPEC = 0;
 962              		.loc 1 221 3 is_stmt 1 view .LVU306
 222:Core/Src/ADBMS_LL_Driver.c **** 
 223:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 8)) << 1;
 963              		.loc 1 223 3 view .LVU307
 964              		.loc 1 223 40 is_stmt 0 view .LVU308
 965 0022 4200     		lsls	r2, r0, #1
 966 0024 02F40073 		and	r3, r2, #512
 967              	.LVL126:
 224:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 7)) << 1;
 968              		.loc 1 224 3 is_stmt 1 view .LVU309
 969              		.loc 1 224 40 is_stmt 0 view .LVU310
 970 0028 02F48070 		and	r0, r2, #256
 971              	.LVL127:
 972              		.loc 1 224 10 view .LVU311
 973 002c 0343     		orrs	r3, r3, r0
 974              	.LVL128:
 225:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in7 << 7;
 975              		.loc 1 225 3 is_stmt 1 view .LVU312
 976              		.loc 1 225 10 is_stmt 0 view .LVU313
 977 002e 43EACC13 		orr	r3, r3, ip, lsl #7
 978              	.LVL129:
 226:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 5)) << 1;
 979              		.loc 1 226 3 is_stmt 1 view .LVU314
 980              		.loc 1 226 40 is_stmt 0 view .LVU315
 981 0032 02F04000 		and	r0, r2, #64
 982              		.loc 1 226 10 view .LVU316
 983 0036 0343     		orrs	r3, r3, r0
 984              	.LVL130:
 985              		.loc 1 226 10 view .LVU317
 986 0038 1BB2     		sxth	r3, r3
 987              	.LVL131:
 227:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01 << 4)) << 1;
 988              		.loc 1 227 3 is_stmt 1 view .LVU318
 989              		.loc 1 227 40 is_stmt 0 view .LVU319
 990 003a 02F02000 		and	r0, r2, #32
 991              		.loc 1 227 10 view .LVU320
 992 003e 0343     		orrs	r3, r3, r0
 993              	.LVL132:
 228:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in3 << 3;
 994              		.loc 1 228 3 is_stmt 1 view .LVU321
 995              		.loc 1 228 10 is_stmt 0 view .LVU322
 996 0040 43EAC403 		orr	r3, r3, r4, lsl #3
 997              	.LVL133:
 229:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in2 << 2;
 998              		.loc 1 229 3 is_stmt 1 view .LVU323
 999              		.loc 1 229 10 is_stmt 0 view .LVU324
 1000 0044 43EA8E03 		orr	r3, r3, lr, lsl #2
 1001              	.LVL134:
 230:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= (currentPEC & (0x01)) << 1;
 1002              		.loc 1 230 3 is_stmt 1 view .LVU325
 1003              		.loc 1 230 35 is_stmt 0 view .LVU326
 1004 0048 02F00202 		and	r2, r2, #2
 1005              		.loc 1 230 10 view .LVU327
 1006 004c 1343     		orrs	r3, r3, r2
 1007              	.LVL135:
ARM GAS  /tmp/cc6A08EU.s 			page 27


 1008              		.loc 1 230 10 view .LVU328
 1009 004e 9BB2     		uxth	r3, r3
 1010              	.LVL136:
 231:Core/Src/ADBMS_LL_Driver.c ****   newPEC |= in0;
 1011              		.loc 1 231 3 is_stmt 1 view .LVU329
 232:Core/Src/ADBMS_LL_Driver.c **** 
 233:Core/Src/ADBMS_LL_Driver.c ****   return newPEC;
 1012              		.loc 1 233 3 view .LVU330
 234:Core/Src/ADBMS_LL_Driver.c **** }
 1013              		.loc 1 234 1 is_stmt 0 view .LVU331
 1014 0050 41EA0300 		orr	r0, r1, r3
 1015              	.LVL137:
 1016              		.loc 1 234 1 view .LVU332
 1017 0054 10BD     		pop	{r4, pc}
 1018              		.loc 1 234 1 view .LVU333
 1019              		.cfi_endproc
 1020              	.LFE132:
 1022              		.section	.text.mcuAdbmsCSLow,"ax",%progbits
 1023              		.align	1
 1024              		.global	mcuAdbmsCSLow
 1025              		.syntax unified
 1026              		.thumb
 1027              		.thumb_func
 1029              	mcuAdbmsCSLow:
 1030              	.LFB136:
 235:Core/Src/ADBMS_LL_Driver.c **** 
 236:Core/Src/ADBMS_LL_Driver.c **** uint8 writeCMD(uint16 command, uint8* args, uint8 arglen) {
 237:Core/Src/ADBMS_LL_Driver.c ****   uint8 ret;
 238:Core/Src/ADBMS_LL_Driver.c ****   if (arglen > 0) {
 239:Core/Src/ADBMS_LL_Driver.c ****     uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
 240:Core/Src/ADBMS_LL_Driver.c ****     buffer[0] = (command >> 8) & 0xFF;
 241:Core/Src/ADBMS_LL_Driver.c ****     buffer[1] = (command) & 0xFF;
 242:Core/Src/ADBMS_LL_Driver.c **** 
 243:Core/Src/ADBMS_LL_Driver.c ****     calculateCommandPEC(buffer, 4);
 244:Core/Src/ADBMS_LL_Driver.c **** 
 245:Core/Src/ADBMS_LL_Driver.c ****     for (uint8 i = 0; i < arglen; i++) {
 246:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 247:Core/Src/ADBMS_LL_Driver.c ****     }
 248:Core/Src/ADBMS_LL_Driver.c **** 
 249:Core/Src/ADBMS_LL_Driver.c ****     calculateDataPEC(&buffer[4], arglen + 2); //DPEC is calculated over the data, not the command, 
 250:Core/Src/ADBMS_LL_Driver.c **** 
 251:Core/Src/ADBMS_LL_Driver.c ****     mcuAdbmsCSLow();
 252:Core/Src/ADBMS_LL_Driver.c ****     ret = mcuSPITransmit(buffer, 6 + arglen);
 253:Core/Src/ADBMS_LL_Driver.c ****     mcuAdbmsCSHigh();
 254:Core/Src/ADBMS_LL_Driver.c ****   } else {
 255:Core/Src/ADBMS_LL_Driver.c ****     uint8 buffer[4];
 256:Core/Src/ADBMS_LL_Driver.c ****     buffer[0] = (command >> 8) & 0xFF;
 257:Core/Src/ADBMS_LL_Driver.c ****     buffer[1] = (command) & 0xFF;
 258:Core/Src/ADBMS_LL_Driver.c ****     calculateCommandPEC(buffer, 4);
 259:Core/Src/ADBMS_LL_Driver.c **** 
 260:Core/Src/ADBMS_LL_Driver.c ****     mcuAdbmsCSLow();
 261:Core/Src/ADBMS_LL_Driver.c **** 
 262:Core/Src/ADBMS_LL_Driver.c ****     ret = mcuSPITransmit(buffer, 4);
 263:Core/Src/ADBMS_LL_Driver.c **** 
 264:Core/Src/ADBMS_LL_Driver.c ****     mcuAdbmsCSHigh();
 265:Core/Src/ADBMS_LL_Driver.c ****   }
 266:Core/Src/ADBMS_LL_Driver.c **** 
ARM GAS  /tmp/cc6A08EU.s 			page 28


 267:Core/Src/ADBMS_LL_Driver.c ****   return ret;
 268:Core/Src/ADBMS_LL_Driver.c **** }
 269:Core/Src/ADBMS_LL_Driver.c **** 
 270:Core/Src/ADBMS_LL_Driver.c **** uint8 readCMD(uint16 command, uint8* buffer, uint8 buflen) {
 271:Core/Src/ADBMS_LL_Driver.c ****   uint8 txbuffer[6 + buflen];
 272:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[6 + buflen];
 273:Core/Src/ADBMS_LL_Driver.c **** 
 274:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[0] = (command >> 8) & 0xFF;
 275:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[1] = (command)&0xFF;
 276:Core/Src/ADBMS_LL_Driver.c ****   calculateCommandPEC(txbuffer, 4);
 277:Core/Src/ADBMS_LL_Driver.c **** 
 278:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSLow();
 279:Core/Src/ADBMS_LL_Driver.c ****   uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 6 + buflen);
 280:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 281:Core/Src/ADBMS_LL_Driver.c **** 
 282:Core/Src/ADBMS_LL_Driver.c ****   if (status != 0) {
 283:Core/Src/ADBMS_LL_Driver.c ****     return status;
 284:Core/Src/ADBMS_LL_Driver.c ****   }
 285:Core/Src/ADBMS_LL_Driver.c **** 
 286:Core/Src/ADBMS_LL_Driver.c ****   for (uint8 i = 0; i < buflen; i++) {
 287:Core/Src/ADBMS_LL_Driver.c ****     buffer[i] = rxbuffer[i + 4];
 288:Core/Src/ADBMS_LL_Driver.c ****   }
 289:Core/Src/ADBMS_LL_Driver.c **** 
 290:Core/Src/ADBMS_LL_Driver.c ****   [[maybe_unused]] uint8 commandCounter = rxbuffer[sizeof(rxbuffer) - 2] & 0xFC; //command counter 
 291:Core/Src/ADBMS_LL_Driver.c ****                                                                                  //TODO: check comm
 292:Core/Src/ADBMS_LL_Driver.c ****                                                                                  
 293:Core/Src/ADBMS_LL_Driver.c ****   return checkDataPEC(&rxbuffer[4], buflen + 2);
 294:Core/Src/ADBMS_LL_Driver.c **** }
 295:Core/Src/ADBMS_LL_Driver.c **** 
 296:Core/Src/ADBMS_LL_Driver.c **** //check poll command - no data PEC sent back
 297:Core/Src/ADBMS_LL_Driver.c **** uint8 pollCMD(uint16 command) {
 298:Core/Src/ADBMS_LL_Driver.c ****   uint8 txbuffer[5] = {};
 299:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[5] = {};
 300:Core/Src/ADBMS_LL_Driver.c **** 
 301:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[0] = (command >> 8) & 0xFF;
 302:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[1] = (command)&0xFF;
 303:Core/Src/ADBMS_LL_Driver.c ****   calculateCommandPEC(txbuffer, 4);
 304:Core/Src/ADBMS_LL_Driver.c **** 
 305:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSLow();
 306:Core/Src/ADBMS_LL_Driver.c ****   uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 5);
 307:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 308:Core/Src/ADBMS_LL_Driver.c **** 
 309:Core/Src/ADBMS_LL_Driver.c ****   if (status != 0) {
 310:Core/Src/ADBMS_LL_Driver.c ****     return status;
 311:Core/Src/ADBMS_LL_Driver.c ****   }
 312:Core/Src/ADBMS_LL_Driver.c **** 
 313:Core/Src/ADBMS_LL_Driver.c ****   return rxbuffer[4]; //last byte will be poll response
 314:Core/Src/ADBMS_LL_Driver.c **** }
 315:Core/Src/ADBMS_LL_Driver.c **** 
 316:Core/Src/ADBMS_LL_Driver.c **** void mcuAdbmsCSLow() {
 1031              		.loc 1 316 22 is_stmt 1 view -0
 1032              		.cfi_startproc
 1033              		@ args = 0, pretend = 0, frame = 0
 1034              		@ frame_needed = 0, uses_anonymous_args = 0
 1035 0000 08B5     		push	{r3, lr}
 1036              		.cfi_def_cfa_offset 8
 1037              		.cfi_offset 3, -8
ARM GAS  /tmp/cc6A08EU.s 			page 29


 1038              		.cfi_offset 14, -4
 317:Core/Src/ADBMS_LL_Driver.c ****   HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET);
 1039              		.loc 1 317 3 view .LVU335
 1040 0002 0022     		movs	r2, #0
 1041 0004 4021     		movs	r1, #64
 1042 0006 0248     		ldr	r0, .L73
 1043 0008 FFF7FEFF 		bl	HAL_GPIO_WritePin
 1044              	.LVL138:
 318:Core/Src/ADBMS_LL_Driver.c **** }
 1045              		.loc 1 318 1 is_stmt 0 view .LVU336
 1046 000c 08BD     		pop	{r3, pc}
 1047              	.L74:
 1048 000e 00BF     		.align	2
 1049              	.L73:
 1050 0010 00040048 		.word	1207960576
 1051              		.cfi_endproc
 1052              	.LFE136:
 1054              		.section	.text.mcuAdbmsCSHigh,"ax",%progbits
 1055              		.align	1
 1056              		.global	mcuAdbmsCSHigh
 1057              		.syntax unified
 1058              		.thumb
 1059              		.thumb_func
 1061              	mcuAdbmsCSHigh:
 1062              	.LFB137:
 319:Core/Src/ADBMS_LL_Driver.c **** 
 320:Core/Src/ADBMS_LL_Driver.c **** void mcuAdbmsCSHigh() {
 1063              		.loc 1 320 23 is_stmt 1 view -0
 1064              		.cfi_startproc
 1065              		@ args = 0, pretend = 0, frame = 0
 1066              		@ frame_needed = 0, uses_anonymous_args = 0
 1067 0000 08B5     		push	{r3, lr}
 1068              		.cfi_def_cfa_offset 8
 1069              		.cfi_offset 3, -8
 1070              		.cfi_offset 14, -4
 321:Core/Src/ADBMS_LL_Driver.c ****   HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET);
 1071              		.loc 1 321 3 view .LVU338
 1072 0002 0122     		movs	r2, #1
 1073 0004 4021     		movs	r1, #64
 1074 0006 0248     		ldr	r0, .L77
 1075 0008 FFF7FEFF 		bl	HAL_GPIO_WritePin
 1076              	.LVL139:
 322:Core/Src/ADBMS_LL_Driver.c **** }
 1077              		.loc 1 322 1 is_stmt 0 view .LVU339
 1078 000c 08BD     		pop	{r3, pc}
 1079              	.L78:
 1080 000e 00BF     		.align	2
 1081              	.L77:
 1082 0010 00040048 		.word	1207960576
 1083              		.cfi_endproc
 1084              	.LFE137:
 1086              		.section	.text.adbmsDriverInit,"ax",%progbits
 1087              		.align	1
 1088              		.global	adbmsDriverInit
 1089              		.syntax unified
 1090              		.thumb
 1091              		.thumb_func
ARM GAS  /tmp/cc6A08EU.s 			page 30


 1093              	adbmsDriverInit:
 1094              	.LVL140:
 1095              	.LFB123:
  18:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSLow();
 1096              		.loc 1 18 48 is_stmt 1 view -0
 1097              		.cfi_startproc
 1098              		@ args = 0, pretend = 0, frame = 0
 1099              		@ frame_needed = 0, uses_anonymous_args = 0
  18:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSLow();
 1100              		.loc 1 18 48 is_stmt 0 view .LVU341
 1101 0000 10B5     		push	{r4, lr}
 1102              		.cfi_def_cfa_offset 8
 1103              		.cfi_offset 4, -8
 1104              		.cfi_offset 14, -4
 1105 0002 0446     		mov	r4, r0
  19:Core/Src/ADBMS_LL_Driver.c ****   HAL_Delay(1);
 1106              		.loc 1 19 3 is_stmt 1 view .LVU342
 1107 0004 FFF7FEFF 		bl	mcuAdbmsCSLow
 1108              	.LVL141:
  20:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 1109              		.loc 1 20 3 view .LVU343
 1110 0008 0120     		movs	r0, #1
 1111 000a FFF7FEFF 		bl	HAL_Delay
 1112              	.LVL142:
  21:Core/Src/ADBMS_LL_Driver.c ****   adbmsspi = hspi;
 1113              		.loc 1 21 3 view .LVU344
 1114 000e FFF7FEFF 		bl	mcuAdbmsCSHigh
 1115              	.LVL143:
  22:Core/Src/ADBMS_LL_Driver.c ****   return 0;
 1116              		.loc 1 22 3 view .LVU345
  22:Core/Src/ADBMS_LL_Driver.c ****   return 0;
 1117              		.loc 1 22 12 is_stmt 0 view .LVU346
 1118 0012 024B     		ldr	r3, .L81
 1119 0014 1C60     		str	r4, [r3]
  23:Core/Src/ADBMS_LL_Driver.c **** }
 1120              		.loc 1 23 3 is_stmt 1 view .LVU347
  24:Core/Src/ADBMS_LL_Driver.c **** 
 1121              		.loc 1 24 1 is_stmt 0 view .LVU348
 1122 0016 0020     		movs	r0, #0
 1123 0018 10BD     		pop	{r4, pc}
 1124              	.LVL144:
 1125              	.L82:
  24:Core/Src/ADBMS_LL_Driver.c **** 
 1126              		.loc 1 24 1 view .LVU349
 1127 001a 00BF     		.align	2
 1128              	.L81:
 1129 001c 00000000 		.word	adbmsspi
 1130              		.cfi_endproc
 1131              	.LFE123:
 1133              		.section	.text.mcuSPITransmit,"ax",%progbits
 1134              		.align	1
 1135              		.global	mcuSPITransmit
 1136              		.syntax unified
 1137              		.thumb
 1138              		.thumb_func
 1140              	mcuSPITransmit:
 1141              	.LVL145:
ARM GAS  /tmp/cc6A08EU.s 			page 31


 1142              	.LFB138:
 323:Core/Src/ADBMS_LL_Driver.c **** 
 324:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPITransmit(uint8* buffer, uint8 buffersize) {
 1143              		.loc 1 324 55 is_stmt 1 view -0
 1144              		.cfi_startproc
 1145              		@ args = 0, pretend = 0, frame = 8
 1146              		@ frame_needed = 1, uses_anonymous_args = 0
 1147              		.loc 1 324 55 is_stmt 0 view .LVU351
 1148 0000 90B5     		push	{r4, r7, lr}
 1149              		.cfi_def_cfa_offset 12
 1150              		.cfi_offset 4, -12
 1151              		.cfi_offset 7, -8
 1152              		.cfi_offset 14, -4
 1153 0002 85B0     		sub	sp, sp, #20
 1154              		.cfi_def_cfa_offset 32
 1155 0004 02AF     		add	r7, sp, #8
 1156              		.cfi_def_cfa 7, 24
 1157 0006 0B46     		mov	r3, r1
 325:Core/Src/ADBMS_LL_Driver.c ****   HAL_StatusTypeDef status;
 1158              		.loc 1 325 3 is_stmt 1 view .LVU352
 326:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuf[buffersize];
 1159              		.loc 1 326 3 view .LVU353
 1160              	.LVL146:
 1161              		.loc 1 326 9 is_stmt 0 view .LVU354
 1162 0008 CA1D     		adds	r2, r1, #7
 1163 000a 02F4FC72 		and	r2, r2, #504
 1164 000e ADEB020D 		sub	sp, sp, r2
 1165 0012 6A46     		mov	r2, sp
 1166              	.LVL147:
 327:Core/Src/ADBMS_LL_Driver.c ****   status = HAL_SPI_TransmitReceive(adbmsspi, buffer, rxbuf, buffersize,
 1167              		.loc 1 327 3 is_stmt 1 view .LVU355
 1168              		.loc 1 327 12 is_stmt 0 view .LVU356
 1169 0014 094C     		ldr	r4, .L85
 1170 0016 6421     		movs	r1, #100
 1171              	.LVL148:
 1172              		.loc 1 327 12 view .LVU357
 1173 0018 42F8081B 		str	r1, [r2], #8
 1174              	.LVL149:
 1175              		.loc 1 327 12 view .LVU358
 1176 001c 0146     		mov	r1, r0
 1177 001e 2068     		ldr	r0, [r4]
 1178              	.LVL150:
 1179              		.loc 1 327 12 view .LVU359
 1180 0020 FFF7FEFF 		bl	HAL_SPI_TransmitReceive
 1181              	.LVL151:
 328:Core/Src/ADBMS_LL_Driver.c ****                                    ADBMS_SPI_TIMEOUT);
 329:Core/Src/ADBMS_LL_Driver.c ****   __HAL_SPI_CLEAR_OVRFLAG(adbmsspi);
 1182              		.loc 1 329 3 is_stmt 1 view .LVU360
 1183              	.LBB18:
 1184              		.loc 1 329 3 view .LVU361
 1185 0024 0023     		movs	r3, #0
 1186 0026 7B60     		str	r3, [r7, #4]
 1187              		.loc 1 329 3 view .LVU362
 1188 0028 2368     		ldr	r3, [r4]
 1189 002a 1B68     		ldr	r3, [r3]
 1190 002c DA68     		ldr	r2, [r3, #12]
 1191 002e 7A60     		str	r2, [r7, #4]
ARM GAS  /tmp/cc6A08EU.s 			page 32


 1192              		.loc 1 329 3 view .LVU363
 1193 0030 9B68     		ldr	r3, [r3, #8]
 1194 0032 7B60     		str	r3, [r7, #4]
 1195              		.loc 1 329 3 view .LVU364
 1196 0034 7B68     		ldr	r3, [r7, #4]
 1197              	.LBE18:
 1198              		.loc 1 329 3 view .LVU365
 330:Core/Src/ADBMS_LL_Driver.c ****   return status;
 1199              		.loc 1 330 3 view .LVU366
 331:Core/Src/ADBMS_LL_Driver.c **** }
 1200              		.loc 1 331 1 is_stmt 0 view .LVU367
 1201 0036 0C37     		adds	r7, r7, #12
 1202              		.cfi_def_cfa_offset 12
 1203 0038 BD46     		mov	sp, r7
 1204              		.cfi_def_cfa_register 13
 1205              	.LVL152:
 1206              		.loc 1 331 1 view .LVU368
 1207              		@ sp needed
 1208 003a 90BD     		pop	{r4, r7, pc}
 1209              	.L86:
 1210              		.align	2
 1211              	.L85:
 1212 003c 00000000 		.word	adbmsspi
 1213              		.cfi_endproc
 1214              	.LFE138:
 1216              		.section	.text.writeCMD,"ax",%progbits
 1217              		.align	1
 1218              		.global	writeCMD
 1219              		.syntax unified
 1220              		.thumb
 1221              		.thumb_func
 1223              	writeCMD:
 1224              	.LVL153:
 1225              	.LFB133:
 236:Core/Src/ADBMS_LL_Driver.c ****   uint8 ret;
 1226              		.loc 1 236 59 is_stmt 1 view -0
 1227              		.cfi_startproc
 1228              		@ args = 0, pretend = 0, frame = 8
 1229              		@ frame_needed = 1, uses_anonymous_args = 0
 236:Core/Src/ADBMS_LL_Driver.c ****   uint8 ret;
 1230              		.loc 1 236 59 is_stmt 0 view .LVU370
 1231 0000 2DE9F041 		push	{r4, r5, r6, r7, r8, lr}
 1232              		.cfi_def_cfa_offset 24
 1233              		.cfi_offset 4, -24
 1234              		.cfi_offset 5, -20
 1235              		.cfi_offset 6, -16
 1236              		.cfi_offset 7, -12
 1237              		.cfi_offset 8, -8
 1238              		.cfi_offset 14, -4
 1239 0004 82B0     		sub	sp, sp, #8
 1240              		.cfi_def_cfa_offset 32
 1241 0006 00AF     		add	r7, sp, #0
 1242              		.cfi_def_cfa_register 7
 237:Core/Src/ADBMS_LL_Driver.c ****   if (arglen > 0) {
 1243              		.loc 1 237 3 is_stmt 1 view .LVU371
 238:Core/Src/ADBMS_LL_Driver.c ****     uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
 1244              		.loc 1 238 3 view .LVU372
ARM GAS  /tmp/cc6A08EU.s 			page 33


 238:Core/Src/ADBMS_LL_Driver.c ****     uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
 1245              		.loc 1 238 6 is_stmt 0 view .LVU373
 1246 0008 82B3     		cbz	r2, .L88
 1247 000a 0D46     		mov	r5, r1
 1248 000c 1446     		mov	r4, r2
 1249              	.LBB19:
 238:Core/Src/ADBMS_LL_Driver.c ****     uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
 1250              		.loc 1 238 19 discriminator 1 view .LVU374
 1251 000e E846     		mov	r8, sp
 239:Core/Src/ADBMS_LL_Driver.c ****     buffer[0] = (command >> 8) & 0xFF;
 1252              		.loc 1 239 5 is_stmt 1 view .LVU375
 1253              	.LVL154:
 239:Core/Src/ADBMS_LL_Driver.c ****     buffer[0] = (command >> 8) & 0xFF;
 1254              		.loc 1 239 11 is_stmt 0 view .LVU376
 1255 0010 02F10D03 		add	r3, r2, #13
 1256 0014 03F4FC73 		and	r3, r3, #504
 1257 0018 ADEB030D 		sub	sp, sp, r3
 1258 001c 6E46     		mov	r6, sp
 1259              	.LVL155:
 240:Core/Src/ADBMS_LL_Driver.c ****     buffer[1] = (command) & 0xFF;
 1260              		.loc 1 240 5 is_stmt 1 view .LVU377
 240:Core/Src/ADBMS_LL_Driver.c ****     buffer[1] = (command) & 0xFF;
 1261              		.loc 1 240 15 is_stmt 0 view .LVU378
 1262 001e 030A     		lsrs	r3, r0, #8
 1263 0020 8DF80030 		strb	r3, [sp]
 241:Core/Src/ADBMS_LL_Driver.c **** 
 1264              		.loc 1 241 5 is_stmt 1 view .LVU379
 241:Core/Src/ADBMS_LL_Driver.c **** 
 1265              		.loc 1 241 15 is_stmt 0 view .LVU380
 1266 0024 8DF80100 		strb	r0, [sp, #1]
 243:Core/Src/ADBMS_LL_Driver.c **** 
 1267              		.loc 1 243 5 is_stmt 1 view .LVU381
 1268 0028 0421     		movs	r1, #4
 1269              	.LVL156:
 243:Core/Src/ADBMS_LL_Driver.c **** 
 1270              		.loc 1 243 5 is_stmt 0 view .LVU382
 1271 002a 6846     		mov	r0, sp
 1272              	.LVL157:
 243:Core/Src/ADBMS_LL_Driver.c **** 
 1273              		.loc 1 243 5 view .LVU383
 1274 002c FFF7FEFF 		bl	calculateCommandPEC
 1275              	.LVL158:
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1276              		.loc 1 245 5 is_stmt 1 view .LVU384
 1277              	.LBB20:
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1278              		.loc 1 245 10 view .LVU385
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1279              		.loc 1 245 16 is_stmt 0 view .LVU386
 1280 0030 0023     		movs	r3, #0
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1281              		.loc 1 245 5 view .LVU387
 1282 0032 04E0     		b	.L89
 1283              	.LVL159:
 1284              	.L90:
 246:Core/Src/ADBMS_LL_Driver.c ****     }
 1285              		.loc 1 246 7 is_stmt 1 view .LVU388
ARM GAS  /tmp/cc6A08EU.s 			page 34


 246:Core/Src/ADBMS_LL_Driver.c ****     }
 1286              		.loc 1 246 16 is_stmt 0 view .LVU389
 1287 0034 1A1D     		adds	r2, r3, #4
 246:Core/Src/ADBMS_LL_Driver.c ****     }
 1288              		.loc 1 246 27 view .LVU390
 1289 0036 E95C     		ldrb	r1, [r5, r3]	@ zero_extendqisi2
 246:Core/Src/ADBMS_LL_Driver.c ****     }
 1290              		.loc 1 246 21 view .LVU391
 1291 0038 B154     		strb	r1, [r6, r2]
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1292              		.loc 1 245 36 is_stmt 1 discriminator 3 view .LVU392
 1293 003a 0133     		adds	r3, r3, #1
 1294              	.LVL160:
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1295              		.loc 1 245 36 is_stmt 0 discriminator 3 view .LVU393
 1296 003c DBB2     		uxtb	r3, r3
 1297              	.LVL161:
 1298              	.L89:
 245:Core/Src/ADBMS_LL_Driver.c ****       buffer[4 + i] = args[i];
 1299              		.loc 1 245 25 is_stmt 1 discriminator 1 view .LVU394
 1300 003e A342     		cmp	r3, r4
 1301 0040 F8D3     		bcc	.L90
 1302              	.LBE20:
 249:Core/Src/ADBMS_LL_Driver.c **** 
 1303              		.loc 1 249 5 view .LVU395
 1304 0042 A11C     		adds	r1, r4, #2
 1305 0044 C9B2     		uxtb	r1, r1
 1306 0046 301D     		adds	r0, r6, #4
 1307 0048 FFF7FEFF 		bl	calculateDataPEC
 1308              	.LVL162:
 251:Core/Src/ADBMS_LL_Driver.c ****     ret = mcuSPITransmit(buffer, 6 + arglen);
 1309              		.loc 1 251 5 view .LVU396
 1310 004c FFF7FEFF 		bl	mcuAdbmsCSLow
 1311              	.LVL163:
 252:Core/Src/ADBMS_LL_Driver.c ****     mcuAdbmsCSHigh();
 1312              		.loc 1 252 5 view .LVU397
 252:Core/Src/ADBMS_LL_Driver.c ****     mcuAdbmsCSHigh();
 1313              		.loc 1 252 11 is_stmt 0 view .LVU398
 1314 0050 A11D     		adds	r1, r4, #6
 1315 0052 C9B2     		uxtb	r1, r1
 1316 0054 3046     		mov	r0, r6
 1317 0056 FFF7FEFF 		bl	mcuSPITransmit
 1318              	.LVL164:
 1319 005a 0446     		mov	r4, r0
 1320              	.LVL165:
 253:Core/Src/ADBMS_LL_Driver.c ****   } else {
 1321              		.loc 1 253 5 is_stmt 1 view .LVU399
 1322 005c FFF7FEFF 		bl	mcuAdbmsCSHigh
 1323              	.LVL166:
 1324 0060 C546     		mov	sp, r8
 1325              	.LVL167:
 1326              	.L91:
 253:Core/Src/ADBMS_LL_Driver.c ****   } else {
 1327              		.loc 1 253 5 is_stmt 0 view .LVU400
 1328              	.LBE19:
 267:Core/Src/ADBMS_LL_Driver.c **** }
 1329              		.loc 1 267 3 is_stmt 1 view .LVU401
ARM GAS  /tmp/cc6A08EU.s 			page 35


 268:Core/Src/ADBMS_LL_Driver.c **** 
 1330              		.loc 1 268 1 is_stmt 0 view .LVU402
 1331 0062 2046     		mov	r0, r4
 1332 0064 0837     		adds	r7, r7, #8
 1333              		.cfi_remember_state
 1334              		.cfi_def_cfa_offset 24
 1335 0066 BD46     		mov	sp, r7
 1336              		.cfi_def_cfa_register 13
 1337              		@ sp needed
 1338 0068 BDE8F081 		pop	{r4, r5, r6, r7, r8, pc}
 1339              	.LVL168:
 1340              	.L88:
 1341              		.cfi_restore_state
 1342              	.LBB21:
 255:Core/Src/ADBMS_LL_Driver.c ****     buffer[0] = (command >> 8) & 0xFF;
 1343              		.loc 1 255 5 is_stmt 1 view .LVU403
 256:Core/Src/ADBMS_LL_Driver.c ****     buffer[1] = (command) & 0xFF;
 1344              		.loc 1 256 5 view .LVU404
 256:Core/Src/ADBMS_LL_Driver.c ****     buffer[1] = (command) & 0xFF;
 1345              		.loc 1 256 15 is_stmt 0 view .LVU405
 1346 006c 030A     		lsrs	r3, r0, #8
 1347 006e 3B71     		strb	r3, [r7, #4]
 257:Core/Src/ADBMS_LL_Driver.c ****     calculateCommandPEC(buffer, 4);
 1348              		.loc 1 257 5 is_stmt 1 view .LVU406
 257:Core/Src/ADBMS_LL_Driver.c ****     calculateCommandPEC(buffer, 4);
 1349              		.loc 1 257 15 is_stmt 0 view .LVU407
 1350 0070 7871     		strb	r0, [r7, #5]
 258:Core/Src/ADBMS_LL_Driver.c **** 
 1351              		.loc 1 258 5 is_stmt 1 view .LVU408
 1352 0072 0421     		movs	r1, #4
 1353              	.LVL169:
 258:Core/Src/ADBMS_LL_Driver.c **** 
 1354              		.loc 1 258 5 is_stmt 0 view .LVU409
 1355 0074 7818     		adds	r0, r7, r1
 1356              	.LVL170:
 258:Core/Src/ADBMS_LL_Driver.c **** 
 1357              		.loc 1 258 5 view .LVU410
 1358 0076 FFF7FEFF 		bl	calculateCommandPEC
 1359              	.LVL171:
 260:Core/Src/ADBMS_LL_Driver.c **** 
 1360              		.loc 1 260 5 is_stmt 1 view .LVU411
 1361 007a FFF7FEFF 		bl	mcuAdbmsCSLow
 1362              	.LVL172:
 262:Core/Src/ADBMS_LL_Driver.c **** 
 1363              		.loc 1 262 5 view .LVU412
 262:Core/Src/ADBMS_LL_Driver.c **** 
 1364              		.loc 1 262 11 is_stmt 0 view .LVU413
 1365 007e 0421     		movs	r1, #4
 1366 0080 7818     		adds	r0, r7, r1
 1367 0082 FFF7FEFF 		bl	mcuSPITransmit
 1368              	.LVL173:
 1369 0086 0446     		mov	r4, r0
 1370              	.LVL174:
 264:Core/Src/ADBMS_LL_Driver.c ****   }
 1371              		.loc 1 264 5 is_stmt 1 view .LVU414
 1372 0088 FFF7FEFF 		bl	mcuAdbmsCSHigh
 1373              	.LVL175:
ARM GAS  /tmp/cc6A08EU.s 			page 36


 1374 008c E9E7     		b	.L91
 1375              	.LBE21:
 1376              		.cfi_endproc
 1377              	.LFE133:
 1379              		.section	.text.mcuSPIReceive,"ax",%progbits
 1380              		.align	1
 1381              		.global	mcuSPIReceive
 1382              		.syntax unified
 1383              		.thumb
 1384              		.thumb_func
 1386              	mcuSPIReceive:
 1387              	.LVL176:
 1388              	.LFB139:
 332:Core/Src/ADBMS_LL_Driver.c **** 
 333:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPIReceive(uint8* buffer, uint8 buffersize) {
 1389              		.loc 1 333 54 view -0
 1390              		.cfi_startproc
 1391              		@ args = 0, pretend = 0, frame = 0
 1392              		@ frame_needed = 0, uses_anonymous_args = 0
 1393              		.loc 1 333 54 is_stmt 0 view .LVU416
 1394 0000 08B5     		push	{r3, lr}
 1395              		.cfi_def_cfa_offset 8
 1396              		.cfi_offset 3, -8
 1397              		.cfi_offset 14, -4
 1398 0002 0A46     		mov	r2, r1
 334:Core/Src/ADBMS_LL_Driver.c ****   HAL_StatusTypeDef status;
 1399              		.loc 1 334 3 is_stmt 1 view .LVU417
 335:Core/Src/ADBMS_LL_Driver.c ****   status = HAL_SPI_Receive(adbmsspi, buffer, buffersize, ADBMS_SPI_TIMEOUT);
 1400              		.loc 1 335 3 view .LVU418
 1401              		.loc 1 335 12 is_stmt 0 view .LVU419
 1402 0004 6423     		movs	r3, #100
 1403 0006 0146     		mov	r1, r0
 1404              	.LVL177:
 1405              		.loc 1 335 12 view .LVU420
 1406 0008 0248     		ldr	r0, .L95
 1407              	.LVL178:
 1408              		.loc 1 335 12 view .LVU421
 1409 000a 0068     		ldr	r0, [r0]
 1410 000c FFF7FEFF 		bl	HAL_SPI_Receive
 1411              	.LVL179:
 336:Core/Src/ADBMS_LL_Driver.c ****   return status;
 1412              		.loc 1 336 3 is_stmt 1 view .LVU422
 337:Core/Src/ADBMS_LL_Driver.c **** }
 1413              		.loc 1 337 1 is_stmt 0 view .LVU423
 1414 0010 08BD     		pop	{r3, pc}
 1415              	.L96:
 1416 0012 00BF     		.align	2
 1417              	.L95:
 1418 0014 00000000 		.word	adbmsspi
 1419              		.cfi_endproc
 1420              	.LFE139:
 1422              		.section	.text.mcuSPITransmitReceive,"ax",%progbits
 1423              		.align	1
 1424              		.global	mcuSPITransmitReceive
 1425              		.syntax unified
 1426              		.thumb
 1427              		.thumb_func
ARM GAS  /tmp/cc6A08EU.s 			page 37


 1429              	mcuSPITransmitReceive:
 1430              	.LVL180:
 1431              	.LFB140:
 338:Core/Src/ADBMS_LL_Driver.c **** 
 339:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPITransmitReceive(uint8* rxbuffer, uint8* txbuffer,
 340:Core/Src/ADBMS_LL_Driver.c ****                             uint8 buffersize) {
 1432              		.loc 1 340 47 is_stmt 1 view -0
 1433              		.cfi_startproc
 1434              		@ args = 0, pretend = 0, frame = 0
 1435              		@ frame_needed = 0, uses_anonymous_args = 0
 1436              		.loc 1 340 47 is_stmt 0 view .LVU425
 1437 0000 00B5     		push	{lr}
 1438              		.cfi_def_cfa_offset 4
 1439              		.cfi_offset 14, -4
 1440 0002 83B0     		sub	sp, sp, #12
 1441              		.cfi_def_cfa_offset 16
 1442 0004 1346     		mov	r3, r2
 341:Core/Src/ADBMS_LL_Driver.c ****   HAL_StatusTypeDef status;
 1443              		.loc 1 341 3 is_stmt 1 view .LVU426
 342:Core/Src/ADBMS_LL_Driver.c ****   status = HAL_SPI_TransmitReceive(adbmsspi, txbuffer, rxbuffer, buffersize,
 1444              		.loc 1 342 3 view .LVU427
 1445              		.loc 1 342 12 is_stmt 0 view .LVU428
 1446 0006 6422     		movs	r2, #100
 1447              	.LVL181:
 1448              		.loc 1 342 12 view .LVU429
 1449 0008 0092     		str	r2, [sp]
 1450 000a 0246     		mov	r2, r0
 1451 000c 0348     		ldr	r0, .L99
 1452              	.LVL182:
 1453              		.loc 1 342 12 view .LVU430
 1454 000e 0068     		ldr	r0, [r0]
 1455 0010 FFF7FEFF 		bl	HAL_SPI_TransmitReceive
 1456              	.LVL183:
 343:Core/Src/ADBMS_LL_Driver.c ****                                    ADBMS_SPI_TIMEOUT);
 344:Core/Src/ADBMS_LL_Driver.c ****   return status;
 1457              		.loc 1 344 3 is_stmt 1 view .LVU431
 345:Core/Src/ADBMS_LL_Driver.c **** }
 1458              		.loc 1 345 1 is_stmt 0 view .LVU432
 1459 0014 03B0     		add	sp, sp, #12
 1460              		.cfi_def_cfa_offset 4
 1461              		@ sp needed
 1462 0016 5DF804FB 		ldr	pc, [sp], #4
 1463              	.L100:
 1464 001a 00BF     		.align	2
 1465              	.L99:
 1466 001c 00000000 		.word	adbmsspi
 1467              		.cfi_endproc
 1468              	.LFE140:
 1470              		.section	.text.readCMD,"ax",%progbits
 1471              		.align	1
 1472              		.global	readCMD
 1473              		.syntax unified
 1474              		.thumb
 1475              		.thumb_func
 1477              	readCMD:
 1478              	.LVL184:
 1479              	.LFB134:
ARM GAS  /tmp/cc6A08EU.s 			page 38


 270:Core/Src/ADBMS_LL_Driver.c ****   uint8 txbuffer[6 + buflen];
 1480              		.loc 1 270 60 is_stmt 1 view -0
 1481              		.cfi_startproc
 1482              		@ args = 0, pretend = 0, frame = 0
 1483              		@ frame_needed = 1, uses_anonymous_args = 0
 270:Core/Src/ADBMS_LL_Driver.c ****   uint8 txbuffer[6 + buflen];
 1484              		.loc 1 270 60 is_stmt 0 view .LVU434
 1485 0000 2DE9F843 		push	{r3, r4, r5, r6, r7, r8, r9, lr}
 1486              		.cfi_def_cfa_offset 32
 1487              		.cfi_offset 3, -32
 1488              		.cfi_offset 4, -28
 1489              		.cfi_offset 5, -24
 1490              		.cfi_offset 6, -20
 1491              		.cfi_offset 7, -16
 1492              		.cfi_offset 8, -12
 1493              		.cfi_offset 9, -8
 1494              		.cfi_offset 14, -4
 1495 0004 00AF     		add	r7, sp, #0
 1496              		.cfi_def_cfa_register 7
 1497 0006 8846     		mov	r8, r1
 1498 0008 1546     		mov	r5, r2
 271:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[6 + buflen];
 1499              		.loc 1 271 3 is_stmt 1 view .LVU435
 271:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[6 + buflen];
 1500              		.loc 1 271 20 is_stmt 0 view .LVU436
 1501 000a 02F10609 		add	r9, r2, #6
 1502              	.LVL185:
 271:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[6 + buflen];
 1503              		.loc 1 271 9 view .LVU437
 1504 000e 02F10D03 		add	r3, r2, #13
 1505 0012 03F4FC73 		and	r3, r3, #504
 1506 0016 ADEB030D 		sub	sp, sp, r3
 1507 001a 6C46     		mov	r4, sp
 1508              	.LVL186:
 272:Core/Src/ADBMS_LL_Driver.c **** 
 1509              		.loc 1 272 3 is_stmt 1 view .LVU438
 272:Core/Src/ADBMS_LL_Driver.c **** 
 1510              		.loc 1 272 9 is_stmt 0 view .LVU439
 1511 001c ADEB030D 		sub	sp, sp, r3
 1512 0020 6E46     		mov	r6, sp
 1513              	.LVL187:
 274:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[1] = (command)&0xFF;
 1514              		.loc 1 274 3 is_stmt 1 view .LVU440
 274:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[1] = (command)&0xFF;
 1515              		.loc 1 274 15 is_stmt 0 view .LVU441
 1516 0022 030A     		lsrs	r3, r0, #8
 1517 0024 2370     		strb	r3, [r4]
 275:Core/Src/ADBMS_LL_Driver.c ****   calculateCommandPEC(txbuffer, 4);
 1518              		.loc 1 275 3 is_stmt 1 view .LVU442
 275:Core/Src/ADBMS_LL_Driver.c ****   calculateCommandPEC(txbuffer, 4);
 1519              		.loc 1 275 15 is_stmt 0 view .LVU443
 1520 0026 6070     		strb	r0, [r4, #1]
 276:Core/Src/ADBMS_LL_Driver.c **** 
 1521              		.loc 1 276 3 is_stmt 1 view .LVU444
 1522 0028 0421     		movs	r1, #4
 1523              	.LVL188:
 276:Core/Src/ADBMS_LL_Driver.c **** 
ARM GAS  /tmp/cc6A08EU.s 			page 39


 1524              		.loc 1 276 3 is_stmt 0 view .LVU445
 1525 002a 2046     		mov	r0, r4
 1526              	.LVL189:
 276:Core/Src/ADBMS_LL_Driver.c **** 
 1527              		.loc 1 276 3 view .LVU446
 1528 002c FFF7FEFF 		bl	calculateCommandPEC
 1529              	.LVL190:
 278:Core/Src/ADBMS_LL_Driver.c ****   uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 6 + buflen);
 1530              		.loc 1 278 3 is_stmt 1 view .LVU447
 1531 0030 FFF7FEFF 		bl	mcuAdbmsCSLow
 1532              	.LVL191:
 279:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 1533              		.loc 1 279 3 view .LVU448
 279:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 1534              		.loc 1 279 18 is_stmt 0 view .LVU449
 1535 0034 5FFA89F2 		uxtb	r2, r9
 1536 0038 2146     		mov	r1, r4
 1537 003a 6846     		mov	r0, sp
 1538 003c FFF7FEFF 		bl	mcuSPITransmitReceive
 1539              	.LVL192:
 1540 0040 0446     		mov	r4, r0
 1541              	.LVL193:
 280:Core/Src/ADBMS_LL_Driver.c **** 
 1542              		.loc 1 280 3 is_stmt 1 view .LVU450
 1543 0042 FFF7FEFF 		bl	mcuAdbmsCSHigh
 1544              	.LVL194:
 282:Core/Src/ADBMS_LL_Driver.c ****     return status;
 1545              		.loc 1 282 3 view .LVU451
 282:Core/Src/ADBMS_LL_Driver.c ****     return status;
 1546              		.loc 1 282 6 is_stmt 0 view .LVU452
 1547 0046 34B1     		cbz	r4, .L103
 1548 0048 0DE0     		b	.L102
 1549              	.LVL195:
 1550              	.L104:
 1551              	.LBB22:
 287:Core/Src/ADBMS_LL_Driver.c ****   }
 1552              		.loc 1 287 5 is_stmt 1 view .LVU453
 287:Core/Src/ADBMS_LL_Driver.c ****   }
 1553              		.loc 1 287 28 is_stmt 0 view .LVU454
 1554 004a 231D     		adds	r3, r4, #4
 287:Core/Src/ADBMS_LL_Driver.c ****   }
 1555              		.loc 1 287 25 view .LVU455
 1556 004c F35C     		ldrb	r3, [r6, r3]	@ zero_extendqisi2
 287:Core/Src/ADBMS_LL_Driver.c ****   }
 1557              		.loc 1 287 15 view .LVU456
 1558 004e 08F80430 		strb	r3, [r8, r4]
 286:Core/Src/ADBMS_LL_Driver.c ****     buffer[i] = rxbuffer[i + 4];
 1559              		.loc 1 286 34 is_stmt 1 discriminator 3 view .LVU457
 1560 0052 0134     		adds	r4, r4, #1
 1561              	.LVL196:
 286:Core/Src/ADBMS_LL_Driver.c ****     buffer[i] = rxbuffer[i + 4];
 1562              		.loc 1 286 34 is_stmt 0 discriminator 3 view .LVU458
 1563 0054 E4B2     		uxtb	r4, r4
 1564              	.LVL197:
 1565              	.L103:
 286:Core/Src/ADBMS_LL_Driver.c ****     buffer[i] = rxbuffer[i + 4];
 1566              		.loc 1 286 23 is_stmt 1 discriminator 1 view .LVU459
ARM GAS  /tmp/cc6A08EU.s 			page 40


 1567 0056 AC42     		cmp	r4, r5
 1568 0058 F7D3     		bcc	.L104
 1569              	.LBE22:
 290:Core/Src/ADBMS_LL_Driver.c ****                                                                                  //TODO: check comm
 1570              		.loc 1 290 20 view .LVU460
 1571              	.LVL198:
 293:Core/Src/ADBMS_LL_Driver.c **** }
 1572              		.loc 1 293 3 view .LVU461
 293:Core/Src/ADBMS_LL_Driver.c **** }
 1573              		.loc 1 293 10 is_stmt 0 view .LVU462
 1574 005a A91C     		adds	r1, r5, #2
 1575 005c C9B2     		uxtb	r1, r1
 1576 005e 301D     		adds	r0, r6, #4
 1577 0060 FFF7FEFF 		bl	checkDataPEC
 1578              	.LVL199:
 293:Core/Src/ADBMS_LL_Driver.c **** }
 1579              		.loc 1 293 10 view .LVU463
 1580 0064 0446     		mov	r4, r0
 1581              	.LVL200:
 1582              	.L102:
 294:Core/Src/ADBMS_LL_Driver.c **** 
 1583              		.loc 1 294 1 view .LVU464
 1584 0066 2046     		mov	r0, r4
 1585 0068 BD46     		mov	sp, r7
 1586              		.cfi_def_cfa_register 13
 1587              		@ sp needed
 1588 006a BDE8F883 		pop	{r3, r4, r5, r6, r7, r8, r9, pc}
 294:Core/Src/ADBMS_LL_Driver.c **** 
 1589              		.loc 1 294 1 view .LVU465
 1590              		.cfi_endproc
 1591              	.LFE134:
 1593              		.section	.text.pollCMD,"ax",%progbits
 1594              		.align	1
 1595              		.global	pollCMD
 1596              		.syntax unified
 1597              		.thumb
 1598              		.thumb_func
 1600              	pollCMD:
 1601              	.LVL201:
 1602              	.LFB135:
 297:Core/Src/ADBMS_LL_Driver.c ****   uint8 txbuffer[5] = {};
 1603              		.loc 1 297 31 is_stmt 1 view -0
 1604              		.cfi_startproc
 1605              		@ args = 0, pretend = 0, frame = 16
 1606              		@ frame_needed = 0, uses_anonymous_args = 0
 297:Core/Src/ADBMS_LL_Driver.c ****   uint8 txbuffer[5] = {};
 1607              		.loc 1 297 31 is_stmt 0 view .LVU467
 1608 0000 10B5     		push	{r4, lr}
 1609              		.cfi_def_cfa_offset 8
 1610              		.cfi_offset 4, -8
 1611              		.cfi_offset 14, -4
 1612 0002 84B0     		sub	sp, sp, #16
 1613              		.cfi_def_cfa_offset 24
 298:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[5] = {};
 1614              		.loc 1 298 3 is_stmt 1 view .LVU468
 298:Core/Src/ADBMS_LL_Driver.c ****   uint8 rxbuffer[5] = {};
 1615              		.loc 1 298 9 is_stmt 0 view .LVU469
ARM GAS  /tmp/cc6A08EU.s 			page 41


 1616 0004 0023     		movs	r3, #0
 1617 0006 0293     		str	r3, [sp, #8]
 1618 0008 8DF80C30 		strb	r3, [sp, #12]
 299:Core/Src/ADBMS_LL_Driver.c **** 
 1619              		.loc 1 299 3 is_stmt 1 view .LVU470
 299:Core/Src/ADBMS_LL_Driver.c **** 
 1620              		.loc 1 299 9 is_stmt 0 view .LVU471
 1621 000c 0093     		str	r3, [sp]
 1622 000e 8DF80430 		strb	r3, [sp, #4]
 301:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[1] = (command)&0xFF;
 1623              		.loc 1 301 3 is_stmt 1 view .LVU472
 301:Core/Src/ADBMS_LL_Driver.c ****   txbuffer[1] = (command)&0xFF;
 1624              		.loc 1 301 15 is_stmt 0 view .LVU473
 1625 0012 030A     		lsrs	r3, r0, #8
 1626 0014 8DF80830 		strb	r3, [sp, #8]
 302:Core/Src/ADBMS_LL_Driver.c ****   calculateCommandPEC(txbuffer, 4);
 1627              		.loc 1 302 3 is_stmt 1 view .LVU474
 302:Core/Src/ADBMS_LL_Driver.c ****   calculateCommandPEC(txbuffer, 4);
 1628              		.loc 1 302 15 is_stmt 0 view .LVU475
 1629 0018 8DF80900 		strb	r0, [sp, #9]
 303:Core/Src/ADBMS_LL_Driver.c **** 
 1630              		.loc 1 303 3 is_stmt 1 view .LVU476
 1631 001c 0421     		movs	r1, #4
 1632 001e 02A8     		add	r0, sp, #8
 1633              	.LVL202:
 303:Core/Src/ADBMS_LL_Driver.c **** 
 1634              		.loc 1 303 3 is_stmt 0 view .LVU477
 1635 0020 FFF7FEFF 		bl	calculateCommandPEC
 1636              	.LVL203:
 305:Core/Src/ADBMS_LL_Driver.c ****   uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 5);
 1637              		.loc 1 305 3 is_stmt 1 view .LVU478
 1638 0024 FFF7FEFF 		bl	mcuAdbmsCSLow
 1639              	.LVL204:
 306:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 1640              		.loc 1 306 3 view .LVU479
 306:Core/Src/ADBMS_LL_Driver.c ****   mcuAdbmsCSHigh();
 1641              		.loc 1 306 18 is_stmt 0 view .LVU480
 1642 0028 0522     		movs	r2, #5
 1643 002a 02A9     		add	r1, sp, #8
 1644 002c 6846     		mov	r0, sp
 1645 002e FFF7FEFF 		bl	mcuSPITransmitReceive
 1646              	.LVL205:
 1647 0032 0446     		mov	r4, r0
 1648              	.LVL206:
 307:Core/Src/ADBMS_LL_Driver.c **** 
 1649              		.loc 1 307 3 is_stmt 1 view .LVU481
 1650 0034 FFF7FEFF 		bl	mcuAdbmsCSHigh
 1651              	.LVL207:
 309:Core/Src/ADBMS_LL_Driver.c ****     return status;
 1652              		.loc 1 309 3 view .LVU482
 309:Core/Src/ADBMS_LL_Driver.c ****     return status;
 1653              		.loc 1 309 6 is_stmt 0 view .LVU483
 1654 0038 0CB9     		cbnz	r4, .L107
 313:Core/Src/ADBMS_LL_Driver.c **** }
 1655              		.loc 1 313 3 is_stmt 1 view .LVU484
 313:Core/Src/ADBMS_LL_Driver.c **** }
 1656              		.loc 1 313 18 is_stmt 0 view .LVU485
ARM GAS  /tmp/cc6A08EU.s 			page 42


 1657 003a 9DF80440 		ldrb	r4, [sp, #4]	@ zero_extendqisi2
 1658              	.LVL208:
 1659              	.L107:
 314:Core/Src/ADBMS_LL_Driver.c **** 
 1660              		.loc 1 314 1 view .LVU486
 1661 003e 2046     		mov	r0, r4
 1662 0040 04B0     		add	sp, sp, #16
 1663              		.cfi_def_cfa_offset 8
 1664              		@ sp needed
 1665 0042 10BD     		pop	{r4, pc}
 1666              		.cfi_endproc
 1667              	.LFE135:
 1669              		.section	.text.mcuDelay,"ax",%progbits
 1670              		.align	1
 1671              		.global	mcuDelay
 1672              		.syntax unified
 1673              		.thumb
 1674              		.thumb_func
 1676              	mcuDelay:
 1677              	.LVL209:
 1678              	.LFB141:
 346:Core/Src/ADBMS_LL_Driver.c **** 
 347:Core/Src/ADBMS_LL_Driver.c **** inline void mcuDelay(uint16 delay) { HAL_Delay(delay); }
 1679              		.loc 1 347 36 is_stmt 1 view -0
 1680              		.cfi_startproc
 1681              		@ args = 0, pretend = 0, frame = 0
 1682              		@ frame_needed = 0, uses_anonymous_args = 0
 1683              		.loc 1 347 36 is_stmt 0 view .LVU488
 1684 0000 08B5     		push	{r3, lr}
 1685              		.cfi_def_cfa_offset 8
 1686              		.cfi_offset 3, -8
 1687              		.cfi_offset 14, -4
 1688              		.loc 1 347 38 is_stmt 1 view .LVU489
 1689 0002 FFF7FEFF 		bl	HAL_Delay
 1690              	.LVL210:
 1691              		.loc 1 347 56 is_stmt 0 view .LVU490
 1692 0006 08BD     		pop	{r3, pc}
 1693              		.cfi_endproc
 1694              	.LFE141:
 1696              		.global	adbmsspi
 1697              		.section	.bss.adbmsspi,"aw",%nobits
 1698              		.align	2
 1701              	adbmsspi:
 1702 0000 00000000 		.space	4
 1703              		.text
 1704              	.Letext0:
 1705              		.file 2 "/home/chiangni/.config/VSCodium/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/
 1706              		.file 3 "/home/chiangni/.config/VSCodium/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/
 1707              		.file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h"
 1708              		.file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
 1709              		.file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_gpio.h"
 1710              		.file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
 1711              		.file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
 1712              		.file 9 "Core/Inc/ADBMS_LL_Driver.h"
 1713              		.file 10 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
ARM GAS  /tmp/cc6A08EU.s 			page 43


DEFINED SYMBOLS
                            *ABS*:00000000 ADBMS_LL_Driver.c
     /tmp/cc6A08EU.s:21     .text.F_CRC_ObtenValorDeTabla:00000000 $t
     /tmp/cc6A08EU.s:26     .text.F_CRC_ObtenValorDeTabla:00000000 F_CRC_ObtenValorDeTabla
     /tmp/cc6A08EU.s:88     .text.updateCommandPEC:00000000 $t
     /tmp/cc6A08EU.s:94     .text.updateCommandPEC:00000000 updateCommandPEC
     /tmp/cc6A08EU.s:259    .text.calculateCommandPEC:00000000 $t
     /tmp/cc6A08EU.s:265    .text.calculateCommandPEC:00000000 calculateCommandPEC
     /tmp/cc6A08EU.s:386    .text.checkCommandPEC:00000000 $t
     /tmp/cc6A08EU.s:392    .text.checkCommandPEC:00000000 checkCommandPEC
     /tmp/cc6A08EU.s:538    .text.pec10_calc:00000000 $t
     /tmp/cc6A08EU.s:544    .text.pec10_calc:00000000 pec10_calc
     /tmp/cc6A08EU.s:709    .text.calculateDataPEC:00000000 $t
     /tmp/cc6A08EU.s:715    .text.calculateDataPEC:00000000 calculateDataPEC
     /tmp/cc6A08EU.s:792    .text.F_CRC_CalculaCheckSum:00000000 $t
     /tmp/cc6A08EU.s:798    .text.F_CRC_CalculaCheckSum:00000000 F_CRC_CalculaCheckSum
     /tmp/cc6A08EU.s:867    .text.checkDataPEC:00000000 $t
     /tmp/cc6A08EU.s:873    .text.checkDataPEC:00000000 checkDataPEC
     /tmp/cc6A08EU.s:916    .text.updateDataPEC:00000000 $t
     /tmp/cc6A08EU.s:922    .text.updateDataPEC:00000000 updateDataPEC
     /tmp/cc6A08EU.s:1023   .text.mcuAdbmsCSLow:00000000 $t
     /tmp/cc6A08EU.s:1029   .text.mcuAdbmsCSLow:00000000 mcuAdbmsCSLow
     /tmp/cc6A08EU.s:1050   .text.mcuAdbmsCSLow:00000010 $d
     /tmp/cc6A08EU.s:1055   .text.mcuAdbmsCSHigh:00000000 $t
     /tmp/cc6A08EU.s:1061   .text.mcuAdbmsCSHigh:00000000 mcuAdbmsCSHigh
     /tmp/cc6A08EU.s:1082   .text.mcuAdbmsCSHigh:00000010 $d
     /tmp/cc6A08EU.s:1087   .text.adbmsDriverInit:00000000 $t
     /tmp/cc6A08EU.s:1093   .text.adbmsDriverInit:00000000 adbmsDriverInit
     /tmp/cc6A08EU.s:1129   .text.adbmsDriverInit:0000001c $d
     /tmp/cc6A08EU.s:1701   .bss.adbmsspi:00000000 adbmsspi
     /tmp/cc6A08EU.s:1134   .text.mcuSPITransmit:00000000 $t
     /tmp/cc6A08EU.s:1140   .text.mcuSPITransmit:00000000 mcuSPITransmit
     /tmp/cc6A08EU.s:1212   .text.mcuSPITransmit:0000003c $d
     /tmp/cc6A08EU.s:1217   .text.writeCMD:00000000 $t
     /tmp/cc6A08EU.s:1223   .text.writeCMD:00000000 writeCMD
     /tmp/cc6A08EU.s:1380   .text.mcuSPIReceive:00000000 $t
     /tmp/cc6A08EU.s:1386   .text.mcuSPIReceive:00000000 mcuSPIReceive
     /tmp/cc6A08EU.s:1418   .text.mcuSPIReceive:00000014 $d
     /tmp/cc6A08EU.s:1423   .text.mcuSPITransmitReceive:00000000 $t
     /tmp/cc6A08EU.s:1429   .text.mcuSPITransmitReceive:00000000 mcuSPITransmitReceive
     /tmp/cc6A08EU.s:1466   .text.mcuSPITransmitReceive:0000001c $d
     /tmp/cc6A08EU.s:1471   .text.readCMD:00000000 $t
     /tmp/cc6A08EU.s:1477   .text.readCMD:00000000 readCMD
     /tmp/cc6A08EU.s:1594   .text.pollCMD:00000000 $t
     /tmp/cc6A08EU.s:1600   .text.pollCMD:00000000 pollCMD
     /tmp/cc6A08EU.s:1670   .text.mcuDelay:00000000 $t
     /tmp/cc6A08EU.s:1676   .text.mcuDelay:00000000 mcuDelay
     /tmp/cc6A08EU.s:1698   .bss.adbmsspi:00000000 $d

UNDEFINED SYMBOLS
HAL_GPIO_WritePin
HAL_Delay
HAL_SPI_TransmitReceive
HAL_SPI_Receive