ARM GAS  /tmp/ccXj0GtJ.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	"AMS_HighLevel.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.file 1 "Core/Src/AMS_HighLevel.c"
  20              		.section	.text.AMS_Init,"ax",%progbits
  21              		.align	1
  22              		.global	AMS_Init
  23              		.syntax unified
  24              		.thumb
  25              		.thumb_func
  27              	AMS_Init:
  28              	.LVL0:
  29              	.LFB123:
   1:Core/Src/AMS_HighLevel.c **** /*
   2:Core/Src/AMS_HighLevel.c ****  * AMS_HighLevel.c
   3:Core/Src/AMS_HighLevel.c ****  *
   4:Core/Src/AMS_HighLevel.c ****  *  Created on: 20.07.2022
   5:Core/Src/AMS_HighLevel.c ****  *      Author: max
   6:Core/Src/AMS_HighLevel.c ****  */
   7:Core/Src/AMS_HighLevel.c **** 
   8:Core/Src/AMS_HighLevel.c **** #include "AMS_HighLevel.h"
   9:Core/Src/AMS_HighLevel.c **** #include "ADBMS_Abstraction.h"
  10:Core/Src/AMS_HighLevel.c **** #include "TMP1075.h"
  11:Core/Src/AMS_HighLevel.c **** #include "stm32f3xx_hal.h"
  12:Core/Src/AMS_HighLevel.c **** #include <stdint.h>
  13:Core/Src/AMS_HighLevel.c **** #include <string.h>
  14:Core/Src/AMS_HighLevel.c **** 
  15:Core/Src/AMS_HighLevel.c **** Cell_Module module = {};
  16:Core/Src/AMS_HighLevel.c **** 
  17:Core/Src/AMS_HighLevel.c **** uint16_t amsuv = 0;
  18:Core/Src/AMS_HighLevel.c **** uint16_t amsov = 0;
  19:Core/Src/AMS_HighLevel.c **** 
  20:Core/Src/AMS_HighLevel.c **** uint8_t numberofCells = 15;
  21:Core/Src/AMS_HighLevel.c **** uint8_t numberofAux = 0;
  22:Core/Src/AMS_HighLevel.c **** 
  23:Core/Src/AMS_HighLevel.c **** uint8_t packetChecksumFails = 0;
  24:Core/Src/AMS_HighLevel.c **** #define MAX_PACKET_CHECKSUM_FAILS 5
  25:Core/Src/AMS_HighLevel.c **** 
  26:Core/Src/AMS_HighLevel.c **** uint8_t deviceSleeps = 0;
  27:Core/Src/AMS_HighLevel.c **** #define MAX_DEVICE_SLEEP 3 //TODO: change to correct value
  28:Core/Src/AMS_HighLevel.c **** 
  29:Core/Src/AMS_HighLevel.c **** struct pollingTimes {
ARM GAS  /tmp/ccXj0GtJ.s 			page 2


  30:Core/Src/AMS_HighLevel.c ****   uint32_t S_ADC_OW_CHECK;
  31:Core/Src/AMS_HighLevel.c ****   uint32_t TMP1075;
  32:Core/Src/AMS_HighLevel.c **** };
  33:Core/Src/AMS_HighLevel.c **** 
  34:Core/Src/AMS_HighLevel.c **** struct pollingTimes pollingTimes = {0, 0};
  35:Core/Src/AMS_HighLevel.c **** 
  36:Core/Src/AMS_HighLevel.c **** uint8_t AMS_Init(SPI_HandleTypeDef* hspi) {
  30              		.loc 1 36 43 view -0
  31              		.cfi_startproc
  32              		@ args = 0, pretend = 0, frame = 0
  33              		@ frame_needed = 0, uses_anonymous_args = 0
  34              		.loc 1 36 43 is_stmt 0 view .LVU1
  35 0000 38B5     		push	{r3, r4, r5, lr}
  36              		.cfi_def_cfa_offset 16
  37              		.cfi_offset 3, -16
  38              		.cfi_offset 4, -12
  39              		.cfi_offset 5, -8
  40              		.cfi_offset 14, -4
  37:Core/Src/AMS_HighLevel.c ****   uint8_t ret = initAMS(hspi, numberofCells, numberofAux);
  41              		.loc 1 37 3 is_stmt 1 view .LVU2
  42              		.loc 1 37 17 is_stmt 0 view .LVU3
  43 0002 0C4B     		ldr	r3, .L3
  44 0004 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
  45 0006 0C4B     		ldr	r3, .L3+4
  46 0008 1978     		ldrb	r1, [r3]	@ zero_extendqisi2
  47 000a FFF7FEFF 		bl	initAMS
  48              	.LVL1:
  49              		.loc 1 37 17 view .LVU4
  50 000e 0446     		mov	r4, r0
  51              	.LVL2:
  38:Core/Src/AMS_HighLevel.c ****   amsov = DEFAULT_OV;
  52              		.loc 1 38 3 is_stmt 1 view .LVU5
  53              		.loc 1 38 9 is_stmt 0 view .LVU6
  54 0010 0A4B     		ldr	r3, .L3+8
  55 0012 40F26542 		movw	r2, #1125
  56 0016 1A80     		strh	r2, [r3]	@ movhi
  39:Core/Src/AMS_HighLevel.c ****   amsuv = DEFAULT_UV;
  57              		.loc 1 39 3 is_stmt 1 view .LVU7
  58              		.loc 1 39 9 is_stmt 0 view .LVU8
  59 0018 094B     		ldr	r3, .L3+12
  60 001a 40F2A112 		movw	r2, #417
  61 001e 1A80     		strh	r2, [r3]	@ movhi
  40:Core/Src/AMS_HighLevel.c **** 
  41:Core/Src/AMS_HighLevel.c ****   pollingTimes = (struct pollingTimes) {HAL_GetTick(), HAL_GetTick()};
  62              		.loc 1 41 3 is_stmt 1 view .LVU9
  63              		.loc 1 41 41 is_stmt 0 view .LVU10
  64 0020 FFF7FEFF 		bl	HAL_GetTick
  65              	.LVL3:
  66 0024 0546     		mov	r5, r0
  67              		.loc 1 41 56 discriminator 1 view .LVU11
  68 0026 FFF7FEFF 		bl	HAL_GetTick
  69              	.LVL4:
  70              		.loc 1 41 16 discriminator 2 view .LVU12
  71 002a 064B     		ldr	r3, .L3+16
  72 002c 1D60     		str	r5, [r3]
  73 002e 5860     		str	r0, [r3, #4]
  42:Core/Src/AMS_HighLevel.c **** 
ARM GAS  /tmp/ccXj0GtJ.s 			page 3


  43:Core/Src/AMS_HighLevel.c ****   return ret;
  74              		.loc 1 43 3 is_stmt 1 view .LVU13
  44:Core/Src/AMS_HighLevel.c **** }
  75              		.loc 1 44 1 is_stmt 0 view .LVU14
  76 0030 2046     		mov	r0, r4
  77 0032 38BD     		pop	{r3, r4, r5, pc}
  78              	.LVL5:
  79              	.L4:
  80              		.loc 1 44 1 view .LVU15
  81              		.align	2
  82              	.L3:
  83 0034 00000000 		.word	numberofAux
  84 0038 00000000 		.word	numberofCells
  85 003c 00000000 		.word	amsov
  86 0040 00000000 		.word	amsuv
  87 0044 00000000 		.word	pollingTimes
  88              		.cfi_endproc
  89              	.LFE123:
  91              		.section	.text.AMS_Idle_Loop,"ax",%progbits
  92              		.align	1
  93              		.global	AMS_Idle_Loop
  94              		.syntax unified
  95              		.thumb
  96              		.thumb_func
  98              	AMS_Idle_Loop:
  99              	.LFB124:
  45:Core/Src/AMS_HighLevel.c **** 
  46:Core/Src/AMS_HighLevel.c **** uint8_t AMS_Idle_Loop() {
 100              		.loc 1 46 25 is_stmt 1 view -0
 101              		.cfi_startproc
 102              		@ args = 0, pretend = 0, frame = 0
 103              		@ frame_needed = 0, uses_anonymous_args = 0
 104 0000 38B5     		push	{r3, r4, r5, lr}
 105              		.cfi_def_cfa_offset 16
 106              		.cfi_offset 3, -16
 107              		.cfi_offset 4, -12
 108              		.cfi_offset 5, -8
 109              		.cfi_offset 14, -4
  47:Core/Src/AMS_HighLevel.c ****   if (!amsWakeUp()) {
 110              		.loc 1 47 3 view .LVU17
 111              		.loc 1 47 8 is_stmt 0 view .LVU18
 112 0002 FFF7FEFF 		bl	amsWakeUp
 113              	.LVL6:
  48:Core/Src/AMS_HighLevel.c ****     //error_data.data_kind = SEK_INTERNAL_BMS_TIMEOUT; //we don't receive data for the wakeup comma
  49:Core/Src/AMS_HighLevel.c ****     //set_error_source(ERROR_SOURCE_INTERNAL);         //so we can't tell if we timed out
  50:Core/Src/AMS_HighLevel.c ****   }
 114              		.loc 1 50 3 is_stmt 1 view .LVU19
  51:Core/Src/AMS_HighLevel.c ****   
  52:Core/Src/AMS_HighLevel.c ****   packetChecksumFails += amsAuxAndStatusMeasurement(&module);
 115              		.loc 1 52 3 view .LVU20
 116              		.loc 1 52 26 is_stmt 0 view .LVU21
 117 0006 134C     		ldr	r4, .L9
 118 0008 2046     		mov	r0, r4
 119 000a FFF7FEFF 		bl	amsAuxAndStatusMeasurement
 120              	.LVL7:
 121              		.loc 1 52 23 discriminator 1 view .LVU22
 122 000e 124B     		ldr	r3, .L9+4
ARM GAS  /tmp/ccXj0GtJ.s 			page 4


 123 0010 1A78     		ldrb	r2, [r3]	@ zero_extendqisi2
 124 0012 1044     		add	r0, r0, r2
 125 0014 1870     		strb	r0, [r3]
  53:Core/Src/AMS_HighLevel.c **** 
  54:Core/Src/AMS_HighLevel.c ****   if (module.status.SLEEP) {
 126              		.loc 1 54 3 is_stmt 1 view .LVU23
 127              		.loc 1 54 7 is_stmt 0 view .LVU24
 128 0016 94F83930 		ldrb	r3, [r4, #57]	@ zero_extendqisi2
 129              		.loc 1 54 6 view .LVU25
 130 001a 13F0100F 		tst	r3, #16
 131 001e 06D0     		beq	.L6
  55:Core/Src/AMS_HighLevel.c ****     deviceSleeps++;
 132              		.loc 1 55 5 is_stmt 1 view .LVU26
 133              		.loc 1 55 17 is_stmt 0 view .LVU27
 134 0020 0E4A     		ldr	r2, .L9+8
 135 0022 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 136 0024 0133     		adds	r3, r3, #1
 137 0026 DBB2     		uxtb	r3, r3
 138 0028 1370     		strb	r3, [r2]
  56:Core/Src/AMS_HighLevel.c ****     if (deviceSleeps > MAX_DEVICE_SLEEP) {
 139              		.loc 1 56 5 is_stmt 1 view .LVU28
 140              		.loc 1 56 8 is_stmt 0 view .LVU29
 141 002a 032B     		cmp	r3, #3
 142 002c 0FD9     		bls	.L8
 143              	.L6:
  57:Core/Src/AMS_HighLevel.c **** 
  58:Core/Src/AMS_HighLevel.c ****     } else {
  59:Core/Src/AMS_HighLevel.c ****       amsReset();
  60:Core/Src/AMS_HighLevel.c ****     }
  61:Core/Src/AMS_HighLevel.c ****   }
  62:Core/Src/AMS_HighLevel.c **** 
  63:Core/Src/AMS_HighLevel.c ****   packetChecksumFails += amsCellMeasurement(&module);
 144              		.loc 1 63 3 is_stmt 1 view .LVU30
 145              		.loc 1 63 26 is_stmt 0 view .LVU31
 146 002e 094D     		ldr	r5, .L9
 147 0030 2846     		mov	r0, r5
 148 0032 FFF7FEFF 		bl	amsCellMeasurement
 149              	.LVL8:
 150              		.loc 1 63 23 discriminator 1 view .LVU32
 151 0036 084C     		ldr	r4, .L9+4
 152 0038 2378     		ldrb	r3, [r4]	@ zero_extendqisi2
 153 003a 1844     		add	r0, r0, r3
 154 003c 2070     		strb	r0, [r4]
  64:Core/Src/AMS_HighLevel.c ****   packetChecksumFails += amsCheckUnderOverVoltage(&module);
 155              		.loc 1 64 3 is_stmt 1 view .LVU33
 156              		.loc 1 64 26 is_stmt 0 view .LVU34
 157 003e 2846     		mov	r0, r5
 158 0040 FFF7FEFF 		bl	amsCheckUnderOverVoltage
 159              	.LVL9:
 160              		.loc 1 64 23 discriminator 1 view .LVU35
 161 0044 2378     		ldrb	r3, [r4]	@ zero_extendqisi2
 162 0046 1844     		add	r0, r0, r3
 163 0048 2070     		strb	r0, [r4]
  65:Core/Src/AMS_HighLevel.c **** 
  66:Core/Src/AMS_HighLevel.c ****   //tmp1075_measure();
  67:Core/Src/AMS_HighLevel.c **** 
  68:Core/Src/AMS_HighLevel.c ****   return 0;
ARM GAS  /tmp/ccXj0GtJ.s 			page 5


 164              		.loc 1 68 3 is_stmt 1 view .LVU36
  69:Core/Src/AMS_HighLevel.c **** }...
 165              		.loc 1 69 1 is_stmt 0 view .LVU37
 166 004a 0020     		movs	r0, #0
 167 004c 38BD     		pop	{r3, r4, r5, pc}
 168              	.L8:
  59:Core/Src/AMS_HighLevel.c ****       amsReset();
 169              		.loc 1 59 7 is_stmt 1 view .LVU38
 170 004e FFF7FEFF 		bl	amsReset
 171              	.LVL10:
 172 0052 ECE7     		b	.L6
 173              	.L10:
 174              		.align	2
 175              	.L9:
 176 0054 00000000 		.word	module
 177 0058 00000000 		.word	packetChecksumFails
 178 005c 00000000 		.word	deviceSleeps
 179              		.cfi_endproc
 180              	.LFE124:
 182              		.global	pollingTimes
 183              		.section	.bss.pollingTimes,"aw",%nobits
 184              		.align	2
 187              	pollingTimes:
 188 0000 00000000 		.space	8
 188      00000000 
 189              		.global	deviceSleeps
 190              		.section	.bss.deviceSleeps,"aw",%nobits
 193              	deviceSleeps:
 194 0000 00       		.space	1
 195              		.global	packetChecksumFails
 196              		.section	.bss.packetChecksumFails,"aw",%nobits
 199              	packetChecksumFails:
 200 0000 00       		.space	1
 201              		.global	numberofAux
 202              		.section	.bss.numberofAux,"aw",%nobits
 205              	numberofAux:
 206 0000 00       		.space	1
 207              		.global	numberofCells
 208              		.section	.data.numberofCells,"aw"
 211              	numberofCells:
 212 0000 0F       		.byte	15
 213              		.global	amsov
 214              		.section	.bss.amsov,"aw",%nobits
 215              		.align	1
 218              	amsov:
 219 0000 0000     		.space	2
 220              		.global	amsuv
 221              		.section	.bss.amsuv,"aw",%nobits
 222              		.align	1
 225              	amsuv:
 226 0000 0000     		.space	2
 227              		.global	module
 228              		.section	.bss.module,"aw",%nobits
 229              		.align	2
 232              	module:
 233 0000 00000000 		.space	96
 233      00000000 
ARM GAS  /tmp/ccXj0GtJ.s 			page 6


 233      00000000 
 233      00000000 
 233      00000000 
 234              		.text
 235              	.Letext0:
 236              		.file 2 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
 237              		.file 3 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-
 238              		.file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h"
 239              		.file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
 240              		.file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
 241              		.file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
 242              		.file 8 "Core/Inc/ADBMS_LL_Driver.h"
 243              		.file 9 "Core/Inc/ADBMS_Abstraction.h"
 244              		.file 10 "Core/Inc/AMS_HighLevel.h"
 245              		.file 11 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
ARM GAS  /tmp/ccXj0GtJ.s 			page 7


DEFINED SYMBOLS
                            *ABS*:00000000 AMS_HighLevel.c
     /tmp/ccXj0GtJ.s:21     .text.AMS_Init:00000000 $t
     /tmp/ccXj0GtJ.s:27     .text.AMS_Init:00000000 AMS_Init
     /tmp/ccXj0GtJ.s:83     .text.AMS_Init:00000034 $d
     /tmp/ccXj0GtJ.s:205    .bss.numberofAux:00000000 numberofAux
     /tmp/ccXj0GtJ.s:211    .data.numberofCells:00000000 numberofCells
     /tmp/ccXj0GtJ.s:218    .bss.amsov:00000000 amsov
     /tmp/ccXj0GtJ.s:225    .bss.amsuv:00000000 amsuv
     /tmp/ccXj0GtJ.s:187    .bss.pollingTimes:00000000 pollingTimes
     /tmp/ccXj0GtJ.s:92     .text.AMS_Idle_Loop:00000000 $t
     /tmp/ccXj0GtJ.s:98     .text.AMS_Idle_Loop:00000000 AMS_Idle_Loop
     /tmp/ccXj0GtJ.s:176    .text.AMS_Idle_Loop:00000054 $d
     /tmp/ccXj0GtJ.s:232    .bss.module:00000000 module
     /tmp/ccXj0GtJ.s:199    .bss.packetChecksumFails:00000000 packetChecksumFails
     /tmp/ccXj0GtJ.s:193    .bss.deviceSleeps:00000000 deviceSleeps
     /tmp/ccXj0GtJ.s:184    .bss.pollingTimes:00000000 $d
     /tmp/ccXj0GtJ.s:194    .bss.deviceSleeps:00000000 $d
     /tmp/ccXj0GtJ.s:200    .bss.packetChecksumFails:00000000 $d
     /tmp/ccXj0GtJ.s:206    .bss.numberofAux:00000000 $d
     /tmp/ccXj0GtJ.s:215    .bss.amsov:00000000 $d
     /tmp/ccXj0GtJ.s:222    .bss.amsuv:00000000 $d
     /tmp/ccXj0GtJ.s:229    .bss.module:00000000 $d

UNDEFINED SYMBOLS
initAMS
HAL_GetTick
amsWakeUp
amsAuxAndStatusMeasurement
amsCellMeasurement
amsCheckUnderOverVoltage
amsReset
