added testbench for ams slave

This commit is contained in:
davidscherer
2023-05-30 18:57:16 +02:00
parent 4f601c8b44
commit d48136cb1a
315 changed files with 288831 additions and 0 deletions

View File

@ -0,0 +1,942 @@
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 <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/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