2576 lines
116 KiB
Plaintext
2576 lines
116 KiB
Plaintext
ARM GAS /tmp/cc6A08EU.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 "ADBMS_LL_Driver.c"
|
||
16 .text
|
||
17 .Ltext0:
|
||
18 .cfi_sections .debug_frame
|
||
19 .file 1 "Core/Src/ADBMS_LL_Driver.c"
|
||
20 .section .text.F_CRC_ObtenValorDeTabla,"ax",%progbits
|
||
21 .align 1
|
||
22 .syntax unified
|
||
23 .thumb
|
||
24 .thumb_func
|
||
26 F_CRC_ObtenValorDeTabla:
|
||
27 .LVL0:
|
||
28 .LFB130:
|
||
1:Core/Src/ADBMS_LL_Driver.c **** /*
|
||
2:Core/Src/ADBMS_LL_Driver.c **** * ADBMS_LL_Driver.c
|
||
3:Core/Src/ADBMS_LL_Driver.c **** *
|
||
4:Core/Src/ADBMS_LL_Driver.c **** * Created on: 05.06.2022
|
||
5:Core/Src/ADBMS_LL_Driver.c **** * Author: max
|
||
6:Core/Src/ADBMS_LL_Driver.c **** */
|
||
7:Core/Src/ADBMS_LL_Driver.c ****
|
||
8:Core/Src/ADBMS_LL_Driver.c **** #include "ADBMS_LL_Driver.h"
|
||
9:Core/Src/ADBMS_LL_Driver.c **** #include <stdbool.h>
|
||
10:Core/Src/ADBMS_LL_Driver.c ****
|
||
11:Core/Src/ADBMS_LL_Driver.c **** #define INITIAL_COMMAND_PEC 0x0010
|
||
12:Core/Src/ADBMS_LL_Driver.c **** #define INITIAL_DATA_PEC 0x0010
|
||
13:Core/Src/ADBMS_LL_Driver.c **** #define ADBMS_SPI_TIMEOUT 100 // Timeout in ms
|
||
14:Core/Src/ADBMS_LL_Driver.c **** #warning ask about the timeout value
|
||
15:Core/Src/ADBMS_LL_Driver.c ****
|
||
16:Core/Src/ADBMS_LL_Driver.c **** SPI_HandleTypeDef* adbmsspi;
|
||
17:Core/Src/ADBMS_LL_Driver.c ****
|
||
18:Core/Src/ADBMS_LL_Driver.c **** uint8 adbmsDriverInit(SPI_HandleTypeDef* hspi) {
|
||
19:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
20:Core/Src/ADBMS_LL_Driver.c **** HAL_Delay(1);
|
||
21:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
22:Core/Src/ADBMS_LL_Driver.c **** adbmsspi = hspi;
|
||
23:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
24:Core/Src/ADBMS_LL_Driver.c **** }
|
||
25:Core/Src/ADBMS_LL_Driver.c ****
|
||
26:Core/Src/ADBMS_LL_Driver.c **** //command PEC calculation
|
||
27:Core/Src/ADBMS_LL_Driver.c **** //CRC-15
|
||
28:Core/Src/ADBMS_LL_Driver.c **** //x^15 + x^14 + x^10 + x^8 + x^7 + x^4 + x^3 + 1
|
||
29:Core/Src/ADBMS_LL_Driver.c ****
|
||
30:Core/Src/ADBMS_LL_Driver.c **** uint8 calculateCommandPEC(uint8_t* data, uint8_t datalen) {
|
||
ARM GAS /tmp/cc6A08EU.s page 2
|
||
|
||
|
||
31:Core/Src/ADBMS_LL_Driver.c **** uint16 currentpec = INITIAL_COMMAND_PEC;
|
||
32:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
|
||
33:Core/Src/ADBMS_LL_Driver.c **** for (int i = 0; i < (datalen - 2); i++) {
|
||
34:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
35:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
36:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
37:Core/Src/ADBMS_LL_Driver.c **** }
|
||
38:Core/Src/ADBMS_LL_Driver.c **** }
|
||
39:Core/Src/ADBMS_LL_Driver.c ****
|
||
40:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 2] = (currentpec >> 7) & 0xFF;
|
||
41:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = (currentpec << 1) & 0xFF;
|
||
42:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
43:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
44:Core/Src/ADBMS_LL_Driver.c **** return 1;
|
||
45:Core/Src/ADBMS_LL_Driver.c **** }
|
||
46:Core/Src/ADBMS_LL_Driver.c **** }
|
||
47:Core/Src/ADBMS_LL_Driver.c ****
|
||
48:Core/Src/ADBMS_LL_Driver.c **** uint8 checkCommandPEC(uint8* data, uint8 datalen) {
|
||
49:Core/Src/ADBMS_LL_Driver.c **** if (datalen <= 3) {
|
||
50:Core/Src/ADBMS_LL_Driver.c **** return 255;
|
||
51:Core/Src/ADBMS_LL_Driver.c **** }
|
||
52:Core/Src/ADBMS_LL_Driver.c ****
|
||
53:Core/Src/ADBMS_LL_Driver.c **** uint16 currentpec = INITIAL_COMMAND_PEC;
|
||
54:Core/Src/ADBMS_LL_Driver.c ****
|
||
55:Core/Src/ADBMS_LL_Driver.c **** for (int i = 0; i < (datalen - 2); i++) {
|
||
56:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
57:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
58:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
59:Core/Src/ADBMS_LL_Driver.c **** }
|
||
60:Core/Src/ADBMS_LL_Driver.c **** }
|
||
61:Core/Src/ADBMS_LL_Driver.c ****
|
||
62:Core/Src/ADBMS_LL_Driver.c **** uint8 pechigh = (currentpec >> 7) & 0xFF;
|
||
63:Core/Src/ADBMS_LL_Driver.c **** uint8 peclow = (currentpec << 1) & 0xFF;
|
||
64:Core/Src/ADBMS_LL_Driver.c ****
|
||
65:Core/Src/ADBMS_LL_Driver.c **** if ((pechigh == data[datalen - 2]) && (peclow == data[datalen - 1])) {
|
||
66:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
67:Core/Src/ADBMS_LL_Driver.c **** }
|
||
68:Core/Src/ADBMS_LL_Driver.c ****
|
||
69:Core/Src/ADBMS_LL_Driver.c **** return 1;
|
||
70:Core/Src/ADBMS_LL_Driver.c **** }
|
||
71:Core/Src/ADBMS_LL_Driver.c ****
|
||
72:Core/Src/ADBMS_LL_Driver.c **** uint16 updateCommandPEC(uint16 currentPEC, uint8 din) {
|
||
73:Core/Src/ADBMS_LL_Driver.c **** din = (din >> 7) & 0x01;
|
||
74:Core/Src/ADBMS_LL_Driver.c **** uint8 in0 = din ^ ((currentPEC >> 14) & 0x01);
|
||
75:Core/Src/ADBMS_LL_Driver.c **** uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
|
||
76:Core/Src/ADBMS_LL_Driver.c **** uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
|
||
77:Core/Src/ADBMS_LL_Driver.c **** uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
|
||
78:Core/Src/ADBMS_LL_Driver.c **** uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
|
||
79:Core/Src/ADBMS_LL_Driver.c **** uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
|
||
80:Core/Src/ADBMS_LL_Driver.c **** uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
|
||
81:Core/Src/ADBMS_LL_Driver.c ****
|
||
82:Core/Src/ADBMS_LL_Driver.c **** uint16 newPEC = 0;
|
||
83:Core/Src/ADBMS_LL_Driver.c ****
|
||
84:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in14 << 14;
|
||
85:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 12)) << 1;
|
||
86:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 11)) << 1;
|
||
87:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 10)) << 1;
|
||
ARM GAS /tmp/cc6A08EU.s page 3
|
||
|
||
|
||
88:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in10 << 10;
|
||
89:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 8)) << 1;
|
||
90:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in8 << 8;
|
||
91:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in7 << 7;
|
||
92:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 5)) << 1;
|
||
93:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
|
||
94:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in4 << 4;
|
||
95:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in3 << 3;
|
||
96:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 1)) << 1;
|
||
97:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
|
||
98:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
|
||
99:Core/Src/ADBMS_LL_Driver.c ****
|
||
100:Core/Src/ADBMS_LL_Driver.c **** return newPEC;
|
||
101:Core/Src/ADBMS_LL_Driver.c **** }
|
||
102:Core/Src/ADBMS_LL_Driver.c ****
|
||
103:Core/Src/ADBMS_LL_Driver.c **** //data PEC calculation
|
||
104:Core/Src/ADBMS_LL_Driver.c **** //CRC-10
|
||
105:Core/Src/ADBMS_LL_Driver.c **** //x^10 + x^7 + x^3 + x^2 + x + 1
|
||
106:Core/Src/ADBMS_LL_Driver.c ****
|
||
107:Core/Src/ADBMS_LL_Driver.c **** uint16_t pec10_calc(bool rx_cmd, int len, uint8_t* data) {
|
||
108:Core/Src/ADBMS_LL_Driver.c **** uint16_t remainder = 16; /* PEC_SEED; 0000010000 */
|
||
109:Core/Src/ADBMS_LL_Driver.c **** uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
|
||
110:Core/Src/ADBMS_LL_Driver.c **** 100 1000 1111 48F */
|
||
111:Core/Src/ADBMS_LL_Driver.c ****
|
||
112:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a byte at a time. */
|
||
113:Core/Src/ADBMS_LL_Driver.c **** for (uint8_t pbyte = 0; pbyte < len; ++pbyte) {
|
||
114:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
115:Core/Src/ADBMS_LL_Driver.c **** remainder ^= (uint16_t)(data[pbyte] << 2);
|
||
116:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time.*/
|
||
117:Core/Src/ADBMS_LL_Driver.c **** for (uint8_t bit_ = 8; bit_ > 0; --bit_) {
|
||
118:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
119:Core/Src/ADBMS_LL_Driver.c **** if ((remainder & 0x200) >
|
||
120:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
|
||
121:Core/Src/ADBMS_LL_Driver.c **** {
|
||
122:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)((remainder << 1));
|
||
123:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
124:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
125:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder << 1);
|
||
126:Core/Src/ADBMS_LL_Driver.c **** }
|
||
127:Core/Src/ADBMS_LL_Driver.c **** }
|
||
128:Core/Src/ADBMS_LL_Driver.c **** }
|
||
129:Core/Src/ADBMS_LL_Driver.c **** if (rx_cmd == true) {
|
||
130:Core/Src/ADBMS_LL_Driver.c **** remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
|
||
131:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
|
||
132:Core/Src/ADBMS_LL_Driver.c **** for (uint8_t bit_ = 6; bit_ > 0; --bit_) {
|
||
133:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
134:Core/Src/ADBMS_LL_Driver.c **** if ((remainder & 0x200) >
|
||
135:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
|
||
136:Core/Src/ADBMS_LL_Driver.c **** {
|
||
137:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)((remainder << 1));
|
||
138:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
139:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
140:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)((remainder << 1));
|
||
141:Core/Src/ADBMS_LL_Driver.c **** }
|
||
142:Core/Src/ADBMS_LL_Driver.c **** }
|
||
143:Core/Src/ADBMS_LL_Driver.c **** }
|
||
144:Core/Src/ADBMS_LL_Driver.c **** return ((uint16_t)(remainder & 0x3FF));
|
||
ARM GAS /tmp/cc6A08EU.s page 4
|
||
|
||
|
||
145:Core/Src/ADBMS_LL_Driver.c **** }
|
||
146:Core/Src/ADBMS_LL_Driver.c ****
|
||
147:Core/Src/ADBMS_LL_Driver.c **** typedef uint16_t crc;
|
||
148:Core/Src/ADBMS_LL_Driver.c **** crc F_CRC_CalculaCheckSum(uint8_t const AF_Datos[], uint16_t VF_nBytes);
|
||
149:Core/Src/ADBMS_LL_Driver.c ****
|
||
150:Core/Src/ADBMS_LL_Driver.c **** uint8 calculateDataPEC(uint8_t* data, uint8_t datalen) {
|
||
151:Core/Src/ADBMS_LL_Driver.c ****
|
||
152:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
|
||
153:Core/Src/ADBMS_LL_Driver.c ****
|
||
154:Core/Src/ADBMS_LL_Driver.c ****
|
||
155:Core/Src/ADBMS_LL_Driver.c **** crc currentpec = pec10_calc(true, datalen - 2, data) & 0x3FF; // mask to 10 bits
|
||
156:Core/Src/ADBMS_LL_Driver.c ****
|
||
157:Core/Src/ADBMS_LL_Driver.c **** // memory layout is [[zeroes], PEC[9:8]], [PEC[7:0]]
|
||
158:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 2] = (currentpec >> 8) & 0xFF;
|
||
159:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = currentpec & 0xFF;
|
||
160:Core/Src/ADBMS_LL_Driver.c ****
|
||
161:Core/Src/ADBMS_LL_Driver.c **** volatile uint8 result = pec10_calc(true, datalen, data);
|
||
162:Core/Src/ADBMS_LL_Driver.c ****
|
||
163:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
164:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
165:Core/Src/ADBMS_LL_Driver.c **** return 1;
|
||
166:Core/Src/ADBMS_LL_Driver.c **** }
|
||
167:Core/Src/ADBMS_LL_Driver.c **** }
|
||
168:Core/Src/ADBMS_LL_Driver.c ****
|
||
169:Core/Src/ADBMS_LL_Driver.c **** uint8 checkDataPEC(uint8* data, uint8 len) {
|
||
170:Core/Src/ADBMS_LL_Driver.c **** if (len <= 2) {
|
||
171:Core/Src/ADBMS_LL_Driver.c **** return 255;
|
||
172:Core/Src/ADBMS_LL_Driver.c **** }
|
||
173:Core/Src/ADBMS_LL_Driver.c ****
|
||
174:Core/Src/ADBMS_LL_Driver.c **** crc currentpec = F_CRC_CalculaCheckSum(data, len);
|
||
175:Core/Src/ADBMS_LL_Driver.c ****
|
||
176:Core/Src/ADBMS_LL_Driver.c **** return (currentpec == 0) ? 0 : 1;
|
||
177:Core/Src/ADBMS_LL_Driver.c **** }
|
||
178:Core/Src/ADBMS_LL_Driver.c ****
|
||
179:Core/Src/ADBMS_LL_Driver.c ****
|
||
180:Core/Src/ADBMS_LL_Driver.c **** static crc F_CRC_ObtenValorDeTabla(uint8_t VP_Pos_Tabla) {
|
||
29 .loc 1 180 58 view -0
|
||
30 .cfi_startproc
|
||
31 @ args = 0, pretend = 0, frame = 0
|
||
32 @ frame_needed = 0, uses_anonymous_args = 0
|
||
33 @ link register save eliminated.
|
||
181:Core/Src/ADBMS_LL_Driver.c **** crc VP_CRCTableValue = 0;
|
||
34 .loc 1 181 3 view .LVU1
|
||
182:Core/Src/ADBMS_LL_Driver.c **** uint8_t VP_Pos_bit = 0;
|
||
35 .loc 1 182 3 view .LVU2
|
||
183:Core/Src/ADBMS_LL_Driver.c ****
|
||
184:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = ((crc)(VP_Pos_Tabla)) << (10 - 8);
|
||
36 .loc 1 184 3 view .LVU3
|
||
37 .loc 1 184 20 is_stmt 0 view .LVU4
|
||
38 0000 8000 lsls r0, r0, #2
|
||
39 .LVL1:
|
||
185:Core/Src/ADBMS_LL_Driver.c ****
|
||
186:Core/Src/ADBMS_LL_Driver.c **** for (VP_Pos_bit = 0; VP_Pos_bit < 8; VP_Pos_bit++) {
|
||
40 .loc 1 186 3 is_stmt 1 view .LVU5
|
||
41 .loc 1 186 19 is_stmt 0 view .LVU6
|
||
42 0002 0023 movs r3, #0
|
||
43 .loc 1 186 3 view .LVU7
|
||
ARM GAS /tmp/cc6A08EU.s page 5
|
||
|
||
|
||
44 0004 03E0 b .L2
|
||
45 .LVL2:
|
||
46 .L3:
|
||
187:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
|
||
188:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = (VP_CRCTableValue << 1) ^ 0x8F;
|
||
189:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
190:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = (VP_CRCTableValue << 1);
|
||
47 .loc 1 190 7 is_stmt 1 view .LVU8
|
||
48 .loc 1 190 24 is_stmt 0 view .LVU9
|
||
49 0006 4000 lsls r0, r0, #1
|
||
50 .LVL3:
|
||
51 .loc 1 190 24 view .LVU10
|
||
52 0008 80B2 uxth r0, r0
|
||
53 .LVL4:
|
||
54 .L4:
|
||
186:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
|
||
55 .loc 1 186 50 is_stmt 1 discriminator 2 view .LVU11
|
||
56 000a 0133 adds r3, r3, #1
|
||
57 .LVL5:
|
||
186:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
|
||
58 .loc 1 186 50 is_stmt 0 discriminator 2 view .LVU12
|
||
59 000c DBB2 uxtb r3, r3
|
||
60 .LVL6:
|
||
61 .L2:
|
||
186:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
|
||
62 .loc 1 186 35 is_stmt 1 discriminator 1 view .LVU13
|
||
63 000e 072B cmp r3, #7
|
||
64 0010 07D8 bhi .L6
|
||
187:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
|
||
65 .loc 1 187 5 view .LVU14
|
||
187:Core/Src/ADBMS_LL_Driver.c **** if (VP_CRCTableValue & (((crc)1) << (10 - 1))) {
|
||
66 .loc 1 187 8 is_stmt 0 view .LVU15
|
||
67 0012 10F4007F tst r0, #512
|
||
68 0016 F6D0 beq .L3
|
||
188:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
69 .loc 1 188 7 is_stmt 1 view .LVU16
|
||
188:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
70 .loc 1 188 50 is_stmt 0 view .LVU17
|
||
71 0018 4000 lsls r0, r0, #1
|
||
72 .LVL7:
|
||
188:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
73 .loc 1 188 50 view .LVU18
|
||
74 001a 80F08F00 eor r0, r0, #143
|
||
188:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
75 .loc 1 188 24 view .LVU19
|
||
76 001e 80B2 uxth r0, r0
|
||
77 .LVL8:
|
||
188:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
78 .loc 1 188 24 view .LVU20
|
||
79 0020 F3E7 b .L4
|
||
80 .L6:
|
||
191:Core/Src/ADBMS_LL_Driver.c **** }
|
||
192:Core/Src/ADBMS_LL_Driver.c **** }
|
||
193:Core/Src/ADBMS_LL_Driver.c **** return ((VP_CRCTableValue));
|
||
81 .loc 1 193 3 is_stmt 1 view .LVU21
|
||
194:Core/Src/ADBMS_LL_Driver.c **** }
|
||
82 .loc 1 194 1 is_stmt 0 view .LVU22
|
||
ARM GAS /tmp/cc6A08EU.s page 6
|
||
|
||
|
||
83 0022 7047 bx lr
|
||
84 .cfi_endproc
|
||
85 .LFE130:
|
||
87 .section .text.updateCommandPEC,"ax",%progbits
|
||
88 .align 1
|
||
89 .global updateCommandPEC
|
||
90 .syntax unified
|
||
91 .thumb
|
||
92 .thumb_func
|
||
94 updateCommandPEC:
|
||
95 .LVL9:
|
||
96 .LFB126:
|
||
72:Core/Src/ADBMS_LL_Driver.c **** din = (din >> 7) & 0x01;
|
||
97 .loc 1 72 55 is_stmt 1 view -0
|
||
98 .cfi_startproc
|
||
99 @ args = 0, pretend = 0, frame = 0
|
||
100 @ frame_needed = 0, uses_anonymous_args = 0
|
||
72:Core/Src/ADBMS_LL_Driver.c **** din = (din >> 7) & 0x01;
|
||
101 .loc 1 72 55 is_stmt 0 view .LVU24
|
||
102 0000 70B5 push {r4, r5, r6, lr}
|
||
103 .cfi_def_cfa_offset 16
|
||
104 .cfi_offset 4, -16
|
||
105 .cfi_offset 5, -12
|
||
106 .cfi_offset 6, -8
|
||
107 .cfi_offset 14, -4
|
||
73:Core/Src/ADBMS_LL_Driver.c **** uint8 in0 = din ^ ((currentPEC >> 14) & 0x01);
|
||
108 .loc 1 73 3 is_stmt 1 view .LVU25
|
||
109 .LVL10:
|
||
74:Core/Src/ADBMS_LL_Driver.c **** uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
|
||
110 .loc 1 74 3 view .LVU26
|
||
74:Core/Src/ADBMS_LL_Driver.c **** uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
|
||
111 .loc 1 74 41 is_stmt 0 view .LVU27
|
||
112 0002 C0F38032 ubfx r2, r0, #14, #1
|
||
74:Core/Src/ADBMS_LL_Driver.c **** uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
|
||
113 .loc 1 74 19 view .LVU28
|
||
114 0006 82EAD113 eor r3, r2, r1, lsr #7
|
||
74:Core/Src/ADBMS_LL_Driver.c **** uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
|
||
115 .loc 1 74 9 view .LVU29
|
||
116 000a 1946 mov r1, r3
|
||
117 .LVL11:
|
||
75:Core/Src/ADBMS_LL_Driver.c **** uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
|
||
118 .loc 1 75 3 is_stmt 1 view .LVU30
|
||
75:Core/Src/ADBMS_LL_Driver.c **** uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
|
||
119 .loc 1 75 40 is_stmt 0 view .LVU31
|
||
120 000c C0F38002 ubfx r2, r0, #2, #1
|
||
75:Core/Src/ADBMS_LL_Driver.c **** uint8 in4 = in0 ^ ((currentPEC >> 3) & 0x01);
|
||
121 .loc 1 75 9 view .LVU32
|
||
122 0010 5A40 eors r2, r2, r3
|
||
123 .LVL12:
|
||
76:Core/Src/ADBMS_LL_Driver.c **** uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
|
||
124 .loc 1 76 3 is_stmt 1 view .LVU33
|
||
76:Core/Src/ADBMS_LL_Driver.c **** uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
|
||
125 .loc 1 76 40 is_stmt 0 view .LVU34
|
||
126 0012 C0F3C00C ubfx ip, r0, #3, #1
|
||
76:Core/Src/ADBMS_LL_Driver.c **** uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
|
||
127 .loc 1 76 9 view .LVU35
|
||
128 0016 83EA0C0C eor ip, r3, ip
|
||
ARM GAS /tmp/cc6A08EU.s page 7
|
||
|
||
|
||
129 .LVL13:
|
||
77:Core/Src/ADBMS_LL_Driver.c **** uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
|
||
130 .loc 1 77 3 is_stmt 1 view .LVU36
|
||
77:Core/Src/ADBMS_LL_Driver.c **** uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
|
||
131 .loc 1 77 40 is_stmt 0 view .LVU37
|
||
132 001a C0F3801E ubfx lr, r0, #6, #1
|
||
77:Core/Src/ADBMS_LL_Driver.c **** uint8 in8 = in0 ^ ((currentPEC >> 7) & 0x01);
|
||
133 .loc 1 77 9 view .LVU38
|
||
134 001e 83EA0E0E eor lr, r3, lr
|
||
135 .LVL14:
|
||
78:Core/Src/ADBMS_LL_Driver.c **** uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
|
||
136 .loc 1 78 3 is_stmt 1 view .LVU39
|
||
78:Core/Src/ADBMS_LL_Driver.c **** uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
|
||
137 .loc 1 78 40 is_stmt 0 view .LVU40
|
||
138 0022 C0F3C014 ubfx r4, r0, #7, #1
|
||
78:Core/Src/ADBMS_LL_Driver.c **** uint8 in10 = in0 ^ ((currentPEC >> 9) & 0x01);
|
||
139 .loc 1 78 9 view .LVU41
|
||
140 0026 5C40 eors r4, r4, r3
|
||
141 .LVL15:
|
||
79:Core/Src/ADBMS_LL_Driver.c **** uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
|
||
142 .loc 1 79 3 is_stmt 1 view .LVU42
|
||
79:Core/Src/ADBMS_LL_Driver.c **** uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
|
||
143 .loc 1 79 41 is_stmt 0 view .LVU43
|
||
144 0028 C0F34025 ubfx r5, r0, #9, #1
|
||
79:Core/Src/ADBMS_LL_Driver.c **** uint8 in14 = in0 ^ ((currentPEC >> 13) & 0x01);
|
||
145 .loc 1 79 9 view .LVU44
|
||
146 002c 5D40 eors r5, r5, r3
|
||
147 .LVL16:
|
||
80:Core/Src/ADBMS_LL_Driver.c ****
|
||
148 .loc 1 80 3 is_stmt 1 view .LVU45
|
||
80:Core/Src/ADBMS_LL_Driver.c ****
|
||
149 .loc 1 80 42 is_stmt 0 view .LVU46
|
||
150 002e C0F34036 ubfx r6, r0, #13, #1
|
||
151 .LVL17:
|
||
82:Core/Src/ADBMS_LL_Driver.c ****
|
||
152 .loc 1 82 3 is_stmt 1 view .LVU47
|
||
84:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 12)) << 1;
|
||
153 .loc 1 84 3 view .LVU48
|
||
84:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 12)) << 1;
|
||
154 .loc 1 84 10 is_stmt 0 view .LVU49
|
||
155 0032 5E40 eors r6, r6, r3
|
||
156 .LVL18:
|
||
85:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 11)) << 1;
|
||
157 .loc 1 85 3 is_stmt 1 view .LVU50
|
||
85:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 11)) << 1;
|
||
158 .loc 1 85 41 is_stmt 0 view .LVU51
|
||
159 0034 4000 lsls r0, r0, #1
|
||
160 .LVL19:
|
||
85:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 11)) << 1;
|
||
161 .loc 1 85 41 view .LVU52
|
||
162 0036 00F40053 and r3, r0, #8192
|
||
163 .LVL20:
|
||
85:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 11)) << 1;
|
||
164 .loc 1 85 10 view .LVU53
|
||
165 003a 43EA8633 orr r3, r3, r6, lsl #14
|
||
166 .LVL21:
|
||
86:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 10)) << 1;
|
||
ARM GAS /tmp/cc6A08EU.s page 8
|
||
|
||
|
||
167 .loc 1 86 3 is_stmt 1 view .LVU54
|
||
86:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 10)) << 1;
|
||
168 .loc 1 86 41 is_stmt 0 view .LVU55
|
||
169 003e 00F48056 and r6, r0, #4096
|
||
170 .LVL22:
|
||
86:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 10)) << 1;
|
||
171 .loc 1 86 10 view .LVU56
|
||
172 0042 3343 orrs r3, r3, r6
|
||
173 .LVL23:
|
||
86:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 10)) << 1;
|
||
174 .loc 1 86 10 view .LVU57
|
||
175 0044 1BB2 sxth r3, r3
|
||
176 .LVL24:
|
||
87:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in10 << 10;
|
||
177 .loc 1 87 3 is_stmt 1 view .LVU58
|
||
87:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in10 << 10;
|
||
178 .loc 1 87 41 is_stmt 0 view .LVU59
|
||
179 0046 00F40066 and r6, r0, #2048
|
||
87:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in10 << 10;
|
||
180 .loc 1 87 10 view .LVU60
|
||
181 004a 3343 orrs r3, r3, r6
|
||
182 .LVL25:
|
||
88:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 8)) << 1;
|
||
183 .loc 1 88 3 is_stmt 1 view .LVU61
|
||
88:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 8)) << 1;
|
||
184 .loc 1 88 10 is_stmt 0 view .LVU62
|
||
185 004c 43EA8523 orr r3, r3, r5, lsl #10
|
||
186 .LVL26:
|
||
89:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in8 << 8;
|
||
187 .loc 1 89 3 is_stmt 1 view .LVU63
|
||
89:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in8 << 8;
|
||
188 .loc 1 89 40 is_stmt 0 view .LVU64
|
||
189 0050 00F40075 and r5, r0, #512
|
||
190 .LVL27:
|
||
89:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in8 << 8;
|
||
191 .loc 1 89 10 view .LVU65
|
||
192 0054 2B43 orrs r3, r3, r5
|
||
193 .LVL28:
|
||
89:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in8 << 8;
|
||
194 .loc 1 89 10 view .LVU66
|
||
195 0056 1BB2 sxth r3, r3
|
||
196 .LVL29:
|
||
90:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in7 << 7;
|
||
197 .loc 1 90 3 is_stmt 1 view .LVU67
|
||
90:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in7 << 7;
|
||
198 .loc 1 90 10 is_stmt 0 view .LVU68
|
||
199 0058 43EA0423 orr r3, r3, r4, lsl #8
|
||
200 .LVL30:
|
||
91:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 5)) << 1;
|
||
201 .loc 1 91 3 is_stmt 1 view .LVU69
|
||
91:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 5)) << 1;
|
||
202 .loc 1 91 10 is_stmt 0 view .LVU70
|
||
203 005c 43EACE13 orr r3, r3, lr, lsl #7
|
||
204 .LVL31:
|
||
92:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
|
||
205 .loc 1 92 3 is_stmt 1 view .LVU71
|
||
92:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
|
||
ARM GAS /tmp/cc6A08EU.s page 9
|
||
|
||
|
||
206 .loc 1 92 40 is_stmt 0 view .LVU72
|
||
207 0060 00F04004 and r4, r0, #64
|
||
208 .LVL32:
|
||
92:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
|
||
209 .loc 1 92 10 view .LVU73
|
||
210 0064 2343 orrs r3, r3, r4
|
||
211 .LVL33:
|
||
92:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
|
||
212 .loc 1 92 10 view .LVU74
|
||
213 0066 1BB2 sxth r3, r3
|
||
214 .LVL34:
|
||
93:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in4 << 4;
|
||
215 .loc 1 93 3 is_stmt 1 view .LVU75
|
||
93:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in4 << 4;
|
||
216 .loc 1 93 40 is_stmt 0 view .LVU76
|
||
217 0068 00F02004 and r4, r0, #32
|
||
93:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in4 << 4;
|
||
218 .loc 1 93 10 view .LVU77
|
||
219 006c 2343 orrs r3, r3, r4
|
||
220 .LVL35:
|
||
94:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in3 << 3;
|
||
221 .loc 1 94 3 is_stmt 1 view .LVU78
|
||
94:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in3 << 3;
|
||
222 .loc 1 94 10 is_stmt 0 view .LVU79
|
||
223 006e 43EA0C13 orr r3, r3, ip, lsl #4
|
||
224 .LVL36:
|
||
95:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 1)) << 1;
|
||
225 .loc 1 95 3 is_stmt 1 view .LVU80
|
||
95:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 1)) << 1;
|
||
226 .loc 1 95 10 is_stmt 0 view .LVU81
|
||
227 0072 43EAC203 orr r3, r3, r2, lsl #3
|
||
228 .LVL37:
|
||
96:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
|
||
229 .loc 1 96 3 is_stmt 1 view .LVU82
|
||
96:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
|
||
230 .loc 1 96 40 is_stmt 0 view .LVU83
|
||
231 0076 00F00402 and r2, r0, #4
|
||
232 .LVL38:
|
||
96:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
|
||
233 .loc 1 96 10 view .LVU84
|
||
234 007a 1343 orrs r3, r3, r2
|
||
235 .LVL39:
|
||
96:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
|
||
236 .loc 1 96 10 view .LVU85
|
||
237 007c 1BB2 sxth r3, r3
|
||
238 .LVL40:
|
||
97:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
|
||
239 .loc 1 97 3 is_stmt 1 view .LVU86
|
||
97:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
|
||
240 .loc 1 97 35 is_stmt 0 view .LVU87
|
||
241 007e 00F00200 and r0, r0, #2
|
||
97:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
|
||
242 .loc 1 97 10 view .LVU88
|
||
243 0082 0343 orrs r3, r3, r0
|
||
244 .LVL41:
|
||
97:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
|
||
245 .loc 1 97 10 view .LVU89
|
||
ARM GAS /tmp/cc6A08EU.s page 10
|
||
|
||
|
||
246 0084 9BB2 uxth r3, r3
|
||
247 .LVL42:
|
||
98:Core/Src/ADBMS_LL_Driver.c ****
|
||
248 .loc 1 98 3 is_stmt 1 view .LVU90
|
||
100:Core/Src/ADBMS_LL_Driver.c **** }
|
||
249 .loc 1 100 3 view .LVU91
|
||
101:Core/Src/ADBMS_LL_Driver.c ****
|
||
250 .loc 1 101 1 is_stmt 0 view .LVU92
|
||
251 0086 41EA0300 orr r0, r1, r3
|
||
252 .LVL43:
|
||
101:Core/Src/ADBMS_LL_Driver.c ****
|
||
253 .loc 1 101 1 view .LVU93
|
||
254 008a 70BD pop {r4, r5, r6, pc}
|
||
255 .cfi_endproc
|
||
256 .LFE126:
|
||
258 .section .text.calculateCommandPEC,"ax",%progbits
|
||
259 .align 1
|
||
260 .global calculateCommandPEC
|
||
261 .syntax unified
|
||
262 .thumb
|
||
263 .thumb_func
|
||
265 calculateCommandPEC:
|
||
266 .LVL44:
|
||
267 .LFB124:
|
||
30:Core/Src/ADBMS_LL_Driver.c **** uint16 currentpec = INITIAL_COMMAND_PEC;
|
||
268 .loc 1 30 59 is_stmt 1 view -0
|
||
269 .cfi_startproc
|
||
270 @ args = 0, pretend = 0, frame = 0
|
||
271 @ frame_needed = 0, uses_anonymous_args = 0
|
||
31:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
|
||
272 .loc 1 31 3 view .LVU95
|
||
32:Core/Src/ADBMS_LL_Driver.c **** for (int i = 0; i < (datalen - 2); i++) {
|
||
273 .loc 1 32 3 view .LVU96
|
||
32:Core/Src/ADBMS_LL_Driver.c **** for (int i = 0; i < (datalen - 2); i++) {
|
||
274 .loc 1 32 6 is_stmt 0 view .LVU97
|
||
275 0000 0229 cmp r1, #2
|
||
276 0002 0FD8 bhi .L14
|
||
44:Core/Src/ADBMS_LL_Driver.c **** }
|
||
277 .loc 1 44 12 view .LVU98
|
||
278 0004 0120 movs r0, #1
|
||
279 .LVL45:
|
||
46:Core/Src/ADBMS_LL_Driver.c ****
|
||
280 .loc 1 46 1 view .LVU99
|
||
281 0006 7047 bx lr
|
||
282 .LVL46:
|
||
283 .L12:
|
||
284 .cfi_def_cfa_offset 24
|
||
285 .cfi_offset 3, -24
|
||
286 .cfi_offset 4, -20
|
||
287 .cfi_offset 5, -16
|
||
288 .cfi_offset 6, -12
|
||
289 .cfi_offset 7, -8
|
||
290 .cfi_offset 14, -4
|
||
291 .LBB2:
|
||
292 .LBB3:
|
||
293 .LBB4:
|
||
35:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
ARM GAS /tmp/cc6A08EU.s page 11
|
||
|
||
|
||
294 .loc 1 35 9 is_stmt 1 view .LVU100
|
||
35:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
295 .loc 1 35 25 is_stmt 0 view .LVU101
|
||
296 0008 715D ldrb r1, [r6, r5] @ zero_extendqisi2
|
||
35:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
297 .loc 1 35 29 view .LVU102
|
||
298 000a A140 lsls r1, r1, r4
|
||
299 .LVL47:
|
||
36:Core/Src/ADBMS_LL_Driver.c **** }
|
||
300 .loc 1 36 9 is_stmt 1 view .LVU103
|
||
36:Core/Src/ADBMS_LL_Driver.c **** }
|
||
301 .loc 1 36 22 is_stmt 0 view .LVU104
|
||
302 000c C9B2 uxtb r1, r1
|
||
36:Core/Src/ADBMS_LL_Driver.c **** }
|
||
303 .loc 1 36 22 view .LVU105
|
||
304 000e FFF7FEFF bl updateCommandPEC
|
||
305 .LVL48:
|
||
36:Core/Src/ADBMS_LL_Driver.c **** }
|
||
306 .loc 1 36 22 view .LVU106
|
||
307 .LBE4:
|
||
34:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
308 .loc 1 34 31 is_stmt 1 discriminator 3 view .LVU107
|
||
309 0012 0134 adds r4, r4, #1
|
||
310 .LVL49:
|
||
311 .L13:
|
||
34:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
312 .loc 1 34 25 discriminator 1 view .LVU108
|
||
313 0014 072C cmp r4, #7
|
||
314 0016 F7DD ble .L12
|
||
34:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
315 .loc 1 34 25 is_stmt 0 discriminator 1 view .LVU109
|
||
316 .LBE3:
|
||
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
317 .loc 1 33 41 is_stmt 1 discriminator 2 view .LVU110
|
||
318 0018 0135 adds r5, r5, #1
|
||
319 .LVL50:
|
||
320 .L10:
|
||
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
321 .loc 1 33 23 discriminator 1 view .LVU111
|
||
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
322 .loc 1 33 34 is_stmt 0 discriminator 1 view .LVU112
|
||
323 001a BB1E subs r3, r7, #2
|
||
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
324 .loc 1 33 23 discriminator 1 view .LVU113
|
||
325 001c AB42 cmp r3, r5
|
||
326 001e 07DD ble .L19
|
||
327 .LBB5:
|
||
34:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
328 .loc 1 34 16 view .LVU114
|
||
329 0020 0024 movs r4, #0
|
||
330 0022 F7E7 b .L13
|
||
331 .LVL51:
|
||
332 .L14:
|
||
333 .cfi_def_cfa_offset 0
|
||
334 .cfi_restore 3
|
||
335 .cfi_restore 4
|
||
336 .cfi_restore 5
|
||
ARM GAS /tmp/cc6A08EU.s page 12
|
||
|
||
|
||
337 .cfi_restore 6
|
||
338 .cfi_restore 7
|
||
339 .cfi_restore 14
|
||
34:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
340 .loc 1 34 16 view .LVU115
|
||
341 .LBE5:
|
||
342 .LBE2:
|
||
30:Core/Src/ADBMS_LL_Driver.c **** uint16 currentpec = INITIAL_COMMAND_PEC;
|
||
343 .loc 1 30 59 view .LVU116
|
||
344 0024 F8B5 push {r3, r4, r5, r6, r7, lr}
|
||
345 .cfi_def_cfa_offset 24
|
||
346 .cfi_offset 3, -24
|
||
347 .cfi_offset 4, -20
|
||
348 .cfi_offset 5, -16
|
||
349 .cfi_offset 6, -12
|
||
350 .cfi_offset 7, -8
|
||
351 .cfi_offset 14, -4
|
||
352 0026 0646 mov r6, r0
|
||
353 0028 0F46 mov r7, r1
|
||
354 .LBB6:
|
||
33:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
355 .loc 1 33 14 view .LVU117
|
||
356 002a 0025 movs r5, #0
|
||
357 .LBE6:
|
||
31:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
|
||
358 .loc 1 31 10 view .LVU118
|
||
359 002c 1020 movs r0, #16
|
||
360 .LVL52:
|
||
31:Core/Src/ADBMS_LL_Driver.c **** if (datalen >= 3) {
|
||
361 .loc 1 31 10 view .LVU119
|
||
362 002e F4E7 b .L10
|
||
363 .LVL53:
|
||
364 .L19:
|
||
40:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = (currentpec << 1) & 0xFF;
|
||
365 .loc 1 40 5 is_stmt 1 view .LVU120
|
||
40:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = (currentpec << 1) & 0xFF;
|
||
366 .loc 1 40 23 is_stmt 0 view .LVU121
|
||
367 0030 C209 lsrs r2, r0, #7
|
||
368 0032 F254 strb r2, [r6, r3]
|
||
41:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
369 .loc 1 41 5 is_stmt 1 view .LVU122
|
||
41:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
370 .loc 1 41 9 is_stmt 0 view .LVU123
|
||
371 0034 013F subs r7, r7, #1
|
||
41:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
372 .loc 1 41 23 view .LVU124
|
||
373 0036 4300 lsls r3, r0, #1
|
||
374 0038 F355 strb r3, [r6, r7]
|
||
42:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
375 .loc 1 42 5 is_stmt 1 view .LVU125
|
||
42:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
376 .loc 1 42 12 is_stmt 0 view .LVU126
|
||
377 003a 0020 movs r0, #0
|
||
378 .LVL54:
|
||
46:Core/Src/ADBMS_LL_Driver.c ****
|
||
379 .loc 1 46 1 view .LVU127
|
||
380 003c F8BD pop {r3, r4, r5, r6, r7, pc}
|
||
ARM GAS /tmp/cc6A08EU.s page 13
|
||
|
||
|
||
46:Core/Src/ADBMS_LL_Driver.c ****
|
||
381 .loc 1 46 1 view .LVU128
|
||
382 .cfi_endproc
|
||
383 .LFE124:
|
||
385 .section .text.checkCommandPEC,"ax",%progbits
|
||
386 .align 1
|
||
387 .global checkCommandPEC
|
||
388 .syntax unified
|
||
389 .thumb
|
||
390 .thumb_func
|
||
392 checkCommandPEC:
|
||
393 .LVL55:
|
||
394 .LFB125:
|
||
48:Core/Src/ADBMS_LL_Driver.c **** if (datalen <= 3) {
|
||
395 .loc 1 48 51 is_stmt 1 view -0
|
||
396 .cfi_startproc
|
||
397 @ args = 0, pretend = 0, frame = 0
|
||
398 @ frame_needed = 0, uses_anonymous_args = 0
|
||
49:Core/Src/ADBMS_LL_Driver.c **** return 255;
|
||
399 .loc 1 49 3 view .LVU130
|
||
49:Core/Src/ADBMS_LL_Driver.c **** return 255;
|
||
400 .loc 1 49 6 is_stmt 0 view .LVU131
|
||
401 0000 0329 cmp r1, #3
|
||
402 0002 25D9 bls .L25
|
||
48:Core/Src/ADBMS_LL_Driver.c **** if (datalen <= 3) {
|
||
403 .loc 1 48 51 view .LVU132
|
||
404 0004 F8B5 push {r3, r4, r5, r6, r7, lr}
|
||
405 .cfi_def_cfa_offset 24
|
||
406 .cfi_offset 3, -24
|
||
407 .cfi_offset 4, -20
|
||
408 .cfi_offset 5, -16
|
||
409 .cfi_offset 6, -12
|
||
410 .cfi_offset 7, -8
|
||
411 .cfi_offset 14, -4
|
||
412 0006 0546 mov r5, r0
|
||
413 0008 0E46 mov r6, r1
|
||
414 .LBB7:
|
||
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
415 .loc 1 55 12 view .LVU133
|
||
416 000a 0027 movs r7, #0
|
||
417 .LBE7:
|
||
53:Core/Src/ADBMS_LL_Driver.c ****
|
||
418 .loc 1 53 10 view .LVU134
|
||
419 000c 1020 movs r0, #16
|
||
420 .LVL56:
|
||
53:Core/Src/ADBMS_LL_Driver.c ****
|
||
421 .loc 1 53 10 view .LVU135
|
||
422 000e 08E0 b .L22
|
||
423 .LVL57:
|
||
424 .L23:
|
||
425 .LBB11:
|
||
426 .LBB8:
|
||
427 .LBB9:
|
||
57:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
428 .loc 1 57 7 is_stmt 1 view .LVU136
|
||
57:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
429 .loc 1 57 23 is_stmt 0 view .LVU137
|
||
ARM GAS /tmp/cc6A08EU.s page 14
|
||
|
||
|
||
430 0010 E95D ldrb r1, [r5, r7] @ zero_extendqisi2
|
||
57:Core/Src/ADBMS_LL_Driver.c **** currentpec = updateCommandPEC(currentpec, din);
|
||
431 .loc 1 57 27 view .LVU138
|
||
432 0012 A140 lsls r1, r1, r4
|
||
433 .LVL58:
|
||
58:Core/Src/ADBMS_LL_Driver.c **** }
|
||
434 .loc 1 58 7 is_stmt 1 view .LVU139
|
||
58:Core/Src/ADBMS_LL_Driver.c **** }
|
||
435 .loc 1 58 20 is_stmt 0 view .LVU140
|
||
436 0014 C9B2 uxtb r1, r1
|
||
58:Core/Src/ADBMS_LL_Driver.c **** }
|
||
437 .loc 1 58 20 view .LVU141
|
||
438 0016 FFF7FEFF bl updateCommandPEC
|
||
439 .LVL59:
|
||
58:Core/Src/ADBMS_LL_Driver.c **** }
|
||
440 .loc 1 58 20 view .LVU142
|
||
441 .LBE9:
|
||
56:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
442 .loc 1 56 29 is_stmt 1 discriminator 3 view .LVU143
|
||
443 001a 0134 adds r4, r4, #1
|
||
444 .LVL60:
|
||
445 .L24:
|
||
56:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
446 .loc 1 56 23 discriminator 1 view .LVU144
|
||
447 001c 072C cmp r4, #7
|
||
448 001e F7DD ble .L23
|
||
56:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
449 .loc 1 56 23 is_stmt 0 discriminator 1 view .LVU145
|
||
450 .LBE8:
|
||
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
451 .loc 1 55 39 is_stmt 1 discriminator 2 view .LVU146
|
||
452 0020 0137 adds r7, r7, #1
|
||
453 .LVL61:
|
||
454 .L22:
|
||
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
455 .loc 1 55 21 discriminator 1 view .LVU147
|
||
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
456 .loc 1 55 32 is_stmt 0 discriminator 1 view .LVU148
|
||
457 0022 B31E subs r3, r6, #2
|
||
55:Core/Src/ADBMS_LL_Driver.c **** for (int n = 0; n < 8; n++) {
|
||
458 .loc 1 55 21 discriminator 1 view .LVU149
|
||
459 0024 BB42 cmp r3, r7
|
||
460 0026 01DD ble .L33
|
||
461 .LBB10:
|
||
56:Core/Src/ADBMS_LL_Driver.c **** uint8 din = data[i] << (n);
|
||
462 .loc 1 56 14 view .LVU150
|
||
463 0028 0024 movs r4, #0
|
||
464 002a F7E7 b .L24
|
||
465 .L33:
|
||
466 .LBE10:
|
||
467 .LBE11:
|
||
62:Core/Src/ADBMS_LL_Driver.c **** uint8 peclow = (currentpec << 1) & 0xFF;
|
||
468 .loc 1 62 3 is_stmt 1 view .LVU151
|
||
62:Core/Src/ADBMS_LL_Driver.c **** uint8 peclow = (currentpec << 1) & 0xFF;
|
||
469 .loc 1 62 9 is_stmt 0 view .LVU152
|
||
470 002c C0F3C712 ubfx r2, r0, #7, #8
|
||
471 .LVL62:
|
||
ARM GAS /tmp/cc6A08EU.s page 15
|
||
|
||
|
||
63:Core/Src/ADBMS_LL_Driver.c ****
|
||
472 .loc 1 63 3 is_stmt 1 view .LVU153
|
||
63:Core/Src/ADBMS_LL_Driver.c ****
|
||
473 .loc 1 63 9 is_stmt 0 view .LVU154
|
||
474 0030 4300 lsls r3, r0, #1
|
||
475 0032 DBB2 uxtb r3, r3
|
||
476 .LVL63:
|
||
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
477 .loc 1 65 3 is_stmt 1 view .LVU155
|
||
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
478 .loc 1 65 23 is_stmt 0 view .LVU156
|
||
479 0034 A919 adds r1, r5, r6
|
||
480 0036 11F8021C ldrb r1, [r1, #-2] @ zero_extendqisi2
|
||
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
481 .loc 1 65 6 view .LVU157
|
||
482 003a 9142 cmp r1, r2
|
||
483 003c 01D0 beq .L34
|
||
69:Core/Src/ADBMS_LL_Driver.c **** }
|
||
484 .loc 1 69 10 view .LVU158
|
||
485 003e 0120 movs r0, #1
|
||
486 .LVL64:
|
||
487 .L21:
|
||
70:Core/Src/ADBMS_LL_Driver.c ****
|
||
488 .loc 1 70 1 view .LVU159
|
||
489 0040 F8BD pop {r3, r4, r5, r6, r7, pc}
|
||
490 .LVL65:
|
||
491 .L34:
|
||
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
492 .loc 1 65 56 discriminator 1 view .LVU160
|
||
493 0042 3544 add r5, r5, r6
|
||
494 .LVL66:
|
||
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
495 .loc 1 65 56 discriminator 1 view .LVU161
|
||
496 0044 15F8012C ldrb r2, [r5, #-1] @ zero_extendqisi2
|
||
497 .LVL67:
|
||
65:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
498 .loc 1 65 38 discriminator 1 view .LVU162
|
||
499 0048 9A42 cmp r2, r3
|
||
500 004a 03D0 beq .L28
|
||
69:Core/Src/ADBMS_LL_Driver.c **** }
|
||
501 .loc 1 69 10 view .LVU163
|
||
502 004c 0120 movs r0, #1
|
||
503 .LVL68:
|
||
69:Core/Src/ADBMS_LL_Driver.c **** }
|
||
504 .loc 1 69 10 view .LVU164
|
||
505 004e F7E7 b .L21
|
||
506 .LVL69:
|
||
507 .L25:
|
||
508 .cfi_def_cfa_offset 0
|
||
509 .cfi_restore 3
|
||
510 .cfi_restore 4
|
||
511 .cfi_restore 5
|
||
512 .cfi_restore 6
|
||
513 .cfi_restore 7
|
||
514 .cfi_restore 14
|
||
50:Core/Src/ADBMS_LL_Driver.c **** }
|
||
515 .loc 1 50 12 view .LVU165
|
||
ARM GAS /tmp/cc6A08EU.s page 16
|
||
|
||
|
||
516 0050 FF20 movs r0, #255
|
||
517 .LVL70:
|
||
70:Core/Src/ADBMS_LL_Driver.c ****
|
||
518 .loc 1 70 1 view .LVU166
|
||
519 0052 7047 bx lr
|
||
520 .LVL71:
|
||
521 .L28:
|
||
522 .cfi_def_cfa_offset 24
|
||
523 .cfi_offset 3, -24
|
||
524 .cfi_offset 4, -20
|
||
525 .cfi_offset 5, -16
|
||
526 .cfi_offset 6, -12
|
||
527 .cfi_offset 7, -8
|
||
528 .cfi_offset 14, -4
|
||
66:Core/Src/ADBMS_LL_Driver.c **** }
|
||
529 .loc 1 66 12 view .LVU167
|
||
530 0054 0020 movs r0, #0
|
||
531 .LVL72:
|
||
66:Core/Src/ADBMS_LL_Driver.c **** }
|
||
532 .loc 1 66 12 view .LVU168
|
||
533 0056 F3E7 b .L21
|
||
534 .cfi_endproc
|
||
535 .LFE125:
|
||
537 .section .text.pec10_calc,"ax",%progbits
|
||
538 .align 1
|
||
539 .global pec10_calc
|
||
540 .syntax unified
|
||
541 .thumb
|
||
542 .thumb_func
|
||
544 pec10_calc:
|
||
545 .LVL73:
|
||
546 .LFB127:
|
||
107:Core/Src/ADBMS_LL_Driver.c **** uint16_t remainder = 16; /* PEC_SEED; 0000010000 */
|
||
547 .loc 1 107 58 is_stmt 1 view -0
|
||
548 .cfi_startproc
|
||
549 @ args = 0, pretend = 0, frame = 0
|
||
550 @ frame_needed = 0, uses_anonymous_args = 0
|
||
107:Core/Src/ADBMS_LL_Driver.c **** uint16_t remainder = 16; /* PEC_SEED; 0000010000 */
|
||
551 .loc 1 107 58 is_stmt 0 view .LVU170
|
||
552 0000 10B5 push {r4, lr}
|
||
553 .cfi_def_cfa_offset 8
|
||
554 .cfi_offset 4, -8
|
||
555 .cfi_offset 14, -4
|
||
556 0002 0446 mov r4, r0
|
||
108:Core/Src/ADBMS_LL_Driver.c **** uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
|
||
557 .loc 1 108 3 is_stmt 1 view .LVU171
|
||
558 .LVL74:
|
||
109:Core/Src/ADBMS_LL_Driver.c **** 100 1000 1111 48F */
|
||
559 .loc 1 109 3 view .LVU172
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
560 .loc 1 113 3 view .LVU173
|
||
561 .LBB12:
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
562 .loc 1 113 8 view .LVU174
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
563 .loc 1 113 16 is_stmt 0 view .LVU175
|
||
564 0004 4FF0000C mov ip, #0
|
||
ARM GAS /tmp/cc6A08EU.s page 17
|
||
|
||
|
||
565 .LBE12:
|
||
108:Core/Src/ADBMS_LL_Driver.c **** uint16_t polynom = 0x8F; /* x10 + x7 + x3 + x2 + x + 1 <- the CRC15 polynomial
|
||
566 .loc 1 108 12 view .LVU176
|
||
567 0008 1023 movs r3, #16
|
||
568 .LBB15:
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
569 .loc 1 113 3 view .LVU177
|
||
570 000a 10E0 b .L36
|
||
571 .LVL75:
|
||
572 .L38:
|
||
573 .LBB13:
|
||
125:Core/Src/ADBMS_LL_Driver.c **** }
|
||
574 .loc 1 125 9 is_stmt 1 view .LVU178
|
||
125:Core/Src/ADBMS_LL_Driver.c **** }
|
||
575 .loc 1 125 19 is_stmt 0 view .LVU179
|
||
576 000c 5B00 lsls r3, r3, #1
|
||
577 .LVL76:
|
||
125:Core/Src/ADBMS_LL_Driver.c **** }
|
||
578 .loc 1 125 19 view .LVU180
|
||
579 000e 9BB2 uxth r3, r3
|
||
580 .LVL77:
|
||
581 .L39:
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
582 .loc 1 117 38 is_stmt 1 discriminator 2 view .LVU181
|
||
583 0010 0138 subs r0, r0, #1
|
||
584 .LVL78:
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
585 .loc 1 117 38 is_stmt 0 discriminator 2 view .LVU182
|
||
586 0012 C0B2 uxtb r0, r0
|
||
587 .LVL79:
|
||
588 .L37:
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
589 .loc 1 117 33 is_stmt 1 discriminator 1 view .LVU183
|
||
590 0014 38B1 cbz r0, .L48
|
||
119:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
|
||
591 .loc 1 119 7 view .LVU184
|
||
119:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
|
||
592 .loc 1 119 10 is_stmt 0 view .LVU185
|
||
593 0016 13F4007F tst r3, #512
|
||
594 001a F7D0 beq .L38
|
||
122:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
595 .loc 1 122 9 is_stmt 1 view .LVU186
|
||
122:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
596 .loc 1 122 19 is_stmt 0 view .LVU187
|
||
597 001c 5B00 lsls r3, r3, #1
|
||
598 .LVL80:
|
||
122:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
599 .loc 1 122 19 view .LVU188
|
||
600 001e 9BB2 uxth r3, r3
|
||
601 .LVL81:
|
||
123:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
602 .loc 1 123 9 is_stmt 1 view .LVU189
|
||
123:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
603 .loc 1 123 19 is_stmt 0 view .LVU190
|
||
604 0020 83F08F03 eor r3, r3, #143
|
||
605 .LVL82:
|
||
123:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
ARM GAS /tmp/cc6A08EU.s page 18
|
||
|
||
|
||
606 .loc 1 123 19 view .LVU191
|
||
607 0024 F4E7 b .L39
|
||
608 .L48:
|
||
123:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
609 .loc 1 123 19 view .LVU192
|
||
610 .LBE13:
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
611 .loc 1 113 40 is_stmt 1 discriminator 2 view .LVU193
|
||
612 0026 0CF1010C add ip, ip, #1
|
||
613 .LVL83:
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
614 .loc 1 113 40 is_stmt 0 discriminator 2 view .LVU194
|
||
615 002a 5FFA8CFC uxtb ip, ip
|
||
616 .LVL84:
|
||
617 .L36:
|
||
113:Core/Src/ADBMS_LL_Driver.c **** /* Bring the next byte into the remainder. */
|
||
618 .loc 1 113 33 is_stmt 1 discriminator 1 view .LVU195
|
||
619 002e 8C45 cmp ip, r1
|
||
620 0030 05DA bge .L49
|
||
115:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time.*/
|
||
621 .loc 1 115 5 view .LVU196
|
||
115:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time.*/
|
||
622 .loc 1 115 33 is_stmt 0 view .LVU197
|
||
623 0032 12F80CE0 ldrb lr, [r2, ip] @ zero_extendqisi2
|
||
115:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time.*/
|
||
624 .loc 1 115 15 view .LVU198
|
||
625 0036 83EA8E03 eor r3, r3, lr, lsl #2
|
||
626 .LVL85:
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
627 .loc 1 117 5 is_stmt 1 view .LVU199
|
||
628 .LBB14:
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
629 .loc 1 117 10 view .LVU200
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
630 .loc 1 117 18 is_stmt 0 view .LVU201
|
||
631 003a 0820 movs r0, #8
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
632 .loc 1 117 5 view .LVU202
|
||
633 003c EAE7 b .L37
|
||
634 .LVL86:
|
||
635 .L49:
|
||
117:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit. */
|
||
636 .loc 1 117 5 view .LVU203
|
||
637 .LBE14:
|
||
638 .LBE15:
|
||
129:Core/Src/ADBMS_LL_Driver.c **** remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
|
||
639 .loc 1 129 3 is_stmt 1 view .LVU204
|
||
129:Core/Src/ADBMS_LL_Driver.c **** remainder ^= (uint16_t)((data[len] & 0xFC) << 2);
|
||
640 .loc 1 129 6 is_stmt 0 view .LVU205
|
||
641 003e 9CB1 cbz r4, .L42
|
||
130:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
|
||
642 .loc 1 130 5 is_stmt 1 view .LVU206
|
||
130:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
|
||
643 .loc 1 130 34 is_stmt 0 view .LVU207
|
||
644 0040 525C ldrb r2, [r2, r1] @ zero_extendqisi2
|
||
645 .LVL87:
|
||
130:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
|
||
ARM GAS /tmp/cc6A08EU.s page 19
|
||
|
||
|
||
646 .loc 1 130 48 view .LVU208
|
||
647 0042 9200 lsls r2, r2, #2
|
||
130:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
|
||
648 .loc 1 130 18 view .LVU209
|
||
649 0044 02F47C72 and r2, r2, #1008
|
||
130:Core/Src/ADBMS_LL_Driver.c **** /* Perform modulo-2 division, a bit at a time */
|
||
650 .loc 1 130 15 view .LVU210
|
||
651 0048 5340 eors r3, r3, r2
|
||
652 .LVL88:
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
653 .loc 1 132 5 is_stmt 1 view .LVU211
|
||
654 .LBB16:
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
655 .loc 1 132 10 view .LVU212
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
656 .loc 1 132 18 is_stmt 0 view .LVU213
|
||
657 004a 0622 movs r2, #6
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
658 .loc 1 132 5 view .LVU214
|
||
659 004c 03E0 b .L43
|
||
660 .LVL89:
|
||
661 .L44:
|
||
140:Core/Src/ADBMS_LL_Driver.c **** }
|
||
662 .loc 1 140 9 is_stmt 1 view .LVU215
|
||
140:Core/Src/ADBMS_LL_Driver.c **** }
|
||
663 .loc 1 140 19 is_stmt 0 view .LVU216
|
||
664 004e 5B00 lsls r3, r3, #1
|
||
665 .LVL90:
|
||
140:Core/Src/ADBMS_LL_Driver.c **** }
|
||
666 .loc 1 140 19 view .LVU217
|
||
667 0050 9BB2 uxth r3, r3
|
||
668 .LVL91:
|
||
669 .L45:
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
670 .loc 1 132 38 is_stmt 1 discriminator 2 view .LVU218
|
||
671 0052 013A subs r2, r2, #1
|
||
672 .LVL92:
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
673 .loc 1 132 38 is_stmt 0 discriminator 2 view .LVU219
|
||
674 0054 D2B2 uxtb r2, r2
|
||
675 .LVL93:
|
||
676 .L43:
|
||
132:Core/Src/ADBMS_LL_Driver.c **** /* Try to divide the current data bit */
|
||
677 .loc 1 132 33 is_stmt 1 discriminator 1 view .LVU220
|
||
678 0056 3AB1 cbz r2, .L42
|
||
134:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
|
||
679 .loc 1 134 7 view .LVU221
|
||
134:Core/Src/ADBMS_LL_Driver.c **** 0) // equivalent to remainder & 2^14 simply check for MSB
|
||
680 .loc 1 134 10 is_stmt 0 view .LVU222
|
||
681 0058 13F4007F tst r3, #512
|
||
682 005c F7D0 beq .L44
|
||
137:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
683 .loc 1 137 9 is_stmt 1 view .LVU223
|
||
137:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
684 .loc 1 137 19 is_stmt 0 view .LVU224
|
||
685 005e 5B00 lsls r3, r3, #1
|
||
686 .LVL94:
|
||
ARM GAS /tmp/cc6A08EU.s page 20
|
||
|
||
|
||
137:Core/Src/ADBMS_LL_Driver.c **** remainder = (uint16_t)(remainder ^ polynom);
|
||
687 .loc 1 137 19 view .LVU225
|
||
688 0060 9BB2 uxth r3, r3
|
||
689 .LVL95:
|
||
138:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
690 .loc 1 138 9 is_stmt 1 view .LVU226
|
||
138:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
691 .loc 1 138 19 is_stmt 0 view .LVU227
|
||
692 0062 83F08F03 eor r3, r3, #143
|
||
693 .LVL96:
|
||
138:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
694 .loc 1 138 19 view .LVU228
|
||
695 0066 F4E7 b .L45
|
||
696 .LVL97:
|
||
697 .L42:
|
||
138:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
698 .loc 1 138 19 view .LVU229
|
||
699 .LBE16:
|
||
144:Core/Src/ADBMS_LL_Driver.c **** }
|
||
700 .loc 1 144 3 is_stmt 1 view .LVU230
|
||
145:Core/Src/ADBMS_LL_Driver.c ****
|
||
701 .loc 1 145 1 is_stmt 0 view .LVU231
|
||
702 0068 C3F30900 ubfx r0, r3, #0, #10
|
||
703 006c 10BD pop {r4, pc}
|
||
145:Core/Src/ADBMS_LL_Driver.c ****
|
||
704 .loc 1 145 1 view .LVU232
|
||
705 .cfi_endproc
|
||
706 .LFE127:
|
||
708 .section .text.calculateDataPEC,"ax",%progbits
|
||
709 .align 1
|
||
710 .global calculateDataPEC
|
||
711 .syntax unified
|
||
712 .thumb
|
||
713 .thumb_func
|
||
715 calculateDataPEC:
|
||
716 .LVL98:
|
||
717 .LFB128:
|
||
150:Core/Src/ADBMS_LL_Driver.c ****
|
||
718 .loc 1 150 56 is_stmt 1 view -0
|
||
719 .cfi_startproc
|
||
720 @ args = 0, pretend = 0, frame = 8
|
||
721 @ frame_needed = 0, uses_anonymous_args = 0
|
||
152:Core/Src/ADBMS_LL_Driver.c ****
|
||
722 .loc 1 152 3 view .LVU234
|
||
152:Core/Src/ADBMS_LL_Driver.c ****
|
||
723 .loc 1 152 6 is_stmt 0 view .LVU235
|
||
724 0000 0229 cmp r1, #2
|
||
725 0002 01D8 bhi .L57
|
||
165:Core/Src/ADBMS_LL_Driver.c **** }
|
||
726 .loc 1 165 12 view .LVU236
|
||
727 0004 0120 movs r0, #1
|
||
728 .LVL99:
|
||
167:Core/Src/ADBMS_LL_Driver.c ****
|
||
729 .loc 1 167 1 view .LVU237
|
||
730 0006 7047 bx lr
|
||
731 .LVL100:
|
||
732 .L57:
|
||
ARM GAS /tmp/cc6A08EU.s page 21
|
||
|
||
|
||
150:Core/Src/ADBMS_LL_Driver.c ****
|
||
733 .loc 1 150 56 view .LVU238
|
||
734 0008 70B5 push {r4, r5, r6, lr}
|
||
735 .cfi_def_cfa_offset 16
|
||
736 .cfi_offset 4, -16
|
||
737 .cfi_offset 5, -12
|
||
738 .cfi_offset 6, -8
|
||
739 .cfi_offset 14, -4
|
||
740 000a 82B0 sub sp, sp, #8
|
||
741 .cfi_def_cfa_offset 24
|
||
742 000c 0546 mov r5, r0
|
||
743 000e 0C46 mov r4, r1
|
||
744 .LBB17:
|
||
155:Core/Src/ADBMS_LL_Driver.c ****
|
||
745 .loc 1 155 5 is_stmt 1 view .LVU239
|
||
155:Core/Src/ADBMS_LL_Driver.c ****
|
||
746 .loc 1 155 22 is_stmt 0 view .LVU240
|
||
747 0010 8E1E subs r6, r1, #2
|
||
748 0012 0246 mov r2, r0
|
||
749 0014 3146 mov r1, r6
|
||
750 .LVL101:
|
||
155:Core/Src/ADBMS_LL_Driver.c ****
|
||
751 .loc 1 155 22 view .LVU241
|
||
752 0016 0120 movs r0, #1
|
||
753 .LVL102:
|
||
155:Core/Src/ADBMS_LL_Driver.c ****
|
||
754 .loc 1 155 22 view .LVU242
|
||
755 0018 FFF7FEFF bl pec10_calc
|
||
756 .LVL103:
|
||
158:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = currentpec & 0xFF;
|
||
757 .loc 1 158 5 is_stmt 1 view .LVU243
|
||
158:Core/Src/ADBMS_LL_Driver.c **** data[datalen - 1] = currentpec & 0xFF;
|
||
758 .loc 1 158 23 is_stmt 0 view .LVU244
|
||
759 001c C0F30123 ubfx r3, r0, #8, #2
|
||
760 0020 AB55 strb r3, [r5, r6]
|
||
159:Core/Src/ADBMS_LL_Driver.c ****
|
||
761 .loc 1 159 5 is_stmt 1 view .LVU245
|
||
159:Core/Src/ADBMS_LL_Driver.c ****
|
||
762 .loc 1 159 9 is_stmt 0 view .LVU246
|
||
763 0022 631E subs r3, r4, #1
|
||
159:Core/Src/ADBMS_LL_Driver.c ****
|
||
764 .loc 1 159 23 view .LVU247
|
||
765 0024 E854 strb r0, [r5, r3]
|
||
161:Core/Src/ADBMS_LL_Driver.c ****
|
||
766 .loc 1 161 5 is_stmt 1 view .LVU248
|
||
161:Core/Src/ADBMS_LL_Driver.c ****
|
||
767 .loc 1 161 29 is_stmt 0 view .LVU249
|
||
768 0026 2A46 mov r2, r5
|
||
769 0028 2146 mov r1, r4
|
||
770 002a 0120 movs r0, #1
|
||
771 .LVL104:
|
||
161:Core/Src/ADBMS_LL_Driver.c ****
|
||
772 .loc 1 161 29 view .LVU250
|
||
773 002c FFF7FEFF bl pec10_calc
|
||
774 .LVL105:
|
||
161:Core/Src/ADBMS_LL_Driver.c ****
|
||
775 .loc 1 161 20 discriminator 1 view .LVU251
|
||
ARM GAS /tmp/cc6A08EU.s page 22
|
||
|
||
|
||
776 0030 C0B2 uxtb r0, r0
|
||
777 0032 8DF80700 strb r0, [sp, #7]
|
||
163:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
778 .loc 1 163 5 is_stmt 1 view .LVU252
|
||
163:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
779 .loc 1 163 12 is_stmt 0 view .LVU253
|
||
780 0036 0020 movs r0, #0
|
||
781 .LBE17:
|
||
167:Core/Src/ADBMS_LL_Driver.c ****
|
||
782 .loc 1 167 1 view .LVU254
|
||
783 0038 02B0 add sp, sp, #8
|
||
784 .cfi_def_cfa_offset 16
|
||
785 @ sp needed
|
||
786 003a 70BD pop {r4, r5, r6, pc}
|
||
167:Core/Src/ADBMS_LL_Driver.c ****
|
||
787 .loc 1 167 1 view .LVU255
|
||
788 .cfi_endproc
|
||
789 .LFE128:
|
||
791 .section .text.F_CRC_CalculaCheckSum,"ax",%progbits
|
||
792 .align 1
|
||
793 .global F_CRC_CalculaCheckSum
|
||
794 .syntax unified
|
||
795 .thumb
|
||
796 .thumb_func
|
||
798 F_CRC_CalculaCheckSum:
|
||
799 .LVL106:
|
||
800 .LFB131:
|
||
195:Core/Src/ADBMS_LL_Driver.c **** crc F_CRC_CalculaCheckSum(uint8_t const AF_Datos[], uint16_t VF_nBytes) {
|
||
801 .loc 1 195 73 is_stmt 1 view -0
|
||
802 .cfi_startproc
|
||
803 @ args = 0, pretend = 0, frame = 0
|
||
804 @ frame_needed = 0, uses_anonymous_args = 0
|
||
805 .loc 1 195 73 is_stmt 0 view .LVU257
|
||
806 0000 F8B5 push {r3, r4, r5, r6, r7, lr}
|
||
807 .cfi_def_cfa_offset 24
|
||
808 .cfi_offset 3, -24
|
||
809 .cfi_offset 4, -20
|
||
810 .cfi_offset 5, -16
|
||
811 .cfi_offset 6, -12
|
||
812 .cfi_offset 7, -8
|
||
813 .cfi_offset 14, -4
|
||
814 0002 0746 mov r7, r0
|
||
815 0004 0E46 mov r6, r1
|
||
196:Core/Src/ADBMS_LL_Driver.c **** crc VP_CRCTableValue = 16;
|
||
816 .loc 1 196 3 is_stmt 1 view .LVU258
|
||
817 .LVL107:
|
||
197:Core/Src/ADBMS_LL_Driver.c **** int16_t VP_bytes = 0;
|
||
818 .loc 1 197 3 view .LVU259
|
||
198:Core/Src/ADBMS_LL_Driver.c ****
|
||
199:Core/Src/ADBMS_LL_Driver.c **** for (VP_bytes = 0; VP_bytes < VF_nBytes; VP_bytes++) {
|
||
819 .loc 1 199 3 view .LVU260
|
||
820 .loc 1 199 17 is_stmt 0 view .LVU261
|
||
821 0006 0025 movs r5, #0
|
||
196:Core/Src/ADBMS_LL_Driver.c **** int16_t VP_bytes = 0;
|
||
822 .loc 1 196 7 view .LVU262
|
||
823 0008 1024 movs r4, #16
|
||
824 .loc 1 199 3 view .LVU263
|
||
ARM GAS /tmp/cc6A08EU.s page 23
|
||
|
||
|
||
825 000a 0BE0 b .L59
|
||
826 .LVL108:
|
||
827 .L60:
|
||
200:Core/Src/ADBMS_LL_Driver.c ****
|
||
201:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = (VP_CRCTableValue << 8) ^
|
||
828 .loc 1 201 5 is_stmt 1 view .LVU264
|
||
202:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
|
||
203:Core/Src/ADBMS_LL_Driver.c **** ((uint8_t)((VP_CRCTableValue >> (10 - 8)) & 0xFF)) ^
|
||
829 .loc 1 203 29 is_stmt 0 view .LVU265
|
||
830 000c C4F38700 ubfx r0, r4, #2, #8
|
||
204:Core/Src/ADBMS_LL_Driver.c **** AF_Datos[VP_bytes]);
|
||
831 .loc 1 204 36 view .LVU266
|
||
832 0010 7B5D ldrb r3, [r7, r5] @ zero_extendqisi2
|
||
202:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
|
||
833 .loc 1 202 24 view .LVU267
|
||
834 0012 5840 eors r0, r0, r3
|
||
835 0014 FFF7FEFF bl F_CRC_ObtenValorDeTabla
|
||
836 .LVL109:
|
||
837 0018 2402 lsls r4, r4, #8
|
||
838 .LVL110:
|
||
202:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
|
||
839 .loc 1 202 24 view .LVU268
|
||
840 001a A4B2 uxth r4, r4
|
||
201:Core/Src/ADBMS_LL_Driver.c **** F_CRC_ObtenValorDeTabla(
|
||
841 .loc 1 201 22 view .LVU269
|
||
842 001c 6040 eors r0, r0, r4
|
||
843 001e 84B2 uxth r4, r0
|
||
844 .LVL111:
|
||
199:Core/Src/ADBMS_LL_Driver.c ****
|
||
845 .loc 1 199 52 is_stmt 1 discriminator 3 view .LVU270
|
||
846 0020 0135 adds r5, r5, #1
|
||
847 .LVL112:
|
||
199:Core/Src/ADBMS_LL_Driver.c ****
|
||
848 .loc 1 199 52 is_stmt 0 discriminator 3 view .LVU271
|
||
849 0022 2DB2 sxth r5, r5
|
||
850 .LVL113:
|
||
851 .L59:
|
||
199:Core/Src/ADBMS_LL_Driver.c ****
|
||
852 .loc 1 199 31 is_stmt 1 discriminator 1 view .LVU272
|
||
853 0024 B542 cmp r5, r6
|
||
854 0026 F1DB blt .L60
|
||
205:Core/Src/ADBMS_LL_Driver.c **** }
|
||
206:Core/Src/ADBMS_LL_Driver.c ****
|
||
207:Core/Src/ADBMS_LL_Driver.c **** if ((8 * sizeof(crc)) > 10) {
|
||
855 .loc 1 207 3 view .LVU273
|
||
208:Core/Src/ADBMS_LL_Driver.c **** VP_CRCTableValue = VP_CRCTableValue & ((((crc)(1)) << 10) - 1);
|
||
856 .loc 1 208 5 view .LVU274
|
||
857 .LVL114:
|
||
209:Core/Src/ADBMS_LL_Driver.c **** }
|
||
210:Core/Src/ADBMS_LL_Driver.c ****
|
||
211:Core/Src/ADBMS_LL_Driver.c **** return (VP_CRCTableValue ^ 0x0000);
|
||
858 .loc 1 211 3 view .LVU275
|
||
212:Core/Src/ADBMS_LL_Driver.c **** }
|
||
859 .loc 1 212 1 is_stmt 0 view .LVU276
|
||
860 0028 C4F30900 ubfx r0, r4, #0, #10
|
||
861 002c F8BD pop {r3, r4, r5, r6, r7, pc}
|
||
862 .loc 1 212 1 view .LVU277
|
||
ARM GAS /tmp/cc6A08EU.s page 24
|
||
|
||
|
||
863 .cfi_endproc
|
||
864 .LFE131:
|
||
866 .section .text.checkDataPEC,"ax",%progbits
|
||
867 .align 1
|
||
868 .global checkDataPEC
|
||
869 .syntax unified
|
||
870 .thumb
|
||
871 .thumb_func
|
||
873 checkDataPEC:
|
||
874 .LVL115:
|
||
875 .LFB129:
|
||
169:Core/Src/ADBMS_LL_Driver.c **** if (len <= 2) {
|
||
876 .loc 1 169 44 is_stmt 1 view -0
|
||
877 .cfi_startproc
|
||
878 @ args = 0, pretend = 0, frame = 0
|
||
879 @ frame_needed = 0, uses_anonymous_args = 0
|
||
170:Core/Src/ADBMS_LL_Driver.c **** return 255;
|
||
880 .loc 1 170 3 view .LVU279
|
||
170:Core/Src/ADBMS_LL_Driver.c **** return 255;
|
||
881 .loc 1 170 6 is_stmt 0 view .LVU280
|
||
882 0000 0229 cmp r1, #2
|
||
883 0002 06D9 bls .L64
|
||
169:Core/Src/ADBMS_LL_Driver.c **** if (len <= 2) {
|
||
884 .loc 1 169 44 view .LVU281
|
||
885 0004 08B5 push {r3, lr}
|
||
886 .cfi_def_cfa_offset 8
|
||
887 .cfi_offset 3, -8
|
||
888 .cfi_offset 14, -4
|
||
174:Core/Src/ADBMS_LL_Driver.c ****
|
||
889 .loc 1 174 3 is_stmt 1 view .LVU282
|
||
174:Core/Src/ADBMS_LL_Driver.c ****
|
||
890 .loc 1 174 20 is_stmt 0 view .LVU283
|
||
891 0006 FFF7FEFF bl F_CRC_CalculaCheckSum
|
||
892 .LVL116:
|
||
176:Core/Src/ADBMS_LL_Driver.c **** }
|
||
893 .loc 1 176 3 is_stmt 1 view .LVU284
|
||
176:Core/Src/ADBMS_LL_Driver.c **** }
|
||
894 .loc 1 176 32 is_stmt 0 view .LVU285
|
||
895 000a 0038 subs r0, r0, #0
|
||
176:Core/Src/ADBMS_LL_Driver.c **** }
|
||
896 .loc 1 176 32 view .LVU286
|
||
897 000c 18BF it ne
|
||
898 000e 0120 movne r0, #1
|
||
899 .LVL117:
|
||
177:Core/Src/ADBMS_LL_Driver.c ****
|
||
900 .loc 1 177 1 view .LVU287
|
||
901 0010 08BD pop {r3, pc}
|
||
902 .LVL118:
|
||
903 .L64:
|
||
904 .cfi_def_cfa_offset 0
|
||
905 .cfi_restore 3
|
||
906 .cfi_restore 14
|
||
171:Core/Src/ADBMS_LL_Driver.c **** }
|
||
907 .loc 1 171 12 view .LVU288
|
||
908 0012 FF20 movs r0, #255
|
||
909 .LVL119:
|
||
177:Core/Src/ADBMS_LL_Driver.c ****
|
||
ARM GAS /tmp/cc6A08EU.s page 25
|
||
|
||
|
||
910 .loc 1 177 1 view .LVU289
|
||
911 0014 7047 bx lr
|
||
912 .cfi_endproc
|
||
913 .LFE129:
|
||
915 .section .text.updateDataPEC,"ax",%progbits
|
||
916 .align 1
|
||
917 .global updateDataPEC
|
||
918 .syntax unified
|
||
919 .thumb
|
||
920 .thumb_func
|
||
922 updateDataPEC:
|
||
923 .LVL120:
|
||
924 .LFB132:
|
||
213:Core/Src/ADBMS_LL_Driver.c ****
|
||
214:Core/Src/ADBMS_LL_Driver.c **** uint16 updateDataPEC(uint16 currentPEC, uint8 din) {
|
||
925 .loc 1 214 52 is_stmt 1 view -0
|
||
926 .cfi_startproc
|
||
927 @ args = 0, pretend = 0, frame = 0
|
||
928 @ frame_needed = 0, uses_anonymous_args = 0
|
||
929 .loc 1 214 52 is_stmt 0 view .LVU291
|
||
930 0000 10B5 push {r4, lr}
|
||
931 .cfi_def_cfa_offset 8
|
||
932 .cfi_offset 4, -8
|
||
933 .cfi_offset 14, -4
|
||
215:Core/Src/ADBMS_LL_Driver.c **** din = (din >> 7) & 0x01;
|
||
934 .loc 1 215 3 is_stmt 1 view .LVU292
|
||
935 .LVL121:
|
||
216:Core/Src/ADBMS_LL_Driver.c **** uint8 in0 = din ^ ((currentPEC >> 9) & 0x01);
|
||
936 .loc 1 216 3 view .LVU293
|
||
937 .loc 1 216 40 is_stmt 0 view .LVU294
|
||
938 0002 C0F34022 ubfx r2, r0, #9, #1
|
||
939 .loc 1 216 19 view .LVU295
|
||
940 0006 82EAD113 eor r3, r2, r1, lsr #7
|
||
941 .loc 1 216 9 view .LVU296
|
||
942 000a 1946 mov r1, r3
|
||
943 .LVL122:
|
||
217:Core/Src/ADBMS_LL_Driver.c **** uint8 in2 = in0 ^ ((currentPEC >> 1) & 0x01);
|
||
944 .loc 1 217 3 is_stmt 1 view .LVU297
|
||
945 .loc 1 217 40 is_stmt 0 view .LVU298
|
||
946 000c C0F3400E ubfx lr, r0, #1, #1
|
||
947 .loc 1 217 9 view .LVU299
|
||
948 0010 83EA0E0E eor lr, r3, lr
|
||
949 .LVL123:
|
||
218:Core/Src/ADBMS_LL_Driver.c **** uint8 in3 = in0 ^ ((currentPEC >> 2) & 0x01);
|
||
950 .loc 1 218 3 is_stmt 1 view .LVU300
|
||
951 .loc 1 218 40 is_stmt 0 view .LVU301
|
||
952 0014 C0F38004 ubfx r4, r0, #2, #1
|
||
953 .loc 1 218 9 view .LVU302
|
||
954 0018 5C40 eors r4, r4, r3
|
||
955 .LVL124:
|
||
219:Core/Src/ADBMS_LL_Driver.c **** uint8 in7 = in0 ^ ((currentPEC >> 6) & 0x01);
|
||
956 .loc 1 219 3 is_stmt 1 view .LVU303
|
||
957 .loc 1 219 40 is_stmt 0 view .LVU304
|
||
958 001a C0F38012 ubfx r2, r0, #6, #1
|
||
959 .loc 1 219 9 view .LVU305
|
||
960 001e 83EA020C eor ip, r3, r2
|
||
961 .LVL125:
|
||
ARM GAS /tmp/cc6A08EU.s page 26
|
||
|
||
|
||
220:Core/Src/ADBMS_LL_Driver.c ****
|
||
221:Core/Src/ADBMS_LL_Driver.c **** uint16 newPEC = 0;
|
||
962 .loc 1 221 3 is_stmt 1 view .LVU306
|
||
222:Core/Src/ADBMS_LL_Driver.c ****
|
||
223:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 8)) << 1;
|
||
963 .loc 1 223 3 view .LVU307
|
||
964 .loc 1 223 40 is_stmt 0 view .LVU308
|
||
965 0022 4200 lsls r2, r0, #1
|
||
966 0024 02F40073 and r3, r2, #512
|
||
967 .LVL126:
|
||
224:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 7)) << 1;
|
||
968 .loc 1 224 3 is_stmt 1 view .LVU309
|
||
969 .loc 1 224 40 is_stmt 0 view .LVU310
|
||
970 0028 02F48070 and r0, r2, #256
|
||
971 .LVL127:
|
||
972 .loc 1 224 10 view .LVU311
|
||
973 002c 0343 orrs r3, r3, r0
|
||
974 .LVL128:
|
||
225:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in7 << 7;
|
||
975 .loc 1 225 3 is_stmt 1 view .LVU312
|
||
976 .loc 1 225 10 is_stmt 0 view .LVU313
|
||
977 002e 43EACC13 orr r3, r3, ip, lsl #7
|
||
978 .LVL129:
|
||
226:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 5)) << 1;
|
||
979 .loc 1 226 3 is_stmt 1 view .LVU314
|
||
980 .loc 1 226 40 is_stmt 0 view .LVU315
|
||
981 0032 02F04000 and r0, r2, #64
|
||
982 .loc 1 226 10 view .LVU316
|
||
983 0036 0343 orrs r3, r3, r0
|
||
984 .LVL130:
|
||
985 .loc 1 226 10 view .LVU317
|
||
986 0038 1BB2 sxth r3, r3
|
||
987 .LVL131:
|
||
227:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01 << 4)) << 1;
|
||
988 .loc 1 227 3 is_stmt 1 view .LVU318
|
||
989 .loc 1 227 40 is_stmt 0 view .LVU319
|
||
990 003a 02F02000 and r0, r2, #32
|
||
991 .loc 1 227 10 view .LVU320
|
||
992 003e 0343 orrs r3, r3, r0
|
||
993 .LVL132:
|
||
228:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in3 << 3;
|
||
994 .loc 1 228 3 is_stmt 1 view .LVU321
|
||
995 .loc 1 228 10 is_stmt 0 view .LVU322
|
||
996 0040 43EAC403 orr r3, r3, r4, lsl #3
|
||
997 .LVL133:
|
||
229:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in2 << 2;
|
||
998 .loc 1 229 3 is_stmt 1 view .LVU323
|
||
999 .loc 1 229 10 is_stmt 0 view .LVU324
|
||
1000 0044 43EA8E03 orr r3, r3, lr, lsl #2
|
||
1001 .LVL134:
|
||
230:Core/Src/ADBMS_LL_Driver.c **** newPEC |= (currentPEC & (0x01)) << 1;
|
||
1002 .loc 1 230 3 is_stmt 1 view .LVU325
|
||
1003 .loc 1 230 35 is_stmt 0 view .LVU326
|
||
1004 0048 02F00202 and r2, r2, #2
|
||
1005 .loc 1 230 10 view .LVU327
|
||
1006 004c 1343 orrs r3, r3, r2
|
||
1007 .LVL135:
|
||
ARM GAS /tmp/cc6A08EU.s page 27
|
||
|
||
|
||
1008 .loc 1 230 10 view .LVU328
|
||
1009 004e 9BB2 uxth r3, r3
|
||
1010 .LVL136:
|
||
231:Core/Src/ADBMS_LL_Driver.c **** newPEC |= in0;
|
||
1011 .loc 1 231 3 is_stmt 1 view .LVU329
|
||
232:Core/Src/ADBMS_LL_Driver.c ****
|
||
233:Core/Src/ADBMS_LL_Driver.c **** return newPEC;
|
||
1012 .loc 1 233 3 view .LVU330
|
||
234:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1013 .loc 1 234 1 is_stmt 0 view .LVU331
|
||
1014 0050 41EA0300 orr r0, r1, r3
|
||
1015 .LVL137:
|
||
1016 .loc 1 234 1 view .LVU332
|
||
1017 0054 10BD pop {r4, pc}
|
||
1018 .loc 1 234 1 view .LVU333
|
||
1019 .cfi_endproc
|
||
1020 .LFE132:
|
||
1022 .section .text.mcuAdbmsCSLow,"ax",%progbits
|
||
1023 .align 1
|
||
1024 .global mcuAdbmsCSLow
|
||
1025 .syntax unified
|
||
1026 .thumb
|
||
1027 .thumb_func
|
||
1029 mcuAdbmsCSLow:
|
||
1030 .LFB136:
|
||
235:Core/Src/ADBMS_LL_Driver.c ****
|
||
236:Core/Src/ADBMS_LL_Driver.c **** uint8 writeCMD(uint16 command, uint8* args, uint8 arglen) {
|
||
237:Core/Src/ADBMS_LL_Driver.c **** uint8 ret;
|
||
238:Core/Src/ADBMS_LL_Driver.c **** if (arglen > 0) {
|
||
239:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
|
||
240:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
|
||
241:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
|
||
242:Core/Src/ADBMS_LL_Driver.c ****
|
||
243:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(buffer, 4);
|
||
244:Core/Src/ADBMS_LL_Driver.c ****
|
||
245:Core/Src/ADBMS_LL_Driver.c **** for (uint8 i = 0; i < arglen; i++) {
|
||
246:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
247:Core/Src/ADBMS_LL_Driver.c **** }
|
||
248:Core/Src/ADBMS_LL_Driver.c ****
|
||
249:Core/Src/ADBMS_LL_Driver.c **** calculateDataPEC(&buffer[4], arglen + 2); //DPEC is calculated over the data, not the command,
|
||
250:Core/Src/ADBMS_LL_Driver.c ****
|
||
251:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
252:Core/Src/ADBMS_LL_Driver.c **** ret = mcuSPITransmit(buffer, 6 + arglen);
|
||
253:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
254:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
255:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[4];
|
||
256:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
|
||
257:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
|
||
258:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(buffer, 4);
|
||
259:Core/Src/ADBMS_LL_Driver.c ****
|
||
260:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
261:Core/Src/ADBMS_LL_Driver.c ****
|
||
262:Core/Src/ADBMS_LL_Driver.c **** ret = mcuSPITransmit(buffer, 4);
|
||
263:Core/Src/ADBMS_LL_Driver.c ****
|
||
264:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
265:Core/Src/ADBMS_LL_Driver.c **** }
|
||
266:Core/Src/ADBMS_LL_Driver.c ****
|
||
ARM GAS /tmp/cc6A08EU.s page 28
|
||
|
||
|
||
267:Core/Src/ADBMS_LL_Driver.c **** return ret;
|
||
268:Core/Src/ADBMS_LL_Driver.c **** }
|
||
269:Core/Src/ADBMS_LL_Driver.c ****
|
||
270:Core/Src/ADBMS_LL_Driver.c **** uint8 readCMD(uint16 command, uint8* buffer, uint8 buflen) {
|
||
271:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[6 + buflen];
|
||
272:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[6 + buflen];
|
||
273:Core/Src/ADBMS_LL_Driver.c ****
|
||
274:Core/Src/ADBMS_LL_Driver.c **** txbuffer[0] = (command >> 8) & 0xFF;
|
||
275:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
|
||
276:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
|
||
277:Core/Src/ADBMS_LL_Driver.c ****
|
||
278:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
279:Core/Src/ADBMS_LL_Driver.c **** uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 6 + buflen);
|
||
280:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
281:Core/Src/ADBMS_LL_Driver.c ****
|
||
282:Core/Src/ADBMS_LL_Driver.c **** if (status != 0) {
|
||
283:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
284:Core/Src/ADBMS_LL_Driver.c **** }
|
||
285:Core/Src/ADBMS_LL_Driver.c ****
|
||
286:Core/Src/ADBMS_LL_Driver.c **** for (uint8 i = 0; i < buflen; i++) {
|
||
287:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
|
||
288:Core/Src/ADBMS_LL_Driver.c **** }
|
||
289:Core/Src/ADBMS_LL_Driver.c ****
|
||
290:Core/Src/ADBMS_LL_Driver.c **** [[maybe_unused]] uint8 commandCounter = rxbuffer[sizeof(rxbuffer) - 2] & 0xFC; //command counter
|
||
291:Core/Src/ADBMS_LL_Driver.c **** //TODO: check comm
|
||
292:Core/Src/ADBMS_LL_Driver.c ****
|
||
293:Core/Src/ADBMS_LL_Driver.c **** return checkDataPEC(&rxbuffer[4], buflen + 2);
|
||
294:Core/Src/ADBMS_LL_Driver.c **** }
|
||
295:Core/Src/ADBMS_LL_Driver.c ****
|
||
296:Core/Src/ADBMS_LL_Driver.c **** //check poll command - no data PEC sent back
|
||
297:Core/Src/ADBMS_LL_Driver.c **** uint8 pollCMD(uint16 command) {
|
||
298:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[5] = {};
|
||
299:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[5] = {};
|
||
300:Core/Src/ADBMS_LL_Driver.c ****
|
||
301:Core/Src/ADBMS_LL_Driver.c **** txbuffer[0] = (command >> 8) & 0xFF;
|
||
302:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
|
||
303:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
|
||
304:Core/Src/ADBMS_LL_Driver.c ****
|
||
305:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
306:Core/Src/ADBMS_LL_Driver.c **** uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 5);
|
||
307:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
308:Core/Src/ADBMS_LL_Driver.c ****
|
||
309:Core/Src/ADBMS_LL_Driver.c **** if (status != 0) {
|
||
310:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
311:Core/Src/ADBMS_LL_Driver.c **** }
|
||
312:Core/Src/ADBMS_LL_Driver.c ****
|
||
313:Core/Src/ADBMS_LL_Driver.c **** return rxbuffer[4]; //last byte will be poll response
|
||
314:Core/Src/ADBMS_LL_Driver.c **** }
|
||
315:Core/Src/ADBMS_LL_Driver.c ****
|
||
316:Core/Src/ADBMS_LL_Driver.c **** void mcuAdbmsCSLow() {
|
||
1031 .loc 1 316 22 is_stmt 1 view -0
|
||
1032 .cfi_startproc
|
||
1033 @ args = 0, pretend = 0, frame = 0
|
||
1034 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1035 0000 08B5 push {r3, lr}
|
||
1036 .cfi_def_cfa_offset 8
|
||
1037 .cfi_offset 3, -8
|
||
ARM GAS /tmp/cc6A08EU.s page 29
|
||
|
||
|
||
1038 .cfi_offset 14, -4
|
||
317:Core/Src/ADBMS_LL_Driver.c **** HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_RESET);
|
||
1039 .loc 1 317 3 view .LVU335
|
||
1040 0002 0022 movs r2, #0
|
||
1041 0004 4021 movs r1, #64
|
||
1042 0006 0248 ldr r0, .L73
|
||
1043 0008 FFF7FEFF bl HAL_GPIO_WritePin
|
||
1044 .LVL138:
|
||
318:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1045 .loc 1 318 1 is_stmt 0 view .LVU336
|
||
1046 000c 08BD pop {r3, pc}
|
||
1047 .L74:
|
||
1048 000e 00BF .align 2
|
||
1049 .L73:
|
||
1050 0010 00040048 .word 1207960576
|
||
1051 .cfi_endproc
|
||
1052 .LFE136:
|
||
1054 .section .text.mcuAdbmsCSHigh,"ax",%progbits
|
||
1055 .align 1
|
||
1056 .global mcuAdbmsCSHigh
|
||
1057 .syntax unified
|
||
1058 .thumb
|
||
1059 .thumb_func
|
||
1061 mcuAdbmsCSHigh:
|
||
1062 .LFB137:
|
||
319:Core/Src/ADBMS_LL_Driver.c ****
|
||
320:Core/Src/ADBMS_LL_Driver.c **** void mcuAdbmsCSHigh() {
|
||
1063 .loc 1 320 23 is_stmt 1 view -0
|
||
1064 .cfi_startproc
|
||
1065 @ args = 0, pretend = 0, frame = 0
|
||
1066 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1067 0000 08B5 push {r3, lr}
|
||
1068 .cfi_def_cfa_offset 8
|
||
1069 .cfi_offset 3, -8
|
||
1070 .cfi_offset 14, -4
|
||
321:Core/Src/ADBMS_LL_Driver.c **** HAL_GPIO_WritePin(CSB_GPIO_Port, CSB_Pin, GPIO_PIN_SET);
|
||
1071 .loc 1 321 3 view .LVU338
|
||
1072 0002 0122 movs r2, #1
|
||
1073 0004 4021 movs r1, #64
|
||
1074 0006 0248 ldr r0, .L77
|
||
1075 0008 FFF7FEFF bl HAL_GPIO_WritePin
|
||
1076 .LVL139:
|
||
322:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1077 .loc 1 322 1 is_stmt 0 view .LVU339
|
||
1078 000c 08BD pop {r3, pc}
|
||
1079 .L78:
|
||
1080 000e 00BF .align 2
|
||
1081 .L77:
|
||
1082 0010 00040048 .word 1207960576
|
||
1083 .cfi_endproc
|
||
1084 .LFE137:
|
||
1086 .section .text.adbmsDriverInit,"ax",%progbits
|
||
1087 .align 1
|
||
1088 .global adbmsDriverInit
|
||
1089 .syntax unified
|
||
1090 .thumb
|
||
1091 .thumb_func
|
||
ARM GAS /tmp/cc6A08EU.s page 30
|
||
|
||
|
||
1093 adbmsDriverInit:
|
||
1094 .LVL140:
|
||
1095 .LFB123:
|
||
18:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
1096 .loc 1 18 48 is_stmt 1 view -0
|
||
1097 .cfi_startproc
|
||
1098 @ args = 0, pretend = 0, frame = 0
|
||
1099 @ frame_needed = 0, uses_anonymous_args = 0
|
||
18:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSLow();
|
||
1100 .loc 1 18 48 is_stmt 0 view .LVU341
|
||
1101 0000 10B5 push {r4, lr}
|
||
1102 .cfi_def_cfa_offset 8
|
||
1103 .cfi_offset 4, -8
|
||
1104 .cfi_offset 14, -4
|
||
1105 0002 0446 mov r4, r0
|
||
19:Core/Src/ADBMS_LL_Driver.c **** HAL_Delay(1);
|
||
1106 .loc 1 19 3 is_stmt 1 view .LVU342
|
||
1107 0004 FFF7FEFF bl mcuAdbmsCSLow
|
||
1108 .LVL141:
|
||
20:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1109 .loc 1 20 3 view .LVU343
|
||
1110 0008 0120 movs r0, #1
|
||
1111 000a FFF7FEFF bl HAL_Delay
|
||
1112 .LVL142:
|
||
21:Core/Src/ADBMS_LL_Driver.c **** adbmsspi = hspi;
|
||
1113 .loc 1 21 3 view .LVU344
|
||
1114 000e FFF7FEFF bl mcuAdbmsCSHigh
|
||
1115 .LVL143:
|
||
22:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
1116 .loc 1 22 3 view .LVU345
|
||
22:Core/Src/ADBMS_LL_Driver.c **** return 0;
|
||
1117 .loc 1 22 12 is_stmt 0 view .LVU346
|
||
1118 0012 024B ldr r3, .L81
|
||
1119 0014 1C60 str r4, [r3]
|
||
23:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1120 .loc 1 23 3 is_stmt 1 view .LVU347
|
||
24:Core/Src/ADBMS_LL_Driver.c ****
|
||
1121 .loc 1 24 1 is_stmt 0 view .LVU348
|
||
1122 0016 0020 movs r0, #0
|
||
1123 0018 10BD pop {r4, pc}
|
||
1124 .LVL144:
|
||
1125 .L82:
|
||
24:Core/Src/ADBMS_LL_Driver.c ****
|
||
1126 .loc 1 24 1 view .LVU349
|
||
1127 001a 00BF .align 2
|
||
1128 .L81:
|
||
1129 001c 00000000 .word adbmsspi
|
||
1130 .cfi_endproc
|
||
1131 .LFE123:
|
||
1133 .section .text.mcuSPITransmit,"ax",%progbits
|
||
1134 .align 1
|
||
1135 .global mcuSPITransmit
|
||
1136 .syntax unified
|
||
1137 .thumb
|
||
1138 .thumb_func
|
||
1140 mcuSPITransmit:
|
||
1141 .LVL145:
|
||
ARM GAS /tmp/cc6A08EU.s page 31
|
||
|
||
|
||
1142 .LFB138:
|
||
323:Core/Src/ADBMS_LL_Driver.c ****
|
||
324:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPITransmit(uint8* buffer, uint8 buffersize) {
|
||
1143 .loc 1 324 55 is_stmt 1 view -0
|
||
1144 .cfi_startproc
|
||
1145 @ args = 0, pretend = 0, frame = 8
|
||
1146 @ frame_needed = 1, uses_anonymous_args = 0
|
||
1147 .loc 1 324 55 is_stmt 0 view .LVU351
|
||
1148 0000 90B5 push {r4, r7, lr}
|
||
1149 .cfi_def_cfa_offset 12
|
||
1150 .cfi_offset 4, -12
|
||
1151 .cfi_offset 7, -8
|
||
1152 .cfi_offset 14, -4
|
||
1153 0002 85B0 sub sp, sp, #20
|
||
1154 .cfi_def_cfa_offset 32
|
||
1155 0004 02AF add r7, sp, #8
|
||
1156 .cfi_def_cfa 7, 24
|
||
1157 0006 0B46 mov r3, r1
|
||
325:Core/Src/ADBMS_LL_Driver.c **** HAL_StatusTypeDef status;
|
||
1158 .loc 1 325 3 is_stmt 1 view .LVU352
|
||
326:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuf[buffersize];
|
||
1159 .loc 1 326 3 view .LVU353
|
||
1160 .LVL146:
|
||
1161 .loc 1 326 9 is_stmt 0 view .LVU354
|
||
1162 0008 CA1D adds r2, r1, #7
|
||
1163 000a 02F4FC72 and r2, r2, #504
|
||
1164 000e ADEB020D sub sp, sp, r2
|
||
1165 0012 6A46 mov r2, sp
|
||
1166 .LVL147:
|
||
327:Core/Src/ADBMS_LL_Driver.c **** status = HAL_SPI_TransmitReceive(adbmsspi, buffer, rxbuf, buffersize,
|
||
1167 .loc 1 327 3 is_stmt 1 view .LVU355
|
||
1168 .loc 1 327 12 is_stmt 0 view .LVU356
|
||
1169 0014 094C ldr r4, .L85
|
||
1170 0016 6421 movs r1, #100
|
||
1171 .LVL148:
|
||
1172 .loc 1 327 12 view .LVU357
|
||
1173 0018 42F8081B str r1, [r2], #8
|
||
1174 .LVL149:
|
||
1175 .loc 1 327 12 view .LVU358
|
||
1176 001c 0146 mov r1, r0
|
||
1177 001e 2068 ldr r0, [r4]
|
||
1178 .LVL150:
|
||
1179 .loc 1 327 12 view .LVU359
|
||
1180 0020 FFF7FEFF bl HAL_SPI_TransmitReceive
|
||
1181 .LVL151:
|
||
328:Core/Src/ADBMS_LL_Driver.c **** ADBMS_SPI_TIMEOUT);
|
||
329:Core/Src/ADBMS_LL_Driver.c **** __HAL_SPI_CLEAR_OVRFLAG(adbmsspi);
|
||
1182 .loc 1 329 3 is_stmt 1 view .LVU360
|
||
1183 .LBB18:
|
||
1184 .loc 1 329 3 view .LVU361
|
||
1185 0024 0023 movs r3, #0
|
||
1186 0026 7B60 str r3, [r7, #4]
|
||
1187 .loc 1 329 3 view .LVU362
|
||
1188 0028 2368 ldr r3, [r4]
|
||
1189 002a 1B68 ldr r3, [r3]
|
||
1190 002c DA68 ldr r2, [r3, #12]
|
||
1191 002e 7A60 str r2, [r7, #4]
|
||
ARM GAS /tmp/cc6A08EU.s page 32
|
||
|
||
|
||
1192 .loc 1 329 3 view .LVU363
|
||
1193 0030 9B68 ldr r3, [r3, #8]
|
||
1194 0032 7B60 str r3, [r7, #4]
|
||
1195 .loc 1 329 3 view .LVU364
|
||
1196 0034 7B68 ldr r3, [r7, #4]
|
||
1197 .LBE18:
|
||
1198 .loc 1 329 3 view .LVU365
|
||
330:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1199 .loc 1 330 3 view .LVU366
|
||
331:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1200 .loc 1 331 1 is_stmt 0 view .LVU367
|
||
1201 0036 0C37 adds r7, r7, #12
|
||
1202 .cfi_def_cfa_offset 12
|
||
1203 0038 BD46 mov sp, r7
|
||
1204 .cfi_def_cfa_register 13
|
||
1205 .LVL152:
|
||
1206 .loc 1 331 1 view .LVU368
|
||
1207 @ sp needed
|
||
1208 003a 90BD pop {r4, r7, pc}
|
||
1209 .L86:
|
||
1210 .align 2
|
||
1211 .L85:
|
||
1212 003c 00000000 .word adbmsspi
|
||
1213 .cfi_endproc
|
||
1214 .LFE138:
|
||
1216 .section .text.writeCMD,"ax",%progbits
|
||
1217 .align 1
|
||
1218 .global writeCMD
|
||
1219 .syntax unified
|
||
1220 .thumb
|
||
1221 .thumb_func
|
||
1223 writeCMD:
|
||
1224 .LVL153:
|
||
1225 .LFB133:
|
||
236:Core/Src/ADBMS_LL_Driver.c **** uint8 ret;
|
||
1226 .loc 1 236 59 is_stmt 1 view -0
|
||
1227 .cfi_startproc
|
||
1228 @ args = 0, pretend = 0, frame = 8
|
||
1229 @ frame_needed = 1, uses_anonymous_args = 0
|
||
236:Core/Src/ADBMS_LL_Driver.c **** uint8 ret;
|
||
1230 .loc 1 236 59 is_stmt 0 view .LVU370
|
||
1231 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr}
|
||
1232 .cfi_def_cfa_offset 24
|
||
1233 .cfi_offset 4, -24
|
||
1234 .cfi_offset 5, -20
|
||
1235 .cfi_offset 6, -16
|
||
1236 .cfi_offset 7, -12
|
||
1237 .cfi_offset 8, -8
|
||
1238 .cfi_offset 14, -4
|
||
1239 0004 82B0 sub sp, sp, #8
|
||
1240 .cfi_def_cfa_offset 32
|
||
1241 0006 00AF add r7, sp, #0
|
||
1242 .cfi_def_cfa_register 7
|
||
237:Core/Src/ADBMS_LL_Driver.c **** if (arglen > 0) {
|
||
1243 .loc 1 237 3 is_stmt 1 view .LVU371
|
||
238:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
|
||
1244 .loc 1 238 3 view .LVU372
|
||
ARM GAS /tmp/cc6A08EU.s page 33
|
||
|
||
|
||
238:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
|
||
1245 .loc 1 238 6 is_stmt 0 view .LVU373
|
||
1246 0008 82B3 cbz r2, .L88
|
||
1247 000a 0D46 mov r5, r1
|
||
1248 000c 1446 mov r4, r2
|
||
1249 .LBB19:
|
||
238:Core/Src/ADBMS_LL_Driver.c **** uint8 buffer[6 + arglen]; //command + PEC (2 bytes) + data + DPEC (2 bytes)
|
||
1250 .loc 1 238 19 discriminator 1 view .LVU374
|
||
1251 000e E846 mov r8, sp
|
||
239:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
|
||
1252 .loc 1 239 5 is_stmt 1 view .LVU375
|
||
1253 .LVL154:
|
||
239:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
|
||
1254 .loc 1 239 11 is_stmt 0 view .LVU376
|
||
1255 0010 02F10D03 add r3, r2, #13
|
||
1256 0014 03F4FC73 and r3, r3, #504
|
||
1257 0018 ADEB030D sub sp, sp, r3
|
||
1258 001c 6E46 mov r6, sp
|
||
1259 .LVL155:
|
||
240:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
|
||
1260 .loc 1 240 5 is_stmt 1 view .LVU377
|
||
240:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
|
||
1261 .loc 1 240 15 is_stmt 0 view .LVU378
|
||
1262 001e 030A lsrs r3, r0, #8
|
||
1263 0020 8DF80030 strb r3, [sp]
|
||
241:Core/Src/ADBMS_LL_Driver.c ****
|
||
1264 .loc 1 241 5 is_stmt 1 view .LVU379
|
||
241:Core/Src/ADBMS_LL_Driver.c ****
|
||
1265 .loc 1 241 15 is_stmt 0 view .LVU380
|
||
1266 0024 8DF80100 strb r0, [sp, #1]
|
||
243:Core/Src/ADBMS_LL_Driver.c ****
|
||
1267 .loc 1 243 5 is_stmt 1 view .LVU381
|
||
1268 0028 0421 movs r1, #4
|
||
1269 .LVL156:
|
||
243:Core/Src/ADBMS_LL_Driver.c ****
|
||
1270 .loc 1 243 5 is_stmt 0 view .LVU382
|
||
1271 002a 6846 mov r0, sp
|
||
1272 .LVL157:
|
||
243:Core/Src/ADBMS_LL_Driver.c ****
|
||
1273 .loc 1 243 5 view .LVU383
|
||
1274 002c FFF7FEFF bl calculateCommandPEC
|
||
1275 .LVL158:
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1276 .loc 1 245 5 is_stmt 1 view .LVU384
|
||
1277 .LBB20:
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1278 .loc 1 245 10 view .LVU385
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1279 .loc 1 245 16 is_stmt 0 view .LVU386
|
||
1280 0030 0023 movs r3, #0
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1281 .loc 1 245 5 view .LVU387
|
||
1282 0032 04E0 b .L89
|
||
1283 .LVL159:
|
||
1284 .L90:
|
||
246:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1285 .loc 1 246 7 is_stmt 1 view .LVU388
|
||
ARM GAS /tmp/cc6A08EU.s page 34
|
||
|
||
|
||
246:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1286 .loc 1 246 16 is_stmt 0 view .LVU389
|
||
1287 0034 1A1D adds r2, r3, #4
|
||
246:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1288 .loc 1 246 27 view .LVU390
|
||
1289 0036 E95C ldrb r1, [r5, r3] @ zero_extendqisi2
|
||
246:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1290 .loc 1 246 21 view .LVU391
|
||
1291 0038 B154 strb r1, [r6, r2]
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1292 .loc 1 245 36 is_stmt 1 discriminator 3 view .LVU392
|
||
1293 003a 0133 adds r3, r3, #1
|
||
1294 .LVL160:
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1295 .loc 1 245 36 is_stmt 0 discriminator 3 view .LVU393
|
||
1296 003c DBB2 uxtb r3, r3
|
||
1297 .LVL161:
|
||
1298 .L89:
|
||
245:Core/Src/ADBMS_LL_Driver.c **** buffer[4 + i] = args[i];
|
||
1299 .loc 1 245 25 is_stmt 1 discriminator 1 view .LVU394
|
||
1300 003e A342 cmp r3, r4
|
||
1301 0040 F8D3 bcc .L90
|
||
1302 .LBE20:
|
||
249:Core/Src/ADBMS_LL_Driver.c ****
|
||
1303 .loc 1 249 5 view .LVU395
|
||
1304 0042 A11C adds r1, r4, #2
|
||
1305 0044 C9B2 uxtb r1, r1
|
||
1306 0046 301D adds r0, r6, #4
|
||
1307 0048 FFF7FEFF bl calculateDataPEC
|
||
1308 .LVL162:
|
||
251:Core/Src/ADBMS_LL_Driver.c **** ret = mcuSPITransmit(buffer, 6 + arglen);
|
||
1309 .loc 1 251 5 view .LVU396
|
||
1310 004c FFF7FEFF bl mcuAdbmsCSLow
|
||
1311 .LVL163:
|
||
252:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1312 .loc 1 252 5 view .LVU397
|
||
252:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1313 .loc 1 252 11 is_stmt 0 view .LVU398
|
||
1314 0050 A11D adds r1, r4, #6
|
||
1315 0052 C9B2 uxtb r1, r1
|
||
1316 0054 3046 mov r0, r6
|
||
1317 0056 FFF7FEFF bl mcuSPITransmit
|
||
1318 .LVL164:
|
||
1319 005a 0446 mov r4, r0
|
||
1320 .LVL165:
|
||
253:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
1321 .loc 1 253 5 is_stmt 1 view .LVU399
|
||
1322 005c FFF7FEFF bl mcuAdbmsCSHigh
|
||
1323 .LVL166:
|
||
1324 0060 C546 mov sp, r8
|
||
1325 .LVL167:
|
||
1326 .L91:
|
||
253:Core/Src/ADBMS_LL_Driver.c **** } else {
|
||
1327 .loc 1 253 5 is_stmt 0 view .LVU400
|
||
1328 .LBE19:
|
||
267:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1329 .loc 1 267 3 is_stmt 1 view .LVU401
|
||
ARM GAS /tmp/cc6A08EU.s page 35
|
||
|
||
|
||
268:Core/Src/ADBMS_LL_Driver.c ****
|
||
1330 .loc 1 268 1 is_stmt 0 view .LVU402
|
||
1331 0062 2046 mov r0, r4
|
||
1332 0064 0837 adds r7, r7, #8
|
||
1333 .cfi_remember_state
|
||
1334 .cfi_def_cfa_offset 24
|
||
1335 0066 BD46 mov sp, r7
|
||
1336 .cfi_def_cfa_register 13
|
||
1337 @ sp needed
|
||
1338 0068 BDE8F081 pop {r4, r5, r6, r7, r8, pc}
|
||
1339 .LVL168:
|
||
1340 .L88:
|
||
1341 .cfi_restore_state
|
||
1342 .LBB21:
|
||
255:Core/Src/ADBMS_LL_Driver.c **** buffer[0] = (command >> 8) & 0xFF;
|
||
1343 .loc 1 255 5 is_stmt 1 view .LVU403
|
||
256:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
|
||
1344 .loc 1 256 5 view .LVU404
|
||
256:Core/Src/ADBMS_LL_Driver.c **** buffer[1] = (command) & 0xFF;
|
||
1345 .loc 1 256 15 is_stmt 0 view .LVU405
|
||
1346 006c 030A lsrs r3, r0, #8
|
||
1347 006e 3B71 strb r3, [r7, #4]
|
||
257:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(buffer, 4);
|
||
1348 .loc 1 257 5 is_stmt 1 view .LVU406
|
||
257:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(buffer, 4);
|
||
1349 .loc 1 257 15 is_stmt 0 view .LVU407
|
||
1350 0070 7871 strb r0, [r7, #5]
|
||
258:Core/Src/ADBMS_LL_Driver.c ****
|
||
1351 .loc 1 258 5 is_stmt 1 view .LVU408
|
||
1352 0072 0421 movs r1, #4
|
||
1353 .LVL169:
|
||
258:Core/Src/ADBMS_LL_Driver.c ****
|
||
1354 .loc 1 258 5 is_stmt 0 view .LVU409
|
||
1355 0074 7818 adds r0, r7, r1
|
||
1356 .LVL170:
|
||
258:Core/Src/ADBMS_LL_Driver.c ****
|
||
1357 .loc 1 258 5 view .LVU410
|
||
1358 0076 FFF7FEFF bl calculateCommandPEC
|
||
1359 .LVL171:
|
||
260:Core/Src/ADBMS_LL_Driver.c ****
|
||
1360 .loc 1 260 5 is_stmt 1 view .LVU411
|
||
1361 007a FFF7FEFF bl mcuAdbmsCSLow
|
||
1362 .LVL172:
|
||
262:Core/Src/ADBMS_LL_Driver.c ****
|
||
1363 .loc 1 262 5 view .LVU412
|
||
262:Core/Src/ADBMS_LL_Driver.c ****
|
||
1364 .loc 1 262 11 is_stmt 0 view .LVU413
|
||
1365 007e 0421 movs r1, #4
|
||
1366 0080 7818 adds r0, r7, r1
|
||
1367 0082 FFF7FEFF bl mcuSPITransmit
|
||
1368 .LVL173:
|
||
1369 0086 0446 mov r4, r0
|
||
1370 .LVL174:
|
||
264:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1371 .loc 1 264 5 is_stmt 1 view .LVU414
|
||
1372 0088 FFF7FEFF bl mcuAdbmsCSHigh
|
||
1373 .LVL175:
|
||
ARM GAS /tmp/cc6A08EU.s page 36
|
||
|
||
|
||
1374 008c E9E7 b .L91
|
||
1375 .LBE21:
|
||
1376 .cfi_endproc
|
||
1377 .LFE133:
|
||
1379 .section .text.mcuSPIReceive,"ax",%progbits
|
||
1380 .align 1
|
||
1381 .global mcuSPIReceive
|
||
1382 .syntax unified
|
||
1383 .thumb
|
||
1384 .thumb_func
|
||
1386 mcuSPIReceive:
|
||
1387 .LVL176:
|
||
1388 .LFB139:
|
||
332:Core/Src/ADBMS_LL_Driver.c ****
|
||
333:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPIReceive(uint8* buffer, uint8 buffersize) {
|
||
1389 .loc 1 333 54 view -0
|
||
1390 .cfi_startproc
|
||
1391 @ args = 0, pretend = 0, frame = 0
|
||
1392 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1393 .loc 1 333 54 is_stmt 0 view .LVU416
|
||
1394 0000 08B5 push {r3, lr}
|
||
1395 .cfi_def_cfa_offset 8
|
||
1396 .cfi_offset 3, -8
|
||
1397 .cfi_offset 14, -4
|
||
1398 0002 0A46 mov r2, r1
|
||
334:Core/Src/ADBMS_LL_Driver.c **** HAL_StatusTypeDef status;
|
||
1399 .loc 1 334 3 is_stmt 1 view .LVU417
|
||
335:Core/Src/ADBMS_LL_Driver.c **** status = HAL_SPI_Receive(adbmsspi, buffer, buffersize, ADBMS_SPI_TIMEOUT);
|
||
1400 .loc 1 335 3 view .LVU418
|
||
1401 .loc 1 335 12 is_stmt 0 view .LVU419
|
||
1402 0004 6423 movs r3, #100
|
||
1403 0006 0146 mov r1, r0
|
||
1404 .LVL177:
|
||
1405 .loc 1 335 12 view .LVU420
|
||
1406 0008 0248 ldr r0, .L95
|
||
1407 .LVL178:
|
||
1408 .loc 1 335 12 view .LVU421
|
||
1409 000a 0068 ldr r0, [r0]
|
||
1410 000c FFF7FEFF bl HAL_SPI_Receive
|
||
1411 .LVL179:
|
||
336:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1412 .loc 1 336 3 is_stmt 1 view .LVU422
|
||
337:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1413 .loc 1 337 1 is_stmt 0 view .LVU423
|
||
1414 0010 08BD pop {r3, pc}
|
||
1415 .L96:
|
||
1416 0012 00BF .align 2
|
||
1417 .L95:
|
||
1418 0014 00000000 .word adbmsspi
|
||
1419 .cfi_endproc
|
||
1420 .LFE139:
|
||
1422 .section .text.mcuSPITransmitReceive,"ax",%progbits
|
||
1423 .align 1
|
||
1424 .global mcuSPITransmitReceive
|
||
1425 .syntax unified
|
||
1426 .thumb
|
||
1427 .thumb_func
|
||
ARM GAS /tmp/cc6A08EU.s page 37
|
||
|
||
|
||
1429 mcuSPITransmitReceive:
|
||
1430 .LVL180:
|
||
1431 .LFB140:
|
||
338:Core/Src/ADBMS_LL_Driver.c ****
|
||
339:Core/Src/ADBMS_LL_Driver.c **** uint8 mcuSPITransmitReceive(uint8* rxbuffer, uint8* txbuffer,
|
||
340:Core/Src/ADBMS_LL_Driver.c **** uint8 buffersize) {
|
||
1432 .loc 1 340 47 is_stmt 1 view -0
|
||
1433 .cfi_startproc
|
||
1434 @ args = 0, pretend = 0, frame = 0
|
||
1435 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1436 .loc 1 340 47 is_stmt 0 view .LVU425
|
||
1437 0000 00B5 push {lr}
|
||
1438 .cfi_def_cfa_offset 4
|
||
1439 .cfi_offset 14, -4
|
||
1440 0002 83B0 sub sp, sp, #12
|
||
1441 .cfi_def_cfa_offset 16
|
||
1442 0004 1346 mov r3, r2
|
||
341:Core/Src/ADBMS_LL_Driver.c **** HAL_StatusTypeDef status;
|
||
1443 .loc 1 341 3 is_stmt 1 view .LVU426
|
||
342:Core/Src/ADBMS_LL_Driver.c **** status = HAL_SPI_TransmitReceive(adbmsspi, txbuffer, rxbuffer, buffersize,
|
||
1444 .loc 1 342 3 view .LVU427
|
||
1445 .loc 1 342 12 is_stmt 0 view .LVU428
|
||
1446 0006 6422 movs r2, #100
|
||
1447 .LVL181:
|
||
1448 .loc 1 342 12 view .LVU429
|
||
1449 0008 0092 str r2, [sp]
|
||
1450 000a 0246 mov r2, r0
|
||
1451 000c 0348 ldr r0, .L99
|
||
1452 .LVL182:
|
||
1453 .loc 1 342 12 view .LVU430
|
||
1454 000e 0068 ldr r0, [r0]
|
||
1455 0010 FFF7FEFF bl HAL_SPI_TransmitReceive
|
||
1456 .LVL183:
|
||
343:Core/Src/ADBMS_LL_Driver.c **** ADBMS_SPI_TIMEOUT);
|
||
344:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1457 .loc 1 344 3 is_stmt 1 view .LVU431
|
||
345:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1458 .loc 1 345 1 is_stmt 0 view .LVU432
|
||
1459 0014 03B0 add sp, sp, #12
|
||
1460 .cfi_def_cfa_offset 4
|
||
1461 @ sp needed
|
||
1462 0016 5DF804FB ldr pc, [sp], #4
|
||
1463 .L100:
|
||
1464 001a 00BF .align 2
|
||
1465 .L99:
|
||
1466 001c 00000000 .word adbmsspi
|
||
1467 .cfi_endproc
|
||
1468 .LFE140:
|
||
1470 .section .text.readCMD,"ax",%progbits
|
||
1471 .align 1
|
||
1472 .global readCMD
|
||
1473 .syntax unified
|
||
1474 .thumb
|
||
1475 .thumb_func
|
||
1477 readCMD:
|
||
1478 .LVL184:
|
||
1479 .LFB134:
|
||
ARM GAS /tmp/cc6A08EU.s page 38
|
||
|
||
|
||
270:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[6 + buflen];
|
||
1480 .loc 1 270 60 is_stmt 1 view -0
|
||
1481 .cfi_startproc
|
||
1482 @ args = 0, pretend = 0, frame = 0
|
||
1483 @ frame_needed = 1, uses_anonymous_args = 0
|
||
270:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[6 + buflen];
|
||
1484 .loc 1 270 60 is_stmt 0 view .LVU434
|
||
1485 0000 2DE9F843 push {r3, r4, r5, r6, r7, r8, r9, lr}
|
||
1486 .cfi_def_cfa_offset 32
|
||
1487 .cfi_offset 3, -32
|
||
1488 .cfi_offset 4, -28
|
||
1489 .cfi_offset 5, -24
|
||
1490 .cfi_offset 6, -20
|
||
1491 .cfi_offset 7, -16
|
||
1492 .cfi_offset 8, -12
|
||
1493 .cfi_offset 9, -8
|
||
1494 .cfi_offset 14, -4
|
||
1495 0004 00AF add r7, sp, #0
|
||
1496 .cfi_def_cfa_register 7
|
||
1497 0006 8846 mov r8, r1
|
||
1498 0008 1546 mov r5, r2
|
||
271:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[6 + buflen];
|
||
1499 .loc 1 271 3 is_stmt 1 view .LVU435
|
||
271:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[6 + buflen];
|
||
1500 .loc 1 271 20 is_stmt 0 view .LVU436
|
||
1501 000a 02F10609 add r9, r2, #6
|
||
1502 .LVL185:
|
||
271:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[6 + buflen];
|
||
1503 .loc 1 271 9 view .LVU437
|
||
1504 000e 02F10D03 add r3, r2, #13
|
||
1505 0012 03F4FC73 and r3, r3, #504
|
||
1506 0016 ADEB030D sub sp, sp, r3
|
||
1507 001a 6C46 mov r4, sp
|
||
1508 .LVL186:
|
||
272:Core/Src/ADBMS_LL_Driver.c ****
|
||
1509 .loc 1 272 3 is_stmt 1 view .LVU438
|
||
272:Core/Src/ADBMS_LL_Driver.c ****
|
||
1510 .loc 1 272 9 is_stmt 0 view .LVU439
|
||
1511 001c ADEB030D sub sp, sp, r3
|
||
1512 0020 6E46 mov r6, sp
|
||
1513 .LVL187:
|
||
274:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
|
||
1514 .loc 1 274 3 is_stmt 1 view .LVU440
|
||
274:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
|
||
1515 .loc 1 274 15 is_stmt 0 view .LVU441
|
||
1516 0022 030A lsrs r3, r0, #8
|
||
1517 0024 2370 strb r3, [r4]
|
||
275:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
|
||
1518 .loc 1 275 3 is_stmt 1 view .LVU442
|
||
275:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
|
||
1519 .loc 1 275 15 is_stmt 0 view .LVU443
|
||
1520 0026 6070 strb r0, [r4, #1]
|
||
276:Core/Src/ADBMS_LL_Driver.c ****
|
||
1521 .loc 1 276 3 is_stmt 1 view .LVU444
|
||
1522 0028 0421 movs r1, #4
|
||
1523 .LVL188:
|
||
276:Core/Src/ADBMS_LL_Driver.c ****
|
||
ARM GAS /tmp/cc6A08EU.s page 39
|
||
|
||
|
||
1524 .loc 1 276 3 is_stmt 0 view .LVU445
|
||
1525 002a 2046 mov r0, r4
|
||
1526 .LVL189:
|
||
276:Core/Src/ADBMS_LL_Driver.c ****
|
||
1527 .loc 1 276 3 view .LVU446
|
||
1528 002c FFF7FEFF bl calculateCommandPEC
|
||
1529 .LVL190:
|
||
278:Core/Src/ADBMS_LL_Driver.c **** uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 6 + buflen);
|
||
1530 .loc 1 278 3 is_stmt 1 view .LVU447
|
||
1531 0030 FFF7FEFF bl mcuAdbmsCSLow
|
||
1532 .LVL191:
|
||
279:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1533 .loc 1 279 3 view .LVU448
|
||
279:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1534 .loc 1 279 18 is_stmt 0 view .LVU449
|
||
1535 0034 5FFA89F2 uxtb r2, r9
|
||
1536 0038 2146 mov r1, r4
|
||
1537 003a 6846 mov r0, sp
|
||
1538 003c FFF7FEFF bl mcuSPITransmitReceive
|
||
1539 .LVL192:
|
||
1540 0040 0446 mov r4, r0
|
||
1541 .LVL193:
|
||
280:Core/Src/ADBMS_LL_Driver.c ****
|
||
1542 .loc 1 280 3 is_stmt 1 view .LVU450
|
||
1543 0042 FFF7FEFF bl mcuAdbmsCSHigh
|
||
1544 .LVL194:
|
||
282:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1545 .loc 1 282 3 view .LVU451
|
||
282:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1546 .loc 1 282 6 is_stmt 0 view .LVU452
|
||
1547 0046 34B1 cbz r4, .L103
|
||
1548 0048 0DE0 b .L102
|
||
1549 .LVL195:
|
||
1550 .L104:
|
||
1551 .LBB22:
|
||
287:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1552 .loc 1 287 5 is_stmt 1 view .LVU453
|
||
287:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1553 .loc 1 287 28 is_stmt 0 view .LVU454
|
||
1554 004a 231D adds r3, r4, #4
|
||
287:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1555 .loc 1 287 25 view .LVU455
|
||
1556 004c F35C ldrb r3, [r6, r3] @ zero_extendqisi2
|
||
287:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1557 .loc 1 287 15 view .LVU456
|
||
1558 004e 08F80430 strb r3, [r8, r4]
|
||
286:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
|
||
1559 .loc 1 286 34 is_stmt 1 discriminator 3 view .LVU457
|
||
1560 0052 0134 adds r4, r4, #1
|
||
1561 .LVL196:
|
||
286:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
|
||
1562 .loc 1 286 34 is_stmt 0 discriminator 3 view .LVU458
|
||
1563 0054 E4B2 uxtb r4, r4
|
||
1564 .LVL197:
|
||
1565 .L103:
|
||
286:Core/Src/ADBMS_LL_Driver.c **** buffer[i] = rxbuffer[i + 4];
|
||
1566 .loc 1 286 23 is_stmt 1 discriminator 1 view .LVU459
|
||
ARM GAS /tmp/cc6A08EU.s page 40
|
||
|
||
|
||
1567 0056 AC42 cmp r4, r5
|
||
1568 0058 F7D3 bcc .L104
|
||
1569 .LBE22:
|
||
290:Core/Src/ADBMS_LL_Driver.c **** //TODO: check comm
|
||
1570 .loc 1 290 20 view .LVU460
|
||
1571 .LVL198:
|
||
293:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1572 .loc 1 293 3 view .LVU461
|
||
293:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1573 .loc 1 293 10 is_stmt 0 view .LVU462
|
||
1574 005a A91C adds r1, r5, #2
|
||
1575 005c C9B2 uxtb r1, r1
|
||
1576 005e 301D adds r0, r6, #4
|
||
1577 0060 FFF7FEFF bl checkDataPEC
|
||
1578 .LVL199:
|
||
293:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1579 .loc 1 293 10 view .LVU463
|
||
1580 0064 0446 mov r4, r0
|
||
1581 .LVL200:
|
||
1582 .L102:
|
||
294:Core/Src/ADBMS_LL_Driver.c ****
|
||
1583 .loc 1 294 1 view .LVU464
|
||
1584 0066 2046 mov r0, r4
|
||
1585 0068 BD46 mov sp, r7
|
||
1586 .cfi_def_cfa_register 13
|
||
1587 @ sp needed
|
||
1588 006a BDE8F883 pop {r3, r4, r5, r6, r7, r8, r9, pc}
|
||
294:Core/Src/ADBMS_LL_Driver.c ****
|
||
1589 .loc 1 294 1 view .LVU465
|
||
1590 .cfi_endproc
|
||
1591 .LFE134:
|
||
1593 .section .text.pollCMD,"ax",%progbits
|
||
1594 .align 1
|
||
1595 .global pollCMD
|
||
1596 .syntax unified
|
||
1597 .thumb
|
||
1598 .thumb_func
|
||
1600 pollCMD:
|
||
1601 .LVL201:
|
||
1602 .LFB135:
|
||
297:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[5] = {};
|
||
1603 .loc 1 297 31 is_stmt 1 view -0
|
||
1604 .cfi_startproc
|
||
1605 @ args = 0, pretend = 0, frame = 16
|
||
1606 @ frame_needed = 0, uses_anonymous_args = 0
|
||
297:Core/Src/ADBMS_LL_Driver.c **** uint8 txbuffer[5] = {};
|
||
1607 .loc 1 297 31 is_stmt 0 view .LVU467
|
||
1608 0000 10B5 push {r4, lr}
|
||
1609 .cfi_def_cfa_offset 8
|
||
1610 .cfi_offset 4, -8
|
||
1611 .cfi_offset 14, -4
|
||
1612 0002 84B0 sub sp, sp, #16
|
||
1613 .cfi_def_cfa_offset 24
|
||
298:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[5] = {};
|
||
1614 .loc 1 298 3 is_stmt 1 view .LVU468
|
||
298:Core/Src/ADBMS_LL_Driver.c **** uint8 rxbuffer[5] = {};
|
||
1615 .loc 1 298 9 is_stmt 0 view .LVU469
|
||
ARM GAS /tmp/cc6A08EU.s page 41
|
||
|
||
|
||
1616 0004 0023 movs r3, #0
|
||
1617 0006 0293 str r3, [sp, #8]
|
||
1618 0008 8DF80C30 strb r3, [sp, #12]
|
||
299:Core/Src/ADBMS_LL_Driver.c ****
|
||
1619 .loc 1 299 3 is_stmt 1 view .LVU470
|
||
299:Core/Src/ADBMS_LL_Driver.c ****
|
||
1620 .loc 1 299 9 is_stmt 0 view .LVU471
|
||
1621 000c 0093 str r3, [sp]
|
||
1622 000e 8DF80430 strb r3, [sp, #4]
|
||
301:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
|
||
1623 .loc 1 301 3 is_stmt 1 view .LVU472
|
||
301:Core/Src/ADBMS_LL_Driver.c **** txbuffer[1] = (command)&0xFF;
|
||
1624 .loc 1 301 15 is_stmt 0 view .LVU473
|
||
1625 0012 030A lsrs r3, r0, #8
|
||
1626 0014 8DF80830 strb r3, [sp, #8]
|
||
302:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
|
||
1627 .loc 1 302 3 is_stmt 1 view .LVU474
|
||
302:Core/Src/ADBMS_LL_Driver.c **** calculateCommandPEC(txbuffer, 4);
|
||
1628 .loc 1 302 15 is_stmt 0 view .LVU475
|
||
1629 0018 8DF80900 strb r0, [sp, #9]
|
||
303:Core/Src/ADBMS_LL_Driver.c ****
|
||
1630 .loc 1 303 3 is_stmt 1 view .LVU476
|
||
1631 001c 0421 movs r1, #4
|
||
1632 001e 02A8 add r0, sp, #8
|
||
1633 .LVL202:
|
||
303:Core/Src/ADBMS_LL_Driver.c ****
|
||
1634 .loc 1 303 3 is_stmt 0 view .LVU477
|
||
1635 0020 FFF7FEFF bl calculateCommandPEC
|
||
1636 .LVL203:
|
||
305:Core/Src/ADBMS_LL_Driver.c **** uint8 status = mcuSPITransmitReceive(rxbuffer, txbuffer, 5);
|
||
1637 .loc 1 305 3 is_stmt 1 view .LVU478
|
||
1638 0024 FFF7FEFF bl mcuAdbmsCSLow
|
||
1639 .LVL204:
|
||
306:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1640 .loc 1 306 3 view .LVU479
|
||
306:Core/Src/ADBMS_LL_Driver.c **** mcuAdbmsCSHigh();
|
||
1641 .loc 1 306 18 is_stmt 0 view .LVU480
|
||
1642 0028 0522 movs r2, #5
|
||
1643 002a 02A9 add r1, sp, #8
|
||
1644 002c 6846 mov r0, sp
|
||
1645 002e FFF7FEFF bl mcuSPITransmitReceive
|
||
1646 .LVL205:
|
||
1647 0032 0446 mov r4, r0
|
||
1648 .LVL206:
|
||
307:Core/Src/ADBMS_LL_Driver.c ****
|
||
1649 .loc 1 307 3 is_stmt 1 view .LVU481
|
||
1650 0034 FFF7FEFF bl mcuAdbmsCSHigh
|
||
1651 .LVL207:
|
||
309:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1652 .loc 1 309 3 view .LVU482
|
||
309:Core/Src/ADBMS_LL_Driver.c **** return status;
|
||
1653 .loc 1 309 6 is_stmt 0 view .LVU483
|
||
1654 0038 0CB9 cbnz r4, .L107
|
||
313:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1655 .loc 1 313 3 is_stmt 1 view .LVU484
|
||
313:Core/Src/ADBMS_LL_Driver.c **** }
|
||
1656 .loc 1 313 18 is_stmt 0 view .LVU485
|
||
ARM GAS /tmp/cc6A08EU.s page 42
|
||
|
||
|
||
1657 003a 9DF80440 ldrb r4, [sp, #4] @ zero_extendqisi2
|
||
1658 .LVL208:
|
||
1659 .L107:
|
||
314:Core/Src/ADBMS_LL_Driver.c ****
|
||
1660 .loc 1 314 1 view .LVU486
|
||
1661 003e 2046 mov r0, r4
|
||
1662 0040 04B0 add sp, sp, #16
|
||
1663 .cfi_def_cfa_offset 8
|
||
1664 @ sp needed
|
||
1665 0042 10BD pop {r4, pc}
|
||
1666 .cfi_endproc
|
||
1667 .LFE135:
|
||
1669 .section .text.mcuDelay,"ax",%progbits
|
||
1670 .align 1
|
||
1671 .global mcuDelay
|
||
1672 .syntax unified
|
||
1673 .thumb
|
||
1674 .thumb_func
|
||
1676 mcuDelay:
|
||
1677 .LVL209:
|
||
1678 .LFB141:
|
||
346:Core/Src/ADBMS_LL_Driver.c ****
|
||
347:Core/Src/ADBMS_LL_Driver.c **** inline void mcuDelay(uint16 delay) { HAL_Delay(delay); }
|
||
1679 .loc 1 347 36 is_stmt 1 view -0
|
||
1680 .cfi_startproc
|
||
1681 @ args = 0, pretend = 0, frame = 0
|
||
1682 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1683 .loc 1 347 36 is_stmt 0 view .LVU488
|
||
1684 0000 08B5 push {r3, lr}
|
||
1685 .cfi_def_cfa_offset 8
|
||
1686 .cfi_offset 3, -8
|
||
1687 .cfi_offset 14, -4
|
||
1688 .loc 1 347 38 is_stmt 1 view .LVU489
|
||
1689 0002 FFF7FEFF bl HAL_Delay
|
||
1690 .LVL210:
|
||
1691 .loc 1 347 56 is_stmt 0 view .LVU490
|
||
1692 0006 08BD pop {r3, pc}
|
||
1693 .cfi_endproc
|
||
1694 .LFE141:
|
||
1696 .global adbmsspi
|
||
1697 .section .bss.adbmsspi,"aw",%nobits
|
||
1698 .align 2
|
||
1701 adbmsspi:
|
||
1702 0000 00000000 .space 4
|
||
1703 .text
|
||
1704 .Letext0:
|
||
1705 .file 2 "/home/chiangni/.config/VSCodium/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/
|
||
1706 .file 3 "/home/chiangni/.config/VSCodium/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/
|
||
1707 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h"
|
||
1708 .file 5 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h"
|
||
1709 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_gpio.h"
|
||
1710 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_dma.h"
|
||
1711 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_spi.h"
|
||
1712 .file 9 "Core/Inc/ADBMS_LL_Driver.h"
|
||
1713 .file 10 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h"
|
||
ARM GAS /tmp/cc6A08EU.s page 43
|
||
|
||
|
||
DEFINED SYMBOLS
|
||
*ABS*:00000000 ADBMS_LL_Driver.c
|
||
/tmp/cc6A08EU.s:21 .text.F_CRC_ObtenValorDeTabla:00000000 $t
|
||
/tmp/cc6A08EU.s:26 .text.F_CRC_ObtenValorDeTabla:00000000 F_CRC_ObtenValorDeTabla
|
||
/tmp/cc6A08EU.s:88 .text.updateCommandPEC:00000000 $t
|
||
/tmp/cc6A08EU.s:94 .text.updateCommandPEC:00000000 updateCommandPEC
|
||
/tmp/cc6A08EU.s:259 .text.calculateCommandPEC:00000000 $t
|
||
/tmp/cc6A08EU.s:265 .text.calculateCommandPEC:00000000 calculateCommandPEC
|
||
/tmp/cc6A08EU.s:386 .text.checkCommandPEC:00000000 $t
|
||
/tmp/cc6A08EU.s:392 .text.checkCommandPEC:00000000 checkCommandPEC
|
||
/tmp/cc6A08EU.s:538 .text.pec10_calc:00000000 $t
|
||
/tmp/cc6A08EU.s:544 .text.pec10_calc:00000000 pec10_calc
|
||
/tmp/cc6A08EU.s:709 .text.calculateDataPEC:00000000 $t
|
||
/tmp/cc6A08EU.s:715 .text.calculateDataPEC:00000000 calculateDataPEC
|
||
/tmp/cc6A08EU.s:792 .text.F_CRC_CalculaCheckSum:00000000 $t
|
||
/tmp/cc6A08EU.s:798 .text.F_CRC_CalculaCheckSum:00000000 F_CRC_CalculaCheckSum
|
||
/tmp/cc6A08EU.s:867 .text.checkDataPEC:00000000 $t
|
||
/tmp/cc6A08EU.s:873 .text.checkDataPEC:00000000 checkDataPEC
|
||
/tmp/cc6A08EU.s:916 .text.updateDataPEC:00000000 $t
|
||
/tmp/cc6A08EU.s:922 .text.updateDataPEC:00000000 updateDataPEC
|
||
/tmp/cc6A08EU.s:1023 .text.mcuAdbmsCSLow:00000000 $t
|
||
/tmp/cc6A08EU.s:1029 .text.mcuAdbmsCSLow:00000000 mcuAdbmsCSLow
|
||
/tmp/cc6A08EU.s:1050 .text.mcuAdbmsCSLow:00000010 $d
|
||
/tmp/cc6A08EU.s:1055 .text.mcuAdbmsCSHigh:00000000 $t
|
||
/tmp/cc6A08EU.s:1061 .text.mcuAdbmsCSHigh:00000000 mcuAdbmsCSHigh
|
||
/tmp/cc6A08EU.s:1082 .text.mcuAdbmsCSHigh:00000010 $d
|
||
/tmp/cc6A08EU.s:1087 .text.adbmsDriverInit:00000000 $t
|
||
/tmp/cc6A08EU.s:1093 .text.adbmsDriverInit:00000000 adbmsDriverInit
|
||
/tmp/cc6A08EU.s:1129 .text.adbmsDriverInit:0000001c $d
|
||
/tmp/cc6A08EU.s:1701 .bss.adbmsspi:00000000 adbmsspi
|
||
/tmp/cc6A08EU.s:1134 .text.mcuSPITransmit:00000000 $t
|
||
/tmp/cc6A08EU.s:1140 .text.mcuSPITransmit:00000000 mcuSPITransmit
|
||
/tmp/cc6A08EU.s:1212 .text.mcuSPITransmit:0000003c $d
|
||
/tmp/cc6A08EU.s:1217 .text.writeCMD:00000000 $t
|
||
/tmp/cc6A08EU.s:1223 .text.writeCMD:00000000 writeCMD
|
||
/tmp/cc6A08EU.s:1380 .text.mcuSPIReceive:00000000 $t
|
||
/tmp/cc6A08EU.s:1386 .text.mcuSPIReceive:00000000 mcuSPIReceive
|
||
/tmp/cc6A08EU.s:1418 .text.mcuSPIReceive:00000014 $d
|
||
/tmp/cc6A08EU.s:1423 .text.mcuSPITransmitReceive:00000000 $t
|
||
/tmp/cc6A08EU.s:1429 .text.mcuSPITransmitReceive:00000000 mcuSPITransmitReceive
|
||
/tmp/cc6A08EU.s:1466 .text.mcuSPITransmitReceive:0000001c $d
|
||
/tmp/cc6A08EU.s:1471 .text.readCMD:00000000 $t
|
||
/tmp/cc6A08EU.s:1477 .text.readCMD:00000000 readCMD
|
||
/tmp/cc6A08EU.s:1594 .text.pollCMD:00000000 $t
|
||
/tmp/cc6A08EU.s:1600 .text.pollCMD:00000000 pollCMD
|
||
/tmp/cc6A08EU.s:1670 .text.mcuDelay:00000000 $t
|
||
/tmp/cc6A08EU.s:1676 .text.mcuDelay:00000000 mcuDelay
|
||
/tmp/cc6A08EU.s:1698 .bss.adbmsspi:00000000 $d
|
||
|
||
UNDEFINED SYMBOLS
|
||
HAL_GPIO_WritePin
|
||
HAL_Delay
|
||
HAL_SPI_TransmitReceive
|
||
HAL_SPI_Receive
|