ARM GAS /tmp/ccZdyESl.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 "24LC02.h" 12:Core/Src/AMS_HighLevel.c **** #include "stm32f3xx_hal.h" 13:Core/Src/AMS_HighLevel.c **** #include 14:Core/Src/AMS_HighLevel.c **** #include 15:Core/Src/AMS_HighLevel.c **** 16:Core/Src/AMS_HighLevel.c **** Cell_Module module = {}; 17:Core/Src/AMS_HighLevel.c **** 18:Core/Src/AMS_HighLevel.c **** uint16_t amsuv = 0; 19:Core/Src/AMS_HighLevel.c **** uint16_t amsov = 0; 20:Core/Src/AMS_HighLevel.c **** 21:Core/Src/AMS_HighLevel.c **** uint8_t numberofCells = 15; 22:Core/Src/AMS_HighLevel.c **** uint8_t numberofAux = 0; 23:Core/Src/AMS_HighLevel.c **** 24:Core/Src/AMS_HighLevel.c **** uint8_t packetChecksumFails = 0; 25:Core/Src/AMS_HighLevel.c **** #define MAX_PACKET_CHECKSUM_FAILS 5 26:Core/Src/AMS_HighLevel.c **** 27:Core/Src/AMS_HighLevel.c **** uint8_t deviceSleeps = 0; 28:Core/Src/AMS_HighLevel.c **** #define MAX_DEVICE_SLEEP 3 //TODO: change to correct value 29:Core/Src/AMS_HighLevel.c **** ARM GAS /tmp/ccZdyESl.s page 2 30:Core/Src/AMS_HighLevel.c **** struct pollingTimes { 31:Core/Src/AMS_HighLevel.c **** uint32_t S_ADC_OW_CHECK; 32:Core/Src/AMS_HighLevel.c **** uint32_t TMP1075; 33:Core/Src/AMS_HighLevel.c **** }; 34:Core/Src/AMS_HighLevel.c **** 35:Core/Src/AMS_HighLevel.c **** struct pollingTimes pollingTimes = {0, 0}; 36:Core/Src/AMS_HighLevel.c **** 37:Core/Src/AMS_HighLevel.c **** uint8_t AMS_Init(SPI_HandleTypeDef* hspi) { 30 .loc 1 37 43 view -0 31 .cfi_startproc 32 @ args = 0, pretend = 0, frame = 0 33 @ frame_needed = 0, uses_anonymous_args = 0 34 .loc 1 37 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 38:Core/Src/AMS_HighLevel.c **** uint8_t ret = initAMS(hspi, numberofCells, numberofAux); 41 .loc 1 38 3 is_stmt 1 view .LVU2 42 .loc 1 38 17 is_stmt 0 view .LVU3 43 0002 0D4B ldr r3, .L3 44 0004 1A78 ldrb r2, [r3] @ zero_extendqisi2 45 0006 0D4B ldr r3, .L3+4 46 0008 1978 ldrb r1, [r3] @ zero_extendqisi2 47 000a FFF7FEFF bl initAMS 48 .LVL1: 49 .loc 1 38 17 view .LVU4 50 000e 0446 mov r4, r0 51 .LVL2: 39:Core/Src/AMS_HighLevel.c **** amsov = DEFAULT_OV; 52 .loc 1 39 3 is_stmt 1 view .LVU5 53 .loc 1 39 9 is_stmt 0 view .LVU6 54 0010 0B4B ldr r3, .L3+8 55 0012 40F26542 movw r2, #1125 56 0016 1A80 strh r2, [r3] @ movhi 40:Core/Src/AMS_HighLevel.c **** amsuv = DEFAULT_UV; 57 .loc 1 40 3 is_stmt 1 view .LVU7 58 .loc 1 40 9 is_stmt 0 view .LVU8 59 0018 0A4B ldr r3, .L3+12 60 001a 40F2A112 movw r2, #417 61 001e 1A80 strh r2, [r3] @ movhi 41:Core/Src/AMS_HighLevel.c **** 42:Core/Src/AMS_HighLevel.c **** amsConfig(); 62 .loc 1 42 3 is_stmt 1 view .LVU9 63 0020 FFF7FEFF bl amsConfig 64 .LVL3: 43:Core/Src/AMS_HighLevel.c **** 44:Core/Src/AMS_HighLevel.c **** pollingTimes = (struct pollingTimes) {HAL_GetTick(), HAL_GetTick()}; 65 .loc 1 44 3 view .LVU10 66 .loc 1 44 41 is_stmt 0 view .LVU11 67 0024 FFF7FEFF bl HAL_GetTick 68 .LVL4: 69 0028 0546 mov r5, r0 70 .loc 1 44 56 discriminator 1 view .LVU12 71 002a FFF7FEFF bl HAL_GetTick ARM GAS /tmp/ccZdyESl.s page 3 72 .LVL5: 73 .loc 1 44 16 discriminator 2 view .LVU13 74 002e 064B ldr r3, .L3+16 75 0030 1D60 str r5, [r3] 76 0032 5860 str r0, [r3, #4] 45:Core/Src/AMS_HighLevel.c **** 46:Core/Src/AMS_HighLevel.c **** return ret; 77 .loc 1 46 3 is_stmt 1 view .LVU14 47:Core/Src/AMS_HighLevel.c **** } 78 .loc 1 47 1 is_stmt 0 view .LVU15 79 0034 2046 mov r0, r4 80 0036 38BD pop {r3, r4, r5, pc} 81 .LVL6: 82 .L4: 83 .loc 1 47 1 view .LVU16 84 .align 2 85 .L3: 86 0038 00000000 .word numberofAux 87 003c 00000000 .word numberofCells 88 0040 00000000 .word amsov 89 0044 00000000 .word amsuv 90 0048 00000000 .word pollingTimes 91 .cfi_endproc 92 .LFE123: 94 .section .text.AMS_Idle_Loop,"ax",%progbits 95 .align 1 96 .global AMS_Idle_Loop 97 .syntax unified 98 .thumb 99 .thumb_func 101 AMS_Idle_Loop: 102 .LFB124: 48:Core/Src/AMS_HighLevel.c **** 49:Core/Src/AMS_HighLevel.c **** uint8_t AMS_Idle_Loop() { 103 .loc 1 49 25 is_stmt 1 view -0 104 .cfi_startproc 105 @ args = 0, pretend = 0, frame = 8 106 @ frame_needed = 0, uses_anonymous_args = 0 107 0000 30B5 push {r4, r5, lr} 108 .cfi_def_cfa_offset 12 109 .cfi_offset 4, -12 110 .cfi_offset 5, -8 111 .cfi_offset 14, -4 112 0002 83B0 sub sp, sp, #12 113 .cfi_def_cfa_offset 24 50:Core/Src/AMS_HighLevel.c **** if (!amsWakeUp()) { 114 .loc 1 50 3 view .LVU18 115 .loc 1 50 8 is_stmt 0 view .LVU19 116 0004 FFF7FEFF bl amsWakeUp 117 .LVL7: 51:Core/Src/AMS_HighLevel.c **** //error_data.data_kind = SEK_INTERNAL_BMS_TIMEOUT; //we don't receive data for the wakeup comma 52:Core/Src/AMS_HighLevel.c **** //set_error_source(ERROR_SOURCE_INTERNAL); //so we can't tell if we timed out 53:Core/Src/AMS_HighLevel.c **** } 118 .loc 1 53 3 is_stmt 1 view .LVU20 54:Core/Src/AMS_HighLevel.c **** 55:Core/Src/AMS_HighLevel.c **** packetChecksumFails += amsAuxAndStatusMeasurement(&module); 119 .loc 1 55 3 view .LVU21 ARM GAS /tmp/ccZdyESl.s page 4 120 .loc 1 55 26 is_stmt 0 view .LVU22 121 0008 1B4C ldr r4, .L13 122 000a 2046 mov r0, r4 123 000c FFF7FEFF bl amsAuxAndStatusMeasurement 124 .LVL8: 125 .loc 1 55 23 discriminator 1 view .LVU23 126 0010 1A4A ldr r2, .L13+4 127 0012 1378 ldrb r3, [r2] @ zero_extendqisi2 128 0014 0344 add r3, r3, r0 129 0016 1370 strb r3, [r2] 56:Core/Src/AMS_HighLevel.c **** 57:Core/Src/AMS_HighLevel.c **** if (module.status.SLEEP) { 130 .loc 1 57 3 is_stmt 1 view .LVU24 131 .loc 1 57 7 is_stmt 0 view .LVU25 132 0018 94F83930 ldrb r3, [r4, #57] @ zero_extendqisi2 133 .loc 1 57 6 view .LVU26 134 001c 13F0100F tst r3, #16 135 0020 06D0 beq .L6 58:Core/Src/AMS_HighLevel.c **** deviceSleeps++; 136 .loc 1 58 5 is_stmt 1 view .LVU27 137 .loc 1 58 17 is_stmt 0 view .LVU28 138 0022 174A ldr r2, .L13+8 139 0024 1378 ldrb r3, [r2] @ zero_extendqisi2 140 0026 0133 adds r3, r3, #1 141 0028 DBB2 uxtb r3, r3 142 002a 1370 strb r3, [r2] 59:Core/Src/AMS_HighLevel.c **** if (deviceSleeps > MAX_DEVICE_SLEEP) { 143 .loc 1 59 5 is_stmt 1 view .LVU29 144 .loc 1 59 8 is_stmt 0 view .LVU30 145 002c 032B cmp r3, #3 146 002e 13D9 bls .L12 147 .L6: 60:Core/Src/AMS_HighLevel.c **** 61:Core/Src/AMS_HighLevel.c **** } else { 62:Core/Src/AMS_HighLevel.c **** amsReset(); 63:Core/Src/AMS_HighLevel.c **** } 64:Core/Src/AMS_HighLevel.c **** } 65:Core/Src/AMS_HighLevel.c **** 66:Core/Src/AMS_HighLevel.c **** packetChecksumFails += amsCellMeasurement(&module); 148 .loc 1 66 3 is_stmt 1 view .LVU31 149 .loc 1 66 26 is_stmt 0 view .LVU32 150 0030 114D ldr r5, .L13 151 0032 2846 mov r0, r5 152 0034 FFF7FEFF bl amsCellMeasurement 153 .LVL9: 154 .loc 1 66 23 discriminator 1 view .LVU33 155 0038 104C ldr r4, .L13+4 156 003a 2378 ldrb r3, [r4] @ zero_extendqisi2 157 003c 0344 add r3, r3, r0 158 003e 2370 strb r3, [r4] 67:Core/Src/AMS_HighLevel.c **** packetChecksumFails += amsCheckUnderOverVoltage(&module); 159 .loc 1 67 3 is_stmt 1 view .LVU34 160 .loc 1 67 26 is_stmt 0 view .LVU35 161 0040 2846 mov r0, r5 162 0042 FFF7FEFF bl amsCheckUnderOverVoltage 163 .LVL10: 164 .loc 1 67 23 discriminator 1 view .LVU36 ARM GAS /tmp/ccZdyESl.s page 5 165 0046 2378 ldrb r3, [r4] @ zero_extendqisi2 166 0048 0344 add r3, r3, r0 167 004a 2370 strb r3, [r4] 68:Core/Src/AMS_HighLevel.c **** 69:Core/Src/AMS_HighLevel.c **** if(eeprom_write(0, 7) != 0){ 168 .loc 1 69 3 is_stmt 1 view .LVU37 169 .loc 1 69 6 is_stmt 0 view .LVU38 170 004c 0721 movs r1, #7 171 004e 0020 movs r0, #0 172 0050 FFF7FEFF bl eeprom_write 173 .LVL11: 174 .loc 1 69 5 discriminator 1 view .LVU39 175 0054 18B1 cbz r0, .L7 176 .L8: 70:Core/Src/AMS_HighLevel.c **** while(1){} 177 .loc 1 70 5 is_stmt 1 view .LVU40 178 .loc 1 70 14 view .LVU41 179 .loc 1 70 10 view .LVU42 180 0056 FEE7 b .L8 181 .L12: 62:Core/Src/AMS_HighLevel.c **** } 182 .loc 1 62 7 view .LVU43 183 0058 FFF7FEFF bl amsReset 184 .LVL12: 185 005c E8E7 b .L6 186 .L7: 71:Core/Src/AMS_HighLevel.c **** } 72:Core/Src/AMS_HighLevel.c **** int8_t eepromBuf = 0; 187 .loc 1 72 3 view .LVU44 188 .loc 1 72 10 is_stmt 0 view .LVU45 189 005e 0020 movs r0, #0 190 0060 8DF80700 strb r0, [sp, #7] 73:Core/Src/AMS_HighLevel.c **** if(eeprom_read(0, &eepromBuf) != 0){ 191 .loc 1 73 3 is_stmt 1 view .LVU46 192 .loc 1 73 6 is_stmt 0 view .LVU47 193 0064 0DF10701 add r1, sp, #7 194 0068 FFF7FEFF bl eeprom_read 195 .LVL13: 196 .loc 1 73 5 discriminator 1 view .LVU48 197 006c 00B1 cbz r0, .L9 198 .L10: 74:Core/Src/AMS_HighLevel.c **** while(1){} 199 .loc 1 74 5 is_stmt 1 view .LVU49 200 .loc 1 74 14 view .LVU50 201 .loc 1 74 10 view .LVU51 202 006e FEE7 b .L10 203 .L9: 75:Core/Src/AMS_HighLevel.c **** } 76:Core/Src/AMS_HighLevel.c **** 77:Core/Src/AMS_HighLevel.c **** if (eepromBuf != 7){ 204 .loc 1 77 3 view .LVU52 78:Core/Src/AMS_HighLevel.c **** // while(1){} 79:Core/Src/AMS_HighLevel.c **** } 205 .loc 1 79 3 view .LVU53 80:Core/Src/AMS_HighLevel.c **** 81:Core/Src/AMS_HighLevel.c **** return 0; 206 .loc 1 81 3 view .LVU54 ARM GAS /tmp/ccZdyESl.s page 6 82:Core/Src/AMS_HighLevel.c **** }... 207 .loc 1 82 1 is_stmt 0 view .LVU55 208 0070 0020 movs r0, #0 209 0072 03B0 add sp, sp, #12 210 .cfi_def_cfa_offset 12 211 @ sp needed 212 0074 30BD pop {r4, r5, pc} 213 .L14: 214 0076 00BF .align 2 215 .L13: 216 0078 00000000 .word module 217 007c 00000000 .word packetChecksumFails 218 0080 00000000 .word deviceSleeps 219 .cfi_endproc 220 .LFE124: 222 .global pollingTimes 223 .section .bss.pollingTimes,"aw",%nobits 224 .align 2 227 pollingTimes: 228 0000 00000000 .space 8 228 00000000 229 .global deviceSleeps 230 .section .bss.deviceSleeps,"aw",%nobits 233 deviceSleeps: 234 0000 00 .space 1 235 .global packetChecksumFails 236 .section .bss.packetChecksumFails,"aw",%nobits 239 packetChecksumFails: 240 0000 00 .space 1 241 .global numberofAux 242 .section .bss.numberofAux,"aw",%nobits 245 numberofAux: 246 0000 00 .space 1 247 .global numberofCells 248 .section .data.numberofCells,"aw" 251 numberofCells: 252 0000 0F .byte 15 253 .global amsov 254 .section .bss.amsov,"aw",%nobits 255 .align 1 258 amsov: 259 0000 0000 .space 2 260 .global amsuv 261 .section .bss.amsuv,"aw",%nobits 262 .align 1 265 amsuv: 266 0000 0000 .space 2 267 .global module 268 .section .bss.module,"aw",%nobits 269 .align 2 272 module: 273 0000 00000000 .space 96 273 00000000 273 00000000 273 00000000 273 00000000 274 .text ARM GAS /tmp/ccZdyESl.s page 7 275 .Letext0: 276 .file 2 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm- 277 .file 3 "/home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm- 278 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h" 279 .file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 280 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h" 281 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h" 282 .file 8 "Core/Inc/ADBMS_LL_Driver.h" 283 .file 9 "Core/Inc/ADBMS_Abstraction.h" 284 .file 10 "Core/Inc/AMS_HighLevel.h" 285 .file 11 "Core/Inc/24LC02.h" 286 .file 12 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h" ARM GAS /tmp/ccZdyESl.s page 8 DEFINED SYMBOLS *ABS*:00000000 AMS_HighLevel.c /tmp/ccZdyESl.s:21 .text.AMS_Init:00000000 $t /tmp/ccZdyESl.s:27 .text.AMS_Init:00000000 AMS_Init /tmp/ccZdyESl.s:86 .text.AMS_Init:00000038 $d /tmp/ccZdyESl.s:245 .bss.numberofAux:00000000 numberofAux /tmp/ccZdyESl.s:251 .data.numberofCells:00000000 numberofCells /tmp/ccZdyESl.s:258 .bss.amsov:00000000 amsov /tmp/ccZdyESl.s:265 .bss.amsuv:00000000 amsuv /tmp/ccZdyESl.s:227 .bss.pollingTimes:00000000 pollingTimes /tmp/ccZdyESl.s:95 .text.AMS_Idle_Loop:00000000 $t /tmp/ccZdyESl.s:101 .text.AMS_Idle_Loop:00000000 AMS_Idle_Loop /tmp/ccZdyESl.s:216 .text.AMS_Idle_Loop:00000078 $d /tmp/ccZdyESl.s:272 .bss.module:00000000 module /tmp/ccZdyESl.s:239 .bss.packetChecksumFails:00000000 packetChecksumFails /tmp/ccZdyESl.s:233 .bss.deviceSleeps:00000000 deviceSleeps /tmp/ccZdyESl.s:224 .bss.pollingTimes:00000000 $d /tmp/ccZdyESl.s:234 .bss.deviceSleeps:00000000 $d /tmp/ccZdyESl.s:240 .bss.packetChecksumFails:00000000 $d /tmp/ccZdyESl.s:246 .bss.numberofAux:00000000 $d /tmp/ccZdyESl.s:255 .bss.amsov:00000000 $d /tmp/ccZdyESl.s:262 .bss.amsuv:00000000 $d /tmp/ccZdyESl.s:269 .bss.module:00000000 $d UNDEFINED SYMBOLS initAMS amsConfig HAL_GetTick amsWakeUp amsAuxAndStatusMeasurement amsCellMeasurement amsCheckUnderOverVoltage eeprom_write amsReset eeprom_read