ARM GAS /tmp/ccO15vnV.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 13:Core/Src/AMS_HighLevel.c **** #include 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/ccO15vnV.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/ccO15vnV.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/ccO15vnV.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/ccO15vnV.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/ccO15vnV.s page 6 233 00000000 233 00000000 233 00000000 234 .text 235 .Letext0: 236 .file 2 "/home/chiangni/.config/VSCodium/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/ 237 .file 3 "/home/chiangni/.config/VSCodium/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/ 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/ccO15vnV.s page 7 DEFINED SYMBOLS *ABS*:00000000 AMS_HighLevel.c /tmp/ccO15vnV.s:21 .text.AMS_Init:00000000 $t /tmp/ccO15vnV.s:27 .text.AMS_Init:00000000 AMS_Init /tmp/ccO15vnV.s:83 .text.AMS_Init:00000034 $d /tmp/ccO15vnV.s:205 .bss.numberofAux:00000000 numberofAux /tmp/ccO15vnV.s:211 .data.numberofCells:00000000 numberofCells /tmp/ccO15vnV.s:218 .bss.amsov:00000000 amsov /tmp/ccO15vnV.s:225 .bss.amsuv:00000000 amsuv /tmp/ccO15vnV.s:187 .bss.pollingTimes:00000000 pollingTimes /tmp/ccO15vnV.s:92 .text.AMS_Idle_Loop:00000000 $t /tmp/ccO15vnV.s:98 .text.AMS_Idle_Loop:00000000 AMS_Idle_Loop /tmp/ccO15vnV.s:176 .text.AMS_Idle_Loop:00000054 $d /tmp/ccO15vnV.s:232 .bss.module:00000000 module /tmp/ccO15vnV.s:199 .bss.packetChecksumFails:00000000 packetChecksumFails /tmp/ccO15vnV.s:193 .bss.deviceSleeps:00000000 deviceSleeps /tmp/ccO15vnV.s:184 .bss.pollingTimes:00000000 $d /tmp/ccO15vnV.s:194 .bss.deviceSleeps:00000000 $d /tmp/ccO15vnV.s:200 .bss.packetChecksumFails:00000000 $d /tmp/ccO15vnV.s:206 .bss.numberofAux:00000000 $d /tmp/ccO15vnV.s:215 .bss.amsov:00000000 $d /tmp/ccO15vnV.s:222 .bss.amsuv:00000000 $d /tmp/ccO15vnV.s:229 .bss.module:00000000 $d UNDEFINED SYMBOLS initAMS HAL_GetTick amsWakeUp amsAuxAndStatusMeasurement amsCellMeasurement amsCheckUnderOverVoltage amsReset