ARM GAS  /tmp/ccxETzRn.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_CAN.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.file 1 "Core/Src/AMS_CAN.c"
  20              		.section	.text.ams_can_init,"ax",%progbits
  21              		.align	1
  22              		.global	ams_can_init
  23              		.syntax unified
  24              		.thumb
  25              		.thumb_func
  27              	ams_can_init:
  28              	.LVL0:
  29              	.LFB130:
   1:Core/Src/AMS_CAN.c **** /*
   2:Core/Src/AMS_CAN.c ****  * AMS_CAN.c
   3:Core/Src/AMS_CAN.c ****  *
   4:Core/Src/AMS_CAN.c ****  *  Created on: Mar 19, 2022
   5:Core/Src/AMS_CAN.c ****  *      Author: jasper
   6:Core/Src/AMS_CAN.c ****  */
   7:Core/Src/AMS_CAN.c **** 
   8:Core/Src/AMS_CAN.c **** #include "AMS_CAN.h"
   9:Core/Src/AMS_CAN.c **** 
  10:Core/Src/AMS_CAN.c **** #include "ADBMS_Abstraction.h"
  11:Core/Src/AMS_CAN.c **** 
  12:Core/Src/AMS_CAN.c **** 
  13:Core/Src/AMS_CAN.c **** #include "common_defs.h"
  14:Core/Src/AMS_CAN.c **** #include "main.h"
  15:Core/Src/AMS_CAN.c **** #include "AMS_HighLevel.h"
  16:Core/Src/AMS_CAN.c **** #include "stm32f3xx.h"
  17:Core/Src/AMS_CAN.c **** #include "stm32f3xx_hal.h"
  18:Core/Src/AMS_CAN.c **** #include "stm32f3xx_hal_can.h"
  19:Core/Src/AMS_CAN.c **** 
  20:Core/Src/AMS_CAN.c **** #include <stdint.h>
  21:Core/Src/AMS_CAN.c **** 
  22:Core/Src/AMS_CAN.c **** int PENDING_MESSAGE_HANDLE = 0;
  23:Core/Src/AMS_CAN.c **** uint8_t canTestData[8] = {0,0,0,0,0,0,0,0};
  24:Core/Src/AMS_CAN.c **** 
  25:Core/Src/AMS_CAN.c **** 
  26:Core/Src/AMS_CAN.c **** CAN_HandleTypeDef* ams_can_handle;
  27:Core/Src/AMS_CAN.c **** 
  28:Core/Src/AMS_CAN.c **** void ams_can_init(CAN_HandleTypeDef* ams_handle,
  29:Core/Src/AMS_CAN.c ****                   CAN_HandleTypeDef* car_handle) {
ARM GAS  /tmp/ccxETzRn.s 			page 2


  30              		.loc 1 29 50 view -0
  31              		.cfi_startproc
  32              		@ args = 0, pretend = 0, frame = 40
  33              		@ frame_needed = 0, uses_anonymous_args = 0
  34              		.loc 1 29 50 is_stmt 0 view .LVU1
  35 0000 10B5     		push	{r4, lr}
  36              		.cfi_def_cfa_offset 8
  37              		.cfi_offset 4, -8
  38              		.cfi_offset 14, -4
  39 0002 8AB0     		sub	sp, sp, #40
  40              		.cfi_def_cfa_offset 48
  41 0004 0C46     		mov	r4, r1
  30:Core/Src/AMS_CAN.c ****   ams_can_handle = ams_handle;
  42              		.loc 1 30 3 is_stmt 1 view .LVU2
  43              		.loc 1 30 18 is_stmt 0 view .LVU3
  44 0006 204B     		ldr	r3, .L11
  45 0008 1860     		str	r0, [r3]
  31:Core/Src/AMS_CAN.c **** 
  32:Core/Src/AMS_CAN.c ****   // Start peripheral
  33:Core/Src/AMS_CAN.c ****   if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
  46              		.loc 1 33 3 is_stmt 1 view .LVU4
  47              		.loc 1 33 7 is_stmt 0 view .LVU5
  48 000a FFF7FEFF 		bl	HAL_CAN_Start
  49              	.LVL1:
  50              		.loc 1 33 6 view .LVU6
  51 000e 40BB     		cbnz	r0, .L7
  52              	.L2:
  34:Core/Src/AMS_CAN.c ****     ams_can_handle = car_handle;
  35:Core/Src/AMS_CAN.c ****     if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
  36:Core/Src/AMS_CAN.c ****       Error_Handler();
  37:Core/Src/AMS_CAN.c ****     }
  38:Core/Src/AMS_CAN.c ****   }
  39:Core/Src/AMS_CAN.c **** 
  40:Core/Src/AMS_CAN.c ****   // Config filter
  41:Core/Src/AMS_CAN.c ****   CAN_FilterTypeDef can_filter;
  53              		.loc 1 41 3 is_stmt 1 view .LVU7
  42:Core/Src/AMS_CAN.c ****   can_filter.FilterActivation = CAN_FILTER_ENABLE;
  54              		.loc 1 42 3 view .LVU8
  55              		.loc 1 42 31 is_stmt 0 view .LVU9
  56 0010 0122     		movs	r2, #1
  57 0012 0892     		str	r2, [sp, #32]
  43:Core/Src/AMS_CAN.c ****   can_filter.FilterBank = 0;
  58              		.loc 1 43 3 is_stmt 1 view .LVU10
  59              		.loc 1 43 25 is_stmt 0 view .LVU11
  60 0014 0023     		movs	r3, #0
  61 0016 0593     		str	r3, [sp, #20]
  44:Core/Src/AMS_CAN.c ****   can_filter.FilterFIFOAssignment = CAN_FILTER_FIFO0;
  62              		.loc 1 44 3 is_stmt 1 view .LVU12
  63              		.loc 1 44 35 is_stmt 0 view .LVU13
  64 0018 0493     		str	r3, [sp, #16]
  45:Core/Src/AMS_CAN.c ****   /* Message ID is in the MSBs of the FilterId register */
  46:Core/Src/AMS_CAN.c ****   can_filter.FilterIdHigh = CAN_ID_CLOCK_SYNC << (16 - 11);
  65              		.loc 1 46 3 is_stmt 1 view .LVU14
  66              		.loc 1 46 27 is_stmt 0 view .LVU15
  67 001a 4021     		movs	r1, #64
  68 001c 0091     		str	r1, [sp]
  47:Core/Src/AMS_CAN.c ****   can_filter.FilterIdLow = 0;
ARM GAS  /tmp/ccxETzRn.s 			page 3


  69              		.loc 1 47 3 is_stmt 1 view .LVU16
  70              		.loc 1 47 26 is_stmt 0 view .LVU17
  71 001e 0193     		str	r3, [sp, #4]
  48:Core/Src/AMS_CAN.c ****   /* Filter the 11 MSBs (i.e. a StdId) */
  49:Core/Src/AMS_CAN.c **** 
  50:Core/Src/AMS_CAN.c ****   if(BMS_IN_TEST_MODE == 1){
  72              		.loc 1 50 3 is_stmt 1 view .LVU18
  51:Core/Src/AMS_CAN.c **** 	  can_filter.FilterMaskIdHigh = BMS_TEST_ID; // alleNachrichtenIds werden akzeptiert
  73              		.loc 1 51 4 view .LVU19
  74              		.loc 1 51 32 is_stmt 0 view .LVU20
  75 0020 0293     		str	r3, [sp, #8]
  52:Core/Src/AMS_CAN.c ****   }else{
  53:Core/Src/AMS_CAN.c **** 	  can_filter.FilterMaskIdHigh = 0xFFE0;
  54:Core/Src/AMS_CAN.c ****   }
  55:Core/Src/AMS_CAN.c **** 
  56:Core/Src/AMS_CAN.c ****   can_filter.FilterMaskIdLow = 0;
  76              		.loc 1 56 3 is_stmt 1 view .LVU21
  77              		.loc 1 56 30 is_stmt 0 view .LVU22
  78 0022 0393     		str	r3, [sp, #12]
  57:Core/Src/AMS_CAN.c ****   can_filter.FilterMode = CAN_FILTERMODE_IDMASK;
  79              		.loc 1 57 3 is_stmt 1 view .LVU23
  80              		.loc 1 57 25 is_stmt 0 view .LVU24
  81 0024 0693     		str	r3, [sp, #24]
  58:Core/Src/AMS_CAN.c ****   can_filter.FilterScale = CAN_FILTERSCALE_32BIT;
  82              		.loc 1 58 3 is_stmt 1 view .LVU25
  83              		.loc 1 58 26 is_stmt 0 view .LVU26
  84 0026 0792     		str	r2, [sp, #28]
  59:Core/Src/AMS_CAN.c ****   can_filter.SlaveStartFilterBank = 0;
  85              		.loc 1 59 3 is_stmt 1 view .LVU27
  86              		.loc 1 59 35 is_stmt 0 view .LVU28
  87 0028 0993     		str	r3, [sp, #36]
  60:Core/Src/AMS_CAN.c ****   if (HAL_CAN_ConfigFilter(ams_can_handle, &can_filter) != HAL_OK) {
  88              		.loc 1 60 3 is_stmt 1 view .LVU29
  89              		.loc 1 60 7 is_stmt 0 view .LVU30
  90 002a 6946     		mov	r1, sp
  91 002c 164B     		ldr	r3, .L11
  92 002e 1868     		ldr	r0, [r3]
  93 0030 FFF7FEFF 		bl	HAL_CAN_ConfigFilter
  94              	.LVL2:
  95              		.loc 1 60 6 view .LVU31
  96 0034 F8B9     		cbnz	r0, .L8
  97              	.L3:
  61:Core/Src/AMS_CAN.c ****     Error_Handler();
  62:Core/Src/AMS_CAN.c ****   }
  63:Core/Src/AMS_CAN.c ****   can_filter.FilterBank++;
  98              		.loc 1 63 3 is_stmt 1 view .LVU32
  99              		.loc 1 63 13 is_stmt 0 view .LVU33
 100 0036 059B     		ldr	r3, [sp, #20]
 101              		.loc 1 63 24 view .LVU34
 102 0038 0133     		adds	r3, r3, #1
 103 003a 0593     		str	r3, [sp, #20]
  64:Core/Src/AMS_CAN.c ****   can_filter.FilterIdHigh = CAN_ID_MASTER_HEARTBEAT << (16 - 11);
 104              		.loc 1 64 3 is_stmt 1 view .LVU35
 105              		.loc 1 64 27 is_stmt 0 view .LVU36
 106 003c 4FF40073 		mov	r3, #512
 107 0040 0093     		str	r3, [sp]
  65:Core/Src/AMS_CAN.c ****   can_filter.FilterIdLow = 0;
ARM GAS  /tmp/ccxETzRn.s 			page 4


 108              		.loc 1 65 3 is_stmt 1 view .LVU37
 109              		.loc 1 65 26 is_stmt 0 view .LVU38
 110 0042 0023     		movs	r3, #0
 111 0044 0193     		str	r3, [sp, #4]
  66:Core/Src/AMS_CAN.c ****   if (HAL_CAN_ConfigFilter(ams_can_handle, &can_filter) != HAL_OK) {
 112              		.loc 1 66 3 is_stmt 1 view .LVU39
 113              		.loc 1 66 7 is_stmt 0 view .LVU40
 114 0046 6946     		mov	r1, sp
 115 0048 0F4B     		ldr	r3, .L11
 116 004a 1868     		ldr	r0, [r3]
 117 004c FFF7FEFF 		bl	HAL_CAN_ConfigFilter
 118              	.LVL3:
 119              		.loc 1 66 6 view .LVU41
 120 0050 A0B9     		cbnz	r0, .L9
 121              	.L4:
  67:Core/Src/AMS_CAN.c ****     Error_Handler();
  68:Core/Src/AMS_CAN.c ****   }
  69:Core/Src/AMS_CAN.c **** 
  70:Core/Src/AMS_CAN.c ****   // Activate RX notifications
  71:Core/Src/AMS_CAN.c ****   if (HAL_CAN_ActivateNotification(ams_can_handle,
 122              		.loc 1 71 3 is_stmt 1 view .LVU42
 123              		.loc 1 71 7 is_stmt 0 view .LVU43
 124 0052 0221     		movs	r1, #2
 125 0054 0C4B     		ldr	r3, .L11
 126 0056 1868     		ldr	r0, [r3]
 127 0058 FFF7FEFF 		bl	HAL_CAN_ActivateNotification
 128              	.LVL4:
 129              		.loc 1 71 6 view .LVU44
 130 005c 88B9     		cbnz	r0, .L10
 131              	.L1:
  72:Core/Src/AMS_CAN.c ****                                    CAN_IT_RX_FIFO0_MSG_PENDING) != HAL_OK) {
  73:Core/Src/AMS_CAN.c ****     Error_Handler();
  74:Core/Src/AMS_CAN.c ****   }
  75:Core/Src/AMS_CAN.c **** }
 132              		.loc 1 75 1 view .LVU45
 133 005e 0AB0     		add	sp, sp, #40
 134              		.cfi_remember_state
 135              		.cfi_def_cfa_offset 8
 136              		@ sp needed
 137 0060 10BD     		pop	{r4, pc}
 138              	.LVL5:
 139              	.L7:
 140              		.cfi_restore_state
  34:Core/Src/AMS_CAN.c ****     if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
 141              		.loc 1 34 5 is_stmt 1 view .LVU46
  34:Core/Src/AMS_CAN.c ****     if (HAL_CAN_Start(ams_can_handle) != HAL_OK) {
 142              		.loc 1 34 20 is_stmt 0 view .LVU47
 143 0062 094B     		ldr	r3, .L11
 144 0064 1C60     		str	r4, [r3]
  35:Core/Src/AMS_CAN.c ****       Error_Handler();
 145              		.loc 1 35 5 is_stmt 1 view .LVU48
  35:Core/Src/AMS_CAN.c ****       Error_Handler();
 146              		.loc 1 35 9 is_stmt 0 view .LVU49
 147 0066 2046     		mov	r0, r4
 148 0068 FFF7FEFF 		bl	HAL_CAN_Start
 149              	.LVL6:
  35:Core/Src/AMS_CAN.c ****       Error_Handler();
ARM GAS  /tmp/ccxETzRn.s 			page 5


 150              		.loc 1 35 8 view .LVU50
 151 006c 0028     		cmp	r0, #0
 152 006e CFD0     		beq	.L2
  36:Core/Src/AMS_CAN.c ****     }
 153              		.loc 1 36 7 is_stmt 1 view .LVU51
 154 0070 FFF7FEFF 		bl	Error_Handler
 155              	.LVL7:
 156 0074 CCE7     		b	.L2
 157              	.L8:
  61:Core/Src/AMS_CAN.c ****   }
 158              		.loc 1 61 5 view .LVU52
 159 0076 FFF7FEFF 		bl	Error_Handler
 160              	.LVL8:
 161 007a DCE7     		b	.L3
 162              	.L9:
  67:Core/Src/AMS_CAN.c ****   }
 163              		.loc 1 67 5 view .LVU53
 164 007c FFF7FEFF 		bl	Error_Handler
 165              	.LVL9:
 166 0080 E7E7     		b	.L4
 167              	.L10:
  73:Core/Src/AMS_CAN.c ****   }
 168              		.loc 1 73 5 view .LVU54
 169 0082 FFF7FEFF 		bl	Error_Handler
 170              	.LVL10:
 171              		.loc 1 75 1 is_stmt 0 view .LVU55
 172 0086 EAE7     		b	.L1
 173              	.L12:
 174              		.align	2
 175              	.L11:
 176 0088 00000000 		.word	ams_can_handle
 177              		.cfi_endproc
 178              	.LFE130:
 180              		.section	.text.ams_can_handle_ams_msg,"ax",%progbits
 181              		.align	1
 182              		.global	ams_can_handle_ams_msg
 183              		.syntax unified
 184              		.thumb
 185              		.thumb_func
 187              	ams_can_handle_ams_msg:
 188              	.LVL11:
 189              	.LFB132:
  76:Core/Src/AMS_CAN.c **** 
  77:Core/Src/AMS_CAN.c **** static int cb_triggered = 0;
  78:Core/Src/AMS_CAN.c **** 
  79:Core/Src/AMS_CAN.c **** void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef* handle) {
  80:Core/Src/AMS_CAN.c ****   static CAN_RxHeaderTypeDef header;
  81:Core/Src/AMS_CAN.c ****   static uint8_t data[8];
  82:Core/Src/AMS_CAN.c ****   cb_triggered = 1;
  83:Core/Src/AMS_CAN.c **** 
  84:Core/Src/AMS_CAN.c ****   if (HAL_CAN_GetRxMessage(handle, CAN_RX_FIFO0, &header, data) != HAL_OK) {
  85:Core/Src/AMS_CAN.c ****     Error_Handler();
  86:Core/Src/AMS_CAN.c ****   }
  87:Core/Src/AMS_CAN.c **** 
  88:Core/Src/AMS_CAN.c ****   if (handle == ams_can_handle) {
  89:Core/Src/AMS_CAN.c ****     ams_can_handle_ams_msg(&header, data);
  90:Core/Src/AMS_CAN.c ****   } else {
ARM GAS  /tmp/ccxETzRn.s 			page 6


  91:Core/Src/AMS_CAN.c ****     Error_Handler();
  92:Core/Src/AMS_CAN.c ****   }
  93:Core/Src/AMS_CAN.c **** }
  94:Core/Src/AMS_CAN.c **** 
  95:Core/Src/AMS_CAN.c **** void ams_can_handle_ams_msg(CAN_RxHeaderTypeDef* header, uint8_t* data) {
 190              		.loc 1 95 73 is_stmt 1 view -0
 191              		.cfi_startproc
 192              		@ args = 0, pretend = 0, frame = 0
 193              		@ frame_needed = 0, uses_anonymous_args = 0
 194              		@ link register save eliminated.
  96:Core/Src/AMS_CAN.c **** 
  97:Core/Src/AMS_CAN.c ****   if(BMS_IN_TEST_MODE == 1){
 195              		.loc 1 97 3 view .LVU57
  98:Core/Src/AMS_CAN.c **** 		  PENDING_MESSAGE_HANDLE = 1;
 196              		.loc 1 98 5 view .LVU58
 197              		.loc 1 98 28 is_stmt 0 view .LVU59
 198 0000 054B     		ldr	r3, .L16
 199 0002 0122     		movs	r2, #1
 200 0004 1A60     		str	r2, [r3]
  99:Core/Src/AMS_CAN.c **** 		  for(int i = 0; i < 8; i++){
 201              		.loc 1 99 5 is_stmt 1 view .LVU60
 202              	.LBB2:
 203              		.loc 1 99 9 view .LVU61
 204              	.LVL12:
 205              		.loc 1 99 13 is_stmt 0 view .LVU62
 206 0006 0023     		movs	r3, #0
 207              		.loc 1 99 5 view .LVU63
 208 0008 03E0     		b	.L14
 209              	.LVL13:
 210              	.L15:
 100:Core/Src/AMS_CAN.c **** 			  canTestData[i] = data[i];
 211              		.loc 1 100 6 is_stmt 1 discriminator 3 view .LVU64
 212              		.loc 1 100 27 is_stmt 0 discriminator 3 view .LVU65
 213 000a C85C     		ldrb	r0, [r1, r3]	@ zero_extendqisi2
 214              		.loc 1 100 21 discriminator 3 view .LVU66
 215 000c 034A     		ldr	r2, .L16+4
 216 000e D054     		strb	r0, [r2, r3]
  99:Core/Src/AMS_CAN.c **** 		  for(int i = 0; i < 8; i++){
 217              		.loc 1 99 28 is_stmt 1 discriminator 3 view .LVU67
 218 0010 0133     		adds	r3, r3, #1
 219              	.LVL14:
 220              	.L14:
  99:Core/Src/AMS_CAN.c **** 		  for(int i = 0; i < 8; i++){
 221              		.loc 1 99 22 discriminator 1 view .LVU68
 222 0012 072B     		cmp	r3, #7
 223 0014 F9DD     		ble	.L15
 224              	.LBE2:
 101:Core/Src/AMS_CAN.c **** 		  }
 102:Core/Src/AMS_CAN.c **** 		  return;
 103:Core/Src/AMS_CAN.c ****   }
 104:Core/Src/AMS_CAN.c **** 
 105:Core/Src/AMS_CAN.c **** 
 106:Core/Src/AMS_CAN.c ****   if (header->IDE != CAN_ID_STD) {
 107:Core/Src/AMS_CAN.c ****     return;
 108:Core/Src/AMS_CAN.c ****   }
 109:Core/Src/AMS_CAN.c **** 
 110:Core/Src/AMS_CAN.c ****   switch (header->StdId) {
ARM GAS  /tmp/ccxETzRn.s 			page 7


 111:Core/Src/AMS_CAN.c ****   case CAN_ID_CLOCK_SYNC:
 112:Core/Src/AMS_CAN.c **** //    clock_sync_handle_clock_sync_frame(data[0]);
 113:Core/Src/AMS_CAN.c ****     break;
 114:Core/Src/AMS_CAN.c ****   case CAN_ID_MASTER_HEARTBEAT:
 115:Core/Src/AMS_CAN.c **** //    clock_sync_handle_master_heartbeat();
 116:Core/Src/AMS_CAN.c ****     break;
 117:Core/Src/AMS_CAN.c ****   }
 118:Core/Src/AMS_CAN.c **** }
 225              		.loc 1 118 1 is_stmt 0 view .LVU69
 226 0016 7047     		bx	lr
 227              	.L17:
 228              		.align	2
 229              	.L16:
 230 0018 00000000 		.word	PENDING_MESSAGE_HANDLE
 231 001c 00000000 		.word	canTestData
 232              		.cfi_endproc
 233              	.LFE132:
 235              		.section	.text.HAL_CAN_RxFifo0MsgPendingCallback,"ax",%progbits
 236              		.align	1
 237              		.global	HAL_CAN_RxFifo0MsgPendingCallback
 238              		.syntax unified
 239              		.thumb
 240              		.thumb_func
 242              	HAL_CAN_RxFifo0MsgPendingCallback:
 243              	.LVL15:
 244              	.LFB131:
  79:Core/Src/AMS_CAN.c ****   static CAN_RxHeaderTypeDef header;
 245              		.loc 1 79 67 is_stmt 1 view -0
 246              		.cfi_startproc
 247              		@ args = 0, pretend = 0, frame = 0
 248              		@ frame_needed = 0, uses_anonymous_args = 0
  79:Core/Src/AMS_CAN.c ****   static CAN_RxHeaderTypeDef header;
 249              		.loc 1 79 67 is_stmt 0 view .LVU71
 250 0000 10B5     		push	{r4, lr}
 251              		.cfi_def_cfa_offset 8
 252              		.cfi_offset 4, -8
 253              		.cfi_offset 14, -4
 254 0002 0446     		mov	r4, r0
  80:Core/Src/AMS_CAN.c ****   static uint8_t data[8];
 255              		.loc 1 80 3 is_stmt 1 view .LVU72
  81:Core/Src/AMS_CAN.c ****   cb_triggered = 1;
 256              		.loc 1 81 3 view .LVU73
  82:Core/Src/AMS_CAN.c **** 
 257              		.loc 1 82 3 view .LVU74
  82:Core/Src/AMS_CAN.c **** 
 258              		.loc 1 82 16 is_stmt 0 view .LVU75
 259 0004 0B4B     		ldr	r3, .L25
 260 0006 0122     		movs	r2, #1
 261 0008 1A60     		str	r2, [r3]
  84:Core/Src/AMS_CAN.c ****     Error_Handler();
 262              		.loc 1 84 3 is_stmt 1 view .LVU76
  84:Core/Src/AMS_CAN.c ****     Error_Handler();
 263              		.loc 1 84 7 is_stmt 0 view .LVU77
 264 000a 0B4B     		ldr	r3, .L25+4
 265 000c 0B4A     		ldr	r2, .L25+8
 266 000e 0021     		movs	r1, #0
 267 0010 FFF7FEFF 		bl	HAL_CAN_GetRxMessage
ARM GAS  /tmp/ccxETzRn.s 			page 8


 268              	.LVL16:
  84:Core/Src/AMS_CAN.c ****     Error_Handler();
 269              		.loc 1 84 6 view .LVU78
 270 0014 30B9     		cbnz	r0, .L23
 271              	.L19:
  88:Core/Src/AMS_CAN.c ****     ams_can_handle_ams_msg(&header, data);
 272              		.loc 1 88 3 is_stmt 1 view .LVU79
  88:Core/Src/AMS_CAN.c ****     ams_can_handle_ams_msg(&header, data);
 273              		.loc 1 88 14 is_stmt 0 view .LVU80
 274 0016 0A4B     		ldr	r3, .L25+12
 275 0018 1B68     		ldr	r3, [r3]
  88:Core/Src/AMS_CAN.c ****     ams_can_handle_ams_msg(&header, data);
 276              		.loc 1 88 6 view .LVU81
 277 001a A342     		cmp	r3, r4
 278 001c 05D0     		beq	.L24
  91:Core/Src/AMS_CAN.c ****   }
 279              		.loc 1 91 5 is_stmt 1 view .LVU82
 280 001e FFF7FEFF 		bl	Error_Handler
 281              	.LVL17:
 282              	.L18:
  93:Core/Src/AMS_CAN.c **** 
 283              		.loc 1 93 1 is_stmt 0 view .LVU83
 284 0022 10BD     		pop	{r4, pc}
 285              	.LVL18:
 286              	.L23:
  85:Core/Src/AMS_CAN.c ****   }
 287              		.loc 1 85 5 is_stmt 1 view .LVU84
 288 0024 FFF7FEFF 		bl	Error_Handler
 289              	.LVL19:
 290 0028 F5E7     		b	.L19
 291              	.L24:
  89:Core/Src/AMS_CAN.c ****   } else {
 292              		.loc 1 89 5 view .LVU85
 293 002a 0349     		ldr	r1, .L25+4
 294 002c 0348     		ldr	r0, .L25+8
 295 002e FFF7FEFF 		bl	ams_can_handle_ams_msg
 296              	.LVL20:
 297 0032 F6E7     		b	.L18
 298              	.L26:
 299              		.align	2
 300              	.L25:
 301 0034 00000000 		.word	cb_triggered
 302 0038 00000000 		.word	data.2
 303 003c 00000000 		.word	header.3
 304 0040 00000000 		.word	ams_can_handle
 305              		.cfi_endproc
 306              	.LFE131:
 308              		.section	.text.ams_can_wait_for_free_mailboxes,"ax",%progbits
 309              		.align	1
 310              		.global	ams_can_wait_for_free_mailboxes
 311              		.syntax unified
 312              		.thumb
 313              		.thumb_func
 315              	ams_can_wait_for_free_mailboxes:
 316              	.LVL21:
 317              	.LFB134:
 119:Core/Src/AMS_CAN.c **** 
ARM GAS  /tmp/ccxETzRn.s 			page 9


 120:Core/Src/AMS_CAN.c **** void ams_can_send_heartbeat() {
 121:Core/Src/AMS_CAN.c ****   static CAN_TxHeaderTypeDef header;
 122:Core/Src/AMS_CAN.c ****   static uint8_t data[8];
 123:Core/Src/AMS_CAN.c **** 
 124:Core/Src/AMS_CAN.c ****   header.IDE = CAN_ID_STD;
 125:Core/Src/AMS_CAN.c ****   header.DLC = 8;
 126:Core/Src/AMS_CAN.c ****   header.RTR = CAN_RTR_DATA;
 127:Core/Src/AMS_CAN.c ****   header.TransmitGlobalTime = DISABLE;
 128:Core/Src/AMS_CAN.c **** 
 129:Core/Src/AMS_CAN.c ****   // Send voltages
 130:Core/Src/AMS_CAN.c ****   for (int msg_id = 0; msg_id < 5; msg_id++) {
 131:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
 132:Core/Src/AMS_CAN.c ****     for (int i = 0; i < 4; i++) {
 133:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 134:Core/Src/AMS_CAN.c ****       uint16_t v = (cell < N_CELLS) ? module.cellVoltages[cell] : 0;
 135:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 136:Core/Src/AMS_CAN.c ****       data[2 * i + 1] = v >> 8;
 137:Core/Src/AMS_CAN.c ****     }
 138:Core/Src/AMS_CAN.c ****     if (ams_can_wait_for_free_mailboxes(ams_can_handle, 1,
 139:Core/Src/AMS_CAN.c ****                                         CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
 140:Core/Src/AMS_CAN.c ****       uint32_t mailbox;
 141:Core/Src/AMS_CAN.c ****       HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
 142:Core/Src/AMS_CAN.c ****     }
 143:Core/Src/AMS_CAN.c ****   }
 144:Core/Src/AMS_CAN.c **** 
 145:Core/Src/AMS_CAN.c ****   // Send temperatures
 146:Core/Src/AMS_CAN.c ****   /*for (int temp_msg_id = 0; temp_msg_id < 8; temp_msg_id++) {
 147:Core/Src/AMS_CAN.c ****     int msg_id = temp_msg_id + 3;
 148:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (slave_id << 4) | msg_id;
 149:Core/Src/AMS_CAN.c ****     for (int i = 0; i < 4; i++) {
 150:Core/Src/AMS_CAN.c ****       int sensor = temp_msg_id * 4 + i;
 151:Core/Src/AMS_CAN.c ****       uint16_t temp = temperatures[sensor];
 152:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = temp & 0xFF;
 153:Core/Src/AMS_CAN.c ****       data[2 * i + 1] = temp >> 8;
 154:Core/Src/AMS_CAN.c ****     }
 155:Core/Src/AMS_CAN.c ****     if (ams_can_wait_for_free_mailboxes(ams_can_handle, 1,
 156:Core/Src/AMS_CAN.c ****                                         CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
 157:Core/Src/AMS_CAN.c ****       uint32_t mailbox;
 158:Core/Src/AMS_CAN.c ****       HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
 159:Core/Src/AMS_CAN.c ****     }
 160:Core/Src/AMS_CAN.c ****   }*/
 161:Core/Src/AMS_CAN.c **** }
 162:Core/Src/AMS_CAN.c **** 
 163:Core/Src/AMS_CAN.c **** /*void ams_can_send_error(AMS_ErrorCode error_code,
 164:Core/Src/AMS_CAN.c ****                         uint32_t transmission_timeout) {
 165:Core/Src/AMS_CAN.c ****   static CAN_TxHeaderTypeDef header;
 166:Core/Src/AMS_CAN.c ****   header.IDE = CAN_ID_STD;
 167:Core/Src/AMS_CAN.c ****   header.DLC = 8;
 168:Core/Src/AMS_CAN.c ****   header.RTR = CAN_RTR_DATA;
 169:Core/Src/AMS_CAN.c ****   header.TransmitGlobalTime = DISABLE;
 170:Core/Src/AMS_CAN.c ****   header.StdId = CAN_ID_SLAVE_ERROR;
 171:Core/Src/AMS_CAN.c **** 
 172:Core/Src/AMS_CAN.c ****   static uint8_t data[8];
 173:Core/Src/AMS_CAN.c ****   data[0] = slave_id;
 174:Core/Src/AMS_CAN.c ****   data[1] = error_code;
 175:Core/Src/AMS_CAN.c **** 
 176:Core/Src/AMS_CAN.c ****   HAL_CAN_AbortTxRequest(ams_can_handle,
ARM GAS  /tmp/ccxETzRn.s 			page 10


 177:Core/Src/AMS_CAN.c ****                          CAN_TX_MAILBOX0 | CAN_TX_MAILBOX1 | CAN_TX_MAILBOX2);
 178:Core/Src/AMS_CAN.c ****   uint32_t mailbox;
 179:Core/Src/AMS_CAN.c ****   HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
 180:Core/Src/AMS_CAN.c ****   ams_can_wait_for_free_mailboxes(ams_can_handle, 3, transmission_timeout);
 181:Core/Src/AMS_CAN.c **** }*/
 182:Core/Src/AMS_CAN.c **** 
 183:Core/Src/AMS_CAN.c **** HAL_StatusTypeDef ams_can_wait_for_free_mailboxes(CAN_HandleTypeDef* handle,
 184:Core/Src/AMS_CAN.c ****                                                   int num_mailboxes,
 185:Core/Src/AMS_CAN.c ****                                                   uint32_t timeout) {
 318              		.loc 1 185 69 view -0
 319              		.cfi_startproc
 320              		@ args = 0, pretend = 0, frame = 0
 321              		@ frame_needed = 0, uses_anonymous_args = 0
 322              		.loc 1 185 69 is_stmt 0 view .LVU87
 323 0000 70B5     		push	{r4, r5, r6, lr}
 324              		.cfi_def_cfa_offset 16
 325              		.cfi_offset 4, -16
 326              		.cfi_offset 5, -12
 327              		.cfi_offset 6, -8
 328              		.cfi_offset 14, -4
 329 0002 0646     		mov	r6, r0
 330 0004 0D46     		mov	r5, r1
 331 0006 1446     		mov	r4, r2
 186:Core/Src/AMS_CAN.c ****   uint32_t end = HAL_GetTick() + timeout;
 332              		.loc 1 186 3 is_stmt 1 view .LVU88
 333              		.loc 1 186 18 is_stmt 0 view .LVU89
 334 0008 FFF7FEFF 		bl	HAL_GetTick
 335              	.LVL22:
 336              		.loc 1 186 12 view .LVU90
 337 000c 0444     		add	r4, r4, r0
 338              	.LVL23:
 187:Core/Src/AMS_CAN.c ****   while (HAL_GetTick() < end) {
 339              		.loc 1 187 3 is_stmt 1 view .LVU91
 340              	.L28:
 341              		.loc 1 187 24 view .LVU92
 342              		.loc 1 187 10 is_stmt 0 view .LVU93
 343 000e FFF7FEFF 		bl	HAL_GetTick
 344              	.LVL24:
 345              		.loc 1 187 24 view .LVU94
 346 0012 A042     		cmp	r0, r4
 347 0014 06D2     		bcs	.L33
 188:Core/Src/AMS_CAN.c ****     if (HAL_CAN_GetTxMailboxesFreeLevel(handle) >= num_mailboxes) {
 348              		.loc 1 188 5 is_stmt 1 view .LVU95
 349              		.loc 1 188 9 is_stmt 0 view .LVU96
 350 0016 3046     		mov	r0, r6
 351 0018 FFF7FEFF 		bl	HAL_CAN_GetTxMailboxesFreeLevel
 352              	.LVL25:
 353              		.loc 1 188 8 view .LVU97
 354 001c A842     		cmp	r0, r5
 355 001e F6D3     		bcc	.L28
 189:Core/Src/AMS_CAN.c ****       return HAL_OK;
 356              		.loc 1 189 14 view .LVU98
 357 0020 0020     		movs	r0, #0
 358 0022 00E0     		b	.L29
 359              	.L33:
 190:Core/Src/AMS_CAN.c ****     }
 191:Core/Src/AMS_CAN.c ****   }
ARM GAS  /tmp/ccxETzRn.s 			page 11


 192:Core/Src/AMS_CAN.c ****   return HAL_TIMEOUT;
 360              		.loc 1 192 10 view .LVU99
 361 0024 0320     		movs	r0, #3
 362              	.L29:
 193:Core/Src/AMS_CAN.c **** }
 363              		.loc 1 193 1 view .LVU100
 364 0026 70BD     		pop	{r4, r5, r6, pc}
 365              		.loc 1 193 1 view .LVU101
 366              		.cfi_endproc
 367              	.LFE134:
 369              		.section	.text.ams_can_send_heartbeat,"ax",%progbits
 370              		.align	1
 371              		.global	ams_can_send_heartbeat
 372              		.syntax unified
 373              		.thumb
 374              		.thumb_func
 376              	ams_can_send_heartbeat:
 377              	.LFB133:
 120:Core/Src/AMS_CAN.c ****   static CAN_TxHeaderTypeDef header;
 378              		.loc 1 120 31 is_stmt 1 view -0
 379              		.cfi_startproc
 380              		@ args = 0, pretend = 0, frame = 8
 381              		@ frame_needed = 0, uses_anonymous_args = 0
 382 0000 10B5     		push	{r4, lr}
 383              		.cfi_def_cfa_offset 8
 384              		.cfi_offset 4, -8
 385              		.cfi_offset 14, -4
 386 0002 82B0     		sub	sp, sp, #8
 387              		.cfi_def_cfa_offset 16
 121:Core/Src/AMS_CAN.c ****   static uint8_t data[8];
 388              		.loc 1 121 3 view .LVU103
 122:Core/Src/AMS_CAN.c **** 
 389              		.loc 1 122 3 view .LVU104
 124:Core/Src/AMS_CAN.c ****   header.DLC = 8;
 390              		.loc 1 124 3 view .LVU105
 124:Core/Src/AMS_CAN.c ****   header.DLC = 8;
 391              		.loc 1 124 14 is_stmt 0 view .LVU106
 392 0004 1A4B     		ldr	r3, .L46
 393 0006 0024     		movs	r4, #0
 394 0008 9C60     		str	r4, [r3, #8]
 125:Core/Src/AMS_CAN.c ****   header.RTR = CAN_RTR_DATA;
 395              		.loc 1 125 3 is_stmt 1 view .LVU107
 125:Core/Src/AMS_CAN.c ****   header.RTR = CAN_RTR_DATA;
 396              		.loc 1 125 14 is_stmt 0 view .LVU108
 397 000a 0822     		movs	r2, #8
 398 000c 1A61     		str	r2, [r3, #16]
 126:Core/Src/AMS_CAN.c ****   header.TransmitGlobalTime = DISABLE;
 399              		.loc 1 126 3 is_stmt 1 view .LVU109
 126:Core/Src/AMS_CAN.c ****   header.TransmitGlobalTime = DISABLE;
 400              		.loc 1 126 14 is_stmt 0 view .LVU110
 401 000e DC60     		str	r4, [r3, #12]
 127:Core/Src/AMS_CAN.c **** 
 402              		.loc 1 127 3 is_stmt 1 view .LVU111
 127:Core/Src/AMS_CAN.c **** 
 403              		.loc 1 127 29 is_stmt 0 view .LVU112
 404 0010 1C75     		strb	r4, [r3, #20]
 130:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
ARM GAS  /tmp/ccxETzRn.s 			page 12


 405              		.loc 1 130 3 is_stmt 1 view .LVU113
 406              	.LBB3:
 130:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
 407              		.loc 1 130 8 view .LVU114
 408              	.LVL26:
 130:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
 409              		.loc 1 130 3 is_stmt 0 view .LVU115
 410 0012 1AE0     		b	.L35
 411              	.LVL27:
 412              	.L41:
 413              	.LBB4:
 414              	.LBB5:
 134:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 415              		.loc 1 134 16 view .LVU116
 416 0014 0022     		movs	r2, #0
 417              	.LVL28:
 418              	.L37:
 135:Core/Src/AMS_CAN.c ****       data[2 * i + 1] = v >> 8;
 419              		.loc 1 135 7 is_stmt 1 discriminator 4 view .LVU117
 135:Core/Src/AMS_CAN.c ****       data[2 * i + 1] = v >> 8;
 420              		.loc 1 135 18 is_stmt 0 discriminator 4 view .LVU118
 421 0016 5900     		lsls	r1, r3, #1
 135:Core/Src/AMS_CAN.c ****       data[2 * i + 1] = v >> 8;
 422              		.loc 1 135 23 discriminator 4 view .LVU119
 423 0018 1648     		ldr	r0, .L46+4
 424 001a 00F81320 		strb	r2, [r0, r3, lsl #1]
 136:Core/Src/AMS_CAN.c ****     }
 425              		.loc 1 136 7 is_stmt 1 discriminator 4 view .LVU120
 136:Core/Src/AMS_CAN.c ****     }
 426              		.loc 1 136 18 is_stmt 0 discriminator 4 view .LVU121
 427 001e 0131     		adds	r1, r1, #1
 136:Core/Src/AMS_CAN.c ****     }
 428              		.loc 1 136 23 discriminator 4 view .LVU122
 429 0020 120A     		lsrs	r2, r2, #8
 430              	.LVL29:
 136:Core/Src/AMS_CAN.c ****     }
 431              		.loc 1 136 23 discriminator 4 view .LVU123
 432 0022 4254     		strb	r2, [r0, r1]
 433              	.LBE5:
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 434              		.loc 1 132 29 is_stmt 1 discriminator 4 view .LVU124
 435 0024 0133     		adds	r3, r3, #1
 436              	.LVL30:
 437              	.L36:
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 438              		.loc 1 132 23 discriminator 2 view .LVU125
 439 0026 032B     		cmp	r3, #3
 440 0028 07DC     		bgt	.L43
 441              	.LBB6:
 133:Core/Src/AMS_CAN.c ****       uint16_t v = (cell < N_CELLS) ? module.cellVoltages[cell] : 0;
 442              		.loc 1 133 7 view .LVU126
 133:Core/Src/AMS_CAN.c ****       uint16_t v = (cell < N_CELLS) ? module.cellVoltages[cell] : 0;
 443              		.loc 1 133 11 is_stmt 0 view .LVU127
 444 002a 03EB8402 		add	r2, r3, r4, lsl #2
 445              	.LVL31:
 134:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 446              		.loc 1 134 7 is_stmt 1 view .LVU128
ARM GAS  /tmp/ccxETzRn.s 			page 13


 134:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 447              		.loc 1 134 16 is_stmt 0 view .LVU129
 448 002e 102A     		cmp	r2, #16
 449 0030 F0DC     		bgt	.L41
 134:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 450              		.loc 1 134 16 discriminator 1 view .LVU130
 451 0032 1149     		ldr	r1, .L46+8
 452 0034 31F81220 		ldrh	r2, [r1, r2, lsl #1]
 453              	.LVL32:
 134:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 454              		.loc 1 134 16 discriminator 1 view .LVU131
 455 0038 EDE7     		b	.L37
 456              	.LVL33:
 457              	.L43:
 134:Core/Src/AMS_CAN.c ****       data[2 * i + 0] = v & 0xFF;
 458              		.loc 1 134 16 discriminator 1 view .LVU132
 459              	.LBE6:
 460              	.LBE4:
 138:Core/Src/AMS_CAN.c ****                                         CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
 461              		.loc 1 138 5 is_stmt 1 view .LVU133
 138:Core/Src/AMS_CAN.c ****                                         CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
 462              		.loc 1 138 9 is_stmt 0 view .LVU134
 463 003a 0A22     		movs	r2, #10
 464 003c 0121     		movs	r1, #1
 465 003e 0F4B     		ldr	r3, .L46+12
 466              	.LVL34:
 138:Core/Src/AMS_CAN.c ****                                         CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
 467              		.loc 1 138 9 view .LVU135
 468 0040 1868     		ldr	r0, [r3]
 469 0042 FFF7FEFF 		bl	ams_can_wait_for_free_mailboxes
 470              	.LVL35:
 138:Core/Src/AMS_CAN.c ****                                         CAN_HEARTBEAT_TX_TIMEOUT) == HAL_OK) {
 471              		.loc 1 138 8 view .LVU136
 472 0046 40B1     		cbz	r0, .L44
 473              	.L39:
 130:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
 474              		.loc 1 130 42 is_stmt 1 discriminator 2 view .LVU137
 475 0048 0134     		adds	r4, r4, #1
 476              	.LVL36:
 477              	.L35:
 130:Core/Src/AMS_CAN.c ****     header.StdId = CAN_ID_AMS_SLAVE_HEARTBEAT_BASE | (0 << 4) | msg_id; //TODO: Use slave_id/new fo
 478              		.loc 1 130 31 discriminator 1 view .LVU138
 479 004a 042C     		cmp	r4, #4
 480 004c 0DDC     		bgt	.L45
 131:Core/Src/AMS_CAN.c ****     for (int i = 0; i < 4; i++) {
 481              		.loc 1 131 5 view .LVU139
 131:Core/Src/AMS_CAN.c ****     for (int i = 0; i < 4; i++) {
 482              		.loc 1 131 63 is_stmt 0 view .LVU140
 483 004e 44F4C063 		orr	r3, r4, #1536
 131:Core/Src/AMS_CAN.c ****     for (int i = 0; i < 4; i++) {
 484              		.loc 1 131 18 view .LVU141
 485 0052 074A     		ldr	r2, .L46
 486 0054 1360     		str	r3, [r2]
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 487              		.loc 1 132 5 is_stmt 1 view .LVU142
 488              	.LBB7:
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
ARM GAS  /tmp/ccxETzRn.s 			page 14


 489              		.loc 1 132 10 view .LVU143
 490              	.LVL37:
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 491              		.loc 1 132 14 is_stmt 0 view .LVU144
 492 0056 0023     		movs	r3, #0
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 493              		.loc 1 132 5 view .LVU145
 494 0058 E5E7     		b	.L36
 495              	.LVL38:
 496              	.L44:
 132:Core/Src/AMS_CAN.c ****       int cell = msg_id * 4 + i;
 497              		.loc 1 132 5 view .LVU146
 498              	.LBE7:
 499              	.LBB8:
 140:Core/Src/AMS_CAN.c ****       HAL_CAN_AddTxMessage(ams_can_handle, &header, data, &mailbox);
 500              		.loc 1 140 7 is_stmt 1 view .LVU147
 141:Core/Src/AMS_CAN.c ****     }
 501              		.loc 1 141 7 view .LVU148
 502 005a 01AB     		add	r3, sp, #4
 503 005c 054A     		ldr	r2, .L46+4
 504 005e 0449     		ldr	r1, .L46
 505 0060 0648     		ldr	r0, .L46+12
 506 0062 0068     		ldr	r0, [r0]
 507 0064 FFF7FEFF 		bl	HAL_CAN_AddTxMessage
 508              	.LVL39:
 509 0068 EEE7     		b	.L39
 510              	.LVL40:
 511              	.L45:
 141:Core/Src/AMS_CAN.c ****     }
 512              		.loc 1 141 7 is_stmt 0 view .LVU149
 513              	.LBE8:
 514              	.LBE3:
 161:Core/Src/AMS_CAN.c **** 
 515              		.loc 1 161 1 view .LVU150
 516 006a 02B0     		add	sp, sp, #8
 517              		.cfi_def_cfa_offset 8
 518              		@ sp needed
 519 006c 10BD     		pop	{r4, pc}
 520              	.LVL41:
 521              	.L47:
 161:Core/Src/AMS_CAN.c **** 
 522              		.loc 1 161 1 view .LVU151
 523 006e 00BF     		.align	2
 524              	.L46:
 525 0070 00000000 		.word	header.1
 526 0074 00000000 		.word	data.0
 527 0078 00000000 		.word	module
 528 007c 00000000 		.word	ams_can_handle
 529              		.cfi_endproc
 530              	.LFE133:
 532              		.section	.bss.data.0,"aw",%nobits
 533              		.align	2
 536              	data.0:
 537 0000 00000000 		.space	8
 537      00000000 
 538              		.section	.bss.header.1,"aw",%nobits
 539              		.align	2
ARM GAS  /tmp/ccxETzRn.s 			page 15


 542              	header.1:
 543 0000 00000000 		.space	24
 543      00000000 
 543      00000000 
 543      00000000 
 543      00000000 
 544              		.section	.bss.data.2,"aw",%nobits
 545              		.align	2
 548              	data.2:
 549 0000 00000000 		.space	8
 549      00000000 
 550              		.section	.bss.header.3,"aw",%nobits
 551              		.align	2
 554              	header.3:
 555 0000 00000000 		.space	28
 555      00000000 
 555      00000000 
 555      00000000 
 555      00000000 
 556              		.section	.bss.cb_triggered,"aw",%nobits
 557              		.align	2
 560              	cb_triggered:
 561 0000 00000000 		.space	4
 562              		.global	ams_can_handle
 563              		.section	.bss.ams_can_handle,"aw",%nobits
 564              		.align	2
 567              	ams_can_handle:
 568 0000 00000000 		.space	4
 569              		.global	canTestData
 570              		.section	.bss.canTestData,"aw",%nobits
 571              		.align	2
 574              	canTestData:
 575 0000 00000000 		.space	8
 575      00000000 
 576              		.global	PENDING_MESSAGE_HANDLE
 577              		.section	.bss.PENDING_MESSAGE_HANDLE,"aw",%nobits
 578              		.align	2
 581              	PENDING_MESSAGE_HANDLE:
 582 0000 00000000 		.space	4
 583              		.text
 584              	.Letext0:
 585              		.file 2 "/home/david/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-non
 586              		.file 3 "/home/david/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/arm-non
 587              		.file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
 588              		.file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h"
 589              		.file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
 590              		.file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_can.h"
 591              		.file 8 "Core/Inc/ADBMS_LL_Driver.h"
 592              		.file 9 "Core/Inc/ADBMS_Abstraction.h"
 593              		.file 10 "Core/Inc/AMS_CAN.h"
 594              		.file 11 "Core/Inc/AMS_HighLevel.h"
 595              		.file 12 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
 596              		.file 13 "Core/Inc/main.h"
ARM GAS  /tmp/ccxETzRn.s 			page 16


DEFINED SYMBOLS
                            *ABS*:0000000000000000 AMS_CAN.c
     /tmp/ccxETzRn.s:21     .text.ams_can_init:0000000000000000 $t
     /tmp/ccxETzRn.s:27     .text.ams_can_init:0000000000000000 ams_can_init
     /tmp/ccxETzRn.s:176    .text.ams_can_init:0000000000000088 $d
     /tmp/ccxETzRn.s:567    .bss.ams_can_handle:0000000000000000 ams_can_handle
     /tmp/ccxETzRn.s:181    .text.ams_can_handle_ams_msg:0000000000000000 $t
     /tmp/ccxETzRn.s:187    .text.ams_can_handle_ams_msg:0000000000000000 ams_can_handle_ams_msg
     /tmp/ccxETzRn.s:230    .text.ams_can_handle_ams_msg:0000000000000018 $d
     /tmp/ccxETzRn.s:581    .bss.PENDING_MESSAGE_HANDLE:0000000000000000 PENDING_MESSAGE_HANDLE
     /tmp/ccxETzRn.s:574    .bss.canTestData:0000000000000000 canTestData
     /tmp/ccxETzRn.s:236    .text.HAL_CAN_RxFifo0MsgPendingCallback:0000000000000000 $t
     /tmp/ccxETzRn.s:242    .text.HAL_CAN_RxFifo0MsgPendingCallback:0000000000000000 HAL_CAN_RxFifo0MsgPendingCallback
     /tmp/ccxETzRn.s:301    .text.HAL_CAN_RxFifo0MsgPendingCallback:0000000000000034 $d
     /tmp/ccxETzRn.s:560    .bss.cb_triggered:0000000000000000 cb_triggered
     /tmp/ccxETzRn.s:548    .bss.data.2:0000000000000000 data.2
     /tmp/ccxETzRn.s:554    .bss.header.3:0000000000000000 header.3
     /tmp/ccxETzRn.s:309    .text.ams_can_wait_for_free_mailboxes:0000000000000000 $t
     /tmp/ccxETzRn.s:315    .text.ams_can_wait_for_free_mailboxes:0000000000000000 ams_can_wait_for_free_mailboxes
     /tmp/ccxETzRn.s:370    .text.ams_can_send_heartbeat:0000000000000000 $t
     /tmp/ccxETzRn.s:376    .text.ams_can_send_heartbeat:0000000000000000 ams_can_send_heartbeat
     /tmp/ccxETzRn.s:525    .text.ams_can_send_heartbeat:0000000000000070 $d
     /tmp/ccxETzRn.s:542    .bss.header.1:0000000000000000 header.1
     /tmp/ccxETzRn.s:536    .bss.data.0:0000000000000000 data.0
     /tmp/ccxETzRn.s:533    .bss.data.0:0000000000000000 $d
     /tmp/ccxETzRn.s:539    .bss.header.1:0000000000000000 $d
     /tmp/ccxETzRn.s:545    .bss.data.2:0000000000000000 $d
     /tmp/ccxETzRn.s:551    .bss.header.3:0000000000000000 $d
     /tmp/ccxETzRn.s:557    .bss.cb_triggered:0000000000000000 $d
     /tmp/ccxETzRn.s:564    .bss.ams_can_handle:0000000000000000 $d
     /tmp/ccxETzRn.s:571    .bss.canTestData:0000000000000000 $d
     /tmp/ccxETzRn.s:578    .bss.PENDING_MESSAGE_HANDLE:0000000000000000 $d

UNDEFINED SYMBOLS
HAL_CAN_Start
HAL_CAN_ConfigFilter
HAL_CAN_ActivateNotification
Error_Handler
HAL_CAN_GetRxMessage
HAL_GetTick
HAL_CAN_GetTxMailboxesFreeLevel
HAL_CAN_AddTxMessage
module