1050 lines
47 KiB
Plaintext
1050 lines
47 KiB
Plaintext
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.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 "can-halal.c"
|
||
16 .text
|
||
17 .Ltext0:
|
||
18 .cfi_sections .debug_frame
|
||
19 .file 1 "Core/Src/can-halal.c"
|
||
20 .section .text.ftcan_init,"ax",%progbits
|
||
21 .align 1
|
||
22 .global ftcan_init
|
||
23 .syntax unified
|
||
24 .thumb
|
||
25 .thumb_func
|
||
27 ftcan_init:
|
||
28 .LVL0:
|
||
29 .LFB130:
|
||
1:Core/Src/can-halal.c **** #include "can-halal.h"
|
||
2:Core/Src/can-halal.c ****
|
||
3:Core/Src/can-halal.c **** #include <string.h>
|
||
4:Core/Src/can-halal.c ****
|
||
5:Core/Src/can-halal.c **** #if defined(FTCAN_IS_BXCAN)
|
||
6:Core/Src/can-halal.c **** static CAN_HandleTypeDef *hcan;
|
||
7:Core/Src/can-halal.c ****
|
||
8:Core/Src/can-halal.c **** HAL_StatusTypeDef ftcan_init(CAN_HandleTypeDef *handle) {
|
||
30 .loc 1 8 57 view -0
|
||
31 .cfi_startproc
|
||
32 @ args = 0, pretend = 0, frame = 0
|
||
33 @ frame_needed = 0, uses_anonymous_args = 0
|
||
34 .loc 1 8 57 is_stmt 0 view .LVU1
|
||
35 0000 08B5 push {r3, lr}
|
||
36 .cfi_def_cfa_offset 8
|
||
37 .cfi_offset 3, -8
|
||
38 .cfi_offset 14, -4
|
||
9:Core/Src/can-halal.c **** hcan = handle;
|
||
39 .loc 1 9 3 is_stmt 1 view .LVU2
|
||
40 .loc 1 9 8 is_stmt 0 view .LVU3
|
||
41 0002 064B ldr r3, .L5
|
||
42 0004 1860 str r0, [r3]
|
||
10:Core/Src/can-halal.c ****
|
||
11:Core/Src/can-halal.c **** HAL_StatusTypeDef status =
|
||
43 .loc 1 11 3 is_stmt 1 view .LVU4
|
||
12:Core/Src/can-halal.c **** HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
|
||
44 .loc 1 12 7 is_stmt 0 view .LVU5
|
||
45 0006 0221 movs r1, #2
|
||
46 0008 FFF7FEFF bl HAL_CAN_ActivateNotification
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 2
|
||
|
||
|
||
47 .LVL1:
|
||
13:Core/Src/can-halal.c **** if (status != HAL_OK) {
|
||
48 .loc 1 13 3 is_stmt 1 view .LVU6
|
||
49 .loc 1 13 6 is_stmt 0 view .LVU7
|
||
50 000c 00B1 cbz r0, .L4
|
||
51 .L2:
|
||
14:Core/Src/can-halal.c **** return status;
|
||
15:Core/Src/can-halal.c **** }
|
||
16:Core/Src/can-halal.c ****
|
||
17:Core/Src/can-halal.c **** return HAL_CAN_Start(hcan);
|
||
18:Core/Src/can-halal.c **** }
|
||
52 .loc 1 18 1 view .LVU8
|
||
53 000e 08BD pop {r3, pc}
|
||
54 .L4:
|
||
17:Core/Src/can-halal.c **** }
|
||
55 .loc 1 17 3 is_stmt 1 view .LVU9
|
||
17:Core/Src/can-halal.c **** }
|
||
56 .loc 1 17 10 is_stmt 0 view .LVU10
|
||
57 0010 024B ldr r3, .L5
|
||
58 .LVL2:
|
||
17:Core/Src/can-halal.c **** }
|
||
59 .loc 1 17 10 view .LVU11
|
||
60 0012 1868 ldr r0, [r3]
|
||
61 0014 FFF7FEFF bl HAL_CAN_Start
|
||
62 .LVL3:
|
||
17:Core/Src/can-halal.c **** }
|
||
63 .loc 1 17 10 view .LVU12
|
||
64 0018 F9E7 b .L2
|
||
65 .L6:
|
||
66 001a 00BF .align 2
|
||
67 .L5:
|
||
68 001c 00000000 .word hcan
|
||
69 .cfi_endproc
|
||
70 .LFE130:
|
||
72 .section .text.ftcan_transmit,"ax",%progbits
|
||
73 .align 1
|
||
74 .global ftcan_transmit
|
||
75 .syntax unified
|
||
76 .thumb
|
||
77 .thumb_func
|
||
79 ftcan_transmit:
|
||
80 .LVL4:
|
||
81 .LFB131:
|
||
19:Core/Src/can-halal.c ****
|
||
20:Core/Src/can-halal.c **** HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
||
21:Core/Src/can-halal.c **** size_t datalen) {
|
||
82 .loc 1 21 50 is_stmt 1 view -0
|
||
83 .cfi_startproc
|
||
84 @ args = 0, pretend = 0, frame = 8
|
||
85 @ frame_needed = 0, uses_anonymous_args = 0
|
||
86 .loc 1 21 50 is_stmt 0 view .LVU14
|
||
87 0000 00B5 push {lr}
|
||
88 .cfi_def_cfa_offset 4
|
||
89 .cfi_offset 14, -4
|
||
90 0002 83B0 sub sp, sp, #12
|
||
91 .cfi_def_cfa_offset 16
|
||
92 0004 8C46 mov ip, r1
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 3
|
||
|
||
|
||
22:Core/Src/can-halal.c **** static CAN_TxHeaderTypeDef header;
|
||
93 .loc 1 22 3 is_stmt 1 view .LVU15
|
||
23:Core/Src/can-halal.c **** header.StdId = id;
|
||
94 .loc 1 23 3 view .LVU16
|
||
95 .loc 1 23 16 is_stmt 0 view .LVU17
|
||
96 0006 0749 ldr r1, .L9
|
||
97 .LVL5:
|
||
98 .loc 1 23 16 view .LVU18
|
||
99 0008 0860 str r0, [r1]
|
||
24:Core/Src/can-halal.c **** header.IDE = CAN_ID_STD;
|
||
100 .loc 1 24 3 is_stmt 1 view .LVU19
|
||
101 .loc 1 24 14 is_stmt 0 view .LVU20
|
||
102 000a 0023 movs r3, #0
|
||
103 000c 8B60 str r3, [r1, #8]
|
||
25:Core/Src/can-halal.c **** header.RTR = CAN_RTR_DATA;
|
||
104 .loc 1 25 3 is_stmt 1 view .LVU21
|
||
105 .loc 1 25 14 is_stmt 0 view .LVU22
|
||
106 000e CB60 str r3, [r1, #12]
|
||
26:Core/Src/can-halal.c **** header.DLC = datalen;
|
||
107 .loc 1 26 3 is_stmt 1 view .LVU23
|
||
108 .loc 1 26 14 is_stmt 0 view .LVU24
|
||
109 0010 0A61 str r2, [r1, #16]
|
||
27:Core/Src/can-halal.c **** uint32_t mailbox;
|
||
110 .loc 1 27 3 is_stmt 1 view .LVU25
|
||
28:Core/Src/can-halal.c **** return HAL_CAN_AddTxMessage(hcan, &header, data, &mailbox);
|
||
111 .loc 1 28 3 view .LVU26
|
||
112 .loc 1 28 10 is_stmt 0 view .LVU27
|
||
113 0012 01AB add r3, sp, #4
|
||
114 0014 6246 mov r2, ip
|
||
115 .LVL6:
|
||
116 .loc 1 28 10 view .LVU28
|
||
117 0016 0448 ldr r0, .L9+4
|
||
118 .LVL7:
|
||
119 .loc 1 28 10 view .LVU29
|
||
120 0018 0068 ldr r0, [r0]
|
||
121 001a FFF7FEFF bl HAL_CAN_AddTxMessage
|
||
122 .LVL8:
|
||
29:Core/Src/can-halal.c **** }
|
||
123 .loc 1 29 1 view .LVU30
|
||
124 001e 03B0 add sp, sp, #12
|
||
125 .cfi_def_cfa_offset 4
|
||
126 @ sp needed
|
||
127 0020 5DF804FB ldr pc, [sp], #4
|
||
128 .L10:
|
||
129 .align 2
|
||
130 .L9:
|
||
131 0024 00000000 .word header.2
|
||
132 0028 00000000 .word hcan
|
||
133 .cfi_endproc
|
||
134 .LFE131:
|
||
136 .section .text.ftcan_add_filter,"ax",%progbits
|
||
137 .align 1
|
||
138 .global ftcan_add_filter
|
||
139 .syntax unified
|
||
140 .thumb
|
||
141 .thumb_func
|
||
143 ftcan_add_filter:
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 4
|
||
|
||
|
||
144 .LVL9:
|
||
145 .LFB132:
|
||
30:Core/Src/can-halal.c ****
|
||
31:Core/Src/can-halal.c **** HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
|
||
146 .loc 1 31 64 is_stmt 1 view -0
|
||
147 .cfi_startproc
|
||
148 @ args = 0, pretend = 0, frame = 0
|
||
149 @ frame_needed = 0, uses_anonymous_args = 0
|
||
150 .loc 1 31 64 is_stmt 0 view .LVU32
|
||
151 0000 08B5 push {r3, lr}
|
||
152 .cfi_def_cfa_offset 8
|
||
153 .cfi_offset 3, -8
|
||
154 .cfi_offset 14, -4
|
||
32:Core/Src/can-halal.c **** static uint32_t next_filter_no = 0;
|
||
155 .loc 1 32 3 is_stmt 1 view .LVU33
|
||
33:Core/Src/can-halal.c **** static CAN_FilterTypeDef filter;
|
||
156 .loc 1 33 3 view .LVU34
|
||
34:Core/Src/can-halal.c **** if (next_filter_no % 2 == 0) {
|
||
157 .loc 1 34 3 view .LVU35
|
||
158 .loc 1 34 22 is_stmt 0 view .LVU36
|
||
159 0002 174B ldr r3, .L18
|
||
160 0004 1B68 ldr r3, [r3]
|
||
161 .loc 1 34 6 view .LVU37
|
||
162 0006 13F0010F tst r3, #1
|
||
163 000a 0FD1 bne .L12
|
||
35:Core/Src/can-halal.c **** filter.FilterIdHigh = id << 5;
|
||
164 .loc 1 35 5 is_stmt 1 view .LVU38
|
||
165 .loc 1 35 30 is_stmt 0 view .LVU39
|
||
166 000c 4001 lsls r0, r0, #5
|
||
167 .LVL10:
|
||
168 .loc 1 35 25 view .LVU40
|
||
169 000e 154A ldr r2, .L18+4
|
||
170 0010 1060 str r0, [r2]
|
||
36:Core/Src/can-halal.c **** filter.FilterMaskIdHigh = mask << 5;
|
||
171 .loc 1 36 5 is_stmt 1 view .LVU41
|
||
172 .loc 1 36 36 is_stmt 0 view .LVU42
|
||
173 0012 4901 lsls r1, r1, #5
|
||
174 .LVL11:
|
||
175 .loc 1 36 29 view .LVU43
|
||
176 0014 9160 str r1, [r2, #8]
|
||
37:Core/Src/can-halal.c **** filter.FilterIdLow = id << 5;
|
||
177 .loc 1 37 5 is_stmt 1 view .LVU44
|
||
178 .loc 1 37 24 is_stmt 0 view .LVU45
|
||
179 0016 5060 str r0, [r2, #4]
|
||
38:Core/Src/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
180 .loc 1 38 5 is_stmt 1 view .LVU46
|
||
181 .loc 1 38 28 is_stmt 0 view .LVU47
|
||
182 0018 D160 str r1, [r2, #12]
|
||
183 .L13:
|
||
39:Core/Src/can-halal.c **** } else {
|
||
40:Core/Src/can-halal.c **** // Leave high filter untouched from the last configuration
|
||
41:Core/Src/can-halal.c **** filter.FilterIdLow = id << 5;
|
||
42:Core/Src/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
43:Core/Src/can-halal.c **** }
|
||
44:Core/Src/can-halal.c **** filter.FilterFIFOAssignment = CAN_FILTER_FIFO0;
|
||
184 .loc 1 44 3 is_stmt 1 view .LVU48
|
||
185 .loc 1 44 31 is_stmt 0 view .LVU49
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 5
|
||
|
||
|
||
186 001a 124A ldr r2, .L18+4
|
||
187 001c 0021 movs r1, #0
|
||
188 001e 1161 str r1, [r2, #16]
|
||
45:Core/Src/can-halal.c **** filter.FilterBank = next_filter_no / 2;
|
||
189 .loc 1 45 3 is_stmt 1 view .LVU50
|
||
190 .loc 1 45 38 is_stmt 0 view .LVU51
|
||
191 0020 5908 lsrs r1, r3, #1
|
||
192 .loc 1 45 21 view .LVU52
|
||
193 0022 5161 str r1, [r2, #20]
|
||
46:Core/Src/can-halal.c **** if (filter.FilterBank > FTCAN_NUM_FILTERS + 1) {
|
||
194 .loc 1 46 3 is_stmt 1 view .LVU53
|
||
195 .loc 1 46 6 is_stmt 0 view .LVU54
|
||
196 0024 1D2B cmp r3, #29
|
||
197 0026 07D9 bls .L17
|
||
47:Core/Src/can-halal.c **** return HAL_ERROR;
|
||
198 .loc 1 47 12 view .LVU55
|
||
199 0028 0120 movs r0, #1
|
||
200 .L14:
|
||
48:Core/Src/can-halal.c **** }
|
||
49:Core/Src/can-halal.c **** filter.FilterMode = CAN_FILTERMODE_IDMASK;
|
||
50:Core/Src/can-halal.c **** filter.FilterScale = CAN_FILTERSCALE_16BIT;
|
||
51:Core/Src/can-halal.c **** filter.FilterActivation = CAN_FILTER_ENABLE;
|
||
52:Core/Src/can-halal.c ****
|
||
53:Core/Src/can-halal.c **** // Disable slave filters
|
||
54:Core/Src/can-halal.c **** // TODO: Some STM32 have multiple CAN peripherals, and one uses the slave
|
||
55:Core/Src/can-halal.c **** // filter bank
|
||
56:Core/Src/can-halal.c **** filter.SlaveStartFilterBank = FTCAN_NUM_FILTERS;
|
||
57:Core/Src/can-halal.c ****
|
||
58:Core/Src/can-halal.c **** HAL_StatusTypeDef status = HAL_CAN_ConfigFilter(hcan, &filter);
|
||
59:Core/Src/can-halal.c **** if (status == HAL_OK) {
|
||
60:Core/Src/can-halal.c **** next_filter_no++;
|
||
61:Core/Src/can-halal.c **** }
|
||
62:Core/Src/can-halal.c **** return status;
|
||
63:Core/Src/can-halal.c **** }
|
||
201 .loc 1 63 1 view .LVU56
|
||
202 002a 08BD pop {r3, pc}
|
||
203 .LVL12:
|
||
204 .L12:
|
||
41:Core/Src/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
205 .loc 1 41 5 is_stmt 1 view .LVU57
|
||
41:Core/Src/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
206 .loc 1 41 29 is_stmt 0 view .LVU58
|
||
207 002c 4001 lsls r0, r0, #5
|
||
208 .LVL13:
|
||
41:Core/Src/can-halal.c **** filter.FilterMaskIdLow = mask << 5;
|
||
209 .loc 1 41 24 view .LVU59
|
||
210 002e 0D4A ldr r2, .L18+4
|
||
211 0030 5060 str r0, [r2, #4]
|
||
42:Core/Src/can-halal.c **** }
|
||
212 .loc 1 42 5 is_stmt 1 view .LVU60
|
||
42:Core/Src/can-halal.c **** }
|
||
213 .loc 1 42 35 is_stmt 0 view .LVU61
|
||
214 0032 4901 lsls r1, r1, #5
|
||
215 .LVL14:
|
||
42:Core/Src/can-halal.c **** }
|
||
216 .loc 1 42 28 view .LVU62
|
||
217 0034 D160 str r1, [r2, #12]
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 6
|
||
|
||
|
||
218 0036 F0E7 b .L13
|
||
219 .L17:
|
||
49:Core/Src/can-halal.c **** filter.FilterScale = CAN_FILTERSCALE_16BIT;
|
||
220 .loc 1 49 3 is_stmt 1 view .LVU63
|
||
49:Core/Src/can-halal.c **** filter.FilterScale = CAN_FILTERSCALE_16BIT;
|
||
221 .loc 1 49 21 is_stmt 0 view .LVU64
|
||
222 0038 1146 mov r1, r2
|
||
223 003a 0023 movs r3, #0
|
||
224 003c 9361 str r3, [r2, #24]
|
||
50:Core/Src/can-halal.c **** filter.FilterActivation = CAN_FILTER_ENABLE;
|
||
225 .loc 1 50 3 is_stmt 1 view .LVU65
|
||
50:Core/Src/can-halal.c **** filter.FilterActivation = CAN_FILTER_ENABLE;
|
||
226 .loc 1 50 22 is_stmt 0 view .LVU66
|
||
227 003e D361 str r3, [r2, #28]
|
||
51:Core/Src/can-halal.c ****
|
||
228 .loc 1 51 3 is_stmt 1 view .LVU67
|
||
51:Core/Src/can-halal.c ****
|
||
229 .loc 1 51 27 is_stmt 0 view .LVU68
|
||
230 0040 0123 movs r3, #1
|
||
231 0042 1362 str r3, [r2, #32]
|
||
56:Core/Src/can-halal.c ****
|
||
232 .loc 1 56 3 is_stmt 1 view .LVU69
|
||
56:Core/Src/can-halal.c ****
|
||
233 .loc 1 56 31 is_stmt 0 view .LVU70
|
||
234 0044 0D23 movs r3, #13
|
||
235 0046 5362 str r3, [r2, #36]
|
||
58:Core/Src/can-halal.c **** if (status == HAL_OK) {
|
||
236 .loc 1 58 3 is_stmt 1 view .LVU71
|
||
58:Core/Src/can-halal.c **** if (status == HAL_OK) {
|
||
237 .loc 1 58 30 is_stmt 0 view .LVU72
|
||
238 0048 074B ldr r3, .L18+8
|
||
239 004a 1868 ldr r0, [r3]
|
||
240 004c FFF7FEFF bl HAL_CAN_ConfigFilter
|
||
241 .LVL15:
|
||
59:Core/Src/can-halal.c **** next_filter_no++;
|
||
242 .loc 1 59 3 is_stmt 1 view .LVU73
|
||
59:Core/Src/can-halal.c **** next_filter_no++;
|
||
243 .loc 1 59 6 is_stmt 0 view .LVU74
|
||
244 0050 0028 cmp r0, #0
|
||
245 0052 EAD1 bne .L14
|
||
60:Core/Src/can-halal.c **** }
|
||
246 .loc 1 60 5 is_stmt 1 view .LVU75
|
||
60:Core/Src/can-halal.c **** }
|
||
247 .loc 1 60 19 is_stmt 0 view .LVU76
|
||
248 0054 024A ldr r2, .L18
|
||
249 0056 1368 ldr r3, [r2]
|
||
250 0058 0133 adds r3, r3, #1
|
||
251 005a 1360 str r3, [r2]
|
||
252 005c E5E7 b .L14
|
||
253 .L19:
|
||
254 005e 00BF .align 2
|
||
255 .L18:
|
||
256 0060 00000000 .word next_filter_no.1
|
||
257 0064 00000000 .word filter.0
|
||
258 0068 00000000 .word hcan
|
||
259 .cfi_endproc
|
||
260 .LFE132:
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 7
|
||
|
||
|
||
262 .section .text.ftcan_msg_received_cb,"ax",%progbits
|
||
263 .align 1
|
||
264 .weak ftcan_msg_received_cb
|
||
265 .syntax unified
|
||
266 .thumb
|
||
267 .thumb_func
|
||
269 ftcan_msg_received_cb:
|
||
270 .LVL16:
|
||
271 .LFB134:
|
||
64:Core/Src/can-halal.c ****
|
||
65:Core/Src/can-halal.c **** void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *handle) {
|
||
66:Core/Src/can-halal.c **** if (handle != hcan) {
|
||
67:Core/Src/can-halal.c **** return;
|
||
68:Core/Src/can-halal.c **** }
|
||
69:Core/Src/can-halal.c **** CAN_RxHeaderTypeDef header;
|
||
70:Core/Src/can-halal.c **** uint8_t data[8];
|
||
71:Core/Src/can-halal.c **** if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &header, data) != HAL_OK) {
|
||
72:Core/Src/can-halal.c **** return;
|
||
73:Core/Src/can-halal.c **** }
|
||
74:Core/Src/can-halal.c ****
|
||
75:Core/Src/can-halal.c **** if (header.IDE != CAN_ID_STD) {
|
||
76:Core/Src/can-halal.c **** return;
|
||
77:Core/Src/can-halal.c **** }
|
||
78:Core/Src/can-halal.c ****
|
||
79:Core/Src/can-halal.c **** ftcan_msg_received_cb(header.StdId, header.DLC, data);
|
||
80:Core/Src/can-halal.c **** }
|
||
81:Core/Src/can-halal.c **** #elif defined(FTCAN_IS_FDCAN)
|
||
82:Core/Src/can-halal.c **** static FDCAN_HandleTypeDef *hcan;
|
||
83:Core/Src/can-halal.c ****
|
||
84:Core/Src/can-halal.c **** HAL_StatusTypeDef ftcan_init(FDCAN_HandleTypeDef *handle) {
|
||
85:Core/Src/can-halal.c **** hcan = handle;
|
||
86:Core/Src/can-halal.c ****
|
||
87:Core/Src/can-halal.c **** HAL_StatusTypeDef status =
|
||
88:Core/Src/can-halal.c **** HAL_FDCAN_ActivateNotification(hcan, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0);
|
||
89:Core/Src/can-halal.c **** if (status != HAL_OK) {
|
||
90:Core/Src/can-halal.c **** return status;
|
||
91:Core/Src/can-halal.c **** }
|
||
92:Core/Src/can-halal.c **** // Reject non-matching messages
|
||
93:Core/Src/can-halal.c **** status =
|
||
94:Core/Src/can-halal.c **** HAL_FDCAN_ConfigGlobalFilter(hcan, FDCAN_REJECT, FDCAN_REJECT,
|
||
95:Core/Src/can-halal.c **** FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE);
|
||
96:Core/Src/can-halal.c **** if (status != HAL_OK) {
|
||
97:Core/Src/can-halal.c **** return status;
|
||
98:Core/Src/can-halal.c **** }
|
||
99:Core/Src/can-halal.c ****
|
||
100:Core/Src/can-halal.c **** return HAL_FDCAN_Start(hcan);
|
||
101:Core/Src/can-halal.c **** }
|
||
102:Core/Src/can-halal.c ****
|
||
103:Core/Src/can-halal.c **** HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
||
104:Core/Src/can-halal.c **** size_t datalen) {
|
||
105:Core/Src/can-halal.c **** static FDCAN_TxHeaderTypeDef header;
|
||
106:Core/Src/can-halal.c **** header.Identifier = id;
|
||
107:Core/Src/can-halal.c **** header.IdType = FDCAN_STANDARD_ID;
|
||
108:Core/Src/can-halal.c **** header.TxFrameType = FDCAN_DATA_FRAME;
|
||
109:Core/Src/can-halal.c **** switch (datalen) {
|
||
110:Core/Src/can-halal.c **** case 0:
|
||
111:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_0;
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 8
|
||
|
||
|
||
112:Core/Src/can-halal.c **** break;
|
||
113:Core/Src/can-halal.c **** case 1:
|
||
114:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_1;
|
||
115:Core/Src/can-halal.c **** break;
|
||
116:Core/Src/can-halal.c **** case 2:
|
||
117:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_2;
|
||
118:Core/Src/can-halal.c **** break;
|
||
119:Core/Src/can-halal.c **** case 3:
|
||
120:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_3;
|
||
121:Core/Src/can-halal.c **** break;
|
||
122:Core/Src/can-halal.c **** case 4:
|
||
123:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_4;
|
||
124:Core/Src/can-halal.c **** break;
|
||
125:Core/Src/can-halal.c **** case 5:
|
||
126:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_5;
|
||
127:Core/Src/can-halal.c **** break;
|
||
128:Core/Src/can-halal.c **** case 6:
|
||
129:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_6;
|
||
130:Core/Src/can-halal.c **** break;
|
||
131:Core/Src/can-halal.c **** case 7:
|
||
132:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_7;
|
||
133:Core/Src/can-halal.c **** break;
|
||
134:Core/Src/can-halal.c **** case 8:
|
||
135:Core/Src/can-halal.c **** default:
|
||
136:Core/Src/can-halal.c **** header.DataLength = FDCAN_DLC_BYTES_8;
|
||
137:Core/Src/can-halal.c **** break;
|
||
138:Core/Src/can-halal.c **** }
|
||
139:Core/Src/can-halal.c **** header.ErrorStateIndicator = FDCAN_ESI_PASSIVE;
|
||
140:Core/Src/can-halal.c **** header.BitRateSwitch = FDCAN_BRS_OFF;
|
||
141:Core/Src/can-halal.c **** header.FDFormat = FDCAN_CLASSIC_CAN;
|
||
142:Core/Src/can-halal.c **** header.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
|
||
143:Core/Src/can-halal.c ****
|
||
144:Core/Src/can-halal.c **** // HAL_FDCAN_AddMessageToTxFifoQ doesn't modify the data, but it's not marked
|
||
145:Core/Src/can-halal.c **** // as const for some reason.
|
||
146:Core/Src/can-halal.c **** uint8_t *data_nonconst = (uint8_t *)data;
|
||
147:Core/Src/can-halal.c **** return HAL_FDCAN_AddMessageToTxFifoQ(hcan, &header, data_nonconst);
|
||
148:Core/Src/can-halal.c **** }
|
||
149:Core/Src/can-halal.c ****
|
||
150:Core/Src/can-halal.c **** HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
|
||
151:Core/Src/can-halal.c **** static uint32_t next_filter_no = 0;
|
||
152:Core/Src/can-halal.c **** static FDCAN_FilterTypeDef filter;
|
||
153:Core/Src/can-halal.c **** filter.IdType = FDCAN_STANDARD_ID;
|
||
154:Core/Src/can-halal.c **** filter.FilterIndex = next_filter_no;
|
||
155:Core/Src/can-halal.c **** if (filter.FilterIndex > FTCAN_NUM_FILTERS + 1) {
|
||
156:Core/Src/can-halal.c **** return HAL_ERROR;
|
||
157:Core/Src/can-halal.c **** }
|
||
158:Core/Src/can-halal.c **** filter.FilterType = FDCAN_FILTER_MASK;
|
||
159:Core/Src/can-halal.c **** filter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
|
||
160:Core/Src/can-halal.c **** filter.FilterID1 = id;
|
||
161:Core/Src/can-halal.c **** filter.FilterID2 = mask;
|
||
162:Core/Src/can-halal.c ****
|
||
163:Core/Src/can-halal.c **** HAL_StatusTypeDef status = HAL_FDCAN_ConfigFilter(hcan, &filter);
|
||
164:Core/Src/can-halal.c **** if (status == HAL_OK) {
|
||
165:Core/Src/can-halal.c **** next_filter_no++;
|
||
166:Core/Src/can-halal.c **** }
|
||
167:Core/Src/can-halal.c **** return status;
|
||
168:Core/Src/can-halal.c **** }
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 9
|
||
|
||
|
||
169:Core/Src/can-halal.c ****
|
||
170:Core/Src/can-halal.c **** void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *handle,
|
||
171:Core/Src/can-halal.c **** uint32_t RxFifo0ITs) {
|
||
172:Core/Src/can-halal.c **** if (handle != hcan || (RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) == RESET) {
|
||
173:Core/Src/can-halal.c **** return;
|
||
174:Core/Src/can-halal.c **** }
|
||
175:Core/Src/can-halal.c ****
|
||
176:Core/Src/can-halal.c **** static FDCAN_RxHeaderTypeDef header;
|
||
177:Core/Src/can-halal.c **** static uint8_t data[8];
|
||
178:Core/Src/can-halal.c **** if (HAL_FDCAN_GetRxMessage(hcan, FDCAN_RX_FIFO0, &header, data) != HAL_OK) {
|
||
179:Core/Src/can-halal.c **** return;
|
||
180:Core/Src/can-halal.c **** }
|
||
181:Core/Src/can-halal.c ****
|
||
182:Core/Src/can-halal.c **** if (header.FDFormat != FDCAN_CLASSIC_CAN ||
|
||
183:Core/Src/can-halal.c **** header.RxFrameType != FDCAN_DATA_FRAME ||
|
||
184:Core/Src/can-halal.c **** header.IdType != FDCAN_STANDARD_ID) {
|
||
185:Core/Src/can-halal.c **** return;
|
||
186:Core/Src/can-halal.c **** }
|
||
187:Core/Src/can-halal.c ****
|
||
188:Core/Src/can-halal.c **** size_t datalen;
|
||
189:Core/Src/can-halal.c **** switch (header.DataLength) {
|
||
190:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_0:
|
||
191:Core/Src/can-halal.c **** datalen = 0;
|
||
192:Core/Src/can-halal.c **** break;
|
||
193:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_1:
|
||
194:Core/Src/can-halal.c **** datalen = 1;
|
||
195:Core/Src/can-halal.c **** break;
|
||
196:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_2:
|
||
197:Core/Src/can-halal.c **** datalen = 2;
|
||
198:Core/Src/can-halal.c **** break;
|
||
199:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_3:
|
||
200:Core/Src/can-halal.c **** datalen = 3;
|
||
201:Core/Src/can-halal.c **** break;
|
||
202:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_4:
|
||
203:Core/Src/can-halal.c **** datalen = 4;
|
||
204:Core/Src/can-halal.c **** break;
|
||
205:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_5:
|
||
206:Core/Src/can-halal.c **** datalen = 5;
|
||
207:Core/Src/can-halal.c **** break;
|
||
208:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_6:
|
||
209:Core/Src/can-halal.c **** datalen = 6;
|
||
210:Core/Src/can-halal.c **** break;
|
||
211:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_7:
|
||
212:Core/Src/can-halal.c **** datalen = 7;
|
||
213:Core/Src/can-halal.c **** break;
|
||
214:Core/Src/can-halal.c **** case FDCAN_DLC_BYTES_8:
|
||
215:Core/Src/can-halal.c **** datalen = 8;
|
||
216:Core/Src/can-halal.c **** break;
|
||
217:Core/Src/can-halal.c **** default:
|
||
218:Core/Src/can-halal.c **** return;
|
||
219:Core/Src/can-halal.c **** }
|
||
220:Core/Src/can-halal.c ****
|
||
221:Core/Src/can-halal.c **** ftcan_msg_received_cb(header.Identifier, datalen, data);
|
||
222:Core/Src/can-halal.c **** }
|
||
223:Core/Src/can-halal.c **** #endif
|
||
224:Core/Src/can-halal.c ****
|
||
225:Core/Src/can-halal.c **** __weak void ftcan_msg_received_cb(uint16_t id, size_t datalen,
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 10
|
||
|
||
|
||
226:Core/Src/can-halal.c **** const uint8_t *data) {}
|
||
272 .loc 1 226 56 is_stmt 1 view -0
|
||
273 .cfi_startproc
|
||
274 @ args = 0, pretend = 0, frame = 0
|
||
275 @ frame_needed = 0, uses_anonymous_args = 0
|
||
276 @ link register save eliminated.
|
||
277 .loc 1 226 57 view .LVU78
|
||
278 0000 7047 bx lr
|
||
279 .cfi_endproc
|
||
280 .LFE134:
|
||
282 .section .text.HAL_CAN_RxFifo0MsgPendingCallback,"ax",%progbits
|
||
283 .align 1
|
||
284 .global HAL_CAN_RxFifo0MsgPendingCallback
|
||
285 .syntax unified
|
||
286 .thumb
|
||
287 .thumb_func
|
||
289 HAL_CAN_RxFifo0MsgPendingCallback:
|
||
290 .LVL17:
|
||
291 .LFB133:
|
||
65:Core/Src/can-halal.c **** if (handle != hcan) {
|
||
292 .loc 1 65 67 view -0
|
||
293 .cfi_startproc
|
||
294 @ args = 0, pretend = 0, frame = 40
|
||
295 @ frame_needed = 0, uses_anonymous_args = 0
|
||
65:Core/Src/can-halal.c **** if (handle != hcan) {
|
||
296 .loc 1 65 67 is_stmt 0 view .LVU80
|
||
297 0000 10B5 push {r4, lr}
|
||
298 .cfi_def_cfa_offset 8
|
||
299 .cfi_offset 4, -8
|
||
300 .cfi_offset 14, -4
|
||
301 0002 8AB0 sub sp, sp, #40
|
||
302 .cfi_def_cfa_offset 48
|
||
66:Core/Src/can-halal.c **** return;
|
||
303 .loc 1 66 3 is_stmt 1 view .LVU81
|
||
66:Core/Src/can-halal.c **** return;
|
||
304 .loc 1 66 14 is_stmt 0 view .LVU82
|
||
305 0004 0B4B ldr r3, .L26
|
||
306 0006 1C68 ldr r4, [r3]
|
||
66:Core/Src/can-halal.c **** return;
|
||
307 .loc 1 66 6 view .LVU83
|
||
308 0008 8442 cmp r4, r0
|
||
309 000a 01D0 beq .L25
|
||
310 .LVL18:
|
||
311 .L21:
|
||
80:Core/Src/can-halal.c **** #elif defined(FTCAN_IS_FDCAN)
|
||
312 .loc 1 80 1 view .LVU84
|
||
313 000c 0AB0 add sp, sp, #40
|
||
314 .cfi_remember_state
|
||
315 .cfi_def_cfa_offset 8
|
||
316 @ sp needed
|
||
317 000e 10BD pop {r4, pc}
|
||
318 .LVL19:
|
||
319 .L25:
|
||
320 .cfi_restore_state
|
||
69:Core/Src/can-halal.c **** uint8_t data[8];
|
||
321 .loc 1 69 3 is_stmt 1 view .LVU85
|
||
70:Core/Src/can-halal.c **** if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &header, data) != HAL_OK) {
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 11
|
||
|
||
|
||
322 .loc 1 70 3 view .LVU86
|
||
71:Core/Src/can-halal.c **** return;
|
||
323 .loc 1 71 3 view .LVU87
|
||
71:Core/Src/can-halal.c **** return;
|
||
324 .loc 1 71 7 is_stmt 0 view .LVU88
|
||
325 0010 01AB add r3, sp, #4
|
||
326 0012 03AA add r2, sp, #12
|
||
327 0014 0021 movs r1, #0
|
||
328 0016 2046 mov r0, r4
|
||
329 .LVL20:
|
||
71:Core/Src/can-halal.c **** return;
|
||
330 .loc 1 71 7 view .LVU89
|
||
331 0018 FFF7FEFF bl HAL_CAN_GetRxMessage
|
||
332 .LVL21:
|
||
71:Core/Src/can-halal.c **** return;
|
||
333 .loc 1 71 6 view .LVU90
|
||
334 001c 0028 cmp r0, #0
|
||
335 001e F5D1 bne .L21
|
||
75:Core/Src/can-halal.c **** return;
|
||
336 .loc 1 75 3 is_stmt 1 view .LVU91
|
||
75:Core/Src/can-halal.c **** return;
|
||
337 .loc 1 75 13 is_stmt 0 view .LVU92
|
||
338 0020 059B ldr r3, [sp, #20]
|
||
75:Core/Src/can-halal.c **** return;
|
||
339 .loc 1 75 6 view .LVU93
|
||
340 0022 002B cmp r3, #0
|
||
341 0024 F2D1 bne .L21
|
||
79:Core/Src/can-halal.c **** }
|
||
342 .loc 1 79 3 is_stmt 1 view .LVU94
|
||
343 0026 01AA add r2, sp, #4
|
||
344 0028 0799 ldr r1, [sp, #28]
|
||
345 002a BDF80C00 ldrh r0, [sp, #12]
|
||
346 002e FFF7FEFF bl ftcan_msg_received_cb
|
||
347 .LVL22:
|
||
348 0032 EBE7 b .L21
|
||
349 .L27:
|
||
350 .align 2
|
||
351 .L26:
|
||
352 0034 00000000 .word hcan
|
||
353 .cfi_endproc
|
||
354 .LFE133:
|
||
356 .section .text.ftcan_unmarshal_unsigned,"ax",%progbits
|
||
357 .align 1
|
||
358 .global ftcan_unmarshal_unsigned
|
||
359 .syntax unified
|
||
360 .thumb
|
||
361 .thumb_func
|
||
363 ftcan_unmarshal_unsigned:
|
||
364 .LVL23:
|
||
365 .LFB135:
|
||
227:Core/Src/can-halal.c ****
|
||
228:Core/Src/can-halal.c **** uint64_t ftcan_unmarshal_unsigned(const uint8_t **data_ptr, size_t num_bytes) {
|
||
366 .loc 1 228 79 view -0
|
||
367 .cfi_startproc
|
||
368 @ args = 0, pretend = 0, frame = 0
|
||
369 @ frame_needed = 0, uses_anonymous_args = 0
|
||
370 .loc 1 228 79 is_stmt 0 view .LVU96
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 12
|
||
|
||
|
||
371 0000 10B5 push {r4, lr}
|
||
372 .cfi_def_cfa_offset 8
|
||
373 .cfi_offset 4, -8
|
||
374 .cfi_offset 14, -4
|
||
375 0002 8646 mov lr, r0
|
||
376 0004 8C46 mov ip, r1
|
||
229:Core/Src/can-halal.c **** if (num_bytes > 8) {
|
||
377 .loc 1 229 3 is_stmt 1 view .LVU97
|
||
378 .loc 1 229 6 is_stmt 0 view .LVU98
|
||
379 0006 0829 cmp r1, #8
|
||
380 0008 01D9 bls .L29
|
||
230:Core/Src/can-halal.c **** num_bytes = 8;
|
||
381 .loc 1 230 15 view .LVU99
|
||
382 000a 4FF0080C mov ip, #8
|
||
383 .L29:
|
||
384 .LVL24:
|
||
231:Core/Src/can-halal.c **** }
|
||
232:Core/Src/can-halal.c ****
|
||
233:Core/Src/can-halal.c **** const uint8_t *data = *data_ptr;
|
||
385 .loc 1 233 3 is_stmt 1 view .LVU100
|
||
386 .loc 1 233 18 is_stmt 0 view .LVU101
|
||
387 000e DEF80040 ldr r4, [lr]
|
||
388 .LVL25:
|
||
234:Core/Src/can-halal.c **** uint64_t result = 0;
|
||
389 .loc 1 234 3 is_stmt 1 view .LVU102
|
||
235:Core/Src/can-halal.c **** for (size_t i = 0; i < num_bytes; i++) {
|
||
390 .loc 1 235 3 view .LVU103
|
||
391 .LBB2:
|
||
392 .loc 1 235 8 view .LVU104
|
||
393 .loc 1 235 15 is_stmt 0 view .LVU105
|
||
394 0012 0023 movs r3, #0
|
||
395 .LBE2:
|
||
234:Core/Src/can-halal.c **** uint64_t result = 0;
|
||
396 .loc 1 234 12 view .LVU106
|
||
397 0014 1846 mov r0, r3
|
||
398 .LVL26:
|
||
234:Core/Src/can-halal.c **** uint64_t result = 0;
|
||
399 .loc 1 234 12 view .LVU107
|
||
400 0016 1946 mov r1, r3
|
||
401 .LBB3:
|
||
402 .loc 1 235 3 view .LVU108
|
||
403 0018 06E0 b .L30
|
||
404 .LVL27:
|
||
405 .L31:
|
||
236:Core/Src/can-halal.c **** result <<= 8;
|
||
406 .loc 1 236 5 is_stmt 1 discriminator 3 view .LVU109
|
||
407 .loc 1 236 12 is_stmt 0 discriminator 3 view .LVU110
|
||
408 001a 0902 lsls r1, r1, #8
|
||
409 .LVL28:
|
||
410 .loc 1 236 12 discriminator 3 view .LVU111
|
||
411 001c 41EA1061 orr r1, r1, r0, lsr #24
|
||
412 .LVL29:
|
||
237:Core/Src/can-halal.c **** result |= data[i];
|
||
413 .loc 1 237 5 is_stmt 1 discriminator 3 view .LVU112
|
||
414 .loc 1 237 19 is_stmt 0 discriminator 3 view .LVU113
|
||
415 0020 E25C ldrb r2, [r4, r3] @ zero_extendqisi2
|
||
416 .loc 1 237 12 discriminator 3 view .LVU114
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 13
|
||
|
||
|
||
417 0022 42EA0020 orr r0, r2, r0, lsl #8
|
||
418 .LVL30:
|
||
235:Core/Src/can-halal.c **** for (size_t i = 0; i < num_bytes; i++) {
|
||
419 .loc 1 235 38 is_stmt 1 discriminator 3 view .LVU115
|
||
420 0026 0133 adds r3, r3, #1
|
||
421 .LVL31:
|
||
422 .L30:
|
||
235:Core/Src/can-halal.c **** for (size_t i = 0; i < num_bytes; i++) {
|
||
423 .loc 1 235 24 discriminator 1 view .LVU116
|
||
424 0028 9C45 cmp ip, r3
|
||
425 002a F6D8 bhi .L31
|
||
426 .LBE3:
|
||
238:Core/Src/can-halal.c **** }
|
||
239:Core/Src/can-halal.c **** *data_ptr += num_bytes;
|
||
427 .loc 1 239 3 view .LVU117
|
||
428 .loc 1 239 13 is_stmt 0 view .LVU118
|
||
429 002c 6444 add r4, r4, ip
|
||
430 .LVL32:
|
||
431 .loc 1 239 13 view .LVU119
|
||
432 002e CEF80040 str r4, [lr]
|
||
433 .LVL33:
|
||
240:Core/Src/can-halal.c **** return result;
|
||
434 .loc 1 240 3 is_stmt 1 view .LVU120
|
||
241:Core/Src/can-halal.c **** }
|
||
435 .loc 1 241 1 is_stmt 0 view .LVU121
|
||
436 0032 10BD pop {r4, pc}
|
||
437 .cfi_endproc
|
||
438 .LFE135:
|
||
440 .section .text.ftcan_unmarshal_signed,"ax",%progbits
|
||
441 .align 1
|
||
442 .global ftcan_unmarshal_signed
|
||
443 .syntax unified
|
||
444 .thumb
|
||
445 .thumb_func
|
||
447 ftcan_unmarshal_signed:
|
||
448 .LVL34:
|
||
449 .LFB136:
|
||
242:Core/Src/can-halal.c ****
|
||
243:Core/Src/can-halal.c **** int64_t ftcan_unmarshal_signed(const uint8_t **data_ptr, size_t num_bytes) {
|
||
450 .loc 1 243 76 is_stmt 1 view -0
|
||
451 .cfi_startproc
|
||
452 @ args = 0, pretend = 0, frame = 0
|
||
453 @ frame_needed = 0, uses_anonymous_args = 0
|
||
454 .loc 1 243 76 is_stmt 0 view .LVU123
|
||
455 0000 10B5 push {r4, lr}
|
||
456 .cfi_def_cfa_offset 8
|
||
457 .cfi_offset 4, -8
|
||
458 .cfi_offset 14, -4
|
||
459 0002 0C46 mov r4, r1
|
||
244:Core/Src/can-halal.c **** if (num_bytes > 8) {
|
||
460 .loc 1 244 3 is_stmt 1 view .LVU124
|
||
461 .loc 1 244 6 is_stmt 0 view .LVU125
|
||
462 0004 0829 cmp r1, #8
|
||
463 0006 00D9 bls .L35
|
||
245:Core/Src/can-halal.c **** num_bytes = 8;
|
||
464 .loc 1 245 15 view .LVU126
|
||
465 0008 0824 movs r4, #8
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 14
|
||
|
||
|
||
466 .L35:
|
||
467 .LVL35:
|
||
246:Core/Src/can-halal.c **** }
|
||
247:Core/Src/can-halal.c ****
|
||
248:Core/Src/can-halal.c **** uint64_t result_unsigned = ftcan_unmarshal_unsigned(data_ptr, num_bytes);
|
||
468 .loc 1 248 3 is_stmt 1 view .LVU127
|
||
469 .loc 1 248 30 is_stmt 0 view .LVU128
|
||
470 000a 2146 mov r1, r4
|
||
471 000c FFF7FEFF bl ftcan_unmarshal_unsigned
|
||
472 .LVL36:
|
||
249:Core/Src/can-halal.c **** // Sign extend by shifting left, then copying to a signed int and shifting
|
||
250:Core/Src/can-halal.c **** // back to the right
|
||
251:Core/Src/can-halal.c **** size_t diff_to_64 = 64 - num_bytes * 8;
|
||
473 .loc 1 251 3 is_stmt 1 view .LVU129
|
||
474 .loc 1 251 26 is_stmt 0 view .LVU130
|
||
475 0010 C4F10803 rsb r3, r4, #8
|
||
476 .loc 1 251 10 view .LVU131
|
||
477 0014 DB00 lsls r3, r3, #3
|
||
478 .LVL37:
|
||
252:Core/Src/can-halal.c **** result_unsigned <<= diff_to_64;
|
||
479 .loc 1 252 3 is_stmt 1 view .LVU132
|
||
480 .loc 1 252 19 is_stmt 0 view .LVU133
|
||
481 0016 A3F1200C sub ip, r3, #32
|
||
482 001a C3F12004 rsb r4, r3, #32
|
||
483 .LVL38:
|
||
484 .loc 1 252 19 view .LVU134
|
||
485 001e 01FA03F2 lsl r2, r1, r3
|
||
486 0022 00FA0CFC lsl ip, r0, ip
|
||
487 0026 42EA0C02 orr r2, r2, ip
|
||
488 002a 20FA04F4 lsr r4, r0, r4
|
||
489 002e 2243 orrs r2, r2, r4
|
||
490 0030 9840 lsls r0, r0, r3
|
||
491 .LVL39:
|
||
253:Core/Src/can-halal.c **** int64_t result;
|
||
492 .loc 1 253 3 is_stmt 1 view .LVU135
|
||
254:Core/Src/can-halal.c **** memcpy(&result, &result_unsigned, 8);
|
||
493 .loc 1 254 3 view .LVU136
|
||
494 0032 1146 mov r1, r2
|
||
495 .LVL40:
|
||
255:Core/Src/can-halal.c **** return result >> diff_to_64;
|
||
496 .loc 1 255 3 view .LVU137
|
||
497 .loc 1 255 17 is_stmt 0 view .LVU138
|
||
498 0034 C3F12004 rsb r4, r3, #32
|
||
499 0038 B3F1200C subs ip, r3, #32
|
||
500 003c 20FA03F0 lsr r0, r0, r3
|
||
501 .LVL41:
|
||
502 .loc 1 255 17 view .LVU139
|
||
503 0040 02FA04F4 lsl r4, r2, r4
|
||
504 0044 40EA0400 orr r0, r0, r4
|
||
505 0048 03D4 bmi .L36
|
||
506 004a 42FA0CFC asr ip, r2, ip
|
||
507 004e 40EA0C00 orr r0, r0, ip
|
||
508 .L36:
|
||
256:Core/Src/can-halal.c **** }
|
||
509 .loc 1 256 1 view .LVU140
|
||
510 0052 1941 asrs r1, r1, r3
|
||
511 0054 10BD pop {r4, pc}
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 15
|
||
|
||
|
||
512 .cfi_endproc
|
||
513 .LFE136:
|
||
515 .section .text.ftcan_marshal_unsigned,"ax",%progbits
|
||
516 .align 1
|
||
517 .global ftcan_marshal_unsigned
|
||
518 .syntax unified
|
||
519 .thumb
|
||
520 .thumb_func
|
||
522 ftcan_marshal_unsigned:
|
||
523 .LVL42:
|
||
524 .LFB137:
|
||
257:Core/Src/can-halal.c ****
|
||
258:Core/Src/can-halal.c **** uint8_t *ftcan_marshal_unsigned(uint8_t *data, uint64_t val, size_t num_bytes) {
|
||
525 .loc 1 258 80 is_stmt 1 view -0
|
||
526 .cfi_startproc
|
||
527 @ args = 4, pretend = 0, frame = 0
|
||
528 @ frame_needed = 0, uses_anonymous_args = 0
|
||
529 @ link register save eliminated.
|
||
530 .loc 1 258 80 is_stmt 0 view .LVU142
|
||
531 0000 10B4 push {r4}
|
||
532 .cfi_def_cfa_offset 4
|
||
533 .cfi_offset 4, -4
|
||
534 0002 019C ldr r4, [sp, #4]
|
||
259:Core/Src/can-halal.c **** if (num_bytes > 8) {
|
||
535 .loc 1 259 3 is_stmt 1 view .LVU143
|
||
536 .loc 1 259 6 is_stmt 0 view .LVU144
|
||
537 0004 082C cmp r4, #8
|
||
538 0006 00D9 bls .L40
|
||
260:Core/Src/can-halal.c **** num_bytes = 8;
|
||
539 .loc 1 260 15 view .LVU145
|
||
540 0008 0824 movs r4, #8
|
||
541 .L40:
|
||
542 .LVL43:
|
||
261:Core/Src/can-halal.c **** }
|
||
262:Core/Src/can-halal.c ****
|
||
263:Core/Src/can-halal.c **** for (int i = num_bytes - 1; i >= 0; i--) {
|
||
543 .loc 1 263 3 is_stmt 1 view .LVU146
|
||
544 .LBB4:
|
||
545 .loc 1 263 8 view .LVU147
|
||
546 .loc 1 263 26 is_stmt 0 view .LVU148
|
||
547 000a 611E subs r1, r4, #1
|
||
548 .LVL44:
|
||
549 .loc 1 263 3 view .LVU149
|
||
550 000c 05E0 b .L41
|
||
551 .LVL45:
|
||
552 .L42:
|
||
264:Core/Src/can-halal.c **** data[i] = val & 0xFF;
|
||
553 .loc 1 264 5 is_stmt 1 discriminator 3 view .LVU150
|
||
554 .loc 1 264 13 is_stmt 0 discriminator 3 view .LVU151
|
||
555 000e 4254 strb r2, [r0, r1]
|
||
265:Core/Src/can-halal.c **** val >>= 8;
|
||
556 .loc 1 265 5 is_stmt 1 discriminator 3 view .LVU152
|
||
557 .loc 1 265 9 is_stmt 0 discriminator 3 view .LVU153
|
||
558 0010 120A lsrs r2, r2, #8
|
||
559 .LVL46:
|
||
560 .loc 1 265 9 discriminator 3 view .LVU154
|
||
561 0012 42EA0362 orr r2, r2, r3, lsl #24
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 16
|
||
|
||
|
||
562 0016 1B0A lsrs r3, r3, #8
|
||
563 .LVL47:
|
||
263:Core/Src/can-halal.c **** data[i] = val & 0xFF;
|
||
564 .loc 1 263 40 is_stmt 1 discriminator 3 view .LVU155
|
||
565 0018 0139 subs r1, r1, #1
|
||
566 .LVL48:
|
||
567 .L41:
|
||
263:Core/Src/can-halal.c **** data[i] = val & 0xFF;
|
||
568 .loc 1 263 33 discriminator 1 view .LVU156
|
||
569 001a 0029 cmp r1, #0
|
||
570 001c F7DA bge .L42
|
||
263:Core/Src/can-halal.c **** data[i] = val & 0xFF;
|
||
571 .loc 1 263 33 is_stmt 0 discriminator 1 view .LVU157
|
||
572 .LBE4:
|
||
266:Core/Src/can-halal.c **** }
|
||
267:Core/Src/can-halal.c ****
|
||
268:Core/Src/can-halal.c **** return data + num_bytes;
|
||
573 .loc 1 268 3 is_stmt 1 view .LVU158
|
||
269:Core/Src/can-halal.c **** }
|
||
574 .loc 1 269 1 is_stmt 0 view .LVU159
|
||
575 001e 2044 add r0, r0, r4
|
||
576 .LVL49:
|
||
577 .loc 1 269 1 view .LVU160
|
||
578 0020 5DF8044B ldr r4, [sp], #4
|
||
579 .cfi_restore 4
|
||
580 .cfi_def_cfa_offset 0
|
||
581 .LVL50:
|
||
582 .loc 1 269 1 view .LVU161
|
||
583 0024 7047 bx lr
|
||
584 .cfi_endproc
|
||
585 .LFE137:
|
||
587 .section .text.ftcan_marshal_signed,"ax",%progbits
|
||
588 .align 1
|
||
589 .global ftcan_marshal_signed
|
||
590 .syntax unified
|
||
591 .thumb
|
||
592 .thumb_func
|
||
594 ftcan_marshal_signed:
|
||
595 .LVL51:
|
||
596 .LFB138:
|
||
270:Core/Src/can-halal.c ****
|
||
271:Core/Src/can-halal.c **** uint8_t *ftcan_marshal_signed(uint8_t *data, int64_t val, size_t num_bytes) {
|
||
597 .loc 1 271 77 is_stmt 1 view -0
|
||
598 .cfi_startproc
|
||
599 @ args = 4, pretend = 0, frame = 0
|
||
600 @ frame_needed = 0, uses_anonymous_args = 0
|
||
601 .loc 1 271 77 is_stmt 0 view .LVU163
|
||
602 0000 00B5 push {lr}
|
||
603 .cfi_def_cfa_offset 4
|
||
604 .cfi_offset 14, -4
|
||
605 0002 83B0 sub sp, sp, #12
|
||
606 .cfi_def_cfa_offset 16
|
||
272:Core/Src/can-halal.c **** return ftcan_marshal_unsigned(data, val, num_bytes);
|
||
607 .loc 1 272 3 is_stmt 1 view .LVU164
|
||
608 .loc 1 272 10 is_stmt 0 view .LVU165
|
||
609 0004 0499 ldr r1, [sp, #16]
|
||
610 0006 0091 str r1, [sp]
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 17
|
||
|
||
|
||
611 0008 FFF7FEFF bl ftcan_marshal_unsigned
|
||
612 .LVL52:
|
||
273:Core/Src/can-halal.c **** }
|
||
613 .loc 1 273 1 view .LVU166
|
||
614 000c 03B0 add sp, sp, #12
|
||
615 .cfi_def_cfa_offset 4
|
||
616 @ sp needed
|
||
617 000e 5DF804FB ldr pc, [sp], #4
|
||
618 .loc 1 273 1 view .LVU167
|
||
619 .cfi_endproc
|
||
620 .LFE138:
|
||
622 .section .bss.filter.0,"aw",%nobits
|
||
623 .align 2
|
||
626 filter.0:
|
||
627 0000 00000000 .space 40
|
||
627 00000000
|
||
627 00000000
|
||
627 00000000
|
||
627 00000000
|
||
628 .section .bss.next_filter_no.1,"aw",%nobits
|
||
629 .align 2
|
||
632 next_filter_no.1:
|
||
633 0000 00000000 .space 4
|
||
634 .section .bss.header.2,"aw",%nobits
|
||
635 .align 2
|
||
638 header.2:
|
||
639 0000 00000000 .space 24
|
||
639 00000000
|
||
639 00000000
|
||
639 00000000
|
||
639 00000000
|
||
640 .section .bss.hcan,"aw",%nobits
|
||
641 .align 2
|
||
644 hcan:
|
||
645 0000 00000000 .space 4
|
||
646 .text
|
||
647 .Letext0:
|
||
648 .file 2 "c:\\users\\nived\\appdata\\roaming\\code\\user\\globalstorage\\bmd.stm32-for-vscode\\@xpa
|
||
649 .file 3 "c:\\users\\nived\\appdata\\roaming\\code\\user\\globalstorage\\bmd.stm32-for-vscode\\@xpa
|
||
650 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h"
|
||
651 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h"
|
||
652 .file 6 "c:\\users\\nived\\appdata\\roaming\\code\\user\\globalstorage\\bmd.stm32-for-vscode\\@xpa
|
||
653 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
|
||
654 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_can.h"
|
||
ARM GAS C:\Users\nived\AppData\Local\Temp\ccTRndkw.s page 18
|
||
|
||
|
||
DEFINED SYMBOLS
|
||
*ABS*:00000000 can-halal.c
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:21 .text.ftcan_init:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:27 .text.ftcan_init:00000000 ftcan_init
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:68 .text.ftcan_init:0000001c $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:644 .bss.hcan:00000000 hcan
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:73 .text.ftcan_transmit:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:79 .text.ftcan_transmit:00000000 ftcan_transmit
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:131 .text.ftcan_transmit:00000024 $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:638 .bss.header.2:00000000 header.2
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:137 .text.ftcan_add_filter:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:143 .text.ftcan_add_filter:00000000 ftcan_add_filter
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:256 .text.ftcan_add_filter:00000060 $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:632 .bss.next_filter_no.1:00000000 next_filter_no.1
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:626 .bss.filter.0:00000000 filter.0
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:263 .text.ftcan_msg_received_cb:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:269 .text.ftcan_msg_received_cb:00000000 ftcan_msg_received_cb
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:283 .text.HAL_CAN_RxFifo0MsgPendingCallback:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:289 .text.HAL_CAN_RxFifo0MsgPendingCallback:00000000 HAL_CAN_RxFifo0MsgPendingCallback
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:352 .text.HAL_CAN_RxFifo0MsgPendingCallback:00000034 $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:357 .text.ftcan_unmarshal_unsigned:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:363 .text.ftcan_unmarshal_unsigned:00000000 ftcan_unmarshal_unsigned
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:441 .text.ftcan_unmarshal_signed:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:447 .text.ftcan_unmarshal_signed:00000000 ftcan_unmarshal_signed
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:516 .text.ftcan_marshal_unsigned:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:522 .text.ftcan_marshal_unsigned:00000000 ftcan_marshal_unsigned
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:588 .text.ftcan_marshal_signed:00000000 $t
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:594 .text.ftcan_marshal_signed:00000000 ftcan_marshal_signed
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:623 .bss.filter.0:00000000 $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:629 .bss.next_filter_no.1:00000000 $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:635 .bss.header.2:00000000 $d
|
||
C:\Users\nived\AppData\Local\Temp\ccTRndkw.s:641 .bss.hcan:00000000 $d
|
||
|
||
UNDEFINED SYMBOLS
|
||
HAL_CAN_ActivateNotification
|
||
HAL_CAN_Start
|
||
HAL_CAN_AddTxMessage
|
||
HAL_CAN_ConfigFilter
|
||
HAL_CAN_GetRxMessage
|