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