4627 lines
169 KiB
Plaintext
4627 lines
169 KiB
Plaintext
ARM GAS /tmp/cclqT4it.s page 1
|
||
|
||
|
||
1 .cpu cortex-m4
|
||
2 .eabi_attribute 27, 1
|
||
3 .eabi_attribute 28, 1
|
||
4 .eabi_attribute 23, 1
|
||
5 .eabi_attribute 24, 1
|
||
6 .eabi_attribute 25, 1
|
||
7 .eabi_attribute 26, 1
|
||
8 .eabi_attribute 30, 2
|
||
9 .eabi_attribute 34, 1
|
||
10 .eabi_attribute 18, 4
|
||
11 .file "FIRFilterCode.c"
|
||
12 .text
|
||
13 .Ltext0:
|
||
14 .cfi_sections .debug_frame
|
||
15 .global __aeabi_i2d
|
||
16 .global __aeabi_dmul
|
||
17 .global __aeabi_dsub
|
||
18 .global __aeabi_dcmpgt
|
||
19 .global __aeabi_dcmplt
|
||
20 .global __aeabi_ddiv
|
||
21 .global __aeabi_dcmpeq
|
||
22 .global __aeabi_dadd
|
||
23 .section .text.RectWinFIR,"ax",%progbits
|
||
24 .align 1
|
||
25 .p2align 2,,3
|
||
26 .global RectWinFIR
|
||
27 .syntax unified
|
||
28 .thumb
|
||
29 .thumb_func
|
||
30 .fpu fpv4-sp-d16
|
||
32 RectWinFIR:
|
||
33 .LFB0:
|
||
34 .file 1 "Core/Src/FIRFilterCode.c"
|
||
1:Core/Src/FIRFilterCode.c ****
|
||
2:Core/Src/FIRFilterCode.c **** /*
|
||
3:Core/Src/FIRFilterCode.c **** By Daniel Klostermann
|
||
4:Core/Src/FIRFilterCode.c **** Iowa Hills Software, LLC IowaHills.com
|
||
5:Core/Src/FIRFilterCode.c **** If you find a problem, please leave a note at:
|
||
6:Core/Src/FIRFilterCode.c **** http://www.iowahills.com/feedbackcomments.html
|
||
7:Core/Src/FIRFilterCode.c **** May 1, 2016
|
||
8:Core/Src/FIRFilterCode.c ****
|
||
9:Core/Src/FIRFilterCode.c **** ShowMessage is a C++ Builder function, and it usage has been commented out.
|
||
10:Core/Src/FIRFilterCode.c **** If you are using C++ Builder, include vcl.h for ShowMessage.
|
||
11:Core/Src/FIRFilterCode.c **** Otherwise replace ShowMessage with something appropriate for yor compiler.
|
||
12:Core/Src/FIRFilterCode.c ****
|
||
13:Core/Src/FIRFilterCode.c **** RectWinFIR() generates the impulse response for a rectangular windowed low pass, high pass,
|
||
14:Core/Src/FIRFilterCode.c **** band pass, or notch filter. Then a window, such as the Kaiser, is applied to the FIR coefficients.
|
||
15:Core/Src/FIRFilterCode.c **** See the FilterKitMain.cpp file for an example on how to use this code.
|
||
16:Core/Src/FIRFilterCode.c ****
|
||
17:Core/Src/FIRFilterCode.c **** double FirCoeff[MAXNUMTAPS];
|
||
18:Core/Src/FIRFilterCode.c **** int NumTaps; NumTaps can be even or odd and < MAXNUMTAPS
|
||
19:Core/Src/FIRFilterCode.c **** TPassTypeName PassType; PassType is defined in the header file. firLPF, firHPF, firBPF
|
||
20:Core/Src/FIRFilterCode.c **** double OmegaC 0.0 < OmegaC < 1.0 The corner freq, or center freq if BPF or NOTCH
|
||
21:Core/Src/FIRFilterCode.c **** double BW 0.0 < BW < 1.0 The band width if BPF or NOTCH
|
||
22:Core/Src/FIRFilterCode.c **** */
|
||
23:Core/Src/FIRFilterCode.c ****
|
||
24:Core/Src/FIRFilterCode.c **** // http://www.iowahills.com/Example%20Code/WindowedFIRFilterWebCode.txt
|
||
ARM GAS /tmp/cclqT4it.s page 2
|
||
|
||
|
||
25:Core/Src/FIRFilterCode.c ****
|
||
26:Core/Src/FIRFilterCode.c **** #include "FIRFilterCode.h"
|
||
27:Core/Src/FIRFilterCode.c ****
|
||
28:Core/Src/FIRFilterCode.c **** #include <math.h>
|
||
29:Core/Src/FIRFilterCode.c **** // #include <new.h> // For the new operator.
|
||
30:Core/Src/FIRFilterCode.c **** #include <stdbool.h>
|
||
31:Core/Src/FIRFilterCode.c **** #include <stdlib.h>
|
||
32:Core/Src/FIRFilterCode.c ****
|
||
33:Core/Src/FIRFilterCode.c **** // Rectangular Windowed FIR. The equations used here are developed in numerous textbooks.
|
||
34:Core/Src/FIRFilterCode.c **** void RectWinFIR(double *FirCoeff, int NumTaps, TFIRPassTypes PassType, double OmegaC, double BW){
|
||
35 .loc 1 34 0
|
||
36 .cfi_startproc
|
||
37 @ args = 0, pretend = 0, frame = 48
|
||
38 @ frame_needed = 0, uses_anonymous_args = 0
|
||
39 .LVL0:
|
||
40 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
||
41 .LCFI0:
|
||
42 .cfi_def_cfa_offset 36
|
||
43 .cfi_offset 4, -36
|
||
44 .cfi_offset 5, -32
|
||
45 .cfi_offset 6, -28
|
||
46 .cfi_offset 7, -24
|
||
47 .cfi_offset 8, -20
|
||
48 .cfi_offset 9, -16
|
||
49 .cfi_offset 10, -12
|
||
50 .cfi_offset 11, -8
|
||
51 .cfi_offset 14, -4
|
||
52 0004 2DED048B vpush.64 {d8, d9}
|
||
53 .LCFI1:
|
||
54 .cfi_def_cfa_offset 52
|
||
55 .cfi_offset 80, -52
|
||
56 .cfi_offset 81, -48
|
||
57 .cfi_offset 82, -44
|
||
58 .cfi_offset 83, -40
|
||
59 0008 8DB0 sub sp, sp, #52
|
||
60 .LCFI2:
|
||
61 .cfi_def_cfa_offset 104
|
||
62 .loc 1 34 0
|
||
63 000a 8146 mov r9, r0
|
||
64 000c 8B46 mov fp, r1
|
||
65 000e 8DED000B vstr.64 d0, [sp]
|
||
35:Core/Src/FIRFilterCode.c **** int j;
|
||
36:Core/Src/FIRFilterCode.c **** double Arg, OmegaLow, OmegaHigh;
|
||
37:Core/Src/FIRFilterCode.c ****
|
||
38:Core/Src/FIRFilterCode.c **** switch(PassType)
|
||
66 .loc 1 38 0
|
||
67 0012 042A cmp r2, #4
|
||
68 0014 18D8 bhi .L1
|
||
69 0016 DFE812F0 tbh [pc, r2, lsl #1]
|
||
70 .L4:
|
||
71 001a 1C00 .2byte (.L3-.L4)/2
|
||
72 001c 6700 .2byte (.L5-.L4)/2
|
||
73 001e CF00 .2byte (.L6-.L4)/2
|
||
74 0020 4F01 .2byte (.L7-.L4)/2
|
||
75 0022 0500 .2byte (.L8-.L4)/2
|
||
76 .p2align 1
|
||
77 .L8:
|
||
ARM GAS /tmp/cclqT4it.s page 3
|
||
|
||
|
||
78 .LVL1:
|
||
39:Core/Src/FIRFilterCode.c **** {
|
||
40:Core/Src/FIRFilterCode.c **** case firLPF: // Low Pass
|
||
41:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
42:Core/Src/FIRFilterCode.c **** {
|
||
43:Core/Src/FIRFilterCode.c **** Arg = (double)j - (double)(NumTaps-1) / 2.0;
|
||
44:Core/Src/FIRFilterCode.c **** FirCoeff[j] = OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
45:Core/Src/FIRFilterCode.c **** }
|
||
46:Core/Src/FIRFilterCode.c **** break;
|
||
47:Core/Src/FIRFilterCode.c ****
|
||
48:Core/Src/FIRFilterCode.c **** case firHPF: // High Pass
|
||
49:Core/Src/FIRFilterCode.c **** if(NumTaps % 2 == 1) // Odd tap counts
|
||
50:Core/Src/FIRFilterCode.c **** {
|
||
51:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
52:Core/Src/FIRFilterCode.c **** {
|
||
53:Core/Src/FIRFilterCode.c **** Arg = (double)j - (double)(NumTaps-1) / 2.0;
|
||
54:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
55:Core/Src/FIRFilterCode.c **** }
|
||
56:Core/Src/FIRFilterCode.c **** }
|
||
57:Core/Src/FIRFilterCode.c ****
|
||
58:Core/Src/FIRFilterCode.c **** else // Even tap counts
|
||
59:Core/Src/FIRFilterCode.c **** {
|
||
60:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
61:Core/Src/FIRFilterCode.c **** {
|
||
62:Core/Src/FIRFilterCode.c **** Arg = (double)j - (double)(NumTaps-1) / 2.0;
|
||
63:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
64:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = cos(OmegaC * Arg * M_PI) / M_PI / Arg + cos(Arg * M_PI);
|
||
65:Core/Src/FIRFilterCode.c **** }
|
||
66:Core/Src/FIRFilterCode.c **** }
|
||
67:Core/Src/FIRFilterCode.c **** break;
|
||
68:Core/Src/FIRFilterCode.c ****
|
||
69:Core/Src/FIRFilterCode.c **** case firBPF: // Band Pass
|
||
70:Core/Src/FIRFilterCode.c **** OmegaLow = OmegaC - BW/2.0;
|
||
71:Core/Src/FIRFilterCode.c **** OmegaHigh = OmegaC + BW/2.0;
|
||
72:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
73:Core/Src/FIRFilterCode.c **** {
|
||
74:Core/Src/FIRFilterCode.c **** Arg = (double)j - (double)(NumTaps-1) / 2.0;
|
||
75:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
76:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = ( cos(OmegaLow * Arg * M_PI) - cos(OmegaHigh * Arg * M_PI) ) / M_PI / Arg
|
||
77:Core/Src/FIRFilterCode.c **** }
|
||
78:Core/Src/FIRFilterCode.c **** break;
|
||
79:Core/Src/FIRFilterCode.c ****
|
||
80:Core/Src/FIRFilterCode.c **** case firNOTCH: // Notch, if NumTaps is even, the response at Pi is attenuated.
|
||
81:Core/Src/FIRFilterCode.c **** OmegaLow = OmegaC - BW/2.0;
|
||
82:Core/Src/FIRFilterCode.c **** OmegaHigh = OmegaC + BW/2.0;
|
||
83:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
84:Core/Src/FIRFilterCode.c **** {
|
||
85:Core/Src/FIRFilterCode.c **** Arg = (double)j - (double)(NumTaps-1) / 2.0;
|
||
86:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaHigh * Sinc(OmegaHigh * Arg * M_PI) - OmegaLow * Sinc(
|
||
87:Core/Src/FIRFilterCode.c **** }
|
||
88:Core/Src/FIRFilterCode.c **** break;
|
||
89:Core/Src/FIRFilterCode.c ****
|
||
90:Core/Src/FIRFilterCode.c **** case firALLPASS: // All Pass, this is trivial, but it shows how an fir all pass (delay) can be d
|
||
91:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)FirCoeff[j] = 0.0;
|
||
79 .loc 1 91 0
|
||
80 0024 0029 cmp r1, #0
|
||
81 0026 03DD ble .L10
|
||
ARM GAS /tmp/cclqT4it.s page 4
|
||
|
||
|
||
82 0028 CA00 lsls r2, r1, #3
|
||
83 .LVL2:
|
||
84 002a 0021 movs r1, #0
|
||
85 .LVL3:
|
||
86 002c FFF7FEFF bl memset
|
||
87 .LVL4:
|
||
88 .L10:
|
||
92:Core/Src/FIRFilterCode.c **** FirCoeff[(NumTaps-1) / 2] = 1.0;
|
||
89 .loc 1 92 0
|
||
90 0030 0BF1FF3B add fp, fp, #-1
|
||
91 .LVL5:
|
||
92 0034 0BEBDB7B add fp, fp, fp, lsr #31
|
||
93 .LVL6:
|
||
94 0038 CB4B ldr r3, .L72+40
|
||
95 003a 4FEA6B0B asr fp, fp, #1
|
||
96 003e 0022 movs r2, #0
|
||
97 0040 09EBCB09 add r9, r9, fp, lsl #3
|
||
98 .LVL7:
|
||
99 0044 C9E90023 strd r2, [r9]
|
||
100 .LVL8:
|
||
101 .L1:
|
||
93:Core/Src/FIRFilterCode.c **** break;
|
||
94:Core/Src/FIRFilterCode.c **** }
|
||
95:Core/Src/FIRFilterCode.c **** // Now use the FIRFilterWindow() function to reduce the sinc(x) effects.
|
||
96:Core/Src/FIRFilterCode.c **** }
|
||
102 .loc 1 96 0
|
||
103 0048 0DB0 add sp, sp, #52
|
||
104 .LCFI3:
|
||
105 .cfi_remember_state
|
||
106 .cfi_def_cfa_offset 52
|
||
107 @ sp needed
|
||
108 004a BDEC048B vldm sp!, {d8-d9}
|
||
109 .LCFI4:
|
||
110 .cfi_restore 82
|
||
111 .cfi_restore 83
|
||
112 .cfi_restore 80
|
||
113 .cfi_restore 81
|
||
114 .cfi_def_cfa_offset 36
|
||
115 004e BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
||
116 .LVL9:
|
||
117 .L3:
|
||
118 .LCFI5:
|
||
119 .cfi_restore_state
|
||
41:Core/Src/FIRFilterCode.c **** {
|
||
120 .loc 1 41 0
|
||
121 0052 0029 cmp r1, #0
|
||
122 0054 F8DD ble .L1
|
||
43:Core/Src/FIRFilterCode.c **** FirCoeff[j] = OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
123 .loc 1 43 0
|
||
124 0056 481E subs r0, r1, #1
|
||
125 .LVL10:
|
||
126 0058 FFF7FEFF bl __aeabi_i2d
|
||
127 .LVL11:
|
||
128 005c 0022 movs r2, #0
|
||
129 005e C34B ldr r3, .L72+44
|
||
130 0060 FFF7FEFF bl __aeabi_dmul
|
||
131 .LVL12:
|
||
ARM GAS /tmp/cclqT4it.s page 5
|
||
|
||
|
||
132 0064 B6A3 adr r3, .L72
|
||
133 0066 D3E90023 ldrd r2, [r3]
|
||
134 006a 0446 mov r4, r0
|
||
135 006c 0D46 mov r5, r1
|
||
136 006e DDE90001 ldrd r0, [sp]
|
||
137 0072 FFF7FEFF bl __aeabi_dmul
|
||
138 .LVL13:
|
||
41:Core/Src/FIRFilterCode.c **** {
|
||
139 .loc 1 41 0
|
||
140 0076 4FF00008 mov r8, #0
|
||
141 007a CDE90201 strd r0, [sp, #8]
|
||
142 007e DA46 mov r10, fp
|
||
143 0080 0CE0 b .L15
|
||
144 .LVL14:
|
||
145 .L67:
|
||
146 .LBB17:
|
||
147 .LBB18:
|
||
97:Core/Src/FIRFilterCode.c ****
|
||
98:Core/Src/FIRFilterCode.c **** //---------------------------------------------------------------------------
|
||
99:Core/Src/FIRFilterCode.c ****
|
||
100:Core/Src/FIRFilterCode.c **** // This gets used in numerous places above.
|
||
101:Core/Src/FIRFilterCode.c **** // If using Visual C, this (and the header file declaration) may need to be commented out.
|
||
102:Core/Src/FIRFilterCode.c **** double Sinc(double x)
|
||
103:Core/Src/FIRFilterCode.c **** {
|
||
104:Core/Src/FIRFilterCode.c **** if(x > -1.0E-5 && x < 1.0E-5)return(1.0);
|
||
148 .loc 1 104 0
|
||
149 0082 3046 mov r0, r6
|
||
150 0084 3946 mov r1, r7
|
||
151 0086 FFF7FEFF bl __aeabi_dcmplt
|
||
152 .LVL15:
|
||
153 008a F0B1 cbz r0, .L12
|
||
154 008c DDE90001 ldrd r0, [sp]
|
||
155 .L14:
|
||
156 .LVL16:
|
||
157 .LBE18:
|
||
158 .LBE17:
|
||
41:Core/Src/FIRFilterCode.c **** {
|
||
159 .loc 1 41 0
|
||
160 0090 08F10108 add r8, r8, #1
|
||
161 .LVL17:
|
||
162 0094 C245 cmp r10, r8
|
||
44:Core/Src/FIRFilterCode.c **** }
|
||
163 .loc 1 44 0
|
||
164 0096 E9E80201 strd r0, [r9], #8
|
||
41:Core/Src/FIRFilterCode.c **** {
|
||
165 .loc 1 41 0
|
||
166 009a D5D0 beq .L1
|
||
167 .LVL18:
|
||
168 .L15:
|
||
43:Core/Src/FIRFilterCode.c **** FirCoeff[j] = OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
169 .loc 1 43 0
|
||
170 009c 4046 mov r0, r8
|
||
171 009e FFF7FEFF bl __aeabi_i2d
|
||
172 .LVL19:
|
||
173 00a2 2246 mov r2, r4
|
||
174 00a4 2B46 mov r3, r5
|
||
175 00a6 FFF7FEFF bl __aeabi_dsub
|
||
ARM GAS /tmp/cclqT4it.s page 6
|
||
|
||
|
||
176 .LVL20:
|
||
44:Core/Src/FIRFilterCode.c **** }
|
||
177 .loc 1 44 0
|
||
178 00aa DDE90223 ldrd r2, [sp, #8]
|
||
179 00ae FFF7FEFF bl __aeabi_dmul
|
||
180 .LVL21:
|
||
181 .LBB21:
|
||
182 .LBB19:
|
||
183 .loc 1 104 0
|
||
184 00b2 A5A3 adr r3, .L72+8
|
||
185 00b4 D3E90023 ldrd r2, [r3]
|
||
186 .LBE19:
|
||
187 .LBE21:
|
||
44:Core/Src/FIRFilterCode.c **** }
|
||
188 .loc 1 44 0
|
||
189 00b8 0646 mov r6, r0
|
||
190 00ba 0F46 mov r7, r1
|
||
191 .LVL22:
|
||
192 .LBB22:
|
||
193 .LBB20:
|
||
194 .loc 1 104 0
|
||
195 00bc FFF7FEFF bl __aeabi_dcmpgt
|
||
196 .LVL23:
|
||
197 00c0 A3A3 adr r3, .L72+16
|
||
198 00c2 D3E90023 ldrd r2, [r3]
|
||
199 00c6 0028 cmp r0, #0
|
||
200 00c8 DBD1 bne .L67
|
||
201 .L12:
|
||
105:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
202 .loc 1 105 0
|
||
203 00ca 47EC106B vmov d0, r6, r7
|
||
204 00ce FFF7FEFF bl sin
|
||
205 .LVL24:
|
||
206 00d2 3246 mov r2, r6
|
||
207 00d4 3B46 mov r3, r7
|
||
208 00d6 51EC100B vmov r0, r1, d0
|
||
209 00da FFF7FEFF bl __aeabi_ddiv
|
||
210 .LVL25:
|
||
211 00de DDE90023 ldrd r2, [sp]
|
||
212 00e2 FFF7FEFF bl __aeabi_dmul
|
||
213 .LVL26:
|
||
214 00e6 D3E7 b .L14
|
||
215 .LVL27:
|
||
216 .L5:
|
||
217 .LBE20:
|
||
218 .LBE22:
|
||
49:Core/Src/FIRFilterCode.c **** {
|
||
219 .loc 1 49 0
|
||
220 00e8 0029 cmp r1, #0
|
||
221 00ea 01F00103 and r3, r1, #1
|
||
222 00ee B8BF it lt
|
||
223 00f0 5B42 rsblt r3, r3, #0
|
||
224 00f2 012B cmp r3, #1
|
||
225 00f4 00F0D381 beq .L17
|
||
226 .LVL28:
|
||
60:Core/Src/FIRFilterCode.c **** {
|
||
227 .loc 1 60 0
|
||
ARM GAS /tmp/cclqT4it.s page 7
|
||
|
||
|
||
228 00f8 0029 cmp r1, #0
|
||
229 00fa A5DD ble .L1
|
||
62:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
230 .loc 1 62 0
|
||
231 00fc 481E subs r0, r1, #1
|
||
232 .LVL29:
|
||
233 00fe FFF7FEFF bl __aeabi_i2d
|
||
234 .LVL30:
|
||
235 0102 0022 movs r2, #0
|
||
236 0104 994B ldr r3, .L72+44
|
||
237 0106 FFF7FEFF bl __aeabi_dmul
|
||
238 .LVL31:
|
||
239 010a 8DA3 adr r3, .L72
|
||
240 010c D3E90023 ldrd r2, [r3]
|
||
241 0110 0446 mov r4, r0
|
||
242 0112 0D46 mov r5, r1
|
||
243 0114 DDE90001 ldrd r0, [sp]
|
||
244 0118 FFF7FEFF bl __aeabi_dmul
|
||
245 .LVL32:
|
||
63:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = cos(OmegaC * Arg * M_PI) / M_PI / Arg + cos(Arg * M_PI);
|
||
246 .loc 1 63 0
|
||
247 011c 9FED8E9B vldr.64 d9, .L72+24
|
||
248 0120 CDE90201 strd r0, [sp, #8]
|
||
60:Core/Src/FIRFilterCode.c **** {
|
||
249 .loc 1 60 0
|
||
250 0124 4FF00008 mov r8, #0
|
||
251 0128 DA46 mov r10, fp
|
||
252 012a 07E0 b .L29
|
||
253 .LVL33:
|
||
254 .L68:
|
||
63:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = cos(OmegaC * Arg * M_PI) / M_PI / Arg + cos(Arg * M_PI);
|
||
255 .loc 1 63 0
|
||
256 012c 89ED009B vstr.64 d9, [r9]
|
||
257 .L28:
|
||
60:Core/Src/FIRFilterCode.c **** {
|
||
258 .loc 1 60 0
|
||
259 0130 08F10108 add r8, r8, #1
|
||
260 .LVL34:
|
||
261 0134 C245 cmp r10, r8
|
||
262 0136 09F10809 add r9, r9, #8
|
||
263 013a 85D0 beq .L1
|
||
264 .LVL35:
|
||
265 .L29:
|
||
62:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
266 .loc 1 62 0
|
||
267 013c 4046 mov r0, r8
|
||
268 013e FFF7FEFF bl __aeabi_i2d
|
||
269 .LVL36:
|
||
270 0142 2246 mov r2, r4
|
||
271 0144 2B46 mov r3, r5
|
||
272 0146 FFF7FEFF bl __aeabi_dsub
|
||
273 .LVL37:
|
||
63:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = cos(OmegaC * Arg * M_PI) / M_PI / Arg + cos(Arg * M_PI);
|
||
274 .loc 1 63 0
|
||
275 014a 0022 movs r2, #0
|
||
276 014c 0023 movs r3, #0
|
||
62:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
ARM GAS /tmp/cclqT4it.s page 8
|
||
|
||
|
||
277 .loc 1 62 0
|
||
278 014e 0646 mov r6, r0
|
||
279 0150 0F46 mov r7, r1
|
||
280 .LVL38:
|
||
63:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = cos(OmegaC * Arg * M_PI) / M_PI / Arg + cos(Arg * M_PI);
|
||
281 .loc 1 63 0
|
||
282 0152 FFF7FEFF bl __aeabi_dcmpeq
|
||
283 .LVL39:
|
||
64:Core/Src/FIRFilterCode.c **** }
|
||
284 .loc 1 64 0
|
||
285 0156 3246 mov r2, r6
|
||
286 0158 3B46 mov r3, r7
|
||
63:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = cos(OmegaC * Arg * M_PI) / M_PI / Arg + cos(Arg * M_PI);
|
||
287 .loc 1 63 0
|
||
288 015a 0028 cmp r0, #0
|
||
289 015c E6D1 bne .L68
|
||
64:Core/Src/FIRFilterCode.c **** }
|
||
290 .loc 1 64 0
|
||
291 015e DDE90201 ldrd r0, [sp, #8]
|
||
292 0162 FFF7FEFF bl __aeabi_dmul
|
||
293 .LVL40:
|
||
294 0166 41EC100B vmov d0, r0, r1
|
||
295 016a FFF7FEFF bl cos
|
||
296 .LVL41:
|
||
297 016e 74A3 adr r3, .L72
|
||
298 0170 D3E90023 ldrd r2, [r3]
|
||
299 0174 B0EE408A vmov.f32 s16, s0
|
||
300 0178 F0EE608A vmov.f32 s17, s1
|
||
301 017c 3046 mov r0, r6
|
||
302 017e 3946 mov r1, r7
|
||
303 0180 FFF7FEFF bl __aeabi_dmul
|
||
304 .LVL42:
|
||
305 0184 41EC100B vmov d0, r0, r1
|
||
306 0188 FFF7FEFF bl cos
|
||
307 .LVL43:
|
||
308 018c 74A3 adr r3, .L72+32
|
||
309 018e D3E90023 ldrd r2, [r3]
|
||
310 0192 51EC180B vmov r0, r1, d8
|
||
311 0196 8DED000B vstr.64 d0, [sp]
|
||
312 019a FFF7FEFF bl __aeabi_dmul
|
||
313 .LVL44:
|
||
314 019e 3246 mov r2, r6
|
||
315 01a0 3B46 mov r3, r7
|
||
316 01a2 FFF7FEFF bl __aeabi_ddiv
|
||
317 .LVL45:
|
||
318 01a6 9DED000B vldr.64 d0, [sp]
|
||
319 01aa 53EC102B vmov r2, r3, d0
|
||
320 01ae FFF7FEFF bl __aeabi_dadd
|
||
321 .LVL46:
|
||
322 01b2 C9E90001 strd r0, [r9]
|
||
323 01b6 BBE7 b .L28
|
||
324 .LVL47:
|
||
325 .L6:
|
||
70:Core/Src/FIRFilterCode.c **** OmegaHigh = OmegaC + BW/2.0;
|
||
326 .loc 1 70 0
|
||
327 01b8 51EC110B vmov r0, r1, d1
|
||
328 .LVL48:
|
||
ARM GAS /tmp/cclqT4it.s page 9
|
||
|
||
|
||
329 01bc 0022 movs r2, #0
|
||
330 .LVL49:
|
||
331 01be 6B4B ldr r3, .L72+44
|
||
332 01c0 FFF7FEFF bl __aeabi_dmul
|
||
333 .LVL50:
|
||
334 01c4 DDE90067 ldrd r6, [sp]
|
||
335 01c8 0446 mov r4, r0
|
||
336 01ca 0D46 mov r5, r1
|
||
337 01cc 0246 mov r2, r0
|
||
338 01ce 0B46 mov r3, r1
|
||
339 01d0 3046 mov r0, r6
|
||
340 01d2 3946 mov r1, r7
|
||
341 01d4 FFF7FEFF bl __aeabi_dsub
|
||
342 .LVL51:
|
||
71:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
343 .loc 1 71 0
|
||
344 01d8 3246 mov r2, r6
|
||
70:Core/Src/FIRFilterCode.c **** OmegaHigh = OmegaC + BW/2.0;
|
||
345 .loc 1 70 0
|
||
346 01da CDE90001 strd r0, [sp]
|
||
347 .LVL52:
|
||
71:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
348 .loc 1 71 0
|
||
349 01de 3B46 mov r3, r7
|
||
350 01e0 2046 mov r0, r4
|
||
351 01e2 2946 mov r1, r5
|
||
352 01e4 FFF7FEFF bl __aeabi_dadd
|
||
353 .LVL53:
|
||
72:Core/Src/FIRFilterCode.c **** {
|
||
354 .loc 1 72 0
|
||
355 01e8 BBF1000F cmp fp, #0
|
||
71:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
356 .loc 1 71 0
|
||
357 01ec 0446 mov r4, r0
|
||
358 01ee 0D46 mov r5, r1
|
||
359 .LVL54:
|
||
72:Core/Src/FIRFilterCode.c **** {
|
||
360 .loc 1 72 0
|
||
361 01f0 7FF72AAF ble .L1
|
||
74:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
362 .loc 1 74 0
|
||
363 01f4 0BF1FF30 add r0, fp, #-1
|
||
364 01f8 FFF7FEFF bl __aeabi_i2d
|
||
365 .LVL55:
|
||
366 01fc 0022 movs r2, #0
|
||
367 01fe 5B4B ldr r3, .L72+44
|
||
368 0200 FFF7FEFF bl __aeabi_dmul
|
||
369 .LVL56:
|
||
370 0204 4EA3 adr r3, .L72
|
||
371 0206 D3E90023 ldrd r2, [r3]
|
||
372 020a 0746 mov r7, r0
|
||
373 020c 8846 mov r8, r1
|
||
374 020e DDE90001 ldrd r0, [sp]
|
||
375 0212 FFF7FEFF bl __aeabi_dmul
|
||
376 .LVL57:
|
||
377 0216 4AA3 adr r3, .L72
|
||
378 0218 D3E90023 ldrd r2, [r3]
|
||
ARM GAS /tmp/cclqT4it.s page 10
|
||
|
||
|
||
379 021c CDE90001 strd r0, [sp]
|
||
380 0220 2046 mov r0, r4
|
||
381 0222 2946 mov r1, r5
|
||
382 0224 FFF7FEFF bl __aeabi_dmul
|
||
383 .LVL58:
|
||
75:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = ( cos(OmegaLow * Arg * M_PI) - cos(OmegaHigh * Arg * M_PI) ) / M_PI / Arg
|
||
384 .loc 1 75 0
|
||
385 0228 9FED4B9B vldr.64 d9, .L72+24
|
||
386 022c CDE90201 strd r0, [sp, #8]
|
||
72:Core/Src/FIRFilterCode.c **** {
|
||
387 .loc 1 72 0
|
||
388 0230 0026 movs r6, #0
|
||
389 .LVL59:
|
||
390 0232 DA46 mov r10, fp
|
||
391 0234 07E0 b .L33
|
||
392 .LVL60:
|
||
393 .L69:
|
||
75:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = ( cos(OmegaLow * Arg * M_PI) - cos(OmegaHigh * Arg * M_PI) ) / M_PI / Arg
|
||
394 .loc 1 75 0
|
||
395 0236 89ED009B vstr.64 d9, [r9]
|
||
396 .L32:
|
||
72:Core/Src/FIRFilterCode.c **** {
|
||
397 .loc 1 72 0
|
||
398 023a 0136 adds r6, r6, #1
|
||
399 .LVL61:
|
||
400 023c 5645 cmp r6, r10
|
||
401 023e 09F10809 add r9, r9, #8
|
||
402 0242 3FF401AF beq .L1
|
||
403 .LVL62:
|
||
404 .L33:
|
||
74:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
405 .loc 1 74 0
|
||
406 0246 3046 mov r0, r6
|
||
407 0248 FFF7FEFF bl __aeabi_i2d
|
||
408 .LVL63:
|
||
409 024c 3A46 mov r2, r7
|
||
410 024e 4346 mov r3, r8
|
||
411 0250 FFF7FEFF bl __aeabi_dsub
|
||
412 .LVL64:
|
||
75:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = ( cos(OmegaLow * Arg * M_PI) - cos(OmegaHigh * Arg * M_PI) ) / M_PI / Arg
|
||
413 .loc 1 75 0
|
||
414 0254 0022 movs r2, #0
|
||
415 0256 0023 movs r3, #0
|
||
74:Core/Src/FIRFilterCode.c **** if(Arg == 0.0)FirCoeff[j] = 0.0;
|
||
416 .loc 1 74 0
|
||
417 0258 0446 mov r4, r0
|
||
418 025a 0D46 mov r5, r1
|
||
419 .LVL65:
|
||
75:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = ( cos(OmegaLow * Arg * M_PI) - cos(OmegaHigh * Arg * M_PI) ) / M_PI / Arg
|
||
420 .loc 1 75 0
|
||
421 025c FFF7FEFF bl __aeabi_dcmpeq
|
||
422 .LVL66:
|
||
76:Core/Src/FIRFilterCode.c **** }
|
||
423 .loc 1 76 0
|
||
424 0260 2246 mov r2, r4
|
||
425 0262 2B46 mov r3, r5
|
||
75:Core/Src/FIRFilterCode.c **** else FirCoeff[j] = ( cos(OmegaLow * Arg * M_PI) - cos(OmegaHigh * Arg * M_PI) ) / M_PI / Arg
|
||
ARM GAS /tmp/cclqT4it.s page 11
|
||
|
||
|
||
426 .loc 1 75 0
|
||
427 0264 0028 cmp r0, #0
|
||
428 0266 E6D1 bne .L69
|
||
76:Core/Src/FIRFilterCode.c **** }
|
||
429 .loc 1 76 0
|
||
430 0268 DDE90001 ldrd r0, [sp]
|
||
431 026c FFF7FEFF bl __aeabi_dmul
|
||
432 .LVL67:
|
||
433 0270 41EC100B vmov d0, r0, r1
|
||
434 0274 FFF7FEFF bl cos
|
||
435 .LVL68:
|
||
436 0278 2246 mov r2, r4
|
||
437 027a 2B46 mov r3, r5
|
||
438 027c DDE90201 ldrd r0, [sp, #8]
|
||
439 0280 B0EE408A vmov.f32 s16, s0
|
||
440 0284 F0EE608A vmov.f32 s17, s1
|
||
441 0288 FFF7FEFF bl __aeabi_dmul
|
||
442 .LVL69:
|
||
443 028c 41EC100B vmov d0, r0, r1
|
||
444 0290 FFF7FEFF bl cos
|
||
445 .LVL70:
|
||
446 0294 51EC180B vmov r0, r1, d8
|
||
447 0298 53EC102B vmov r2, r3, d0
|
||
448 029c FFF7FEFF bl __aeabi_dsub
|
||
449 .LVL71:
|
||
450 02a0 2FA3 adr r3, .L72+32
|
||
451 02a2 D3E90023 ldrd r2, [r3]
|
||
452 02a6 FFF7FEFF bl __aeabi_dmul
|
||
453 .LVL72:
|
||
454 02aa 2246 mov r2, r4
|
||
455 02ac 2B46 mov r3, r5
|
||
456 02ae FFF7FEFF bl __aeabi_ddiv
|
||
457 .LVL73:
|
||
458 02b2 C9E90001 strd r0, [r9]
|
||
459 02b6 C0E7 b .L32
|
||
460 .LVL74:
|
||
461 .L7:
|
||
81:Core/Src/FIRFilterCode.c **** OmegaHigh = OmegaC + BW/2.0;
|
||
462 .loc 1 81 0
|
||
463 02b8 51EC110B vmov r0, r1, d1
|
||
464 .LVL75:
|
||
465 02bc 0022 movs r2, #0
|
||
466 .LVL76:
|
||
467 02be 2B4B ldr r3, .L72+44
|
||
468 02c0 FFF7FEFF bl __aeabi_dmul
|
||
469 .LVL77:
|
||
470 02c4 DDE90067 ldrd r6, [sp]
|
||
471 02c8 0446 mov r4, r0
|
||
472 02ca 0D46 mov r5, r1
|
||
473 02cc 0246 mov r2, r0
|
||
474 02ce 0B46 mov r3, r1
|
||
475 02d0 3046 mov r0, r6
|
||
476 02d2 3946 mov r1, r7
|
||
477 02d4 FFF7FEFF bl __aeabi_dsub
|
||
478 .LVL78:
|
||
82:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
479 .loc 1 82 0
|
||
ARM GAS /tmp/cclqT4it.s page 12
|
||
|
||
|
||
480 02d8 3246 mov r2, r6
|
||
81:Core/Src/FIRFilterCode.c **** OmegaHigh = OmegaC + BW/2.0;
|
||
481 .loc 1 81 0
|
||
482 02da CDE90201 strd r0, [sp, #8]
|
||
483 .LVL79:
|
||
82:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
484 .loc 1 82 0
|
||
485 02de 3B46 mov r3, r7
|
||
486 02e0 2046 mov r0, r4
|
||
487 02e2 2946 mov r1, r5
|
||
488 02e4 FFF7FEFF bl __aeabi_dadd
|
||
489 .LVL80:
|
||
83:Core/Src/FIRFilterCode.c **** {
|
||
490 .loc 1 83 0
|
||
491 02e8 BBF1000F cmp fp, #0
|
||
82:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
492 .loc 1 82 0
|
||
493 02ec 0446 mov r4, r0
|
||
494 02ee 0D46 mov r5, r1
|
||
495 02f0 CDE90445 strd r4, [sp, #16]
|
||
496 .LVL81:
|
||
83:Core/Src/FIRFilterCode.c **** {
|
||
497 .loc 1 83 0
|
||
498 02f4 7FF7A8AE ble .L1
|
||
85:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaHigh * Sinc(OmegaHigh * Arg * M_PI) - OmegaLow * Sinc(
|
||
499 .loc 1 85 0
|
||
500 02f8 0BF1FF30 add r0, fp, #-1
|
||
501 02fc FFF7FEFF bl __aeabi_i2d
|
||
502 .LVL82:
|
||
503 0300 0022 movs r2, #0
|
||
504 0302 1A4B ldr r3, .L72+44
|
||
505 0304 FFF7FEFF bl __aeabi_dmul
|
||
506 .LVL83:
|
||
507 0308 0DA3 adr r3, .L72
|
||
508 030a D3E90023 ldrd r2, [r3]
|
||
509 030e CDE90601 strd r0, [sp, #24]
|
||
510 0312 2046 mov r0, r4
|
||
511 0314 2946 mov r1, r5
|
||
512 0316 FFF7FEFF bl __aeabi_dmul
|
||
513 .LVL84:
|
||
514 031a 09A3 adr r3, .L72
|
||
515 031c D3E90023 ldrd r2, [r3]
|
||
516 0320 CDE90801 strd r0, [sp, #32]
|
||
517 0324 DDE90201 ldrd r0, [sp, #8]
|
||
518 0328 FFF7FEFF bl __aeabi_dmul
|
||
519 .LVL85:
|
||
83:Core/Src/FIRFilterCode.c **** {
|
||
520 .loc 1 83 0
|
||
521 032c 4FF0000A mov r10, #0
|
||
522 0330 CDE90A01 strd r0, [sp, #40]
|
||
523 0334 CDF80090 str r9, [sp]
|
||
524 .LVL86:
|
||
525 0338 6BE0 b .L43
|
||
526 .L73:
|
||
527 033a 00BFAFF3 .align 3
|
||
527 0080
|
||
528 .L72:
|
||
ARM GAS /tmp/cclqT4it.s page 13
|
||
|
||
|
||
529 0340 182D4454 .word 1413754136
|
||
530 0344 FB210940 .word 1074340347
|
||
531 0348 F168E388 .word 2296604913
|
||
532 034c B5F8E4BE .word -1092290379
|
||
533 0350 F168E388 .word 2296604913
|
||
534 0354 B5F8E43E .word 1055193269
|
||
535 0358 00000000 .word 0
|
||
536 035c 00000000 .word 0
|
||
537 0360 83C8C96D .word 1841940611
|
||
538 0364 305FD43F .word 1070882608
|
||
539 0368 0000F03F .word 1072693248
|
||
540 036c 0000E03F .word 1071644672
|
||
541 .LVL87:
|
||
542 .L70:
|
||
543 .LBB23:
|
||
544 .LBB24:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
545 .loc 1 104 0
|
||
546 0370 8FA3 adr r3, .L74+8
|
||
547 0372 D3E90023 ldrd r2, [r3]
|
||
548 0376 2046 mov r0, r4
|
||
549 0378 2946 mov r1, r5
|
||
550 037a FFF7FEFF bl __aeabi_dcmplt
|
||
551 .LVL88:
|
||
552 037e 0028 cmp r0, #0
|
||
553 0380 5ED0 beq .L34
|
||
554 0382 8F4F ldr r7, .L74+24
|
||
555 0384 0026 movs r6, #0
|
||
556 .L36:
|
||
557 .LVL89:
|
||
558 .LBE24:
|
||
559 .LBE23:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
560 .loc 1 86 0
|
||
561 0386 4246 mov r2, r8
|
||
562 0388 4B46 mov r3, r9
|
||
563 038a DDE90801 ldrd r0, [sp, #32]
|
||
564 038e FFF7FEFF bl __aeabi_dmul
|
||
565 .LVL90:
|
||
566 .LBB27:
|
||
567 .LBB28:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
568 .loc 1 104 0
|
||
569 0392 85A3 adr r3, .L74
|
||
570 0394 D3E90023 ldrd r2, [r3]
|
||
571 .LBE28:
|
||
572 .LBE27:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
573 .loc 1 86 0
|
||
574 0398 0446 mov r4, r0
|
||
575 039a 0D46 mov r5, r1
|
||
576 .LVL91:
|
||
577 .LBB31:
|
||
578 .LBB29:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
579 .loc 1 104 0
|
||
580 039c FFF7FEFF bl __aeabi_dcmpgt
|
||
ARM GAS /tmp/cclqT4it.s page 14
|
||
|
||
|
||
581 .LVL92:
|
||
582 03a0 0028 cmp r0, #0
|
||
583 03a2 6BD0 beq .L37
|
||
584 03a4 82A3 adr r3, .L74+8
|
||
585 03a6 D3E90023 ldrd r2, [r3]
|
||
586 03aa 2046 mov r0, r4
|
||
587 03ac 2946 mov r1, r5
|
||
588 03ae FFF7FEFF bl __aeabi_dcmplt
|
||
589 .LVL93:
|
||
590 03b2 0028 cmp r0, #0
|
||
591 03b4 62D0 beq .L37
|
||
592 03b6 DDE90423 ldrd r2, [sp, #16]
|
||
593 .L39:
|
||
594 .LVL94:
|
||
595 .LBE29:
|
||
596 .LBE31:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
597 .loc 1 86 0
|
||
598 03ba 3046 mov r0, r6
|
||
599 03bc 3946 mov r1, r7
|
||
600 03be FFF7FEFF bl __aeabi_dsub
|
||
601 .LVL95:
|
||
602 03c2 4246 mov r2, r8
|
||
603 03c4 4B46 mov r3, r9
|
||
604 03c6 0646 mov r6, r0
|
||
605 03c8 0F46 mov r7, r1
|
||
606 03ca DDE90A01 ldrd r0, [sp, #40]
|
||
607 03ce FFF7FEFF bl __aeabi_dmul
|
||
608 .LVL96:
|
||
609 .LBB32:
|
||
610 .LBB33:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
611 .loc 1 104 0
|
||
612 03d2 75A3 adr r3, .L74
|
||
613 03d4 D3E90023 ldrd r2, [r3]
|
||
614 .LBE33:
|
||
615 .LBE32:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
616 .loc 1 86 0
|
||
617 03d8 0446 mov r4, r0
|
||
618 03da 0D46 mov r5, r1
|
||
619 .LVL97:
|
||
620 .LBB36:
|
||
621 .LBB34:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
622 .loc 1 104 0
|
||
623 03dc FFF7FEFF bl __aeabi_dcmpgt
|
||
624 .LVL98:
|
||
625 03e0 0028 cmp r0, #0
|
||
626 03e2 3AD0 beq .L40
|
||
627 03e4 72A3 adr r3, .L74+8
|
||
628 03e6 D3E90023 ldrd r2, [r3]
|
||
629 03ea 2046 mov r0, r4
|
||
630 03ec 2946 mov r1, r5
|
||
631 03ee FFF7FEFF bl __aeabi_dcmplt
|
||
632 .LVL99:
|
||
633 03f2 90B3 cbz r0, .L40
|
||
ARM GAS /tmp/cclqT4it.s page 15
|
||
|
||
|
||
634 03f4 DDE90223 ldrd r2, [sp, #8]
|
||
635 .L42:
|
||
636 .LVL100:
|
||
637 .LBE34:
|
||
638 .LBE36:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
639 .loc 1 86 0
|
||
640 03f8 3046 mov r0, r6
|
||
641 03fa 3946 mov r1, r7
|
||
642 03fc FFF7FEFF bl __aeabi_dsub
|
||
643 .LVL101:
|
||
644 0400 009B ldr r3, [sp]
|
||
645 0402 E3E80201 strd r0, [r3], #8
|
||
83:Core/Src/FIRFilterCode.c **** {
|
||
646 .loc 1 83 0
|
||
647 0406 0AF1010A add r10, r10, #1
|
||
648 .LVL102:
|
||
649 040a D345 cmp fp, r10
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
650 .loc 1 86 0
|
||
651 040c 0093 str r3, [sp]
|
||
83:Core/Src/FIRFilterCode.c **** {
|
||
652 .loc 1 83 0
|
||
653 040e 3FF41BAE beq .L1
|
||
654 .LVL103:
|
||
655 .L43:
|
||
85:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaHigh * Sinc(OmegaHigh * Arg * M_PI) - OmegaLow * Sinc(
|
||
656 .loc 1 85 0
|
||
657 0412 5046 mov r0, r10
|
||
658 0414 FFF7FEFF bl __aeabi_i2d
|
||
659 .LVL104:
|
||
660 0418 DDE90623 ldrd r2, [sp, #24]
|
||
661 041c FFF7FEFF bl __aeabi_dsub
|
||
662 .LVL105:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
663 .loc 1 86 0
|
||
664 0420 65A3 adr r3, .L74+16
|
||
665 0422 D3E90023 ldrd r2, [r3]
|
||
85:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaHigh * Sinc(OmegaHigh * Arg * M_PI) - OmegaLow * Sinc(
|
||
666 .loc 1 85 0
|
||
667 0426 8046 mov r8, r0
|
||
668 0428 8946 mov r9, r1
|
||
669 .LVL106:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
670 .loc 1 86 0
|
||
671 042a FFF7FEFF bl __aeabi_dmul
|
||
672 .LVL107:
|
||
673 .LBB37:
|
||
674 .LBB25:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
675 .loc 1 104 0
|
||
676 042e 5EA3 adr r3, .L74
|
||
677 0430 D3E90023 ldrd r2, [r3]
|
||
678 .LBE25:
|
||
679 .LBE37:
|
||
86:Core/Src/FIRFilterCode.c **** }
|
||
680 .loc 1 86 0
|
||
ARM GAS /tmp/cclqT4it.s page 16
|
||
|
||
|
||
681 0434 0446 mov r4, r0
|
||
682 0436 0D46 mov r5, r1
|
||
683 .LVL108:
|
||
684 .LBB38:
|
||
685 .LBB26:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
686 .loc 1 104 0
|
||
687 0438 FFF7FEFF bl __aeabi_dcmpgt
|
||
688 .LVL109:
|
||
689 043c 0028 cmp r0, #0
|
||
690 043e 97D1 bne .L70
|
||
691 .L34:
|
||
692 .loc 1 105 0
|
||
693 0440 45EC104B vmov d0, r4, r5
|
||
694 0444 FFF7FEFF bl sin
|
||
695 .LVL110:
|
||
696 0448 2246 mov r2, r4
|
||
697 044a 2B46 mov r3, r5
|
||
698 044c 51EC100B vmov r0, r1, d0
|
||
699 0450 FFF7FEFF bl __aeabi_ddiv
|
||
700 .LVL111:
|
||
701 0454 0646 mov r6, r0
|
||
702 0456 0F46 mov r7, r1
|
||
703 0458 95E7 b .L36
|
||
704 .LVL112:
|
||
705 .L40:
|
||
706 .LBE26:
|
||
707 .LBE38:
|
||
708 .LBB39:
|
||
709 .LBB35:
|
||
710 045a 45EC104B vmov d0, r4, r5
|
||
711 045e FFF7FEFF bl sin
|
||
712 .LVL113:
|
||
713 0462 2246 mov r2, r4
|
||
714 0464 2B46 mov r3, r5
|
||
715 0466 51EC100B vmov r0, r1, d0
|
||
716 046a FFF7FEFF bl __aeabi_ddiv
|
||
717 .LVL114:
|
||
718 046e DDE90223 ldrd r2, [sp, #8]
|
||
719 0472 FFF7FEFF bl __aeabi_dmul
|
||
720 .LVL115:
|
||
721 0476 0246 mov r2, r0
|
||
722 0478 0B46 mov r3, r1
|
||
723 047a BDE7 b .L42
|
||
724 .LVL116:
|
||
725 .L37:
|
||
726 .LBE35:
|
||
727 .LBE39:
|
||
728 .LBB40:
|
||
729 .LBB30:
|
||
730 047c 45EC104B vmov d0, r4, r5
|
||
731 0480 FFF7FEFF bl sin
|
||
732 .LVL117:
|
||
733 0484 2246 mov r2, r4
|
||
734 0486 2B46 mov r3, r5
|
||
735 0488 51EC100B vmov r0, r1, d0
|
||
736 048c FFF7FEFF bl __aeabi_ddiv
|
||
ARM GAS /tmp/cclqT4it.s page 17
|
||
|
||
|
||
737 .LVL118:
|
||
738 0490 DDE90423 ldrd r2, [sp, #16]
|
||
739 0494 FFF7FEFF bl __aeabi_dmul
|
||
740 .LVL119:
|
||
741 0498 0246 mov r2, r0
|
||
742 049a 0B46 mov r3, r1
|
||
743 049c 8DE7 b .L39
|
||
744 .LVL120:
|
||
745 .L17:
|
||
746 .LBE30:
|
||
747 .LBE40:
|
||
51:Core/Src/FIRFilterCode.c **** {
|
||
748 .loc 1 51 0
|
||
749 049e 0029 cmp r1, #0
|
||
750 04a0 7FF7D2AD ble .L1
|
||
53:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
751 .loc 1 53 0
|
||
752 04a4 481E subs r0, r1, #1
|
||
753 .LVL121:
|
||
754 04a6 FFF7FEFF bl __aeabi_i2d
|
||
755 .LVL122:
|
||
756 04aa 0022 movs r2, #0
|
||
757 04ac 454B ldr r3, .L74+28
|
||
758 04ae FFF7FEFF bl __aeabi_dmul
|
||
759 .LVL123:
|
||
760 04b2 41A3 adr r3, .L74+16
|
||
761 04b4 D3E90023 ldrd r2, [r3]
|
||
762 04b8 CDE90201 strd r0, [sp, #8]
|
||
763 04bc DDE90001 ldrd r0, [sp]
|
||
764 04c0 FFF7FEFF bl __aeabi_dmul
|
||
765 .LVL124:
|
||
51:Core/Src/FIRFilterCode.c **** {
|
||
766 .loc 1 51 0
|
||
767 04c4 4FF00008 mov r8, #0
|
||
768 04c8 CDE90401 strd r0, [sp, #16]
|
||
769 04cc CDF818B0 str fp, [sp, #24]
|
||
770 04d0 2FE0 b .L25
|
||
771 .LVL125:
|
||
772 .L71:
|
||
773 .LBB41:
|
||
774 .LBB42:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
775 .loc 1 104 0
|
||
776 04d2 2046 mov r0, r4
|
||
777 04d4 2946 mov r1, r5
|
||
778 04d6 FFF7FEFF bl __aeabi_dcmplt
|
||
779 .LVL126:
|
||
780 04da 0028 cmp r0, #0
|
||
781 04dc 43D0 beq .L19
|
||
782 04de DFF8E0B0 ldr fp, .L74+24
|
||
783 04e2 4FF0000A mov r10, #0
|
||
784 .L21:
|
||
785 .LVL127:
|
||
786 .LBE42:
|
||
787 .LBE41:
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
788 .loc 1 54 0
|
||
ARM GAS /tmp/cclqT4it.s page 18
|
||
|
||
|
||
789 04e6 DDE90423 ldrd r2, [sp, #16]
|
||
790 04ea 3046 mov r0, r6
|
||
791 04ec 3946 mov r1, r7
|
||
792 04ee FFF7FEFF bl __aeabi_dmul
|
||
793 .LVL128:
|
||
794 .LBB45:
|
||
795 .LBB46:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
796 .loc 1 104 0
|
||
797 04f2 2DA3 adr r3, .L74
|
||
798 04f4 D3E90023 ldrd r2, [r3]
|
||
799 .LBE46:
|
||
800 .LBE45:
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
801 .loc 1 54 0
|
||
802 04f8 0446 mov r4, r0
|
||
803 04fa 0D46 mov r5, r1
|
||
804 .LVL129:
|
||
805 .LBB49:
|
||
806 .LBB47:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
807 .loc 1 104 0
|
||
808 04fc FFF7FEFF bl __aeabi_dcmpgt
|
||
809 .LVL130:
|
||
810 0500 2BA3 adr r3, .L74+8
|
||
811 0502 D3E90023 ldrd r2, [r3]
|
||
812 0506 0028 cmp r0, #0
|
||
813 0508 3AD0 beq .L22
|
||
814 050a 2046 mov r0, r4
|
||
815 050c 2946 mov r1, r5
|
||
816 050e FFF7FEFF bl __aeabi_dcmplt
|
||
817 .LVL131:
|
||
818 0512 0028 cmp r0, #0
|
||
819 0514 34D0 beq .L22
|
||
820 0516 DDE90023 ldrd r2, [sp]
|
||
821 .L24:
|
||
822 .LVL132:
|
||
823 .LBE47:
|
||
824 .LBE49:
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
825 .loc 1 54 0
|
||
826 051a 5046 mov r0, r10
|
||
827 051c 5946 mov r1, fp
|
||
828 051e FFF7FEFF bl __aeabi_dsub
|
||
829 .LVL133:
|
||
51:Core/Src/FIRFilterCode.c **** {
|
||
830 .loc 1 51 0
|
||
831 0522 069B ldr r3, [sp, #24]
|
||
832 0524 08F10108 add r8, r8, #1
|
||
833 .LVL134:
|
||
834 0528 9845 cmp r8, r3
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
835 .loc 1 54 0
|
||
836 052a E9E80201 strd r0, [r9], #8
|
||
51:Core/Src/FIRFilterCode.c **** {
|
||
837 .loc 1 51 0
|
||
838 052e 3FF48BAD beq .L1
|
||
ARM GAS /tmp/cclqT4it.s page 19
|
||
|
||
|
||
839 .LVL135:
|
||
840 .L25:
|
||
53:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
841 .loc 1 53 0
|
||
842 0532 4046 mov r0, r8
|
||
843 0534 FFF7FEFF bl __aeabi_i2d
|
||
844 .LVL136:
|
||
845 0538 DDE90223 ldrd r2, [sp, #8]
|
||
846 053c FFF7FEFF bl __aeabi_dsub
|
||
847 .LVL137:
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
848 .loc 1 54 0
|
||
849 0540 1DA3 adr r3, .L74+16
|
||
850 0542 D3E90023 ldrd r2, [r3]
|
||
53:Core/Src/FIRFilterCode.c **** FirCoeff[j] = Sinc(Arg * M_PI) - OmegaC * Sinc(OmegaC * Arg * M_PI);
|
||
851 .loc 1 53 0
|
||
852 0546 0646 mov r6, r0
|
||
853 0548 0F46 mov r7, r1
|
||
854 .LVL138:
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
855 .loc 1 54 0
|
||
856 054a FFF7FEFF bl __aeabi_dmul
|
||
857 .LVL139:
|
||
858 .LBB50:
|
||
859 .LBB43:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
860 .loc 1 104 0
|
||
861 054e 16A3 adr r3, .L74
|
||
862 0550 D3E90023 ldrd r2, [r3]
|
||
863 .LBE43:
|
||
864 .LBE50:
|
||
54:Core/Src/FIRFilterCode.c **** }
|
||
865 .loc 1 54 0
|
||
866 0554 0446 mov r4, r0
|
||
867 0556 0D46 mov r5, r1
|
||
868 .LVL140:
|
||
869 .LBB51:
|
||
870 .LBB44:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
871 .loc 1 104 0
|
||
872 0558 FFF7FEFF bl __aeabi_dcmpgt
|
||
873 .LVL141:
|
||
874 055c 14A3 adr r3, .L74+8
|
||
875 055e D3E90023 ldrd r2, [r3]
|
||
876 0562 0028 cmp r0, #0
|
||
877 0564 B5D1 bne .L71
|
||
878 .L19:
|
||
879 .loc 1 105 0
|
||
880 0566 45EC104B vmov d0, r4, r5
|
||
881 056a FFF7FEFF bl sin
|
||
882 .LVL142:
|
||
883 056e 2246 mov r2, r4
|
||
884 0570 2B46 mov r3, r5
|
||
885 0572 51EC100B vmov r0, r1, d0
|
||
886 0576 FFF7FEFF bl __aeabi_ddiv
|
||
887 .LVL143:
|
||
888 057a 8246 mov r10, r0
|
||
ARM GAS /tmp/cclqT4it.s page 20
|
||
|
||
|
||
889 057c 8B46 mov fp, r1
|
||
890 057e B2E7 b .L21
|
||
891 .LVL144:
|
||
892 .L22:
|
||
893 .LBE44:
|
||
894 .LBE51:
|
||
895 .LBB52:
|
||
896 .LBB48:
|
||
897 0580 45EC104B vmov d0, r4, r5
|
||
898 0584 FFF7FEFF bl sin
|
||
899 .LVL145:
|
||
900 0588 2246 mov r2, r4
|
||
901 058a 2B46 mov r3, r5
|
||
902 058c 51EC100B vmov r0, r1, d0
|
||
903 0590 FFF7FEFF bl __aeabi_ddiv
|
||
904 .LVL146:
|
||
905 0594 DDE90023 ldrd r2, [sp]
|
||
906 0598 FFF7FEFF bl __aeabi_dmul
|
||
907 .LVL147:
|
||
908 059c 0246 mov r2, r0
|
||
909 059e 0B46 mov r3, r1
|
||
910 05a0 BBE7 b .L24
|
||
911 .L75:
|
||
912 05a2 00BFAFF3 .align 3
|
||
912 0080
|
||
913 .L74:
|
||
914 05a8 F168E388 .word 2296604913
|
||
915 05ac B5F8E4BE .word -1092290379
|
||
916 05b0 F168E388 .word 2296604913
|
||
917 05b4 B5F8E43E .word 1055193269
|
||
918 05b8 182D4454 .word 1413754136
|
||
919 05bc FB210940 .word 1074340347
|
||
920 05c0 0000F03F .word 1072693248
|
||
921 05c4 0000E03F .word 1071644672
|
||
922 .LBE48:
|
||
923 .LBE52:
|
||
924 .cfi_endproc
|
||
925 .LFE0:
|
||
927 .section .text.Sinc,"ax",%progbits
|
||
928 .align 1
|
||
929 .p2align 2,,3
|
||
930 .global Sinc
|
||
931 .syntax unified
|
||
932 .thumb
|
||
933 .thumb_func
|
||
934 .fpu fpv4-sp-d16
|
||
936 Sinc:
|
||
937 .LFB1:
|
||
103:Core/Src/FIRFilterCode.c **** if(x > -1.0E-5 && x < 1.0E-5)return(1.0);
|
||
938 .loc 1 103 0
|
||
939 .cfi_startproc
|
||
940 @ args = 0, pretend = 0, frame = 0
|
||
941 @ frame_needed = 0, uses_anonymous_args = 0
|
||
942 .LVL148:
|
||
943 0000 38B5 push {r3, r4, r5, lr}
|
||
944 .LCFI6:
|
||
945 .cfi_def_cfa_offset 16
|
||
ARM GAS /tmp/cclqT4it.s page 21
|
||
|
||
|
||
946 .cfi_offset 3, -16
|
||
947 .cfi_offset 4, -12
|
||
948 .cfi_offset 5, -8
|
||
949 .cfi_offset 14, -4
|
||
103:Core/Src/FIRFilterCode.c **** if(x > -1.0E-5 && x < 1.0E-5)return(1.0);
|
||
950 .loc 1 103 0
|
||
951 0002 55EC104B vmov r4, r5, d0
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
952 .loc 1 104 0
|
||
953 0006 12A3 adr r3, .L83+8
|
||
954 0008 D3E90023 ldrd r2, [r3]
|
||
955 000c 10EE100A vmov r0, s0 @ int
|
||
956 0010 2946 mov r1, r5
|
||
957 0012 FFF7FEFF bl __aeabi_dcmpgt
|
||
958 .LVL149:
|
||
959 0016 38B1 cbz r0, .L77
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
960 .loc 1 104 0 is_stmt 0 discriminator 1
|
||
961 0018 0FA3 adr r3, .L83+16
|
||
962 001a D3E90023 ldrd r2, [r3]
|
||
963 001e 2046 mov r0, r4
|
||
964 0020 2946 mov r1, r5
|
||
965 0022 FFF7FEFF bl __aeabi_dcmplt
|
||
966 .LVL150:
|
||
967 0026 60B9 cbnz r0, .L80
|
||
968 .L77:
|
||
969 .loc 1 105 0 is_stmt 1
|
||
970 0028 45EC104B vmov d0, r4, r5
|
||
971 002c FFF7FEFF bl sin
|
||
972 .LVL151:
|
||
973 0030 2246 mov r2, r4
|
||
974 0032 2B46 mov r3, r5
|
||
975 0034 51EC100B vmov r0, r1, d0
|
||
976 0038 FFF7FEFF bl __aeabi_ddiv
|
||
977 .LVL152:
|
||
978 003c 41EC100B vmov d0, r0, r1
|
||
106:Core/Src/FIRFilterCode.c **** }
|
||
979 .loc 1 106 0
|
||
980 0040 38BD pop {r3, r4, r5, pc}
|
||
981 .LVL153:
|
||
982 .L80:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
983 .loc 1 104 0
|
||
984 0042 9FED010B vldr.64 d0, .L83
|
||
985 .loc 1 106 0
|
||
986 0046 38BD pop {r3, r4, r5, pc}
|
||
987 .LVL154:
|
||
988 .L84:
|
||
989 .align 3
|
||
990 .L83:
|
||
991 0048 00000000 .word 0
|
||
992 004c 0000F03F .word 1072693248
|
||
993 0050 F168E388 .word 2296604913
|
||
994 0054 B5F8E4BE .word -1092290379
|
||
995 0058 F168E388 .word 2296604913
|
||
996 005c B5F8E43E .word 1055193269
|
||
997 .cfi_endproc
|
||
ARM GAS /tmp/cclqT4it.s page 22
|
||
|
||
|
||
998 .LFE1:
|
||
1000 .section .text.Bessel,"ax",%progbits
|
||
1001 .align 1
|
||
1002 .p2align 2,,3
|
||
1003 .global Bessel
|
||
1004 .syntax unified
|
||
1005 .thumb
|
||
1006 .thumb_func
|
||
1007 .fpu fpv4-sp-d16
|
||
1009 Bessel:
|
||
1010 .LFB2:
|
||
107:Core/Src/FIRFilterCode.c ****
|
||
108:Core/Src/FIRFilterCode.c **** // This gets used with the Kaiser window.
|
||
109:Core/Src/FIRFilterCode.c **** double Bessel(double x)
|
||
110:Core/Src/FIRFilterCode.c **** {
|
||
1011 .loc 1 110 0
|
||
1012 .cfi_startproc
|
||
1013 @ args = 0, pretend = 0, frame = 0
|
||
1014 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1015 .LVL155:
|
||
1016 0000 2DE9F047 push {r4, r5, r6, r7, r8, r9, r10, lr}
|
||
1017 .LCFI7:
|
||
1018 .cfi_def_cfa_offset 32
|
||
1019 .cfi_offset 4, -32
|
||
1020 .cfi_offset 5, -28
|
||
1021 .cfi_offset 6, -24
|
||
1022 .cfi_offset 7, -20
|
||
1023 .cfi_offset 8, -16
|
||
1024 .cfi_offset 9, -12
|
||
1025 .cfi_offset 10, -8
|
||
1026 .cfi_offset 14, -4
|
||
111:Core/Src/FIRFilterCode.c **** double Sum=0.0, XtoIpower;
|
||
112:Core/Src/FIRFilterCode.c **** int i, j, Factorial;
|
||
113:Core/Src/FIRFilterCode.c **** for(i=1; i<10; i++)
|
||
114:Core/Src/FIRFilterCode.c **** {
|
||
115:Core/Src/FIRFilterCode.c **** XtoIpower = pow(x/2.0, (double)i);
|
||
1027 .loc 1 115 0
|
||
1028 0004 0022 movs r2, #0
|
||
110:Core/Src/FIRFilterCode.c **** double Sum=0.0, XtoIpower;
|
||
1029 .loc 1 110 0
|
||
1030 0006 2DED028B vpush.64 {d8}
|
||
1031 .LCFI8:
|
||
1032 .cfi_def_cfa_offset 40
|
||
1033 .cfi_offset 80, -40
|
||
1034 .cfi_offset 81, -36
|
||
1035 .loc 1 115 0
|
||
1036 000a 534B ldr r3, .L109+56
|
||
1037 000c 524F ldr r7, .L109+56
|
||
1038 000e 51EC100B vmov r0, r1, d0
|
||
1039 0012 FFF7FEFF bl __aeabi_dmul
|
||
1040 .LVL156:
|
||
116:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
117:Core/Src/FIRFilterCode.c **** for(j=1; j<=i; j++)Factorial *= j;
|
||
118:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1041 .loc 1 118 0
|
||
1042 0016 42A5 adr r5, .L109
|
||
1043 0018 D5E90045 ldrd r4, [r5]
|
||
ARM GAS /tmp/cclqT4it.s page 23
|
||
|
||
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1044 .loc 1 115 0
|
||
1045 001c 41EC180B vmov d8, r0, r1
|
||
1046 0020 4FF0010A mov r10, #1
|
||
111:Core/Src/FIRFilterCode.c **** int i, j, Factorial;
|
||
1047 .loc 1 111 0
|
||
1048 0024 4FF00008 mov r8, #0
|
||
1049 0028 4FF00009 mov r9, #0
|
||
1050 002c 0026 movs r6, #0
|
||
1051 .LVL157:
|
||
1052 .L86:
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1053 .loc 1 115 0
|
||
1054 002e 5046 mov r0, r10
|
||
1055 0030 FFF7FEFF bl __aeabi_i2d
|
||
1056 .LVL158:
|
||
1057 0034 B0EE480A vmov.f32 s0, s16
|
||
1058 0038 F0EE680A vmov.f32 s1, s17
|
||
1059 003c 41EC110B vmov d1, r0, r1
|
||
1060 0040 FFF7FEFF bl pow
|
||
1061 .LVL159:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1062 .loc 1 117 0
|
||
1063 0044 BAF1010F cmp r10, #1
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1064 .loc 1 115 0
|
||
1065 0048 51EC100B vmov r0, r1, d0
|
||
1066 .LVL160:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1067 .loc 1 117 0
|
||
1068 004c 32D0 beq .L87
|
||
1069 .LVL161:
|
||
1070 004e BAF1020F cmp r10, #2
|
||
1071 0052 45D0 beq .L102
|
||
1072 .LVL162:
|
||
1073 0054 BAF1030F cmp r10, #3
|
||
1074 0058 47D0 beq .L103
|
||
1075 .LVL163:
|
||
1076 005a BAF1040F cmp r10, #4
|
||
1077 005e 4AD0 beq .L104
|
||
1078 .LVL164:
|
||
1079 0060 BAF1050F cmp r10, #5
|
||
1080 0064 4DD0 beq .L105
|
||
1081 .LVL165:
|
||
1082 0066 BAF1060F cmp r10, #6
|
||
1083 006a 1ED0 beq .L106
|
||
1084 .LVL166:
|
||
1085 006c BAF1070F cmp r10, #7
|
||
1086 0070 4DD0 beq .L107
|
||
1087 .LVL167:
|
||
1088 0072 BAF1090F cmp r10, #9
|
||
1089 0076 2CD1 bne .L108
|
||
1090 .loc 1 118 0
|
||
1091 0078 2BA3 adr r3, .L109+8
|
||
1092 007a D3E90023 ldrd r2, [r3]
|
||
1093 007e FFF7FEFF bl __aeabi_dmul
|
||
1094 .LVL168:
|
||
ARM GAS /tmp/cclqT4it.s page 24
|
||
|
||
|
||
1095 0082 0246 mov r2, r0
|
||
1096 0084 0B46 mov r3, r1
|
||
1097 0086 FFF7FEFF bl __aeabi_dmul
|
||
1098 .LVL169:
|
||
1099 008a 0246 mov r2, r0
|
||
1100 008c 0B46 mov r3, r1
|
||
1101 008e 4046 mov r0, r8
|
||
1102 0090 4946 mov r1, r9
|
||
1103 0092 FFF7FEFF bl __aeabi_dadd
|
||
1104 .LVL170:
|
||
119:Core/Src/FIRFilterCode.c **** }
|
||
120:Core/Src/FIRFilterCode.c **** return(1.0 + Sum);
|
||
1105 .loc 1 120 0
|
||
1106 0096 0022 movs r2, #0
|
||
1107 0098 304B ldr r3, .L109+60
|
||
1108 009a FFF7FEFF bl __aeabi_dadd
|
||
1109 .LVL171:
|
||
121:Core/Src/FIRFilterCode.c **** }
|
||
1110 .loc 1 121 0
|
||
1111 009e BDEC028B vldm sp!, {d8}
|
||
1112 .LCFI9:
|
||
1113 .cfi_remember_state
|
||
1114 .cfi_restore 80
|
||
1115 .cfi_restore 81
|
||
1116 .cfi_def_cfa_offset 32
|
||
1117 00a2 41EC100B vmov d0, r0, r1
|
||
1118 00a6 BDE8F087 pop {r4, r5, r6, r7, r8, r9, r10, pc}
|
||
1119 .LVL172:
|
||
1120 .L106:
|
||
1121 .LCFI10:
|
||
1122 .cfi_restore_state
|
||
1123 00aa 21A3 adr r3, .L109+16
|
||
1124 00ac D3E90023 ldrd r2, [r3]
|
||
1125 00b0 FFF7FEFF bl __aeabi_dmul
|
||
1126 .LVL173:
|
||
1127 .L87:
|
||
118:Core/Src/FIRFilterCode.c **** }
|
||
1128 .loc 1 118 0
|
||
1129 00b4 0246 mov r2, r0
|
||
1130 00b6 0B46 mov r3, r1
|
||
1131 .L101:
|
||
1132 00b8 FFF7FEFF bl __aeabi_dmul
|
||
1133 .LVL174:
|
||
1134 00bc 0246 mov r2, r0
|
||
1135 00be 0B46 mov r3, r1
|
||
1136 00c0 4046 mov r0, r8
|
||
1137 00c2 4946 mov r1, r9
|
||
1138 00c4 FFF7FEFF bl __aeabi_dadd
|
||
1139 .LVL175:
|
||
1140 00c8 0AF1010A add r10, r10, #1
|
||
1141 .LVL176:
|
||
1142 00cc 8046 mov r8, r0
|
||
1143 .LVL177:
|
||
1144 00ce 8946 mov r9, r1
|
||
1145 .LVL178:
|
||
1146 00d0 ADE7 b .L86
|
||
1147 .LVL179:
|
||
ARM GAS /tmp/cclqT4it.s page 25
|
||
|
||
|
||
1148 .L108:
|
||
118:Core/Src/FIRFilterCode.c **** }
|
||
1149 .loc 1 118 0 is_stmt 0 discriminator 2
|
||
1150 00d2 2246 mov r2, r4
|
||
1151 00d4 2B46 mov r3, r5
|
||
1152 00d6 FFF7FEFF bl __aeabi_dmul
|
||
1153 .LVL180:
|
||
1154 00da 0246 mov r2, r0
|
||
1155 00dc 0B46 mov r3, r1
|
||
1156 00de EBE7 b .L101
|
||
1157 .LVL181:
|
||
1158 .L102:
|
||
1159 00e0 3246 mov r2, r6
|
||
1160 00e2 3B46 mov r3, r7
|
||
1161 00e4 FFF7FEFF bl __aeabi_dmul
|
||
1162 .LVL182:
|
||
1163 00e8 E4E7 b .L87
|
||
1164 .LVL183:
|
||
1165 .L103:
|
||
1166 00ea 13A3 adr r3, .L109+24
|
||
1167 00ec D3E90023 ldrd r2, [r3]
|
||
1168 00f0 FFF7FEFF bl __aeabi_dmul
|
||
1169 .LVL184:
|
||
1170 00f4 DEE7 b .L87
|
||
1171 .LVL185:
|
||
1172 .L104:
|
||
1173 00f6 12A3 adr r3, .L109+32
|
||
1174 00f8 D3E90023 ldrd r2, [r3]
|
||
1175 00fc FFF7FEFF bl __aeabi_dmul
|
||
1176 .LVL186:
|
||
1177 0100 D8E7 b .L87
|
||
1178 .LVL187:
|
||
1179 .L105:
|
||
1180 0102 11A3 adr r3, .L109+40
|
||
1181 0104 D3E90023 ldrd r2, [r3]
|
||
1182 0108 FFF7FEFF bl __aeabi_dmul
|
||
1183 .LVL188:
|
||
1184 010c D2E7 b .L87
|
||
1185 .LVL189:
|
||
1186 .L107:
|
||
1187 010e 10A3 adr r3, .L109+48
|
||
1188 0110 D3E90023 ldrd r2, [r3]
|
||
1189 0114 FFF7FEFF bl __aeabi_dmul
|
||
1190 .LVL190:
|
||
1191 0118 CCE7 b .L87
|
||
1192 .L110:
|
||
1193 011a 00BFAFF3 .align 3
|
||
1193 0080
|
||
1194 .L109:
|
||
1195 0120 1AA0011A .word 436314138
|
||
1196 0124 A001FA3E .word 1056571808
|
||
1197 0128 34C756A5 .word 2773927732
|
||
1198 012c E31DC73E .word 1053236707
|
||
1199 0130 176CC116 .word 381774871
|
||
1200 0134 6CC1563F .word 1062650220
|
||
1201 0138 55555555 .word 1431655765
|
||
1202 013c 5555C53F .word 1069897045
|
||
ARM GAS /tmp/cclqT4it.s page 26
|
||
|
||
|
||
1203 0140 55555555 .word 1431655765
|
||
1204 0144 5555A53F .word 1067799893
|
||
1205 0148 11111111 .word 286331153
|
||
1206 014c 1111813F .word 1065423121
|
||
1207 0150 1AA0011A .word 436314138
|
||
1208 0154 A0012A3F .word 1059717536
|
||
1209 0158 0000E03F .word 1071644672
|
||
1210 015c 0000F03F .word 1072693248
|
||
1211 .cfi_endproc
|
||
1212 .LFE2:
|
||
1214 .global __aeabi_dcmple
|
||
1215 .global __aeabi_dcmpge
|
||
1216 .section .text.FIRFilterWindow,"ax",%progbits
|
||
1217 .align 1
|
||
1218 .p2align 2,,3
|
||
1219 .global FIRFilterWindow
|
||
1220 .syntax unified
|
||
1221 .thumb
|
||
1222 .thumb_func
|
||
1223 .fpu fpv4-sp-d16
|
||
1225 FIRFilterWindow:
|
||
1226 .LFB3:
|
||
122:Core/Src/FIRFilterCode.c ****
|
||
123:Core/Src/FIRFilterCode.c **** //---------------------------------------------------------------------------
|
||
124:Core/Src/FIRFilterCode.c ****
|
||
125:Core/Src/FIRFilterCode.c **** // Used to reduce the sinc(x) effects on a set of FIR coefficients. This will, unfortunately,
|
||
126:Core/Src/FIRFilterCode.c **** // widen the filter's transition band, but the stop band attenuation will improve dramatically.
|
||
127:Core/Src/FIRFilterCode.c **** void FIRFilterWindow(double *FIRCoeff, int N, TWindowType WindowType, double Beta)
|
||
128:Core/Src/FIRFilterCode.c **** {
|
||
1227 .loc 1 128 0 is_stmt 1
|
||
1228 .cfi_startproc
|
||
1229 @ args = 0, pretend = 0, frame = 56
|
||
1230 @ frame_needed = 0, uses_anonymous_args = 0
|
||
1231 .LVL191:
|
||
129:Core/Src/FIRFilterCode.c **** if(WindowType == wtNONE) return;
|
||
1232 .loc 1 129 0
|
||
1233 0000 012A cmp r2, #1
|
||
1234 0002 00F01382 beq .L178
|
||
128:Core/Src/FIRFilterCode.c **** if(WindowType == wtNONE) return;
|
||
1235 .loc 1 128 0
|
||
1236 0006 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
||
1237 .LCFI11:
|
||
1238 .cfi_def_cfa_offset 36
|
||
1239 .cfi_offset 4, -36
|
||
1240 .cfi_offset 5, -32
|
||
1241 .cfi_offset 6, -28
|
||
1242 .cfi_offset 7, -24
|
||
1243 .cfi_offset 8, -20
|
||
1244 .cfi_offset 9, -16
|
||
1245 .cfi_offset 10, -12
|
||
1246 .cfi_offset 11, -8
|
||
1247 .cfi_offset 14, -4
|
||
1248 000a 2DED048B vpush.64 {d8, d9}
|
||
1249 .LCFI12:
|
||
1250 .cfi_def_cfa_offset 52
|
||
1251 .cfi_offset 80, -52
|
||
1252 .cfi_offset 81, -48
|
||
ARM GAS /tmp/cclqT4it.s page 27
|
||
|
||
|
||
1253 .cfi_offset 82, -44
|
||
1254 .cfi_offset 83, -40
|
||
1255 000e 0B46 mov r3, r1
|
||
1256 0010 8FB0 sub sp, sp, #60
|
||
1257 .LCFI13:
|
||
1258 .cfi_def_cfa_offset 112
|
||
130:Core/Src/FIRFilterCode.c ****
|
||
131:Core/Src/FIRFilterCode.c **** int j;
|
||
132:Core/Src/FIRFilterCode.c **** double dN, *WinCoeff;
|
||
133:Core/Src/FIRFilterCode.c ****
|
||
134:Core/Src/FIRFilterCode.c **** if(Beta < 0.0)Beta = 0.0;
|
||
135:Core/Src/FIRFilterCode.c **** if(Beta > 10.0)Beta = 10.0;
|
||
136:Core/Src/FIRFilterCode.c ****
|
||
137:Core/Src/FIRFilterCode.c **** // WinCoeff = new(std::nothrow) double[N+2];
|
||
138:Core/Src/FIRFilterCode.c **** WinCoeff = (double *) malloc(sizeof(double) * (N+2));
|
||
1259 .loc 1 138 0
|
||
1260 0012 0233 adds r3, r3, #2
|
||
1261 0014 DB00 lsls r3, r3, #3
|
||
1262 0016 0C90 str r0, [sp, #48]
|
||
1263 0018 1846 mov r0, r3
|
||
1264 .LVL192:
|
||
1265 001a 57EC106B vmov r6, r7, d0
|
||
1266 .LVL193:
|
||
1267 001e 0591 str r1, [sp, #20]
|
||
1268 0020 1546 mov r5, r2
|
||
1269 0022 0893 str r3, [sp, #32]
|
||
1270 0024 FFF7FEFF bl malloc
|
||
1271 .LVL194:
|
||
139:Core/Src/FIRFilterCode.c **** if(WinCoeff == NULL){
|
||
1272 .loc 1 139 0
|
||
1273 0028 0490 str r0, [sp, #16]
|
||
1274 002a 0028 cmp r0, #0
|
||
1275 002c 00F08D80 beq .L111
|
||
1276 0030 0022 movs r2, #0
|
||
1277 0032 D74B ldr r3, .L206+40
|
||
1278 0034 3046 mov r0, r6
|
||
1279 .LVL195:
|
||
1280 0036 3946 mov r1, r7
|
||
1281 0038 FFF7FEFF bl __aeabi_dcmple
|
||
1282 .LVL196:
|
||
1283 003c 0028 cmp r0, #0
|
||
1284 003e 00F08180 beq .L184
|
||
1285 .LVL197:
|
||
1286 .L115:
|
||
1287 0042 0022 movs r2, #0
|
||
1288 0044 0023 movs r3, #0
|
||
1289 0046 3046 mov r0, r6
|
||
1290 0048 3946 mov r1, r7
|
||
1291 004a 47EC186B vmov d8, r6, r7
|
||
1292 004e FFF7FEFF bl __aeabi_dcmpge
|
||
1293 .LVL198:
|
||
1294 0052 0028 cmp r0, #0
|
||
1295 0054 73D0 beq .L185
|
||
1296 .L116:
|
||
140:Core/Src/FIRFilterCode.c **** // ShowMessage("Failed to allocate memory in WindowData() ");
|
||
141:Core/Src/FIRFilterCode.c **** return;
|
||
142:Core/Src/FIRFilterCode.c **** }
|
||
ARM GAS /tmp/cclqT4it.s page 28
|
||
|
||
|
||
143:Core/Src/FIRFilterCode.c ****
|
||
144:Core/Src/FIRFilterCode.c **** // Calculate the window for N/2 points, then fold the window over (at the bottom).
|
||
145:Core/Src/FIRFilterCode.c **** dN = N + 1; // a double
|
||
1297 .loc 1 145 0
|
||
1298 0056 059B ldr r3, [sp, #20]
|
||
1299 0058 581C adds r0, r3, #1
|
||
1300 005a FFF7FEFF bl __aeabi_i2d
|
||
1301 .LVL199:
|
||
146:Core/Src/FIRFilterCode.c **** if(WindowType == wtKAISER)
|
||
1302 .loc 1 146 0
|
||
1303 005e 022D cmp r5, #2
|
||
145:Core/Src/FIRFilterCode.c **** if(WindowType == wtKAISER)
|
||
1304 .loc 1 145 0
|
||
1305 0060 CDE90601 strd r0, [sp, #24]
|
||
1306 .LVL200:
|
||
1307 .loc 1 146 0
|
||
1308 0064 76D0 beq .L186
|
||
147:Core/Src/FIRFilterCode.c **** {
|
||
148:Core/Src/FIRFilterCode.c **** double Arg;
|
||
149:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)
|
||
150:Core/Src/FIRFilterCode.c **** {
|
||
151:Core/Src/FIRFilterCode.c **** Arg = Beta * sqrt(1.0 - pow( ((double)(2*j+2) - dN) / dN, 2.0) );
|
||
152:Core/Src/FIRFilterCode.c **** WinCoeff[j] = Bessel(Arg) / Bessel(Beta);
|
||
153:Core/Src/FIRFilterCode.c **** }
|
||
154:Core/Src/FIRFilterCode.c **** }
|
||
155:Core/Src/FIRFilterCode.c ****
|
||
156:Core/Src/FIRFilterCode.c **** else if(WindowType == wtSINC) // Lanczos
|
||
1309 .loc 1 156 0
|
||
1310 0066 032D cmp r5, #3
|
||
1311 0068 00F0E181 beq .L187
|
||
157:Core/Src/FIRFilterCode.c **** {
|
||
158:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)WinCoeff[j] = Sinc((double)(2*j+1-N)/dN * M_PI );
|
||
159:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
160:Core/Src/FIRFilterCode.c **** }
|
||
161:Core/Src/FIRFilterCode.c ****
|
||
162:Core/Src/FIRFilterCode.c **** else if(WindowType == wtSINE) // Hanning if Beta = 2
|
||
1312 .loc 1 162 0
|
||
1313 006c 0E2D cmp r5, #14
|
||
1314 006e 5ED1 bne .L153
|
||
1315 .LVL201:
|
||
163:Core/Src/FIRFilterCode.c **** {
|
||
164:Core/Src/FIRFilterCode.c **** for(j=0; j<N/2; j++)WinCoeff[j] = sin((double)(j+1) * M_PI / dN);
|
||
1316 .loc 1 164 0
|
||
1317 0070 059B ldr r3, [sp, #20]
|
||
1318 0072 03EBD37A add r10, r3, r3, lsr #31
|
||
1319 0076 4FEA6A0A asr r10, r10, #1
|
||
1320 007a BAF1000F cmp r10, #0
|
||
1321 007e 42DD ble .L148
|
||
1322 0080 0246 mov r2, r0
|
||
1323 0082 0B46 mov r3, r1
|
||
1324 0084 0020 movs r0, #0
|
||
1325 .LVL202:
|
||
1326 0086 C349 ldr r1, .L206+44
|
||
1327 0088 FFF7FEFF bl __aeabi_ddiv
|
||
1328 .LVL203:
|
||
1329 008c B6A7 adr r7, .L206
|
||
1330 008e D7E90067 ldrd r6, [r7]
|
||
ARM GAS /tmp/cclqT4it.s page 29
|
||
|
||
|
||
1331 0092 DDF81090 ldr r9, [sp, #16]
|
||
1332 0096 0446 mov r4, r0
|
||
1333 0098 0D46 mov r5, r1
|
||
1334 009a C846 mov r8, r9
|
||
1335 009c 4FF0000B mov fp, #0
|
||
1336 .LVL204:
|
||
1337 .L149:
|
||
1338 .loc 1 164 0 is_stmt 0 discriminator 3
|
||
1339 00a0 0BF1010B add fp, fp, #1
|
||
1340 .LVL205:
|
||
1341 00a4 5846 mov r0, fp
|
||
1342 00a6 FFF7FEFF bl __aeabi_i2d
|
||
1343 .LVL206:
|
||
1344 00aa 3246 mov r2, r6
|
||
1345 00ac 3B46 mov r3, r7
|
||
1346 00ae FFF7FEFF bl __aeabi_dmul
|
||
1347 .LVL207:
|
||
1348 00b2 2246 mov r2, r4
|
||
1349 00b4 2B46 mov r3, r5
|
||
1350 00b6 FFF7FEFF bl __aeabi_dmul
|
||
1351 .LVL208:
|
||
1352 00ba 41EC100B vmov d0, r0, r1
|
||
1353 00be FFF7FEFF bl sin
|
||
1354 .LVL209:
|
||
1355 00c2 D345 cmp fp, r10
|
||
1356 00c4 A9EC020B vstmia.64 r9!, {d0}
|
||
1357 .LVL210:
|
||
1358 00c8 EAD1 bne .L149
|
||
1359 00ca 049B ldr r3, [sp, #16]
|
||
1360 00cc 03EBCB04 add r4, r3, fp, lsl #3
|
||
1361 .LVL211:
|
||
1362 .L150:
|
||
165:Core/Src/FIRFilterCode.c **** for(j=0; j<N/2; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
1363 .loc 1 165 0 is_stmt 1 discriminator 3
|
||
1364 00d0 98ED000B vldr.64 d0, [r8]
|
||
1365 00d4 B0EE481A vmov.f32 s2, s16
|
||
1366 00d8 F0EE681A vmov.f32 s3, s17
|
||
1367 00dc FFF7FEFF bl pow
|
||
1368 .LVL212:
|
||
1369 00e0 A8EC020B vstmia.64 r8!, {d0}
|
||
1370 00e4 4445 cmp r4, r8
|
||
1371 00e6 F3D1 bne .L150
|
||
1372 .L183:
|
||
1373 00e8 089B ldr r3, [sp, #32]
|
||
1374 00ea 103B subs r3, r3, #16
|
||
1375 00ec 0993 str r3, [sp, #36]
|
||
1376 .L151:
|
||
1377 00ee 099B ldr r3, [sp, #36]
|
||
1378 00f0 049A ldr r2, [sp, #16]
|
||
1379 00f2 1946 mov r1, r3
|
||
1380 00f4 1144 add r1, r1, r2
|
||
164:Core/Src/FIRFilterCode.c **** for(j=0; j<N/2; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
1381 .loc 1 164 0 discriminator 3
|
||
1382 00f6 0023 movs r3, #0
|
||
1383 .L152:
|
||
1384 .LVL213:
|
||
166:Core/Src/FIRFilterCode.c **** }
|
||
ARM GAS /tmp/cclqT4it.s page 30
|
||
|
||
|
||
167:Core/Src/FIRFilterCode.c ****
|
||
168:Core/Src/FIRFilterCode.c **** else // Error.
|
||
169:Core/Src/FIRFilterCode.c **** {
|
||
170:Core/Src/FIRFilterCode.c **** // ShowMessage("Incorrect window type in WindowFFTData");
|
||
171:Core/Src/FIRFilterCode.c **** // delete[] WinCoeff;
|
||
172:Core/Src/FIRFilterCode.c **** free(WinCoeff);
|
||
173:Core/Src/FIRFilterCode.c **** return;
|
||
174:Core/Src/FIRFilterCode.c **** }
|
||
175:Core/Src/FIRFilterCode.c ****
|
||
176:Core/Src/FIRFilterCode.c **** // Fold the coefficients over.
|
||
177:Core/Src/FIRFilterCode.c **** for(j=0; j<N/2; j++)WinCoeff[N-j-1] = WinCoeff[j];
|
||
1385 .loc 1 177 0 discriminator 3
|
||
1386 00f8 F2E80245 ldrd r4, [r2], #8
|
||
1387 00fc 0133 adds r3, r3, #1
|
||
1388 .LVL214:
|
||
1389 00fe 5B45 cmp r3, fp
|
||
1390 0100 61E90245 strd r4, [r1, #-8]!
|
||
1391 0104 F8DB blt .L152
|
||
1392 .LVL215:
|
||
1393 .L148:
|
||
178:Core/Src/FIRFilterCode.c ****
|
||
179:Core/Src/FIRFilterCode.c **** // Apply the window to the FIR coefficients.
|
||
180:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)FIRCoeff[j] *= WinCoeff[j];
|
||
1394 .loc 1 180 0
|
||
1395 0106 059B ldr r3, [sp, #20]
|
||
1396 0108 002B cmp r3, #0
|
||
1397 010a 10DD ble .L153
|
||
1398 010c 089B ldr r3, [sp, #32]
|
||
1399 010e 103B subs r3, r3, #16
|
||
1400 0110 0993 str r3, [sp, #36]
|
||
1401 .L157:
|
||
1402 0112 0C9C ldr r4, [sp, #48]
|
||
1403 0114 049D ldr r5, [sp, #16]
|
||
1404 0116 2344 add r3, r3, r4
|
||
1405 0118 1E46 mov r6, r3
|
||
1406 .LVL216:
|
||
1407 .L154:
|
||
1408 .loc 1 180 0 is_stmt 0 discriminator 3
|
||
1409 011a D4E90001 ldrd r0, [r4]
|
||
1410 011e F5E80223 ldrd r2, [r5], #8
|
||
1411 0122 FFF7FEFF bl __aeabi_dmul
|
||
1412 .LVL217:
|
||
1413 0126 E4E80201 strd r0, [r4], #8
|
||
1414 012a A642 cmp r6, r4
|
||
1415 012c F5D1 bne .L154
|
||
1416 .L153:
|
||
181:Core/Src/FIRFilterCode.c ****
|
||
182:Core/Src/FIRFilterCode.c **** // delete[] WinCoeff;
|
||
183:Core/Src/FIRFilterCode.c **** free(WinCoeff);
|
||
1417 .loc 1 183 0 is_stmt 1
|
||
1418 012e 0498 ldr r0, [sp, #16]
|
||
184:Core/Src/FIRFilterCode.c ****
|
||
185:Core/Src/FIRFilterCode.c **** }
|
||
1419 .loc 1 185 0
|
||
1420 0130 0FB0 add sp, sp, #60
|
||
1421 .LCFI14:
|
||
1422 .cfi_remember_state
|
||
ARM GAS /tmp/cclqT4it.s page 31
|
||
|
||
|
||
1423 .cfi_def_cfa_offset 52
|
||
1424 @ sp needed
|
||
1425 0132 BDEC048B vldm sp!, {d8-d9}
|
||
1426 .LCFI15:
|
||
1427 .cfi_restore 82
|
||
1428 .cfi_restore 83
|
||
1429 .cfi_restore 80
|
||
1430 .cfi_restore 81
|
||
1431 .cfi_def_cfa_offset 36
|
||
1432 0136 BDE8F04F pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
||
1433 .LCFI16:
|
||
1434 .cfi_restore 14
|
||
1435 .cfi_restore 11
|
||
1436 .cfi_restore 10
|
||
1437 .cfi_restore 9
|
||
1438 .cfi_restore 8
|
||
1439 .cfi_restore 7
|
||
1440 .cfi_restore 6
|
||
1441 .cfi_restore 5
|
||
1442 .cfi_restore 4
|
||
1443 .cfi_def_cfa_offset 0
|
||
1444 .LVL218:
|
||
183:Core/Src/FIRFilterCode.c ****
|
||
1445 .loc 1 183 0
|
||
1446 013a FFF7FEBF b free
|
||
1447 .LVL219:
|
||
1448 .L185:
|
||
1449 .LCFI17:
|
||
1450 .cfi_restore_state
|
||
1451 013e 9FED8C8B vldr.64 d8, .L206+8
|
||
1452 0142 88E7 b .L116
|
||
1453 .LVL220:
|
||
1454 .L184:
|
||
1455 0144 0026 movs r6, #0
|
||
1456 .LVL221:
|
||
1457 0146 924F ldr r7, .L206+40
|
||
1458 0148 7BE7 b .L115
|
||
1459 .LVL222:
|
||
1460 .L111:
|
||
1461 .loc 1 185 0
|
||
1462 014a 0FB0 add sp, sp, #60
|
||
1463 .LCFI18:
|
||
1464 .cfi_remember_state
|
||
1465 .cfi_def_cfa_offset 52
|
||
1466 @ sp needed
|
||
1467 014c BDEC048B vldm sp!, {d8-d9}
|
||
1468 .LCFI19:
|
||
1469 .cfi_restore 82
|
||
1470 .cfi_restore 83
|
||
1471 .cfi_restore 80
|
||
1472 .cfi_restore 81
|
||
1473 .cfi_def_cfa_offset 36
|
||
1474 0150 BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
||
1475 .LVL223:
|
||
1476 .L186:
|
||
1477 .LCFI20:
|
||
1478 .cfi_restore_state
|
||
ARM GAS /tmp/cclqT4it.s page 32
|
||
|
||
|
||
1479 0154 059B ldr r3, [sp, #20]
|
||
1480 0156 03EBD37B add fp, r3, r3, lsr #31
|
||
1481 .LBB60:
|
||
149:Core/Src/FIRFilterCode.c **** {
|
||
1482 .loc 1 149 0
|
||
1483 015a 002B cmp r3, #0
|
||
1484 015c 4FEA6B0B asr fp, fp, #1
|
||
1485 0160 40F3C581 ble .L118
|
||
1486 0164 0246 mov r2, r0
|
||
1487 0166 0B46 mov r3, r1
|
||
1488 0168 0020 movs r0, #0
|
||
1489 .LVL224:
|
||
1490 016a 8A49 ldr r1, .L206+44
|
||
151:Core/Src/FIRFilterCode.c **** WinCoeff[j] = Bessel(Arg) / Bessel(Beta);
|
||
1491 .loc 1 151 0
|
||
1492 016c DFF82492 ldr r9, .L206+44
|
||
1493 0170 FFF7FEFF bl __aeabi_ddiv
|
||
1494 .LVL225:
|
||
1495 .LBB61:
|
||
1496 .LBB62:
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1497 .loc 1 115 0
|
||
1498 0174 0022 movs r2, #0
|
||
1499 0176 CDE90A01 strd r0, [sp, #40]
|
||
1500 017a 874B ldr r3, .L206+48
|
||
1501 017c 51EC180B vmov r0, r1, d8
|
||
1502 0180 FFF7FEFF bl __aeabi_dmul
|
||
1503 .LVL226:
|
||
1504 0184 089B ldr r3, [sp, #32]
|
||
1505 0186 049A ldr r2, [sp, #16]
|
||
1506 0188 CDF834B0 str fp, [sp, #52]
|
||
1507 018c 103B subs r3, r3, #16
|
||
1508 018e 0993 str r3, [sp, #36]
|
||
1509 0190 D318 adds r3, r2, r3
|
||
1510 .LBE62:
|
||
1511 .LBE61:
|
||
151:Core/Src/FIRFilterCode.c **** WinCoeff[j] = Bessel(Arg) / Bessel(Beta);
|
||
1512 .loc 1 151 0
|
||
1513 0192 4FF00008 mov r8, #0
|
||
1514 .LBB67:
|
||
1515 .LBB63:
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1516 .loc 1 115 0
|
||
1517 0196 41EC180B vmov d8, r0, r1
|
||
1518 019a 0393 str r3, [sp, #12]
|
||
1519 019c 9246 mov r10, r2
|
||
1520 019e 2F46 mov r7, r5
|
||
1521 01a0 79E0 b .L139
|
||
1522 .LVL227:
|
||
1523 .L203:
|
||
1524 .LBE63:
|
||
1525 .LBE67:
|
||
1526 .LBB68:
|
||
1527 .LBB69:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1528 .loc 1 117 0
|
||
1529 01a2 022E cmp r6, #2
|
||
ARM GAS /tmp/cclqT4it.s page 33
|
||
|
||
|
||
1530 01a4 00F0FF80 beq .L188
|
||
1531 .LVL228:
|
||
1532 01a8 032E cmp r6, #3
|
||
1533 01aa 00F00781 beq .L189
|
||
1534 .LVL229:
|
||
1535 01ae 042E cmp r6, #4
|
||
1536 01b0 00F01081 beq .L190
|
||
1537 .LVL230:
|
||
1538 01b4 052E cmp r6, #5
|
||
1539 01b6 00F01981 beq .L191
|
||
1540 .LVL231:
|
||
1541 01ba 062E cmp r6, #6
|
||
1542 01bc 00F01C81 beq .L192
|
||
1543 .LVL232:
|
||
1544 01c0 072E cmp r6, #7
|
||
1545 01c2 00F02581 beq .L193
|
||
1546 .LVL233:
|
||
1547 01c6 092E cmp r6, #9
|
||
1548 01c8 40F0BB80 bne .L194
|
||
118:Core/Src/FIRFilterCode.c **** }
|
||
1549 .loc 1 118 0
|
||
1550 01cc 6AA3 adr r3, .L206+16
|
||
1551 01ce D3E90023 ldrd r2, [r3]
|
||
1552 01d2 FFF7FEFF bl __aeabi_dmul
|
||
1553 .LVL234:
|
||
1554 01d6 0246 mov r2, r0
|
||
1555 01d8 0B46 mov r3, r1
|
||
1556 01da FFF7FEFF bl __aeabi_dmul
|
||
1557 .LVL235:
|
||
1558 01de 0246 mov r2, r0
|
||
1559 01e0 0B46 mov r3, r1
|
||
1560 01e2 2046 mov r0, r4
|
||
1561 01e4 2946 mov r1, r5
|
||
1562 01e6 FFF7FEFF bl __aeabi_dadd
|
||
1563 .LVL236:
|
||
120:Core/Src/FIRFilterCode.c **** }
|
||
1564 .loc 1 120 0
|
||
1565 01ea 4246 mov r2, r8
|
||
1566 01ec 4B46 mov r3, r9
|
||
1567 01ee FFF7FEFF bl __aeabi_dadd
|
||
1568 .LVL237:
|
||
1569 01f2 CDE90001 strd r0, [sp]
|
||
1570 .LVL238:
|
||
1571 01f6 4FF0010B mov fp, #1
|
||
1572 .LBE69:
|
||
1573 .LBE68:
|
||
1574 .LBB72:
|
||
1575 .LBB64:
|
||
111:Core/Src/FIRFilterCode.c **** int i, j, Factorial;
|
||
1576 .loc 1 111 0
|
||
1577 01fa 0024 movs r4, #0
|
||
1578 01fc 0025 movs r5, #0
|
||
1579 .LVL239:
|
||
1580 .L129:
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1581 .loc 1 115 0
|
||
1582 01fe 5846 mov r0, fp
|
||
ARM GAS /tmp/cclqT4it.s page 34
|
||
|
||
|
||
1583 0200 FFF7FEFF bl __aeabi_i2d
|
||
1584 .LVL240:
|
||
1585 0204 B0EE480A vmov.f32 s0, s16
|
||
1586 0208 F0EE680A vmov.f32 s1, s17
|
||
1587 020c 41EC110B vmov d1, r0, r1
|
||
1588 0210 FFF7FEFF bl pow
|
||
1589 .LVL241:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1590 .loc 1 117 0
|
||
1591 0214 BBF1010F cmp fp, #1
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1592 .loc 1 115 0
|
||
1593 0218 51EC100B vmov r0, r1, d0
|
||
1594 .LVL242:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1595 .loc 1 117 0
|
||
1596 021c 00F08280 beq .L130
|
||
1597 .LVL243:
|
||
1598 0220 BBF1020F cmp fp, #2
|
||
1599 0224 00F0BA80 beq .L195
|
||
1600 .LVL244:
|
||
1601 0228 BBF1030F cmp fp, #3
|
||
1602 022c 00F0C080 beq .L196
|
||
1603 .LVL245:
|
||
1604 0230 BBF1040F cmp fp, #4
|
||
1605 0234 00F0C880 beq .L197
|
||
1606 .LVL246:
|
||
1607 0238 BBF1050F cmp fp, #5
|
||
1608 023c 00F0D080 beq .L198
|
||
1609 .LVL247:
|
||
1610 0240 BBF1060F cmp fp, #6
|
||
1611 0244 69D0 beq .L199
|
||
1612 .LVL248:
|
||
1613 0246 BBF1070F cmp fp, #7
|
||
1614 024a 00F0DB80 beq .L200
|
||
1615 .LVL249:
|
||
1616 024e BBF1090F cmp fp, #9
|
||
1617 0252 7ED1 bne .L201
|
||
118:Core/Src/FIRFilterCode.c **** }
|
||
1618 .loc 1 118 0
|
||
1619 0254 48A3 adr r3, .L206+16
|
||
1620 0256 D3E90023 ldrd r2, [r3]
|
||
1621 025a FFF7FEFF bl __aeabi_dmul
|
||
1622 .LVL250:
|
||
1623 025e 0246 mov r2, r0
|
||
1624 0260 0B46 mov r3, r1
|
||
1625 0262 FFF7FEFF bl __aeabi_dmul
|
||
1626 .LVL251:
|
||
1627 0266 0246 mov r2, r0
|
||
1628 0268 0B46 mov r3, r1
|
||
1629 026a 2046 mov r0, r4
|
||
1630 026c 2946 mov r1, r5
|
||
1631 026e FFF7FEFF bl __aeabi_dadd
|
||
1632 .LVL252:
|
||
120:Core/Src/FIRFilterCode.c **** }
|
||
1633 .loc 1 120 0
|
||
1634 0272 4246 mov r2, r8
|
||
ARM GAS /tmp/cclqT4it.s page 35
|
||
|
||
|
||
1635 0274 4B46 mov r3, r9
|
||
1636 0276 FFF7FEFF bl __aeabi_dadd
|
||
1637 .LVL253:
|
||
1638 .LBE64:
|
||
1639 .LBE72:
|
||
152:Core/Src/FIRFilterCode.c **** }
|
||
1640 .loc 1 152 0
|
||
1641 027a 0B46 mov r3, r1
|
||
1642 027c 0246 mov r2, r0
|
||
1643 027e DDE90001 ldrd r0, [sp]
|
||
1644 0282 FFF7FEFF bl __aeabi_ddiv
|
||
1645 .LVL254:
|
||
1646 0286 EAE80201 strd r0, [r10], #8
|
||
149:Core/Src/FIRFilterCode.c **** {
|
||
1647 .loc 1 149 0
|
||
1648 028a 039B ldr r3, [sp, #12]
|
||
1649 028c 5345 cmp r3, r10
|
||
1650 028e 07F10207 add r7, r7, #2
|
||
1651 0292 00F0C380 beq .L202
|
||
1652 .L139:
|
||
151:Core/Src/FIRFilterCode.c **** WinCoeff[j] = Bessel(Arg) / Bessel(Beta);
|
||
1653 .loc 1 151 0 discriminator 3
|
||
1654 0296 3846 mov r0, r7
|
||
1655 0298 FFF7FEFF bl __aeabi_i2d
|
||
1656 .LVL255:
|
||
1657 029c DDE90623 ldrd r2, [sp, #24]
|
||
1658 02a0 FFF7FEFF bl __aeabi_dsub
|
||
1659 .LVL256:
|
||
1660 02a4 DDE90A23 ldrd r2, [sp, #40]
|
||
1661 02a8 FFF7FEFF bl __aeabi_dmul
|
||
1662 .LVL257:
|
||
1663 02ac 0246 mov r2, r0
|
||
1664 02ae 0B46 mov r3, r1
|
||
1665 02b0 FFF7FEFF bl __aeabi_dmul
|
||
1666 .LVL258:
|
||
1667 02b4 0246 mov r2, r0
|
||
1668 02b6 0B46 mov r3, r1
|
||
1669 02b8 4046 mov r0, r8
|
||
1670 02ba 4946 mov r1, r9
|
||
1671 02bc FFF7FEFF bl __aeabi_dsub
|
||
1672 .LVL259:
|
||
1673 02c0 41EC100B vmov d0, r0, r1
|
||
1674 02c4 FFF7FEFF bl sqrt
|
||
1675 .LVL260:
|
||
1676 .LBB73:
|
||
1677 .LBB70:
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1678 .loc 1 115 0 discriminator 3
|
||
1679 02c8 53EC182B vmov r2, r3, d8
|
||
1680 02cc 51EC100B vmov r0, r1, d0
|
||
1681 02d0 FFF7FEFF bl __aeabi_dmul
|
||
1682 .LVL261:
|
||
1683 02d4 41EC190B vmov d9, r0, r1
|
||
1684 02d8 0126 movs r6, #1
|
||
111:Core/Src/FIRFilterCode.c **** int i, j, Factorial;
|
||
1685 .loc 1 111 0 discriminator 3
|
||
1686 02da 0024 movs r4, #0
|
||
ARM GAS /tmp/cclqT4it.s page 36
|
||
|
||
|
||
1687 02dc 0025 movs r5, #0
|
||
1688 .LVL262:
|
||
1689 .L119:
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1690 .loc 1 115 0
|
||
1691 02de 3046 mov r0, r6
|
||
1692 02e0 FFF7FEFF bl __aeabi_i2d
|
||
1693 .LVL263:
|
||
1694 02e4 B0EE490A vmov.f32 s0, s18
|
||
1695 02e8 F0EE690A vmov.f32 s1, s19
|
||
1696 02ec 41EC110B vmov d1, r0, r1
|
||
1697 02f0 FFF7FEFF bl pow
|
||
1698 .LVL264:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1699 .loc 1 117 0
|
||
1700 02f4 012E cmp r6, #1
|
||
115:Core/Src/FIRFilterCode.c **** Factorial = 1;
|
||
1701 .loc 1 115 0
|
||
1702 02f6 51EC100B vmov r0, r1, d0
|
||
1703 .LVL265:
|
||
117:Core/Src/FIRFilterCode.c **** Sum += pow(XtoIpower / (double)Factorial, 2.0);
|
||
1704 .loc 1 117 0
|
||
1705 02fa 7FF452AF bne .L203
|
||
1706 .LVL266:
|
||
1707 .L120:
|
||
118:Core/Src/FIRFilterCode.c **** }
|
||
1708 .loc 1 118 0
|
||
1709 02fe 0246 mov r2, r0
|
||
1710 0300 0B46 mov r3, r1
|
||
1711 .L181:
|
||
1712 0302 FFF7FEFF bl __aeabi_dmul
|
||
1713 .LVL267:
|
||
1714 0306 0246 mov r2, r0
|
||
1715 0308 0B46 mov r3, r1
|
||
1716 030a 2046 mov r0, r4
|
||
1717 030c 2946 mov r1, r5
|
||
1718 030e FFF7FEFF bl __aeabi_dadd
|
||
1719 .LVL268:
|
||
1720 0312 0136 adds r6, r6, #1
|
||
1721 .LVL269:
|
||
1722 0314 0446 mov r4, r0
|
||
1723 .LVL270:
|
||
1724 0316 0D46 mov r5, r1
|
||
1725 .LVL271:
|
||
1726 0318 E1E7 b .L119
|
||
1727 .LVL272:
|
||
1728 .L199:
|
||
1729 031a 19A3 adr r3, .L206+24
|
||
1730 031c D3E90023 ldrd r2, [r3]
|
||
1731 0320 FFF7FEFF bl __aeabi_dmul
|
||
1732 .LVL273:
|
||
1733 .L130:
|
||
1734 .LBE70:
|
||
1735 .LBE73:
|
||
1736 .LBB74:
|
||
1737 .LBB65:
|
||
1738 0324 0246 mov r2, r0
|
||
ARM GAS /tmp/cclqT4it.s page 37
|
||
|
||
|
||
1739 0326 0B46 mov r3, r1
|
||
1740 .L182:
|
||
1741 0328 FFF7FEFF bl __aeabi_dmul
|
||
1742 .LVL274:
|
||
1743 032c 0246 mov r2, r0
|
||
1744 032e 0B46 mov r3, r1
|
||
1745 0330 2046 mov r0, r4
|
||
1746 0332 2946 mov r1, r5
|
||
1747 0334 FFF7FEFF bl __aeabi_dadd
|
||
1748 .LVL275:
|
||
1749 0338 0BF1010B add fp, fp, #1
|
||
1750 .LVL276:
|
||
1751 033c 0446 mov r4, r0
|
||
1752 .LVL277:
|
||
1753 033e 0D46 mov r5, r1
|
||
1754 .LVL278:
|
||
1755 0340 5DE7 b .L129
|
||
1756 .LVL279:
|
||
1757 .L194:
|
||
1758 .LBE65:
|
||
1759 .LBE74:
|
||
1760 .LBB75:
|
||
1761 .LBB71:
|
||
1762 0342 11A3 adr r3, .L206+32
|
||
1763 0344 D3E90023 ldrd r2, [r3]
|
||
1764 0348 FFF7FEFF bl __aeabi_dmul
|
||
1765 .LVL280:
|
||
1766 034c 0246 mov r2, r0
|
||
1767 034e 0B46 mov r3, r1
|
||
1768 0350 D7E7 b .L181
|
||
1769 .LVL281:
|
||
1770 .L201:
|
||
1771 .LBE71:
|
||
1772 .LBE75:
|
||
1773 .LBB76:
|
||
1774 .LBB66:
|
||
1775 0352 0DA3 adr r3, .L206+32
|
||
1776 0354 D3E90023 ldrd r2, [r3]
|
||
1777 0358 FFF7FEFF bl __aeabi_dmul
|
||
1778 .LVL282:
|
||
1779 035c 0246 mov r2, r0
|
||
1780 035e 0B46 mov r3, r1
|
||
1781 0360 E2E7 b .L182
|
||
1782 .L207:
|
||
1783 0362 00BFAFF3 .align 3
|
||
1783 0080
|
||
1784 .L206:
|
||
1785 0368 182D4454 .word 1413754136
|
||
1786 036c FB210940 .word 1074340347
|
||
1787 0370 00000000 .word 0
|
||
1788 0374 00000000 .word 0
|
||
1789 0378 34C756A5 .word 2773927732
|
||
1790 037c E31DC73E .word 1053236707
|
||
1791 0380 176CC116 .word 381774871
|
||
1792 0384 6CC1563F .word 1062650220
|
||
1793 0388 1AA0011A .word 436314138
|
||
1794 038c A001FA3E .word 1056571808
|
||
ARM GAS /tmp/cclqT4it.s page 38
|
||
|
||
|
||
1795 0390 00002440 .word 1076101120
|
||
1796 0394 0000F03F .word 1072693248
|
||
1797 0398 0000E03F .word 1071644672
|
||
1798 .LVL283:
|
||
1799 .L195:
|
||
1800 039c 0022 movs r2, #0
|
||
1801 039e 664B ldr r3, .L208+64
|
||
1802 03a0 FFF7FEFF bl __aeabi_dmul
|
||
1803 .LVL284:
|
||
1804 03a4 BEE7 b .L130
|
||
1805 .LVL285:
|
||
1806 .L188:
|
||
1807 03a6 0022 movs r2, #0
|
||
1808 03a8 634B ldr r3, .L208+64
|
||
1809 03aa FFF7FEFF bl __aeabi_dmul
|
||
1810 .LVL286:
|
||
1811 03ae A6E7 b .L120
|
||
1812 .LVL287:
|
||
1813 .L196:
|
||
1814 03b0 51A3 adr r3, .L208
|
||
1815 03b2 D3E90023 ldrd r2, [r3]
|
||
1816 03b6 FFF7FEFF bl __aeabi_dmul
|
||
1817 .LVL288:
|
||
1818 03ba B3E7 b .L130
|
||
1819 .LVL289:
|
||
1820 .L189:
|
||
1821 03bc 4EA3 adr r3, .L208
|
||
1822 03be D3E90023 ldrd r2, [r3]
|
||
1823 03c2 FFF7FEFF bl __aeabi_dmul
|
||
1824 .LVL290:
|
||
1825 03c6 9AE7 b .L120
|
||
1826 .LVL291:
|
||
1827 .L197:
|
||
1828 03c8 4DA3 adr r3, .L208+8
|
||
1829 03ca D3E90023 ldrd r2, [r3]
|
||
1830 03ce FFF7FEFF bl __aeabi_dmul
|
||
1831 .LVL292:
|
||
1832 03d2 A7E7 b .L130
|
||
1833 .LVL293:
|
||
1834 .L190:
|
||
1835 03d4 4AA3 adr r3, .L208+8
|
||
1836 03d6 D3E90023 ldrd r2, [r3]
|
||
1837 03da FFF7FEFF bl __aeabi_dmul
|
||
1838 .LVL294:
|
||
1839 03de 8EE7 b .L120
|
||
1840 .LVL295:
|
||
1841 .L198:
|
||
1842 03e0 49A3 adr r3, .L208+16
|
||
1843 03e2 D3E90023 ldrd r2, [r3]
|
||
1844 03e6 FFF7FEFF bl __aeabi_dmul
|
||
1845 .LVL296:
|
||
1846 03ea 9BE7 b .L130
|
||
1847 .LVL297:
|
||
1848 .L191:
|
||
1849 03ec 46A3 adr r3, .L208+16
|
||
1850 03ee D3E90023 ldrd r2, [r3]
|
||
1851 03f2 FFF7FEFF bl __aeabi_dmul
|
||
ARM GAS /tmp/cclqT4it.s page 39
|
||
|
||
|
||
1852 .LVL298:
|
||
1853 03f6 82E7 b .L120
|
||
1854 .LVL299:
|
||
1855 .L192:
|
||
1856 03f8 45A3 adr r3, .L208+24
|
||
1857 03fa D3E90023 ldrd r2, [r3]
|
||
1858 03fe FFF7FEFF bl __aeabi_dmul
|
||
1859 .LVL300:
|
||
1860 0402 7CE7 b .L120
|
||
1861 .LVL301:
|
||
1862 .L200:
|
||
1863 0404 44A3 adr r3, .L208+32
|
||
1864 0406 D3E90023 ldrd r2, [r3]
|
||
1865 040a FFF7FEFF bl __aeabi_dmul
|
||
1866 .LVL302:
|
||
1867 040e 89E7 b .L130
|
||
1868 .LVL303:
|
||
1869 .L193:
|
||
1870 0410 41A3 adr r3, .L208+32
|
||
1871 0412 D3E90023 ldrd r2, [r3]
|
||
1872 0416 FFF7FEFF bl __aeabi_dmul
|
||
1873 .LVL304:
|
||
1874 041a 70E7 b .L120
|
||
1875 .LVL305:
|
||
1876 .L202:
|
||
1877 041c DDF834B0 ldr fp, [sp, #52]
|
||
1878 .L140:
|
||
1879 .LVL306:
|
||
1880 .LBE66:
|
||
1881 .LBE76:
|
||
1882 .LBE60:
|
||
177:Core/Src/FIRFilterCode.c ****
|
||
1883 .loc 1 177 0
|
||
1884 0420 BBF1000F cmp fp, #0
|
||
1885 0424 3FF763AE bgt .L151
|
||
1886 0428 099B ldr r3, [sp, #36]
|
||
1887 042a 72E6 b .L157
|
||
1888 .LVL307:
|
||
1889 .L178:
|
||
1890 .LCFI21:
|
||
1891 .cfi_def_cfa_offset 0
|
||
1892 .cfi_restore 4
|
||
1893 .cfi_restore 5
|
||
1894 .cfi_restore 6
|
||
1895 .cfi_restore 7
|
||
1896 .cfi_restore 8
|
||
1897 .cfi_restore 9
|
||
1898 .cfi_restore 10
|
||
1899 .cfi_restore 11
|
||
1900 .cfi_restore 14
|
||
1901 .cfi_restore 80
|
||
1902 .cfi_restore 81
|
||
1903 .cfi_restore 82
|
||
1904 .cfi_restore 83
|
||
1905 042c 7047 bx lr
|
||
1906 .LVL308:
|
||
1907 .L187:
|
||
ARM GAS /tmp/cclqT4it.s page 40
|
||
|
||
|
||
1908 .LCFI22:
|
||
1909 .cfi_def_cfa_offset 112
|
||
1910 .cfi_offset 4, -36
|
||
1911 .cfi_offset 5, -32
|
||
1912 .cfi_offset 6, -28
|
||
1913 .cfi_offset 7, -24
|
||
1914 .cfi_offset 8, -20
|
||
1915 .cfi_offset 9, -16
|
||
1916 .cfi_offset 10, -12
|
||
1917 .cfi_offset 11, -8
|
||
1918 .cfi_offset 14, -4
|
||
1919 .cfi_offset 80, -52
|
||
1920 .cfi_offset 81, -48
|
||
1921 .cfi_offset 82, -44
|
||
1922 .cfi_offset 83, -40
|
||
1923 042e 059B ldr r3, [sp, #20]
|
||
1924 0430 03EBD37B add fp, r3, r3, lsr #31
|
||
158:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
1925 .loc 1 158 0
|
||
1926 0434 002B cmp r3, #0
|
||
1927 0436 4FEA6B0B asr fp, fp, #1
|
||
1928 043a 58DD ble .L118
|
||
1929 043c 089A ldr r2, [sp, #32]
|
||
1930 043e 0499 ldr r1, [sp, #16]
|
||
1931 0440 CDF800B0 str fp, [sp]
|
||
1932 0444 103A subs r2, r2, #16
|
||
1933 0446 0992 str r2, [sp, #36]
|
||
1934 0448 01EB0209 add r9, r1, r2
|
||
1935 044c C3F10108 rsb r8, r3, #1
|
||
1936 0450 0D46 mov r5, r1
|
||
1937 0452 0C46 mov r4, r1
|
||
1938 0454 DDE906AB ldrd r10, [sp, #24]
|
||
1939 0458 0CE0 b .L145
|
||
1940 .LVL309:
|
||
1941 .L205:
|
||
1942 .LBB77:
|
||
1943 .LBB78:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
1944 .loc 1 104 0
|
||
1945 045a 3046 mov r0, r6
|
||
1946 045c 3946 mov r1, r7
|
||
1947 045e FFF7FEFF bl __aeabi_dcmplt
|
||
1948 .LVL310:
|
||
1949 0462 28B3 cbz r0, .L142
|
||
1950 0464 3549 ldr r1, .L208+68
|
||
1951 .LVL311:
|
||
1952 0466 0020 movs r0, #0
|
||
1953 .LBE78:
|
||
1954 .LBE77:
|
||
158:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
1955 .loc 1 158 0
|
||
1956 0468 E4E80201 strd r0, [r4], #8
|
||
1957 046c A145 cmp r9, r4
|
||
1958 046e 08F10208 add r8, r8, #2
|
||
1959 0472 2DD0 beq .L204
|
||
1960 .L145:
|
||
1961 0474 5246 mov r2, r10
|
||
ARM GAS /tmp/cclqT4it.s page 41
|
||
|
||
|
||
1962 0476 5B46 mov r3, fp
|
||
1963 0478 29A1 adr r1, .L208+40
|
||
1964 047a D1E90001 ldrd r0, [r1]
|
||
1965 047e FFF7FEFF bl __aeabi_ddiv
|
||
1966 .LVL312:
|
||
1967 0482 0646 mov r6, r0
|
||
1968 0484 4046 mov r0, r8
|
||
1969 0486 0F46 mov r7, r1
|
||
1970 0488 FFF7FEFF bl __aeabi_i2d
|
||
1971 .LVL313:
|
||
1972 048c 0246 mov r2, r0
|
||
1973 048e 0B46 mov r3, r1
|
||
1974 0490 3046 mov r0, r6
|
||
1975 0492 3946 mov r1, r7
|
||
1976 0494 FFF7FEFF bl __aeabi_dmul
|
||
1977 .LVL314:
|
||
1978 .LBB81:
|
||
1979 .LBB79:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
1980 .loc 1 104 0
|
||
1981 0498 23A3 adr r3, .L208+48
|
||
1982 049a D3E90023 ldrd r2, [r3]
|
||
1983 .LBE79:
|
||
1984 .LBE81:
|
||
158:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
1985 .loc 1 158 0
|
||
1986 049e 0646 mov r6, r0
|
||
1987 04a0 0F46 mov r7, r1
|
||
1988 .LVL315:
|
||
1989 .LBB82:
|
||
1990 .LBB80:
|
||
104:Core/Src/FIRFilterCode.c **** return(sin(x)/x);
|
||
1991 .loc 1 104 0
|
||
1992 04a2 FFF7FEFF bl __aeabi_dcmpgt
|
||
1993 .LVL316:
|
||
1994 04a6 22A3 adr r3, .L208+56
|
||
1995 04a8 D3E90023 ldrd r2, [r3]
|
||
1996 04ac 0028 cmp r0, #0
|
||
1997 04ae D4D1 bne .L205
|
||
1998 .L142:
|
||
105:Core/Src/FIRFilterCode.c **** }
|
||
1999 .loc 1 105 0
|
||
2000 04b0 47EC106B vmov d0, r6, r7
|
||
2001 04b4 FFF7FEFF bl sin
|
||
2002 .LVL317:
|
||
2003 04b8 3246 mov r2, r6
|
||
2004 04ba 3B46 mov r3, r7
|
||
2005 04bc 51EC100B vmov r0, r1, d0
|
||
2006 04c0 FFF7FEFF bl __aeabi_ddiv
|
||
2007 .LVL318:
|
||
2008 .LBE80:
|
||
2009 .LBE82:
|
||
158:Core/Src/FIRFilterCode.c **** for(j=0; j<N; j++)WinCoeff[j] = pow(WinCoeff[j], Beta);
|
||
2010 .loc 1 158 0
|
||
2011 04c4 E4E80201 strd r0, [r4], #8
|
||
2012 04c8 A145 cmp r9, r4
|
||
2013 04ca 08F10208 add r8, r8, #2
|
||
ARM GAS /tmp/cclqT4it.s page 42
|
||
|
||
|
||
2014 04ce D1D1 bne .L145
|
||
2015 .L204:
|
||
2016 04d0 DDF800B0 ldr fp, [sp]
|
||
2017 .L146:
|
||
159:Core/Src/FIRFilterCode.c **** }
|
||
2018 .loc 1 159 0 discriminator 3
|
||
2019 04d4 B0EE481A vmov.f32 s2, s16
|
||
2020 04d8 F0EE681A vmov.f32 s3, s17
|
||
2021 04dc 95ED000B vldr.64 d0, [r5]
|
||
2022 04e0 FFF7FEFF bl pow
|
||
2023 .LVL319:
|
||
2024 04e4 A5EC020B vstmia.64 r5!, {d0}
|
||
2025 04e8 AC42 cmp r4, r5
|
||
2026 04ea F3D1 bne .L146
|
||
2027 04ec 98E7 b .L140
|
||
2028 .LVL320:
|
||
2029 .L118:
|
||
177:Core/Src/FIRFilterCode.c ****
|
||
2030 .loc 1 177 0
|
||
2031 04ee BBF1000F cmp fp, #0
|
||
2032 04f2 7FF71CAE ble .L153
|
||
2033 04f6 F7E5 b .L183
|
||
2034 .L209:
|
||
2035 .align 3
|
||
2036 .L208:
|
||
2037 04f8 55555555 .word 1431655765
|
||
2038 04fc 5555C53F .word 1069897045
|
||
2039 0500 55555555 .word 1431655765
|
||
2040 0504 5555A53F .word 1067799893
|
||
2041 0508 11111111 .word 286331153
|
||
2042 050c 1111813F .word 1065423121
|
||
2043 0510 176CC116 .word 381774871
|
||
2044 0514 6CC1563F .word 1062650220
|
||
2045 0518 1AA0011A .word 436314138
|
||
2046 051c A0012A3F .word 1059717536
|
||
2047 0520 182D4454 .word 1413754136
|
||
2048 0524 FB210940 .word 1074340347
|
||
2049 0528 F168E388 .word 2296604913
|
||
2050 052c B5F8E4BE .word -1092290379
|
||
2051 0530 F168E388 .word 2296604913
|
||
2052 0534 B5F8E43E .word 1055193269
|
||
2053 0538 0000E03F .word 1071644672
|
||
2054 053c 0000F03F .word 1072693248
|
||
2055 .cfi_endproc
|
||
2056 .LFE3:
|
||
2058 .global __aeabi_d2iz
|
||
2059 .section .text.FIRFreqError,"ax",%progbits
|
||
2060 .align 1
|
||
2061 .p2align 2,,3
|
||
2062 .global FIRFreqError
|
||
2063 .syntax unified
|
||
2064 .thumb
|
||
2065 .thumb_func
|
||
2066 .fpu fpv4-sp-d16
|
||
2068 FIRFreqError:
|
||
2069 .LFB4:
|
||
186:Core/Src/FIRFilterCode.c ****
|
||
ARM GAS /tmp/cclqT4it.s page 43
|
||
|
||
|
||
187:Core/Src/FIRFilterCode.c **** /*
|
||
188:Core/Src/FIRFilterCode.c **** //---------------------------------------------------------------------------
|
||
189:Core/Src/FIRFilterCode.c ****
|
||
190:Core/Src/FIRFilterCode.c **** // This implements an FIR filter. The register shifts are done by rotating the indexes.
|
||
191:Core/Src/FIRFilterCode.c **** void FilterWithFIR(double *FirCoeff, int NumTaps, double *Signal, double *FilteredSignal, int NumSi
|
||
192:Core/Src/FIRFilterCode.c **** {
|
||
193:Core/Src/FIRFilterCode.c **** int j, k, n, Top = 0;
|
||
194:Core/Src/FIRFilterCode.c **** double y, Reg[MAX_NUMTAPS];
|
||
195:Core/Src/FIRFilterCode.c ****
|
||
196:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)Reg[j] = 0.0;
|
||
197:Core/Src/FIRFilterCode.c ****
|
||
198:Core/Src/FIRFilterCode.c **** for(j=0; j<NumSigPts; j++)
|
||
199:Core/Src/FIRFilterCode.c **** {
|
||
200:Core/Src/FIRFilterCode.c **** Reg[Top] = Signal[j];
|
||
201:Core/Src/FIRFilterCode.c **** y = 0.0;
|
||
202:Core/Src/FIRFilterCode.c **** n = 0;
|
||
203:Core/Src/FIRFilterCode.c ****
|
||
204:Core/Src/FIRFilterCode.c **** // The FirCoeff index increases while the Reg index decreases.
|
||
205:Core/Src/FIRFilterCode.c **** for(k=Top; k>=0; k--)
|
||
206:Core/Src/FIRFilterCode.c **** {
|
||
207:Core/Src/FIRFilterCode.c **** y += FirCoeff[n++] * Reg[k];
|
||
208:Core/Src/FIRFilterCode.c **** }
|
||
209:Core/Src/FIRFilterCode.c **** for(k=NumTaps-1; k>Top; k--)
|
||
210:Core/Src/FIRFilterCode.c **** {
|
||
211:Core/Src/FIRFilterCode.c **** y += FirCoeff[n++] * Reg[k];
|
||
212:Core/Src/FIRFilterCode.c **** }
|
||
213:Core/Src/FIRFilterCode.c **** FilteredSignal[j] = y;
|
||
214:Core/Src/FIRFilterCode.c ****
|
||
215:Core/Src/FIRFilterCode.c **** Top++;
|
||
216:Core/Src/FIRFilterCode.c **** if(Top >= NumTaps)Top = 0;
|
||
217:Core/Src/FIRFilterCode.c **** }
|
||
218:Core/Src/FIRFilterCode.c ****
|
||
219:Core/Src/FIRFilterCode.c **** }
|
||
220:Core/Src/FIRFilterCode.c ****
|
||
221:Core/Src/FIRFilterCode.c **** //---------------------------------------------------------------------------
|
||
222:Core/Src/FIRFilterCode.c ****
|
||
223:Core/Src/FIRFilterCode.c **** // This code is equivalent to the code above. It uses register shifts, which makes it
|
||
224:Core/Src/FIRFilterCode.c **** // less efficient, but it is easier to follow (i.e. compare to a FIR flow chart).
|
||
225:Core/Src/FIRFilterCode.c **** void FilterWithFIR2(double *FirCoeff, int NumTaps, double *Signal, double *FilteredSignal, int NumS
|
||
226:Core/Src/FIRFilterCode.c **** {
|
||
227:Core/Src/FIRFilterCode.c **** int j, k;
|
||
228:Core/Src/FIRFilterCode.c **** double y, Reg[MAX_NUMTAPS];
|
||
229:Core/Src/FIRFilterCode.c ****
|
||
230:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)Reg[j] = 0.0; // Init the delay registers.
|
||
231:Core/Src/FIRFilterCode.c ****
|
||
232:Core/Src/FIRFilterCode.c **** for(j=0; j<NumSigPts; j++)
|
||
233:Core/Src/FIRFilterCode.c **** {
|
||
234:Core/Src/FIRFilterCode.c **** // Shift the register values down and set Reg[0].
|
||
235:Core/Src/FIRFilterCode.c **** for(k=NumTaps; k>1; k--)Reg[k-1] = Reg[k-2];
|
||
236:Core/Src/FIRFilterCode.c **** Reg[0] = Signal[j];
|
||
237:Core/Src/FIRFilterCode.c ****
|
||
238:Core/Src/FIRFilterCode.c **** y = 0.0;
|
||
239:Core/Src/FIRFilterCode.c **** for(k=0; k<NumTaps; k++)y += FirCoeff[k] * Reg[k];
|
||
240:Core/Src/FIRFilterCode.c **** FilteredSignal[j] = y;
|
||
241:Core/Src/FIRFilterCode.c **** }
|
||
242:Core/Src/FIRFilterCode.c ****
|
||
243:Core/Src/FIRFilterCode.c **** }
|
||
ARM GAS /tmp/cclqT4it.s page 44
|
||
|
||
|
||
244:Core/Src/FIRFilterCode.c ****
|
||
245:Core/Src/FIRFilterCode.c **** */
|
||
246:Core/Src/FIRFilterCode.c **** //---------------------------------------------------------------------------
|
||
247:Core/Src/FIRFilterCode.c ****
|
||
248:Core/Src/FIRFilterCode.c **** // This function is used to correct the corner frequency values on FIR filters.
|
||
249:Core/Src/FIRFilterCode.c **** // We normally specify the 3 dB frequencies when specifing a filter. The Parks McClellan routine
|
||
250:Core/Src/FIRFilterCode.c **** // uses OmegaC and BW to set the 0 dB band edges, so its final OmegaC and BW values are not close
|
||
251:Core/Src/FIRFilterCode.c **** // to -3 dB. The Rectangular Windowed filters are better for high tap counts, but for low tap count
|
||
252:Core/Src/FIRFilterCode.c **** // their 3 dB frequencies are also well off the mark.
|
||
253:Core/Src/FIRFilterCode.c ****
|
||
254:Core/Src/FIRFilterCode.c **** // To use this function, first calculate a set of FIR coefficients, then pass them here, along with
|
||
255:Core/Src/FIRFilterCode.c **** // OmegaC and BW. This calculates a corrected OmegaC for low and high pass filters. It calcultes a
|
||
256:Core/Src/FIRFilterCode.c **** // corrected BW for band pass and notch filters. Use these corrected values to recalculate the FIR
|
||
257:Core/Src/FIRFilterCode.c ****
|
||
258:Core/Src/FIRFilterCode.c **** // The Goertzel algorithm is used to calculate the filter's magnitude response at the single
|
||
259:Core/Src/FIRFilterCode.c **** // frequency defined in the loop. We start in the pass band and work out to the -20dB freq.
|
||
260:Core/Src/FIRFilterCode.c ****
|
||
261:Core/Src/FIRFilterCode.c **** void FIRFreqError(double *Coeff, int NumTaps, int PassType, double *OmegaC, double *BW)
|
||
262:Core/Src/FIRFilterCode.c **** {
|
||
2070 .loc 1 262 0
|
||
2071 .cfi_startproc
|
||
2072 @ args = 4, pretend = 0, frame = 48
|
||
2073 @ frame_needed = 0, uses_anonymous_args = 0
|
||
2074 .LVL321:
|
||
2075 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
||
2076 .LCFI23:
|
||
2077 .cfi_def_cfa_offset 36
|
||
2078 .cfi_offset 4, -36
|
||
2079 .cfi_offset 5, -32
|
||
2080 .cfi_offset 6, -28
|
||
2081 .cfi_offset 7, -24
|
||
2082 .cfi_offset 8, -20
|
||
2083 .cfi_offset 9, -16
|
||
2084 .cfi_offset 10, -12
|
||
2085 .cfi_offset 11, -8
|
||
2086 .cfi_offset 14, -4
|
||
2087 0004 93ED007B vldr.64 d7, [r3]
|
||
2088 0008 8DB0 sub sp, sp, #52
|
||
2089 .LCFI24:
|
||
2090 .cfi_def_cfa_offset 88
|
||
2091 .loc 1 262 0
|
||
2092 000a CDE90510 strd r1, r0, [sp, #20]
|
||
2093 000e 0B93 str r3, [sp, #44]
|
||
2094 0010 8DED087B vstr.64 d7, [sp, #32]
|
||
263:Core/Src/FIRFilterCode.c **** int j, J3dB, CenterJ;
|
||
264:Core/Src/FIRFilterCode.c **** double Omega, CorrectedOmega, CorrectedBW, Omega1, Omega2, Mag;
|
||
265:Core/Src/FIRFilterCode.c ****
|
||
266:Core/Src/FIRFilterCode.c **** // In these loops, we break at -20 dB to ensure that large ripple is ignored.
|
||
267:Core/Src/FIRFilterCode.c **** if(PassType == firLPF)
|
||
2095 .loc 1 267 0
|
||
2096 0014 0792 str r2, [sp, #28]
|
||
2097 0016 002A cmp r2, #0
|
||
2098 0018 40F0B280 bne .L211
|
||
2099 001c 00EBC105 add r5, r0, r1, lsl #3
|
||
2100 0020 834B ldr r3, .L301+48
|
||
2101 .LVL322:
|
||
268:Core/Src/FIRFilterCode.c **** {
|
||
ARM GAS /tmp/cclqT4it.s page 45
|
||
|
||
|
||
269:Core/Src/FIRFilterCode.c **** J3dB = 10;
|
||
2102 .loc 1 269 0
|
||
2103 0022 0A21 movs r1, #10
|
||
2104 .LVL323:
|
||
267:Core/Src/FIRFilterCode.c **** {
|
||
2105 .loc 1 267 0
|
||
2106 0024 0022 movs r2, #0
|
||
2107 .LVL324:
|
||
2108 .loc 1 269 0
|
||
2109 0026 0A91 str r1, [sp, #40]
|
||
2110 0028 AB46 mov fp, r5
|
||
2111 .LVL325:
|
||
2112 .L216:
|
||
2113 .LBB95:
|
||
2114 .LBB96:
|
||
270:Core/Src/FIRFilterCode.c **** for(j=0; j<NUM_FREQ_ERR_PTS; j++)
|
||
271:Core/Src/FIRFilterCode.c **** {
|
||
272:Core/Src/FIRFilterCode.c **** Omega = (double)j / dNUM_FREQ_ERR_PTS;
|
||
273:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
274:Core/Src/FIRFilterCode.c **** if(Mag > 0.707)J3dB = j; // J3dB will be the last j where the response was > -3 dB
|
||
275:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break; // Stop when the response is down to -20 dB.
|
||
276:Core/Src/FIRFilterCode.c **** }
|
||
277:Core/Src/FIRFilterCode.c **** Omega = (double)J3dB / dNUM_FREQ_ERR_PTS;
|
||
278:Core/Src/FIRFilterCode.c **** }
|
||
279:Core/Src/FIRFilterCode.c ****
|
||
280:Core/Src/FIRFilterCode.c **** else if(PassType == firHPF)
|
||
281:Core/Src/FIRFilterCode.c **** {
|
||
282:Core/Src/FIRFilterCode.c **** J3dB = NUM_FREQ_ERR_PTS - 10;
|
||
283:Core/Src/FIRFilterCode.c **** for(j=NUM_FREQ_ERR_PTS-1; j>=0; j--)
|
||
284:Core/Src/FIRFilterCode.c **** {
|
||
285:Core/Src/FIRFilterCode.c **** Omega = (double)j / dNUM_FREQ_ERR_PTS;
|
||
286:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
287:Core/Src/FIRFilterCode.c **** if(Mag > 0.707)J3dB = j; // J3dB will be the last j where the response was > -3 dB
|
||
288:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break; // Stop when the response is down to -20 dB.
|
||
289:Core/Src/FIRFilterCode.c **** }
|
||
290:Core/Src/FIRFilterCode.c **** Omega = (double)J3dB / dNUM_FREQ_ERR_PTS;
|
||
291:Core/Src/FIRFilterCode.c **** }
|
||
292:Core/Src/FIRFilterCode.c ****
|
||
293:Core/Src/FIRFilterCode.c **** else if(PassType == firBPF)
|
||
294:Core/Src/FIRFilterCode.c **** {
|
||
295:Core/Src/FIRFilterCode.c **** CenterJ = (int)(dNUM_FREQ_ERR_PTS * *OmegaC);
|
||
296:Core/Src/FIRFilterCode.c **** J3dB = CenterJ;
|
||
297:Core/Src/FIRFilterCode.c **** for(j=CenterJ; j>=0; j--)
|
||
298:Core/Src/FIRFilterCode.c **** {
|
||
299:Core/Src/FIRFilterCode.c **** Omega = (double)j / dNUM_FREQ_ERR_PTS;
|
||
300:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
301:Core/Src/FIRFilterCode.c **** if(Mag > 0.707)J3dB = j;
|
||
302:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break;
|
||
303:Core/Src/FIRFilterCode.c **** }
|
||
304:Core/Src/FIRFilterCode.c **** Omega1 = (double)J3dB / dNUM_FREQ_ERR_PTS;
|
||
305:Core/Src/FIRFilterCode.c ****
|
||
306:Core/Src/FIRFilterCode.c **** J3dB = CenterJ;
|
||
307:Core/Src/FIRFilterCode.c **** for(j=CenterJ; j<NUM_FREQ_ERR_PTS; j++)
|
||
308:Core/Src/FIRFilterCode.c **** {
|
||
309:Core/Src/FIRFilterCode.c **** Omega = (double)j / dNUM_FREQ_ERR_PTS;
|
||
310:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
311:Core/Src/FIRFilterCode.c **** if(Mag > 0.707)J3dB = j;
|
||
ARM GAS /tmp/cclqT4it.s page 46
|
||
|
||
|
||
312:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break;
|
||
313:Core/Src/FIRFilterCode.c **** }
|
||
314:Core/Src/FIRFilterCode.c **** Omega2 = (double)J3dB / dNUM_FREQ_ERR_PTS;
|
||
315:Core/Src/FIRFilterCode.c **** }
|
||
316:Core/Src/FIRFilterCode.c ****
|
||
317:Core/Src/FIRFilterCode.c **** // The code above starts in the pass band. This starts in the stop band.
|
||
318:Core/Src/FIRFilterCode.c **** else // PassType == firNOTCH
|
||
319:Core/Src/FIRFilterCode.c **** {
|
||
320:Core/Src/FIRFilterCode.c **** CenterJ = (int)(dNUM_FREQ_ERR_PTS * *OmegaC);
|
||
321:Core/Src/FIRFilterCode.c **** J3dB = CenterJ;
|
||
322:Core/Src/FIRFilterCode.c **** for(j=CenterJ; j>=0; j--)
|
||
323:Core/Src/FIRFilterCode.c **** {
|
||
324:Core/Src/FIRFilterCode.c **** Omega = (double)j / dNUM_FREQ_ERR_PTS;
|
||
325:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
326:Core/Src/FIRFilterCode.c **** if(Mag <= 0.707)J3dB = j;
|
||
327:Core/Src/FIRFilterCode.c **** if(Mag > 0.99)break;
|
||
328:Core/Src/FIRFilterCode.c **** }
|
||
329:Core/Src/FIRFilterCode.c **** Omega1 = (double)J3dB/dNUM_FREQ_ERR_PTS;
|
||
330:Core/Src/FIRFilterCode.c ****
|
||
331:Core/Src/FIRFilterCode.c **** J3dB = CenterJ;
|
||
332:Core/Src/FIRFilterCode.c **** for(j=CenterJ; j<NUM_FREQ_ERR_PTS; j++)
|
||
333:Core/Src/FIRFilterCode.c **** {
|
||
334:Core/Src/FIRFilterCode.c **** Omega = (double)j / dNUM_FREQ_ERR_PTS;
|
||
335:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
336:Core/Src/FIRFilterCode.c **** if(Mag <= 0.707)J3dB = j;
|
||
337:Core/Src/FIRFilterCode.c **** if(Mag > 0.99)break;
|
||
338:Core/Src/FIRFilterCode.c **** }
|
||
339:Core/Src/FIRFilterCode.c **** Omega2 = (double)J3dB / dNUM_FREQ_ERR_PTS;
|
||
340:Core/Src/FIRFilterCode.c **** }
|
||
341:Core/Src/FIRFilterCode.c ****
|
||
342:Core/Src/FIRFilterCode.c ****
|
||
343:Core/Src/FIRFilterCode.c **** // This calculates the corrected OmegaC and BW and error checks the values.
|
||
344:Core/Src/FIRFilterCode.c **** if(PassType == firLPF || PassType == firHPF )
|
||
345:Core/Src/FIRFilterCode.c **** {
|
||
346:Core/Src/FIRFilterCode.c **** CorrectedOmega = *OmegaC * 2.0 - Omega; // This is usually OK.
|
||
347:Core/Src/FIRFilterCode.c **** if(CorrectedOmega < 0.001)CorrectedOmega = 0.001;
|
||
348:Core/Src/FIRFilterCode.c **** if(CorrectedOmega > 0.99)CorrectedOmega = 0.99;
|
||
349:Core/Src/FIRFilterCode.c **** *OmegaC = CorrectedOmega;
|
||
350:Core/Src/FIRFilterCode.c **** }
|
||
351:Core/Src/FIRFilterCode.c ****
|
||
352:Core/Src/FIRFilterCode.c **** else // PassType == firBPF || PassType == firNOTCH
|
||
353:Core/Src/FIRFilterCode.c **** {
|
||
354:Core/Src/FIRFilterCode.c **** CorrectedBW = *BW * 2.0 - (Omega2 - Omega1); // This routinely goes neg with Notch.
|
||
355:Core/Src/FIRFilterCode.c **** if(CorrectedBW < 0.01)CorrectedBW = 0.01;
|
||
356:Core/Src/FIRFilterCode.c **** if(CorrectedBW > *BW * 2.0)CorrectedBW = *BW * 2.0;
|
||
357:Core/Src/FIRFilterCode.c **** if(CorrectedBW > 0.98)CorrectedBW = 0.98;
|
||
358:Core/Src/FIRFilterCode.c **** *BW = CorrectedBW;
|
||
359:Core/Src/FIRFilterCode.c **** }
|
||
360:Core/Src/FIRFilterCode.c ****
|
||
361:Core/Src/FIRFilterCode.c **** }
|
||
362:Core/Src/FIRFilterCode.c ****
|
||
363:Core/Src/FIRFilterCode.c **** /*
|
||
364:Core/Src/FIRFilterCode.c **** //-----------------------------------------------------------------------------
|
||
365:Core/Src/FIRFilterCode.c ****
|
||
366:Core/Src/FIRFilterCode.c **** // This shows how to adjust the delay of an FIR by a fractional amount.
|
||
367:Core/Src/FIRFilterCode.c **** // We take the FFT of the FIR coefficients to get to the frequency domain,
|
||
368:Core/Src/FIRFilterCode.c **** // then apply the Laplace delay operator, and then do an inverse FFT.
|
||
ARM GAS /tmp/cclqT4it.s page 47
|
||
|
||
|
||
369:Core/Src/FIRFilterCode.c ****
|
||
370:Core/Src/FIRFilterCode.c **** // Use this function last. i.e. After the window was applied to the coefficients.
|
||
371:Core/Src/FIRFilterCode.c **** // The Delay value is in terms of a fraction of a sample (not in terms of sampling freq).
|
||
372:Core/Src/FIRFilterCode.c **** // Delay may be pos or neg. Typically a filter's delay can be adjusted by +/- NumTaps/20
|
||
373:Core/Src/FIRFilterCode.c **** // without affecting its performance significantly. A typical Delay value would be 0.75
|
||
374:Core/Src/FIRFilterCode.c **** void AdjustDelay(double *FirCoeff, int NumTaps, double Delay)
|
||
375:Core/Src/FIRFilterCode.c **** {
|
||
376:Core/Src/FIRFilterCode.c **** int j, FFTSize;
|
||
377:Core/Src/FIRFilterCode.c **** double *FFTInputR, *FFTInputI, Arg, Temp;
|
||
378:Core/Src/FIRFilterCode.c **** FFTSize = RequiredFFTSize(NumTaps+(int)fabs(Delay)+1); // Zero pad by at least Delay + 1 to preven
|
||
379:Core/Src/FIRFilterCode.c ****
|
||
380:Core/Src/FIRFilterCode.c **** FFTInputR = new(std::nothrow) double[FFTSize]; // Real part
|
||
381:Core/Src/FIRFilterCode.c **** FFTInputI = new(std::nothrow) double[FFTSize]; // Imag part
|
||
382:Core/Src/FIRFilterCode.c **** if(FFTInputR == NULL || FFTInputI == NULL)
|
||
383:Core/Src/FIRFilterCode.c **** {
|
||
384:Core/Src/FIRFilterCode.c **** //ShowMessage("Unable to allocate memory in AdjustDelay");
|
||
385:Core/Src/FIRFilterCode.c **** return;
|
||
386:Core/Src/FIRFilterCode.c **** }
|
||
387:Core/Src/FIRFilterCode.c **** for(j=0; j<FFTSize; j++)FFTInputR[j] = FFTInputI[j] = 0.0; // A mandatory init.
|
||
388:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)FFTInputR[j] = FirCoeff[j]; // Fill the real part with the FIR coef
|
||
389:Core/Src/FIRFilterCode.c ****
|
||
390:Core/Src/FIRFilterCode.c **** FFT(FFTInputR, FFTInputI, FFTSize, FORWARD); // Do an FFT
|
||
391:Core/Src/FIRFilterCode.c **** for(j=0; j<=FFTSize/2; j++) // Apply the Laplace Delay operator e^(-
|
||
392:Core/Src/FIRFilterCode.c **** {
|
||
393:Core/Src/FIRFilterCode.c **** Arg = -Delay * (double)j / (double)FFTSize * M_2PI; // This is -Delay * (the FFT bin frequen
|
||
394:Core/Src/FIRFilterCode.c **** Temp = cos(Arg)*FFTInputR[j] - sin(Arg)*FFTInputI[j];
|
||
395:Core/Src/FIRFilterCode.c **** FFTInputI[j] = cos(Arg)*FFTInputI[j] + sin(Arg)*FFTInputR[j];
|
||
396:Core/Src/FIRFilterCode.c **** FFTInputR[j] = Temp;
|
||
397:Core/Src/FIRFilterCode.c **** }
|
||
398:Core/Src/FIRFilterCode.c **** for(j=1; j<FFTSize/2; j++) // Fill the neg freq bins with the conjugate values.
|
||
399:Core/Src/FIRFilterCode.c **** {
|
||
400:Core/Src/FIRFilterCode.c **** FFTInputR[FFTSize-j] = FFTInputR[j];
|
||
401:Core/Src/FIRFilterCode.c **** FFTInputI[FFTSize-j] = -FFTInputI[j];
|
||
402:Core/Src/FIRFilterCode.c **** }
|
||
403:Core/Src/FIRFilterCode.c ****
|
||
404:Core/Src/FIRFilterCode.c **** FFT(FFTInputR, FFTInputI, FFTSize, INVERSE); // Inverse FFT
|
||
405:Core/Src/FIRFilterCode.c **** for(j=0; j<NumTaps; j++)
|
||
406:Core/Src/FIRFilterCode.c **** {
|
||
407:Core/Src/FIRFilterCode.c **** FirCoeff[j] = FFTInputR[j];
|
||
408:Core/Src/FIRFilterCode.c **** }
|
||
409:Core/Src/FIRFilterCode.c ****
|
||
410:Core/Src/FIRFilterCode.c **** delete[] FFTInputR;
|
||
411:Core/Src/FIRFilterCode.c **** delete[] FFTInputI;
|
||
412:Core/Src/FIRFilterCode.c **** }
|
||
413:Core/Src/FIRFilterCode.c **** //-----------------------------------------------------------------------------
|
||
414:Core/Src/FIRFilterCode.c ****
|
||
415:Core/Src/FIRFilterCode.c **** */
|
||
416:Core/Src/FIRFilterCode.c ****
|
||
417:Core/Src/FIRFilterCode.c ****
|
||
418:Core/Src/FIRFilterCode.c **** //---------------------------------------------------------------------------
|
||
419:Core/Src/FIRFilterCode.c ****
|
||
420:Core/Src/FIRFilterCode.c **** // Goertzel is essentially a single frequency DFT, but without phase information.
|
||
421:Core/Src/FIRFilterCode.c **** // Its simplicity allows it to run about 3 times faster than a single frequency DFT.
|
||
422:Core/Src/FIRFilterCode.c **** // It is typically used to find a tone embedded in a signal. A DTMF tone for example.
|
||
423:Core/Src/FIRFilterCode.c **** // 256 pts in 6 us
|
||
424:Core/Src/FIRFilterCode.c **** double Goertzel(double *Samples, int N, double Omega)
|
||
425:Core/Src/FIRFilterCode.c **** {
|
||
ARM GAS /tmp/cclqT4it.s page 48
|
||
|
||
|
||
426:Core/Src/FIRFilterCode.c **** int j;
|
||
427:Core/Src/FIRFilterCode.c **** double Reg0, Reg1, Reg2; // 3 shift registers
|
||
428:Core/Src/FIRFilterCode.c **** double CosVal, Mag;
|
||
429:Core/Src/FIRFilterCode.c **** Reg1 = Reg2 = 0.0;
|
||
430:Core/Src/FIRFilterCode.c ****
|
||
431:Core/Src/FIRFilterCode.c **** CosVal = 2.0 * cos(M_PI * Omega );
|
||
2115 .loc 1 431 0
|
||
2116 002a 1946 mov r1, r3
|
||
2117 002c 1046 mov r0, r2
|
||
2118 002e FFF7FEFF bl __aeabi_dadd
|
||
2119 .LVL326:
|
||
432:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2120 .loc 1 432 0
|
||
2121 0032 059B ldr r3, [sp, #20]
|
||
2122 0034 002B cmp r3, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2123 .loc 1 431 0
|
||
2124 0036 CDE90001 strd r0, [sp]
|
||
2125 .LVL327:
|
||
2126 .loc 1 432 0
|
||
2127 003a 73DD ble .L219
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2128 .loc 1 429 0
|
||
2129 003c 0026 movs r6, #0
|
||
2130 003e 0027 movs r7, #0
|
||
2131 .loc 1 432 0
|
||
2132 0040 DDF818A0 ldr r10, [sp, #24]
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2133 .loc 1 429 0
|
||
2134 0044 3446 mov r4, r6
|
||
2135 0046 3D46 mov r5, r7
|
||
2136 0048 03E0 b .L213
|
||
2137 .LVL328:
|
||
2138 .L260:
|
||
2139 004a DDE90001 ldrd r0, [sp]
|
||
433:Core/Src/FIRFilterCode.c **** {
|
||
434:Core/Src/FIRFilterCode.c **** Reg0 = Samples[j] + CosVal * Reg1 - Reg2;
|
||
2140 .loc 1 434 0
|
||
2141 004e 4446 mov r4, r8
|
||
2142 .LVL329:
|
||
2143 0050 4D46 mov r5, r9
|
||
2144 .LVL330:
|
||
2145 .L213:
|
||
2146 0052 2246 mov r2, r4
|
||
2147 0054 2B46 mov r3, r5
|
||
2148 0056 FAE80289 ldrd r8, [r10], #8
|
||
2149 005a FFF7FEFF bl __aeabi_dmul
|
||
2150 .LVL331:
|
||
2151 005e 3246 mov r2, r6
|
||
2152 0060 3B46 mov r3, r7
|
||
2153 0062 CDE90201 strd r0, [sp, #8]
|
||
2154 0066 FFF7FEFF bl __aeabi_dsub
|
||
2155 .LVL332:
|
||
2156 006a 4246 mov r2, r8
|
||
2157 006c 4B46 mov r3, r9
|
||
2158 006e FFF7FEFF bl __aeabi_dadd
|
||
2159 .LVL333:
|
||
ARM GAS /tmp/cclqT4it.s page 49
|
||
|
||
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2160 .loc 1 432 0
|
||
2161 0072 D345 cmp fp, r10
|
||
2162 .loc 1 434 0
|
||
2163 0074 8046 mov r8, r0
|
||
2164 0076 8946 mov r9, r1
|
||
2165 .LVL334:
|
||
2166 0078 2646 mov r6, r4
|
||
2167 007a 2F46 mov r7, r5
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2168 .loc 1 432 0
|
||
2169 007c E5D1 bne .L260
|
||
435:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
436:Core/Src/FIRFilterCode.c **** Reg1 = Reg0;
|
||
437:Core/Src/FIRFilterCode.c **** }
|
||
438:Core/Src/FIRFilterCode.c **** Mag = Reg2 * Reg2 + Reg1 * Reg1 - CosVal * Reg1 * Reg2;
|
||
2170 .loc 1 438 0
|
||
2171 007e 2246 mov r2, r4
|
||
2172 0080 2B46 mov r3, r5
|
||
2173 0082 2046 mov r0, r4
|
||
2174 0084 2946 mov r1, r5
|
||
2175 0086 FFF7FEFF bl __aeabi_dmul
|
||
2176 .LVL335:
|
||
2177 008a 4246 mov r2, r8
|
||
2178 008c 0446 mov r4, r0
|
||
2179 .LVL336:
|
||
2180 008e 0D46 mov r5, r1
|
||
2181 0090 4B46 mov r3, r9
|
||
2182 0092 4046 mov r0, r8
|
||
2183 0094 4946 mov r1, r9
|
||
2184 0096 FFF7FEFF bl __aeabi_dmul
|
||
2185 .LVL337:
|
||
2186 009a 0246 mov r2, r0
|
||
2187 009c 0B46 mov r3, r1
|
||
2188 009e 2046 mov r0, r4
|
||
2189 00a0 2946 mov r1, r5
|
||
2190 00a2 FFF7FEFF bl __aeabi_dadd
|
||
2191 .LVL338:
|
||
2192 00a6 4246 mov r2, r8
|
||
2193 00a8 0446 mov r4, r0
|
||
2194 00aa 0D46 mov r5, r1
|
||
2195 00ac 4B46 mov r3, r9
|
||
2196 00ae DDE90201 ldrd r0, [sp, #8]
|
||
2197 00b2 FFF7FEFF bl __aeabi_dmul
|
||
2198 .LVL339:
|
||
2199 00b6 0246 mov r2, r0
|
||
2200 00b8 0B46 mov r3, r1
|
||
2201 00ba 2046 mov r0, r4
|
||
2202 00bc 2946 mov r1, r5
|
||
2203 00be FFF7FEFF bl __aeabi_dsub
|
||
2204 .LVL340:
|
||
439:Core/Src/FIRFilterCode.c ****
|
||
440:Core/Src/FIRFilterCode.c **** if(Mag > 0.0)Mag = sqrt(Mag);
|
||
2205 .loc 1 440 0
|
||
2206 00c2 0022 movs r2, #0
|
||
2207 00c4 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
ARM GAS /tmp/cclqT4it.s page 50
|
||
|
||
|
||
2208 .loc 1 438 0
|
||
2209 00c6 0446 mov r4, r0
|
||
2210 00c8 0D46 mov r5, r1
|
||
2211 .LVL341:
|
||
2212 .loc 1 440 0
|
||
2213 00ca FFF7FEFF bl __aeabi_dcmpgt
|
||
2214 .LVL342:
|
||
2215 00ce 48B3 cbz r0, .L219
|
||
2216 .LVL343:
|
||
2217 .LBE96:
|
||
2218 .LBE95:
|
||
274:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break; // Stop when the response is down to -20 dB.
|
||
2219 .loc 1 274 0
|
||
2220 00d0 4BA3 adr r3, .L301
|
||
2221 00d2 D3E90023 ldrd r2, [r3]
|
||
2222 00d6 2946 mov r1, r5
|
||
2223 00d8 2046 mov r0, r4
|
||
2224 00da FFF7FEFF bl __aeabi_dcmpgt
|
||
2225 .LVL344:
|
||
2226 00de 0A99 ldr r1, [sp, #40]
|
||
2227 00e0 079E ldr r6, [sp, #28]
|
||
2228 00e2 0F46 mov r7, r1
|
||
2229 00e4 0028 cmp r0, #0
|
||
2230 00e6 18BF it ne
|
||
2231 00e8 3746 movne r7, r6
|
||
275:Core/Src/FIRFilterCode.c **** }
|
||
2232 .loc 1 275 0
|
||
2233 00ea 47A3 adr r3, .L301+8
|
||
2234 00ec D3E90023 ldrd r2, [r3]
|
||
2235 00f0 2046 mov r0, r4
|
||
2236 00f2 2946 mov r1, r5
|
||
2237 00f4 0A97 str r7, [sp, #40]
|
||
2238 .LVL345:
|
||
2239 00f6 FFF7FEFF bl __aeabi_dcmplt
|
||
2240 .LVL346:
|
||
2241 00fa 98B9 cbnz r0, .L219
|
||
270:Core/Src/FIRFilterCode.c **** {
|
||
2242 .loc 1 270 0 discriminator 2
|
||
2243 00fc 0136 adds r6, r6, #1
|
||
2244 00fe B6F57A7F cmp r6, #1000
|
||
2245 0102 3046 mov r0, r6
|
||
2246 0104 0796 str r6, [sp, #28]
|
||
2247 .LVL347:
|
||
2248 0106 0DD0 beq .L219
|
||
2249 0108 FFF7FEFF bl __aeabi_i2d
|
||
2250 .LVL348:
|
||
2251 010c 40A3 adr r3, .L301+16
|
||
2252 010e D3E90023 ldrd r2, [r3]
|
||
2253 0112 FFF7FEFF bl __aeabi_dmul
|
||
2254 .LVL349:
|
||
2255 0116 41EC100B vmov d0, r0, r1
|
||
2256 011a FFF7FEFF bl cos
|
||
2257 .LVL350:
|
||
2258 011e 53EC102B vmov r2, r3, d0
|
||
2259 0122 82E7 b .L216
|
||
2260 .LVL351:
|
||
2261 .L219:
|
||
ARM GAS /tmp/cclqT4it.s page 51
|
||
|
||
|
||
290:Core/Src/FIRFilterCode.c **** }
|
||
2262 .loc 1 290 0
|
||
2263 0124 0A98 ldr r0, [sp, #40]
|
||
2264 0126 FFF7FEFF bl __aeabi_i2d
|
||
2265 .LVL352:
|
||
2266 012a 3BA3 adr r3, .L301+24
|
||
2267 012c D3E90023 ldrd r2, [r3]
|
||
2268 0130 FFF7FEFF bl __aeabi_dmul
|
||
2269 .LVL353:
|
||
346:Core/Src/FIRFilterCode.c **** if(CorrectedOmega < 0.001)CorrectedOmega = 0.001;
|
||
2270 .loc 1 346 0
|
||
2271 0134 DDE90823 ldrd r2, [sp, #32]
|
||
290:Core/Src/FIRFilterCode.c **** }
|
||
2272 .loc 1 290 0
|
||
2273 0138 0446 mov r4, r0
|
||
2274 013a 0D46 mov r5, r1
|
||
2275 .LVL354:
|
||
346:Core/Src/FIRFilterCode.c **** if(CorrectedOmega < 0.001)CorrectedOmega = 0.001;
|
||
2276 .loc 1 346 0
|
||
2277 013c 1046 mov r0, r2
|
||
2278 013e 1946 mov r1, r3
|
||
2279 0140 FFF7FEFF bl __aeabi_dadd
|
||
2280 .LVL355:
|
||
2281 0144 2246 mov r2, r4
|
||
2282 0146 2B46 mov r3, r5
|
||
2283 0148 FFF7FEFF bl __aeabi_dsub
|
||
2284 .LVL356:
|
||
2285 014c 34A3 adr r3, .L301+32
|
||
2286 014e D3E90023 ldrd r2, [r3]
|
||
2287 0152 0446 mov r4, r0
|
||
2288 .LVL357:
|
||
2289 0154 0D46 mov r5, r1
|
||
2290 0156 FFF7FEFF bl __aeabi_dcmple
|
||
2291 .LVL358:
|
||
2292 015a 0028 cmp r0, #0
|
||
2293 015c 00F0B581 beq .L295
|
||
2294 .L255:
|
||
2295 .LVL359:
|
||
349:Core/Src/FIRFilterCode.c **** }
|
||
2296 .loc 1 349 0
|
||
2297 0160 2DA3 adr r3, .L301+24
|
||
2298 0162 D3E90023 ldrd r2, [r3]
|
||
2299 0166 2046 mov r0, r4
|
||
2300 0168 2946 mov r1, r5
|
||
2301 016a FFF7FEFF bl __aeabi_dcmpge
|
||
2302 .LVL360:
|
||
2303 016e 0028 cmp r0, #0
|
||
2304 0170 00F0A781 beq .L296
|
||
2305 .LVL361:
|
||
2306 .L256:
|
||
2307 0174 0B9B ldr r3, [sp, #44]
|
||
2308 0176 C3E90045 strd r4, [r3]
|
||
361:Core/Src/FIRFilterCode.c ****
|
||
2309 .loc 1 361 0
|
||
2310 017a 0DB0 add sp, sp, #52
|
||
2311 .LCFI25:
|
||
2312 .cfi_remember_state
|
||
ARM GAS /tmp/cclqT4it.s page 52
|
||
|
||
|
||
2313 .cfi_def_cfa_offset 36
|
||
2314 @ sp needed
|
||
2315 017c BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
||
2316 .LVL362:
|
||
2317 .L211:
|
||
2318 .LCFI26:
|
||
2319 .cfi_restore_state
|
||
280:Core/Src/FIRFilterCode.c **** {
|
||
2320 .loc 1 280 0
|
||
2321 0180 012A cmp r2, #1
|
||
2322 0182 00F0B781 beq .L297
|
||
2323 0186 2B4B ldr r3, .L301+52
|
||
2324 .LVL363:
|
||
2325 0188 51EC170B vmov r0, r1, d7
|
||
2326 .LVL364:
|
||
2327 018c 0022 movs r2, #0
|
||
2328 .LVL365:
|
||
2329 018e FFF7FEFF bl __aeabi_dmul
|
||
2330 .LVL366:
|
||
2331 0192 FFF7FEFF bl __aeabi_d2iz
|
||
2332 .LVL367:
|
||
293:Core/Src/FIRFilterCode.c **** {
|
||
2333 .loc 1 293 0
|
||
2334 0196 079B ldr r3, [sp, #28]
|
||
2335 0198 0A90 str r0, [sp, #40]
|
||
2336 019a 022B cmp r3, #2
|
||
2337 019c 00F03D82 beq .L298
|
||
2338 .LVL368:
|
||
322:Core/Src/FIRFilterCode.c **** {
|
||
2339 .loc 1 322 0
|
||
2340 01a0 0028 cmp r0, #0
|
||
2341 01a2 C0F25B83 blt .L237
|
||
2342 01a6 059A ldr r2, [sp, #20]
|
||
2343 01a8 0699 ldr r1, [sp, #24]
|
||
2344 01aa D200 lsls r2, r2, #3
|
||
2345 01ac CDE90700 strd r0, r0, [sp, #28]
|
||
2346 .LVL369:
|
||
2347 01b0 8F18 adds r7, r1, r2
|
||
2348 01b2 0B92 str r2, [sp, #44]
|
||
2349 .LVL370:
|
||
2350 01b4 BB46 mov fp, r7
|
||
2351 .LVL371:
|
||
2352 .L243:
|
||
324:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
2353 .loc 1 324 0
|
||
2354 01b6 0798 ldr r0, [sp, #28]
|
||
2355 01b8 FFF7FEFF bl __aeabi_i2d
|
||
2356 .LVL372:
|
||
2357 01bc 16A3 adr r3, .L301+24
|
||
2358 01be D3E90023 ldrd r2, [r3]
|
||
2359 01c2 FFF7FEFF bl __aeabi_dmul
|
||
2360 .LVL373:
|
||
2361 .LBB97:
|
||
2362 .LBB98:
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2363 .loc 1 431 0
|
||
2364 01c6 18A3 adr r3, .L301+40
|
||
ARM GAS /tmp/cclqT4it.s page 53
|
||
|
||
|
||
2365 01c8 D3E90023 ldrd r2, [r3]
|
||
2366 01cc FFF7FEFF bl __aeabi_dmul
|
||
2367 .LVL374:
|
||
2368 01d0 41EC100B vmov d0, r0, r1
|
||
2369 01d4 FFF7FEFF bl cos
|
||
2370 .LVL375:
|
||
2371 01d8 53EC102B vmov r2, r3, d0
|
||
2372 01dc 10EE100A vmov r0, s0 @ int
|
||
2373 01e0 1946 mov r1, r3
|
||
2374 01e2 FFF7FEFF bl __aeabi_dadd
|
||
2375 .LVL376:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2376 .loc 1 432 0
|
||
2377 01e6 059B ldr r3, [sp, #20]
|
||
2378 01e8 002B cmp r3, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2379 .loc 1 431 0
|
||
2380 01ea CDE90001 strd r0, [sp]
|
||
2381 .LVL377:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2382 .loc 1 432 0
|
||
2383 01ee 40F37E81 ble .L292
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2384 .loc 1 429 0
|
||
2385 01f2 0026 movs r6, #0
|
||
2386 01f4 0027 movs r7, #0
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2387 .loc 1 432 0
|
||
2388 01f6 DDF818A0 ldr r10, [sp, #24]
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2389 .loc 1 429 0
|
||
2390 01fa 3446 mov r4, r6
|
||
2391 01fc 3D46 mov r5, r7
|
||
2392 01fe 1FE0 b .L239
|
||
2393 .L302:
|
||
2394 .align 3
|
||
2395 .L301:
|
||
2396 0200 2B0DFCA8 .word 2835090731
|
||
2397 0204 86FDDF3F .word 1071644038
|
||
2398 0208 7C14AE47 .word 1202590844
|
||
2399 020c E17A843F .word 1065646817
|
||
2400 0210 C3718BB6 .word 3062591939
|
||
2401 0214 65BC693F .word 1063894117
|
||
2402 0218 FCA9F1D2 .word 3539053052
|
||
2403 021c 4D62503F .word 1062232653
|
||
2404 0220 AE47E17A .word 2061584302
|
||
2405 0224 14AEEF3F .word 1072672276
|
||
2406 0228 182D4454 .word 1413754136
|
||
2407 022c FB210940 .word 1074340347
|
||
2408 0230 0000F03F .word 1072693248
|
||
2409 0234 00408F40 .word 1083129856
|
||
2410 .LVL378:
|
||
2411 .L269:
|
||
2412 0238 DDE90001 ldrd r0, [sp]
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
2413 .loc 1 434 0
|
||
2414 023c 4446 mov r4, r8
|
||
ARM GAS /tmp/cclqT4it.s page 54
|
||
|
||
|
||
2415 .LVL379:
|
||
2416 023e 4D46 mov r5, r9
|
||
2417 .LVL380:
|
||
2418 .L239:
|
||
2419 0240 2246 mov r2, r4
|
||
2420 0242 2B46 mov r3, r5
|
||
2421 0244 FAE80289 ldrd r8, [r10], #8
|
||
2422 0248 FFF7FEFF bl __aeabi_dmul
|
||
2423 .LVL381:
|
||
2424 024c 3246 mov r2, r6
|
||
2425 024e 3B46 mov r3, r7
|
||
2426 0250 CDE90201 strd r0, [sp, #8]
|
||
2427 0254 FFF7FEFF bl __aeabi_dsub
|
||
2428 .LVL382:
|
||
2429 0258 4246 mov r2, r8
|
||
2430 025a 4B46 mov r3, r9
|
||
2431 025c FFF7FEFF bl __aeabi_dadd
|
||
2432 .LVL383:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2433 .loc 1 432 0
|
||
2434 0260 D345 cmp fp, r10
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
2435 .loc 1 434 0
|
||
2436 0262 8046 mov r8, r0
|
||
2437 0264 8946 mov r9, r1
|
||
2438 .LVL384:
|
||
2439 0266 2646 mov r6, r4
|
||
2440 0268 2F46 mov r7, r5
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2441 .loc 1 432 0
|
||
2442 026a E5D1 bne .L269
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
2443 .loc 1 438 0
|
||
2444 026c 2246 mov r2, r4
|
||
2445 026e 2B46 mov r3, r5
|
||
2446 0270 2046 mov r0, r4
|
||
2447 0272 2946 mov r1, r5
|
||
2448 0274 FFF7FEFF bl __aeabi_dmul
|
||
2449 .LVL385:
|
||
2450 0278 4246 mov r2, r8
|
||
2451 027a 0446 mov r4, r0
|
||
2452 .LVL386:
|
||
2453 027c 0D46 mov r5, r1
|
||
2454 027e 4B46 mov r3, r9
|
||
2455 0280 4046 mov r0, r8
|
||
2456 0282 4946 mov r1, r9
|
||
2457 0284 FFF7FEFF bl __aeabi_dmul
|
||
2458 .LVL387:
|
||
2459 0288 0246 mov r2, r0
|
||
2460 028a 0B46 mov r3, r1
|
||
2461 028c 2046 mov r0, r4
|
||
2462 028e 2946 mov r1, r5
|
||
2463 0290 FFF7FEFF bl __aeabi_dadd
|
||
2464 .LVL388:
|
||
2465 0294 4246 mov r2, r8
|
||
2466 0296 0446 mov r4, r0
|
||
2467 0298 0D46 mov r5, r1
|
||
ARM GAS /tmp/cclqT4it.s page 55
|
||
|
||
|
||
2468 029a 4B46 mov r3, r9
|
||
2469 029c DDE90201 ldrd r0, [sp, #8]
|
||
2470 02a0 FFF7FEFF bl __aeabi_dmul
|
||
2471 .LVL389:
|
||
2472 02a4 0246 mov r2, r0
|
||
2473 02a6 0B46 mov r3, r1
|
||
2474 02a8 2046 mov r0, r4
|
||
2475 02aa 2946 mov r1, r5
|
||
2476 02ac FFF7FEFF bl __aeabi_dsub
|
||
2477 .LVL390:
|
||
2478 .loc 1 440 0
|
||
2479 02b0 0022 movs r2, #0
|
||
2480 02b2 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
2481 .loc 1 438 0
|
||
2482 02b4 0446 mov r4, r0
|
||
2483 02b6 0D46 mov r5, r1
|
||
2484 .LVL391:
|
||
2485 .loc 1 440 0
|
||
2486 02b8 FFF7FEFF bl __aeabi_dcmpgt
|
||
2487 .LVL392:
|
||
2488 02bc 0028 cmp r0, #0
|
||
2489 02be 00F01681 beq .L292
|
||
2490 .LVL393:
|
||
2491 .LBE98:
|
||
2492 .LBE97:
|
||
326:Core/Src/FIRFilterCode.c **** if(Mag > 0.99)break;
|
||
2493 .loc 1 326 0
|
||
2494 02c2 0FF2CC53 adr r3, .L303
|
||
2495 02c6 D3E90023 ldrd r2, [r3]
|
||
2496 02ca 2946 mov r1, r5
|
||
2497 02cc 2046 mov r0, r4
|
||
2498 02ce FFF7FEFF bl __aeabi_dcmple
|
||
2499 .LVL394:
|
||
2500 02d2 DDE90761 ldrd r6, r1, [sp, #28]
|
||
2501 02d6 0028 cmp r0, #0
|
||
2502 02d8 18BF it ne
|
||
2503 02da 3146 movne r1, r6
|
||
2504 02dc 0891 str r1, [sp, #32]
|
||
2505 .LVL395:
|
||
327:Core/Src/FIRFilterCode.c **** }
|
||
2506 .loc 1 327 0
|
||
2507 02de 0FF2B853 adr r3, .L303+8
|
||
2508 02e2 D3E90023 ldrd r2, [r3]
|
||
2509 02e6 2046 mov r0, r4
|
||
2510 02e8 2946 mov r1, r5
|
||
2511 .LVL396:
|
||
2512 02ea FFF7FEFF bl __aeabi_dcmpgt
|
||
2513 .LVL397:
|
||
2514 02ee 28B9 cbnz r0, .L242
|
||
2515 .LVL398:
|
||
2516 .L238:
|
||
322:Core/Src/FIRFilterCode.c **** {
|
||
2517 .loc 1 322 0 discriminator 2
|
||
2518 02f0 079B ldr r3, [sp, #28]
|
||
2519 02f2 013B subs r3, r3, #1
|
||
2520 02f4 0793 str r3, [sp, #28]
|
||
ARM GAS /tmp/cclqT4it.s page 56
|
||
|
||
|
||
2521 .LVL399:
|
||
2522 02f6 0133 adds r3, r3, #1
|
||
2523 .LVL400:
|
||
2524 02f8 7FF45DAF bne .L243
|
||
2525 .L242:
|
||
329:Core/Src/FIRFilterCode.c ****
|
||
2526 .loc 1 329 0
|
||
2527 02fc 0898 ldr r0, [sp, #32]
|
||
2528 02fe FFF7FEFF bl __aeabi_i2d
|
||
2529 .LVL401:
|
||
2530 0302 0FF29C53 adr r3, .L303+16
|
||
2531 0306 D3E90023 ldrd r2, [r3]
|
||
2532 030a FFF7FEFF bl __aeabi_dmul
|
||
2533 .LVL402:
|
||
332:Core/Src/FIRFilterCode.c **** {
|
||
2534 .loc 1 332 0
|
||
2535 030e 0A9B ldr r3, [sp, #40]
|
||
2536 0310 B3F57A7F cmp r3, #1000
|
||
329:Core/Src/FIRFilterCode.c ****
|
||
2537 .loc 1 329 0
|
||
2538 0314 CDE90801 strd r0, [sp, #32]
|
||
2539 .LVL403:
|
||
332:Core/Src/FIRFilterCode.c **** {
|
||
2540 .loc 1 332 0
|
||
2541 0318 80F29080 bge .L244
|
||
2542 .L259:
|
||
2543 .LVL404:
|
||
2544 031c 0B9B ldr r3, [sp, #44]
|
||
2545 031e 069A ldr r2, [sp, #24]
|
||
2546 0320 1344 add r3, r3, r2
|
||
2547 0322 1F46 mov r7, r3
|
||
2548 .LBB101:
|
||
2549 .LBB99:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2550 .loc 1 432 0
|
||
2551 0324 0A9B ldr r3, [sp, #40]
|
||
2552 0326 0793 str r3, [sp, #28]
|
||
2553 0328 BB46 mov fp, r7
|
||
2554 .L249:
|
||
2555 .LVL405:
|
||
2556 .LBE99:
|
||
2557 .LBE101:
|
||
334:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
2558 .loc 1 334 0
|
||
2559 032a 0798 ldr r0, [sp, #28]
|
||
2560 032c FFF7FEFF bl __aeabi_i2d
|
||
2561 .LVL406:
|
||
2562 0330 0FF26C53 adr r3, .L303+16
|
||
2563 0334 D3E90023 ldrd r2, [r3]
|
||
2564 0338 FFF7FEFF bl __aeabi_dmul
|
||
2565 .LVL407:
|
||
2566 .LBB102:
|
||
2567 .LBB103:
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2568 .loc 1 431 0
|
||
2569 033c 0FF26853 adr r3, .L303+24
|
||
2570 0340 D3E90023 ldrd r2, [r3]
|
||
ARM GAS /tmp/cclqT4it.s page 57
|
||
|
||
|
||
2571 0344 FFF7FEFF bl __aeabi_dmul
|
||
2572 .LVL408:
|
||
2573 0348 41EC100B vmov d0, r0, r1
|
||
2574 034c FFF7FEFF bl cos
|
||
2575 .LVL409:
|
||
2576 0350 53EC102B vmov r2, r3, d0
|
||
2577 0354 10EE100A vmov r0, s0 @ int
|
||
2578 0358 1946 mov r1, r3
|
||
2579 035a FFF7FEFF bl __aeabi_dadd
|
||
2580 .LVL410:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2581 .loc 1 432 0
|
||
2582 035e 059B ldr r3, [sp, #20]
|
||
2583 0360 002B cmp r3, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2584 .loc 1 431 0
|
||
2585 0362 CDE90001 strd r0, [sp]
|
||
2586 .LVL411:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2587 .loc 1 432 0
|
||
2588 0366 40F3BF80 ble .L293
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2589 .loc 1 429 0
|
||
2590 036a 0026 movs r6, #0
|
||
2591 036c 0027 movs r7, #0
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2592 .loc 1 432 0
|
||
2593 036e DDF818A0 ldr r10, [sp, #24]
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2594 .loc 1 429 0
|
||
2595 0372 3446 mov r4, r6
|
||
2596 0374 3D46 mov r5, r7
|
||
2597 0376 03E0 b .L246
|
||
2598 .LVL412:
|
||
2599 .L273:
|
||
2600 0378 DDE90001 ldrd r0, [sp]
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
2601 .loc 1 434 0
|
||
2602 037c 4446 mov r4, r8
|
||
2603 .LVL413:
|
||
2604 037e 4D46 mov r5, r9
|
||
2605 .LVL414:
|
||
2606 .L246:
|
||
2607 0380 2246 mov r2, r4
|
||
2608 0382 2B46 mov r3, r5
|
||
2609 0384 FAE80289 ldrd r8, [r10], #8
|
||
2610 0388 FFF7FEFF bl __aeabi_dmul
|
||
2611 .LVL415:
|
||
2612 038c 3246 mov r2, r6
|
||
2613 038e 3B46 mov r3, r7
|
||
2614 0390 CDE90201 strd r0, [sp, #8]
|
||
2615 0394 FFF7FEFF bl __aeabi_dsub
|
||
2616 .LVL416:
|
||
2617 0398 4246 mov r2, r8
|
||
2618 039a 4B46 mov r3, r9
|
||
2619 039c FFF7FEFF bl __aeabi_dadd
|
||
2620 .LVL417:
|
||
ARM GAS /tmp/cclqT4it.s page 58
|
||
|
||
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2621 .loc 1 432 0
|
||
2622 03a0 D345 cmp fp, r10
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
2623 .loc 1 434 0
|
||
2624 03a2 8046 mov r8, r0
|
||
2625 03a4 8946 mov r9, r1
|
||
2626 .LVL418:
|
||
2627 03a6 2646 mov r6, r4
|
||
2628 03a8 2F46 mov r7, r5
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2629 .loc 1 432 0
|
||
2630 03aa E5D1 bne .L273
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
2631 .loc 1 438 0
|
||
2632 03ac 2246 mov r2, r4
|
||
2633 03ae 2B46 mov r3, r5
|
||
2634 03b0 2046 mov r0, r4
|
||
2635 03b2 2946 mov r1, r5
|
||
2636 03b4 FFF7FEFF bl __aeabi_dmul
|
||
2637 .LVL419:
|
||
2638 03b8 4246 mov r2, r8
|
||
2639 03ba 0446 mov r4, r0
|
||
2640 .LVL420:
|
||
2641 03bc 0D46 mov r5, r1
|
||
2642 03be 4B46 mov r3, r9
|
||
2643 03c0 4046 mov r0, r8
|
||
2644 03c2 4946 mov r1, r9
|
||
2645 03c4 FFF7FEFF bl __aeabi_dmul
|
||
2646 .LVL421:
|
||
2647 03c8 0246 mov r2, r0
|
||
2648 03ca 0B46 mov r3, r1
|
||
2649 03cc 2046 mov r0, r4
|
||
2650 03ce 2946 mov r1, r5
|
||
2651 03d0 FFF7FEFF bl __aeabi_dadd
|
||
2652 .LVL422:
|
||
2653 03d4 4246 mov r2, r8
|
||
2654 03d6 0446 mov r4, r0
|
||
2655 03d8 0D46 mov r5, r1
|
||
2656 03da 4B46 mov r3, r9
|
||
2657 03dc DDE90201 ldrd r0, [sp, #8]
|
||
2658 03e0 FFF7FEFF bl __aeabi_dmul
|
||
2659 .LVL423:
|
||
2660 03e4 0246 mov r2, r0
|
||
2661 03e6 0B46 mov r3, r1
|
||
2662 03e8 2046 mov r0, r4
|
||
2663 03ea 2946 mov r1, r5
|
||
2664 03ec FFF7FEFF bl __aeabi_dsub
|
||
2665 .LVL424:
|
||
2666 .loc 1 440 0
|
||
2667 03f0 0022 movs r2, #0
|
||
2668 03f2 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
2669 .loc 1 438 0
|
||
2670 03f4 0446 mov r4, r0
|
||
2671 03f6 0D46 mov r5, r1
|
||
2672 .LVL425:
|
||
ARM GAS /tmp/cclqT4it.s page 59
|
||
|
||
|
||
2673 .loc 1 440 0
|
||
2674 03f8 FFF7FEFF bl __aeabi_dcmpgt
|
||
2675 .LVL426:
|
||
2676 03fc 0028 cmp r0, #0
|
||
2677 03fe 73D0 beq .L293
|
||
2678 .LVL427:
|
||
2679 .LBE103:
|
||
2680 .LBE102:
|
||
336:Core/Src/FIRFilterCode.c **** if(Mag > 0.99)break;
|
||
2681 .loc 1 336 0
|
||
2682 0400 0FF28C43 adr r3, .L303
|
||
2683 0404 D3E90023 ldrd r2, [r3]
|
||
2684 0408 2946 mov r1, r5
|
||
2685 040a 2046 mov r0, r4
|
||
2686 040c FFF7FEFF bl __aeabi_dcmple
|
||
2687 .LVL428:
|
||
2688 0410 0A99 ldr r1, [sp, #40]
|
||
2689 0412 079E ldr r6, [sp, #28]
|
||
2690 0414 0028 cmp r0, #0
|
||
2691 0416 18BF it ne
|
||
2692 0418 3146 movne r1, r6
|
||
2693 041a 0A91 str r1, [sp, #40]
|
||
2694 .LVL429:
|
||
337:Core/Src/FIRFilterCode.c **** }
|
||
2695 .loc 1 337 0
|
||
2696 041c 0FF27843 adr r3, .L303+8
|
||
2697 0420 D3E90023 ldrd r2, [r3]
|
||
2698 0424 2046 mov r0, r4
|
||
2699 0426 2946 mov r1, r5
|
||
2700 .LVL430:
|
||
2701 0428 FFF7FEFF bl __aeabi_dcmpgt
|
||
2702 .LVL431:
|
||
2703 042c 30B9 cbnz r0, .L244
|
||
2704 .LVL432:
|
||
2705 .L245:
|
||
332:Core/Src/FIRFilterCode.c **** {
|
||
2706 .loc 1 332 0 discriminator 2
|
||
2707 042e 079B ldr r3, [sp, #28]
|
||
2708 0430 0133 adds r3, r3, #1
|
||
2709 0432 B3F57A7F cmp r3, #1000
|
||
2710 0436 0793 str r3, [sp, #28]
|
||
2711 .LVL433:
|
||
2712 0438 7FF477AF bne .L249
|
||
2713 .LVL434:
|
||
2714 .L244:
|
||
339:Core/Src/FIRFilterCode.c **** }
|
||
2715 .loc 1 339 0
|
||
2716 043c 0A98 ldr r0, [sp, #40]
|
||
2717 043e FFF7FEFF bl __aeabi_i2d
|
||
2718 .LVL435:
|
||
2719 0442 0FF25C43 adr r3, .L303+16
|
||
2720 0446 D3E90023 ldrd r2, [r3]
|
||
2721 044a FFF7FEFF bl __aeabi_dmul
|
||
2722 .LVL436:
|
||
354:Core/Src/FIRFilterCode.c **** if(CorrectedBW < 0.01)CorrectedBW = 0.01;
|
||
2723 .loc 1 354 0
|
||
2724 044e 169B ldr r3, [sp, #88]
|
||
ARM GAS /tmp/cclqT4it.s page 60
|
||
|
||
|
||
2725 0450 D3E90023 ldrd r2, [r3]
|
||
339:Core/Src/FIRFilterCode.c **** }
|
||
2726 .loc 1 339 0
|
||
2727 0454 0646 mov r6, r0
|
||
2728 0456 0F46 mov r7, r1
|
||
2729 .LVL437:
|
||
354:Core/Src/FIRFilterCode.c **** if(CorrectedBW < 0.01)CorrectedBW = 0.01;
|
||
2730 .loc 1 354 0
|
||
2731 0458 1046 mov r0, r2
|
||
2732 045a 1946 mov r1, r3
|
||
2733 045c FFF7FEFF bl __aeabi_dadd
|
||
2734 .LVL438:
|
||
2735 0460 DDE90823 ldrd r2, [sp, #32]
|
||
2736 0464 0446 mov r4, r0
|
||
2737 0466 0D46 mov r5, r1
|
||
2738 0468 FFF7FEFF bl __aeabi_dadd
|
||
2739 .LVL439:
|
||
2740 046c 3246 mov r2, r6
|
||
2741 046e 3B46 mov r3, r7
|
||
2742 0470 FFF7FEFF bl __aeabi_dsub
|
||
2743 .LVL440:
|
||
355:Core/Src/FIRFilterCode.c **** if(CorrectedBW > *BW * 2.0)CorrectedBW = *BW * 2.0;
|
||
2744 .loc 1 355 0
|
||
2745 0474 0FF23843 adr r3, .L303+32
|
||
2746 0478 D3E90023 ldrd r2, [r3]
|
||
354:Core/Src/FIRFilterCode.c **** if(CorrectedBW < 0.01)CorrectedBW = 0.01;
|
||
2747 .loc 1 354 0
|
||
2748 047c 0646 mov r6, r0
|
||
2749 .LVL441:
|
||
2750 047e 0F46 mov r7, r1
|
||
2751 .LVL442:
|
||
355:Core/Src/FIRFilterCode.c **** if(CorrectedBW > *BW * 2.0)CorrectedBW = *BW * 2.0;
|
||
2752 .loc 1 355 0
|
||
2753 0480 FFF7FEFF bl __aeabi_dcmplt
|
||
2754 .LVL443:
|
||
2755 0484 28B3 cbz r0, .L299
|
||
2756 .LVL444:
|
||
356:Core/Src/FIRFilterCode.c **** if(CorrectedBW > 0.98)CorrectedBW = 0.98;
|
||
2757 .loc 1 356 0
|
||
2758 0486 0FF22843 adr r3, .L303+32
|
||
2759 048a D3E90023 ldrd r2, [r3]
|
||
2760 048e 2046 mov r0, r4
|
||
2761 0490 2946 mov r1, r5
|
||
2762 0492 FFF7FEFF bl __aeabi_dcmplt
|
||
2763 .LVL445:
|
||
2764 0496 0028 cmp r0, #0
|
||
2765 0498 00F0BB80 beq .L300
|
||
2766 .LVL446:
|
||
2767 .L253:
|
||
2768 049c 0FF21843 adr r3, .L303+40
|
||
2769 04a0 D3E90023 ldrd r2, [r3]
|
||
2770 04a4 2046 mov r0, r4
|
||
2771 04a6 2946 mov r1, r5
|
||
2772 04a8 FFF7FEFF bl __aeabi_dcmple
|
||
2773 .LVL447:
|
||
2774 04ac 18B9 cbnz r0, .L254
|
||
2775 04ae 0FF20845 adr r5, .L303+40
|
||
ARM GAS /tmp/cclqT4it.s page 61
|
||
|
||
|
||
2776 04b2 D5E90045 ldrd r4, [r5]
|
||
2777 .LVL448:
|
||
2778 .L254:
|
||
358:Core/Src/FIRFilterCode.c **** }
|
||
2779 .loc 1 358 0
|
||
2780 04b6 169B ldr r3, [sp, #88]
|
||
2781 04b8 C3E90045 strd r4, [r3]
|
||
361:Core/Src/FIRFilterCode.c ****
|
||
2782 .loc 1 361 0
|
||
2783 04bc 0DB0 add sp, sp, #52
|
||
2784 .LCFI27:
|
||
2785 .cfi_remember_state
|
||
2786 .cfi_def_cfa_offset 36
|
||
2787 @ sp needed
|
||
2788 04be BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
||
2789 .LVL449:
|
||
2790 .L296:
|
||
2791 .LCFI28:
|
||
2792 .cfi_restore_state
|
||
349:Core/Src/FIRFilterCode.c **** }
|
||
2793 .loc 1 349 0
|
||
2794 04c2 F7A5 adr r5, .L303+16
|
||
2795 04c4 D5E90045 ldrd r4, [r5]
|
||
2796 .LVL450:
|
||
2797 04c8 54E6 b .L256
|
||
2798 .L295:
|
||
2799 04ca FDA5 adr r5, .L303+48
|
||
2800 04cc D5E90045 ldrd r4, [r5]
|
||
2801 04d0 46E6 b .L255
|
||
2802 .LVL451:
|
||
2803 .L299:
|
||
2804 04d2 3246 mov r2, r6
|
||
2805 04d4 3B46 mov r3, r7
|
||
2806 04d6 2046 mov r0, r4
|
||
2807 04d8 2946 mov r1, r5
|
||
2808 04da FFF7FEFF bl __aeabi_dcmple
|
||
2809 .LVL452:
|
||
2810 04de 0028 cmp r0, #0
|
||
2811 04e0 DCD1 bne .L253
|
||
2812 04e2 3446 mov r4, r6
|
||
2813 04e4 3D46 mov r5, r7
|
||
2814 04e6 D9E7 b .L253
|
||
2815 .LVL453:
|
||
2816 .L293:
|
||
2817 .LBB105:
|
||
2818 .LBB104:
|
||
2819 .loc 1 440 0
|
||
2820 04e8 079B ldr r3, [sp, #28]
|
||
2821 04ea 0A93 str r3, [sp, #40]
|
||
2822 .LVL454:
|
||
2823 04ec 9FE7 b .L245
|
||
2824 .LVL455:
|
||
2825 .L292:
|
||
2826 .LBE104:
|
||
2827 .LBE105:
|
||
2828 .LBB106:
|
||
2829 .LBB100:
|
||
ARM GAS /tmp/cclqT4it.s page 62
|
||
|
||
|
||
2830 04ee 079B ldr r3, [sp, #28]
|
||
2831 04f0 0893 str r3, [sp, #32]
|
||
2832 .LVL456:
|
||
2833 04f2 FDE6 b .L238
|
||
2834 .LVL457:
|
||
2835 .L297:
|
||
2836 04f4 0146 mov r1, r0
|
||
2837 .LVL458:
|
||
2838 04f6 0598 ldr r0, [sp, #20]
|
||
2839 .LVL459:
|
||
2840 .LBE100:
|
||
2841 .LBE106:
|
||
280:Core/Src/FIRFilterCode.c **** {
|
||
2842 .loc 1 280 0
|
||
2843 04f8 F3A3 adr r3, .L303+56
|
||
2844 04fa D3E90023 ldrd r2, [r3]
|
||
2845 .LVL460:
|
||
2846 04fe 01EBC005 add r5, r1, r0, lsl #3
|
||
282:Core/Src/FIRFilterCode.c **** for(j=NUM_FREQ_ERR_PTS-1; j>=0; j--)
|
||
2847 .loc 1 282 0
|
||
2848 0502 40F2DE31 movw r1, #990
|
||
2849 0506 0A91 str r1, [sp, #40]
|
||
283:Core/Src/FIRFilterCode.c **** {
|
||
2850 .loc 1 283 0
|
||
2851 0508 40F2E731 movw r1, #999
|
||
2852 050c 0791 str r1, [sp, #28]
|
||
2853 .LVL461:
|
||
2854 050e AB46 mov fp, r5
|
||
2855 .LVL462:
|
||
2856 .L223:
|
||
2857 .LBB107:
|
||
2858 .LBB108:
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2859 .loc 1 431 0
|
||
2860 0510 1946 mov r1, r3
|
||
2861 0512 1046 mov r0, r2
|
||
2862 0514 FFF7FEFF bl __aeabi_dadd
|
||
2863 .LVL463:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2864 .loc 1 432 0
|
||
2865 0518 059B ldr r3, [sp, #20]
|
||
2866 051a 002B cmp r3, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
2867 .loc 1 431 0
|
||
2868 051c CDE90001 strd r0, [sp]
|
||
2869 .LVL464:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2870 .loc 1 432 0
|
||
2871 0520 7FF700AE ble .L219
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
2872 .loc 1 429 0
|
||
2873 0524 0026 movs r6, #0
|
||
2874 0526 0027 movs r7, #0
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2875 .loc 1 432 0
|
||
2876 0528 DDF818A0 ldr r10, [sp, #24]
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
ARM GAS /tmp/cclqT4it.s page 63
|
||
|
||
|
||
2877 .loc 1 429 0
|
||
2878 052c 3446 mov r4, r6
|
||
2879 052e 3D46 mov r5, r7
|
||
2880 0530 03E0 b .L220
|
||
2881 .LVL465:
|
||
2882 .L262:
|
||
2883 0532 DDE90001 ldrd r0, [sp]
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
2884 .loc 1 434 0
|
||
2885 0536 4446 mov r4, r8
|
||
2886 .LVL466:
|
||
2887 0538 4D46 mov r5, r9
|
||
2888 .LVL467:
|
||
2889 .L220:
|
||
2890 053a 2246 mov r2, r4
|
||
2891 053c 2B46 mov r3, r5
|
||
2892 053e FAE80289 ldrd r8, [r10], #8
|
||
2893 0542 FFF7FEFF bl __aeabi_dmul
|
||
2894 .LVL468:
|
||
2895 0546 3246 mov r2, r6
|
||
2896 0548 3B46 mov r3, r7
|
||
2897 054a CDE90201 strd r0, [sp, #8]
|
||
2898 054e FFF7FEFF bl __aeabi_dsub
|
||
2899 .LVL469:
|
||
2900 0552 4246 mov r2, r8
|
||
2901 0554 4B46 mov r3, r9
|
||
2902 0556 FFF7FEFF bl __aeabi_dadd
|
||
2903 .LVL470:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2904 .loc 1 432 0
|
||
2905 055a D345 cmp fp, r10
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
2906 .loc 1 434 0
|
||
2907 055c 8046 mov r8, r0
|
||
2908 055e 8946 mov r9, r1
|
||
2909 .LVL471:
|
||
2910 0560 2646 mov r6, r4
|
||
2911 0562 2F46 mov r7, r5
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
2912 .loc 1 432 0
|
||
2913 0564 E5D1 bne .L262
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
2914 .loc 1 438 0
|
||
2915 0566 2246 mov r2, r4
|
||
2916 0568 2B46 mov r3, r5
|
||
2917 056a 2046 mov r0, r4
|
||
2918 056c 2946 mov r1, r5
|
||
2919 056e FFF7FEFF bl __aeabi_dmul
|
||
2920 .LVL472:
|
||
2921 0572 4246 mov r2, r8
|
||
2922 0574 0446 mov r4, r0
|
||
2923 .LVL473:
|
||
2924 0576 0D46 mov r5, r1
|
||
2925 0578 4B46 mov r3, r9
|
||
2926 057a 4046 mov r0, r8
|
||
2927 057c 4946 mov r1, r9
|
||
2928 057e FFF7FEFF bl __aeabi_dmul
|
||
ARM GAS /tmp/cclqT4it.s page 64
|
||
|
||
|
||
2929 .LVL474:
|
||
2930 0582 0246 mov r2, r0
|
||
2931 0584 0B46 mov r3, r1
|
||
2932 0586 2046 mov r0, r4
|
||
2933 0588 2946 mov r1, r5
|
||
2934 058a FFF7FEFF bl __aeabi_dadd
|
||
2935 .LVL475:
|
||
2936 058e 4246 mov r2, r8
|
||
2937 0590 0446 mov r4, r0
|
||
2938 0592 0D46 mov r5, r1
|
||
2939 0594 4B46 mov r3, r9
|
||
2940 0596 DDE90201 ldrd r0, [sp, #8]
|
||
2941 059a FFF7FEFF bl __aeabi_dmul
|
||
2942 .LVL476:
|
||
2943 059e 0246 mov r2, r0
|
||
2944 05a0 0B46 mov r3, r1
|
||
2945 05a2 2046 mov r0, r4
|
||
2946 05a4 2946 mov r1, r5
|
||
2947 05a6 FFF7FEFF bl __aeabi_dsub
|
||
2948 .LVL477:
|
||
2949 .loc 1 440 0
|
||
2950 05aa 0022 movs r2, #0
|
||
2951 05ac 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
2952 .loc 1 438 0
|
||
2953 05ae 0446 mov r4, r0
|
||
2954 05b0 0D46 mov r5, r1
|
||
2955 .LVL478:
|
||
2956 .loc 1 440 0
|
||
2957 05b2 FFF7FEFF bl __aeabi_dcmpgt
|
||
2958 .LVL479:
|
||
2959 05b6 0028 cmp r0, #0
|
||
2960 05b8 3FF4B4AD beq .L219
|
||
2961 .LVL480:
|
||
2962 .LBE108:
|
||
2963 .LBE107:
|
||
287:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break; // Stop when the response is down to -20 dB.
|
||
2964 .loc 1 287 0
|
||
2965 05bc B4A3 adr r3, .L303
|
||
2966 05be D3E90023 ldrd r2, [r3]
|
||
2967 05c2 2946 mov r1, r5
|
||
2968 05c4 2046 mov r0, r4
|
||
2969 05c6 FFF7FEFF bl __aeabi_dcmpgt
|
||
2970 .LVL481:
|
||
2971 05ca 0A99 ldr r1, [sp, #40]
|
||
2972 05cc 079E ldr r6, [sp, #28]
|
||
2973 05ce 0F46 mov r7, r1
|
||
2974 05d0 0028 cmp r0, #0
|
||
2975 05d2 18BF it ne
|
||
2976 05d4 3746 movne r7, r6
|
||
288:Core/Src/FIRFilterCode.c **** }
|
||
2977 .loc 1 288 0
|
||
2978 05d6 BEA3 adr r3, .L303+64
|
||
2979 05d8 D3E90023 ldrd r2, [r3]
|
||
2980 05dc 2046 mov r0, r4
|
||
2981 05de 2946 mov r1, r5
|
||
2982 05e0 0A97 str r7, [sp, #40]
|
||
ARM GAS /tmp/cclqT4it.s page 65
|
||
|
||
|
||
2983 .LVL482:
|
||
2984 05e2 FFF7FEFF bl __aeabi_dcmplt
|
||
2985 .LVL483:
|
||
2986 05e6 0028 cmp r0, #0
|
||
2987 05e8 7FF49CAD bne .L219
|
||
283:Core/Src/FIRFilterCode.c **** {
|
||
2988 .loc 1 283 0 discriminator 2
|
||
2989 05ec 701E subs r0, r6, #1
|
||
2990 05ee 431C adds r3, r0, #1
|
||
2991 05f0 0790 str r0, [sp, #28]
|
||
2992 .LVL484:
|
||
2993 05f2 3FF497AD beq .L219
|
||
2994 05f6 FFF7FEFF bl __aeabi_i2d
|
||
2995 .LVL485:
|
||
2996 05fa B7A3 adr r3, .L303+72
|
||
2997 05fc D3E90023 ldrd r2, [r3]
|
||
2998 0600 FFF7FEFF bl __aeabi_dmul
|
||
2999 .LVL486:
|
||
3000 0604 41EC100B vmov d0, r0, r1
|
||
3001 0608 FFF7FEFF bl cos
|
||
3002 .LVL487:
|
||
3003 060c 53EC102B vmov r2, r3, d0
|
||
3004 0610 7EE7 b .L223
|
||
3005 .LVL488:
|
||
3006 .L300:
|
||
355:Core/Src/FIRFilterCode.c **** if(CorrectedBW > *BW * 2.0)CorrectedBW = *BW * 2.0;
|
||
3007 .loc 1 355 0
|
||
3008 0612 A7A5 adr r5, .L303+32
|
||
3009 0614 D5E90045 ldrd r4, [r5]
|
||
3010 0618 4DE7 b .L254
|
||
3011 .LVL489:
|
||
3012 .L298:
|
||
297:Core/Src/FIRFilterCode.c **** {
|
||
3013 .loc 1 297 0
|
||
3014 061a 0028 cmp r0, #0
|
||
3015 061c C0F22B81 blt .L225
|
||
3016 0620 059A ldr r2, [sp, #20]
|
||
3017 0622 0699 ldr r1, [sp, #24]
|
||
3018 0624 D200 lsls r2, r2, #3
|
||
3019 0626 CDE90700 strd r0, r0, [sp, #28]
|
||
3020 .LVL490:
|
||
3021 062a 8D18 adds r5, r1, r2
|
||
3022 062c 0B92 str r2, [sp, #44]
|
||
3023 .LVL491:
|
||
3024 062e AB46 mov fp, r5
|
||
3025 .LVL492:
|
||
3026 .L230:
|
||
299:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
3027 .loc 1 299 0
|
||
3028 0630 0798 ldr r0, [sp, #28]
|
||
3029 0632 FFF7FEFF bl __aeabi_i2d
|
||
3030 .LVL493:
|
||
3031 .LBB109:
|
||
3032 .LBB110:
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
3033 .loc 1 431 0
|
||
3034 0636 A8A3 adr r3, .L303+72
|
||
ARM GAS /tmp/cclqT4it.s page 66
|
||
|
||
|
||
3035 0638 D3E90023 ldrd r2, [r3]
|
||
3036 063c FFF7FEFF bl __aeabi_dmul
|
||
3037 .LVL494:
|
||
3038 0640 41EC100B vmov d0, r0, r1
|
||
3039 0644 FFF7FEFF bl cos
|
||
3040 .LVL495:
|
||
3041 0648 53EC102B vmov r2, r3, d0
|
||
3042 064c 10EE100A vmov r0, s0 @ int
|
||
3043 0650 1946 mov r1, r3
|
||
3044 0652 FFF7FEFF bl __aeabi_dadd
|
||
3045 .LVL496:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3046 .loc 1 432 0
|
||
3047 0656 059B ldr r3, [sp, #20]
|
||
3048 0658 002B cmp r3, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
3049 .loc 1 431 0
|
||
3050 065a CDE90001 strd r0, [sp]
|
||
3051 .LVL497:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3052 .loc 1 432 0
|
||
3053 065e 63DD ble .L226
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
3054 .loc 1 429 0
|
||
3055 0660 0026 movs r6, #0
|
||
3056 0662 0027 movs r7, #0
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3057 .loc 1 432 0
|
||
3058 0664 DDF818A0 ldr r10, [sp, #24]
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
3059 .loc 1 429 0
|
||
3060 0668 3446 mov r4, r6
|
||
3061 066a 3D46 mov r5, r7
|
||
3062 066c 03E0 b .L227
|
||
3063 .LVL498:
|
||
3064 .L264:
|
||
3065 066e DDE90001 ldrd r0, [sp]
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3066 .loc 1 434 0
|
||
3067 0672 4446 mov r4, r8
|
||
3068 .LVL499:
|
||
3069 0674 4D46 mov r5, r9
|
||
3070 .LVL500:
|
||
3071 .L227:
|
||
3072 0676 2246 mov r2, r4
|
||
3073 0678 2B46 mov r3, r5
|
||
3074 067a FAE80289 ldrd r8, [r10], #8
|
||
3075 067e FFF7FEFF bl __aeabi_dmul
|
||
3076 .LVL501:
|
||
3077 0682 3246 mov r2, r6
|
||
3078 0684 3B46 mov r3, r7
|
||
3079 0686 CDE90201 strd r0, [sp, #8]
|
||
3080 068a FFF7FEFF bl __aeabi_dsub
|
||
3081 .LVL502:
|
||
3082 068e 4246 mov r2, r8
|
||
3083 0690 4B46 mov r3, r9
|
||
3084 0692 FFF7FEFF bl __aeabi_dadd
|
||
ARM GAS /tmp/cclqT4it.s page 67
|
||
|
||
|
||
3085 .LVL503:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3086 .loc 1 432 0
|
||
3087 0696 D345 cmp fp, r10
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3088 .loc 1 434 0
|
||
3089 0698 8046 mov r8, r0
|
||
3090 069a 8946 mov r9, r1
|
||
3091 .LVL504:
|
||
3092 069c 2646 mov r6, r4
|
||
3093 069e 2F46 mov r7, r5
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3094 .loc 1 432 0
|
||
3095 06a0 E5D1 bne .L264
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
3096 .loc 1 438 0
|
||
3097 06a2 2246 mov r2, r4
|
||
3098 06a4 2B46 mov r3, r5
|
||
3099 06a6 2046 mov r0, r4
|
||
3100 06a8 2946 mov r1, r5
|
||
3101 06aa FFF7FEFF bl __aeabi_dmul
|
||
3102 .LVL505:
|
||
3103 06ae 4246 mov r2, r8
|
||
3104 06b0 0446 mov r4, r0
|
||
3105 .LVL506:
|
||
3106 06b2 0D46 mov r5, r1
|
||
3107 06b4 4B46 mov r3, r9
|
||
3108 06b6 4046 mov r0, r8
|
||
3109 06b8 4946 mov r1, r9
|
||
3110 06ba FFF7FEFF bl __aeabi_dmul
|
||
3111 .LVL507:
|
||
3112 06be 0246 mov r2, r0
|
||
3113 06c0 0B46 mov r3, r1
|
||
3114 06c2 2046 mov r0, r4
|
||
3115 06c4 2946 mov r1, r5
|
||
3116 06c6 FFF7FEFF bl __aeabi_dadd
|
||
3117 .LVL508:
|
||
3118 06ca 4246 mov r2, r8
|
||
3119 06cc 0446 mov r4, r0
|
||
3120 06ce 0D46 mov r5, r1
|
||
3121 06d0 4B46 mov r3, r9
|
||
3122 06d2 DDE90201 ldrd r0, [sp, #8]
|
||
3123 06d6 FFF7FEFF bl __aeabi_dmul
|
||
3124 .LVL509:
|
||
3125 06da 0246 mov r2, r0
|
||
3126 06dc 0B46 mov r3, r1
|
||
3127 06de 2046 mov r0, r4
|
||
3128 06e0 2946 mov r1, r5
|
||
3129 06e2 FFF7FEFF bl __aeabi_dsub
|
||
3130 .LVL510:
|
||
3131 .loc 1 440 0
|
||
3132 06e6 0022 movs r2, #0
|
||
3133 06e8 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
3134 .loc 1 438 0
|
||
3135 06ea 0446 mov r4, r0
|
||
3136 06ec 0D46 mov r5, r1
|
||
ARM GAS /tmp/cclqT4it.s page 68
|
||
|
||
|
||
3137 .LVL511:
|
||
3138 .loc 1 440 0
|
||
3139 06ee FFF7FEFF bl __aeabi_dcmpgt
|
||
3140 .LVL512:
|
||
3141 06f2 C8B1 cbz r0, .L226
|
||
3142 .LVL513:
|
||
3143 .LBE110:
|
||
3144 .LBE109:
|
||
301:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break;
|
||
3145 .loc 1 301 0
|
||
3146 06f4 66A3 adr r3, .L303
|
||
3147 06f6 D3E90023 ldrd r2, [r3]
|
||
3148 06fa 2946 mov r1, r5
|
||
3149 06fc 2046 mov r0, r4
|
||
3150 06fe FFF7FEFF bl __aeabi_dcmpgt
|
||
3151 .LVL514:
|
||
3152 0702 0899 ldr r1, [sp, #32]
|
||
3153 0704 079E ldr r6, [sp, #28]
|
||
3154 0706 0F46 mov r7, r1
|
||
3155 0708 0028 cmp r0, #0
|
||
3156 070a 18BF it ne
|
||
3157 070c 3746 movne r7, r6
|
||
302:Core/Src/FIRFilterCode.c **** }
|
||
3158 .loc 1 302 0
|
||
3159 070e 70A3 adr r3, .L303+64
|
||
3160 0710 D3E90023 ldrd r2, [r3]
|
||
3161 0714 2046 mov r0, r4
|
||
3162 0716 2946 mov r1, r5
|
||
3163 0718 0897 str r7, [sp, #32]
|
||
3164 .LVL515:
|
||
3165 071a FFF7FEFF bl __aeabi_dcmplt
|
||
3166 .LVL516:
|
||
3167 071e 18B9 cbnz r0, .L226
|
||
297:Core/Src/FIRFilterCode.c **** {
|
||
3168 .loc 1 297 0 discriminator 2
|
||
3169 0720 731E subs r3, r6, #1
|
||
3170 0722 0793 str r3, [sp, #28]
|
||
3171 .LVL517:
|
||
3172 0724 0133 adds r3, r3, #1
|
||
3173 .LVL518:
|
||
3174 0726 83D1 bne .L230
|
||
3175 .LVL519:
|
||
3176 .L226:
|
||
304:Core/Src/FIRFilterCode.c ****
|
||
3177 .loc 1 304 0
|
||
3178 0728 0898 ldr r0, [sp, #32]
|
||
3179 072a FFF7FEFF bl __aeabi_i2d
|
||
3180 .LVL520:
|
||
3181 072e 5CA3 adr r3, .L303+16
|
||
3182 0730 D3E90023 ldrd r2, [r3]
|
||
3183 0734 FFF7FEFF bl __aeabi_dmul
|
||
3184 .LVL521:
|
||
307:Core/Src/FIRFilterCode.c **** {
|
||
3185 .loc 1 307 0
|
||
3186 0738 0A9B ldr r3, [sp, #40]
|
||
3187 073a B3F57A7F cmp r3, #1000
|
||
304:Core/Src/FIRFilterCode.c ****
|
||
ARM GAS /tmp/cclqT4it.s page 69
|
||
|
||
|
||
3188 .loc 1 304 0
|
||
3189 073e CDE90801 strd r0, [sp, #32]
|
||
3190 .LVL522:
|
||
307:Core/Src/FIRFilterCode.c **** {
|
||
3191 .loc 1 307 0
|
||
3192 0742 BFF67BAE bge .L244
|
||
3193 .L258:
|
||
3194 .LVL523:
|
||
3195 0746 0B9B ldr r3, [sp, #44]
|
||
3196 0748 069A ldr r2, [sp, #24]
|
||
3197 074a 1344 add r3, r3, r2
|
||
3198 074c 1D46 mov r5, r3
|
||
3199 074e 0A9B ldr r3, [sp, #40]
|
||
3200 0750 0793 str r3, [sp, #28]
|
||
3201 0752 AB46 mov fp, r5
|
||
3202 .L235:
|
||
3203 .LVL524:
|
||
309:Core/Src/FIRFilterCode.c **** Mag = Goertzel(Coeff, NumTaps, Omega);
|
||
3204 .loc 1 309 0
|
||
3205 0754 0798 ldr r0, [sp, #28]
|
||
3206 0756 FFF7FEFF bl __aeabi_i2d
|
||
3207 .LVL525:
|
||
3208 .LBB111:
|
||
3209 .LBB112:
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
3210 .loc 1 431 0
|
||
3211 075a 5FA3 adr r3, .L303+72
|
||
3212 075c D3E90023 ldrd r2, [r3]
|
||
3213 0760 FFF7FEFF bl __aeabi_dmul
|
||
3214 .LVL526:
|
||
3215 0764 41EC100B vmov d0, r0, r1
|
||
3216 0768 FFF7FEFF bl cos
|
||
3217 .LVL527:
|
||
3218 076c 53EC102B vmov r2, r3, d0
|
||
3219 0770 10EE100A vmov r0, s0 @ int
|
||
3220 0774 1946 mov r1, r3
|
||
3221 0776 FFF7FEFF bl __aeabi_dadd
|
||
3222 .LVL528:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3223 .loc 1 432 0
|
||
3224 077a 059B ldr r3, [sp, #20]
|
||
3225 077c 002B cmp r3, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
3226 .loc 1 431 0
|
||
3227 077e CDE90001 strd r0, [sp]
|
||
3228 .LVL529:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3229 .loc 1 432 0
|
||
3230 0782 7FF75BAE ble .L244
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
3231 .loc 1 429 0
|
||
3232 0786 0026 movs r6, #0
|
||
3233 0788 0027 movs r7, #0
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3234 .loc 1 432 0
|
||
3235 078a DDF818A0 ldr r10, [sp, #24]
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
ARM GAS /tmp/cclqT4it.s page 70
|
||
|
||
|
||
3236 .loc 1 429 0
|
||
3237 078e 3446 mov r4, r6
|
||
3238 0790 3D46 mov r5, r7
|
||
3239 0792 03E0 b .L232
|
||
3240 .LVL530:
|
||
3241 .L266:
|
||
3242 0794 DDE90001 ldrd r0, [sp]
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3243 .loc 1 434 0
|
||
3244 0798 4446 mov r4, r8
|
||
3245 .LVL531:
|
||
3246 079a 4D46 mov r5, r9
|
||
3247 .LVL532:
|
||
3248 .L232:
|
||
3249 079c 2246 mov r2, r4
|
||
3250 079e 2B46 mov r3, r5
|
||
3251 07a0 FAE80289 ldrd r8, [r10], #8
|
||
3252 07a4 FFF7FEFF bl __aeabi_dmul
|
||
3253 .LVL533:
|
||
3254 07a8 3246 mov r2, r6
|
||
3255 07aa 3B46 mov r3, r7
|
||
3256 07ac CDE90201 strd r0, [sp, #8]
|
||
3257 07b0 FFF7FEFF bl __aeabi_dsub
|
||
3258 .LVL534:
|
||
3259 07b4 4246 mov r2, r8
|
||
3260 07b6 4B46 mov r3, r9
|
||
3261 07b8 FFF7FEFF bl __aeabi_dadd
|
||
3262 .LVL535:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3263 .loc 1 432 0
|
||
3264 07bc D345 cmp fp, r10
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3265 .loc 1 434 0
|
||
3266 07be 8046 mov r8, r0
|
||
3267 07c0 8946 mov r9, r1
|
||
3268 .LVL536:
|
||
3269 07c2 2646 mov r6, r4
|
||
3270 07c4 2F46 mov r7, r5
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3271 .loc 1 432 0
|
||
3272 07c6 E5D1 bne .L266
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
3273 .loc 1 438 0
|
||
3274 07c8 2246 mov r2, r4
|
||
3275 07ca 2B46 mov r3, r5
|
||
3276 07cc 2046 mov r0, r4
|
||
3277 07ce 2946 mov r1, r5
|
||
3278 07d0 FFF7FEFF bl __aeabi_dmul
|
||
3279 .LVL537:
|
||
3280 07d4 4246 mov r2, r8
|
||
3281 07d6 0446 mov r4, r0
|
||
3282 .LVL538:
|
||
3283 07d8 0D46 mov r5, r1
|
||
3284 07da 4B46 mov r3, r9
|
||
3285 07dc 4046 mov r0, r8
|
||
3286 07de 4946 mov r1, r9
|
||
3287 07e0 FFF7FEFF bl __aeabi_dmul
|
||
ARM GAS /tmp/cclqT4it.s page 71
|
||
|
||
|
||
3288 .LVL539:
|
||
3289 07e4 0246 mov r2, r0
|
||
3290 07e6 0B46 mov r3, r1
|
||
3291 07e8 2046 mov r0, r4
|
||
3292 07ea 2946 mov r1, r5
|
||
3293 07ec FFF7FEFF bl __aeabi_dadd
|
||
3294 .LVL540:
|
||
3295 07f0 4246 mov r2, r8
|
||
3296 07f2 0446 mov r4, r0
|
||
3297 07f4 0D46 mov r5, r1
|
||
3298 07f6 4B46 mov r3, r9
|
||
3299 07f8 DDE90201 ldrd r0, [sp, #8]
|
||
3300 07fc FFF7FEFF bl __aeabi_dmul
|
||
3301 .LVL541:
|
||
3302 0800 0246 mov r2, r0
|
||
3303 0802 0B46 mov r3, r1
|
||
3304 0804 2046 mov r0, r4
|
||
3305 0806 2946 mov r1, r5
|
||
3306 0808 FFF7FEFF bl __aeabi_dsub
|
||
3307 .LVL542:
|
||
3308 .loc 1 440 0
|
||
3309 080c 0022 movs r2, #0
|
||
3310 080e 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
3311 .loc 1 438 0
|
||
3312 0810 0446 mov r4, r0
|
||
3313 0812 0D46 mov r5, r1
|
||
3314 .LVL543:
|
||
3315 .loc 1 440 0
|
||
3316 0814 FFF7FEFF bl __aeabi_dcmpgt
|
||
3317 .LVL544:
|
||
3318 0818 0028 cmp r0, #0
|
||
3319 081a 3FF40FAE beq .L244
|
||
3320 .LVL545:
|
||
3321 .LBE112:
|
||
3322 .LBE111:
|
||
311:Core/Src/FIRFilterCode.c **** if(Mag < 0.1)break;
|
||
3323 .loc 1 311 0
|
||
3324 081e 1CA3 adr r3, .L303
|
||
3325 0820 D3E90023 ldrd r2, [r3]
|
||
3326 0824 2946 mov r1, r5
|
||
3327 0826 2046 mov r0, r4
|
||
3328 0828 FFF7FEFF bl __aeabi_dcmpgt
|
||
3329 .LVL546:
|
||
3330 082c 0A99 ldr r1, [sp, #40]
|
||
3331 082e 079E ldr r6, [sp, #28]
|
||
3332 0830 0F46 mov r7, r1
|
||
3333 0832 0028 cmp r0, #0
|
||
3334 0834 18BF it ne
|
||
3335 0836 3746 movne r7, r6
|
||
312:Core/Src/FIRFilterCode.c **** }
|
||
3336 .loc 1 312 0
|
||
3337 0838 25A3 adr r3, .L303+64
|
||
3338 083a D3E90023 ldrd r2, [r3]
|
||
3339 083e 2046 mov r0, r4
|
||
3340 0840 2946 mov r1, r5
|
||
3341 0842 0A97 str r7, [sp, #40]
|
||
ARM GAS /tmp/cclqT4it.s page 72
|
||
|
||
|
||
3342 .LVL547:
|
||
3343 0844 FFF7FEFF bl __aeabi_dcmplt
|
||
3344 .LVL548:
|
||
3345 0848 0028 cmp r0, #0
|
||
3346 084a 7FF4F7AD bne .L244
|
||
307:Core/Src/FIRFilterCode.c **** {
|
||
3347 .loc 1 307 0 discriminator 2
|
||
3348 084e 0136 adds r6, r6, #1
|
||
3349 0850 B6F57A7F cmp r6, #1000
|
||
3350 0854 0796 str r6, [sp, #28]
|
||
3351 .LVL549:
|
||
3352 0856 7FF47DAF bne .L235
|
||
3353 085a EFE5 b .L244
|
||
3354 .LVL550:
|
||
3355 .L237:
|
||
329:Core/Src/FIRFilterCode.c ****
|
||
3356 .loc 1 329 0
|
||
3357 085c FFF7FEFF bl __aeabi_i2d
|
||
3358 .LVL551:
|
||
3359 0860 0FA3 adr r3, .L303+16
|
||
3360 0862 D3E90023 ldrd r2, [r3]
|
||
3361 0866 FFF7FEFF bl __aeabi_dmul
|
||
3362 .LVL552:
|
||
3363 086a 059B ldr r3, [sp, #20]
|
||
3364 086c DB00 lsls r3, r3, #3
|
||
3365 086e CDE90801 strd r0, [sp, #32]
|
||
3366 .LVL553:
|
||
3367 0872 0B93 str r3, [sp, #44]
|
||
3368 .LVL554:
|
||
3369 0874 52E5 b .L259
|
||
3370 .LVL555:
|
||
3371 .L225:
|
||
304:Core/Src/FIRFilterCode.c ****
|
||
3372 .loc 1 304 0
|
||
3373 0876 FFF7FEFF bl __aeabi_i2d
|
||
3374 .LVL556:
|
||
3375 087a 09A3 adr r3, .L303+16
|
||
3376 087c D3E90023 ldrd r2, [r3]
|
||
3377 0880 FFF7FEFF bl __aeabi_dmul
|
||
3378 .LVL557:
|
||
3379 0884 059B ldr r3, [sp, #20]
|
||
3380 0886 DB00 lsls r3, r3, #3
|
||
3381 0888 CDE90801 strd r0, [sp, #32]
|
||
3382 .LVL558:
|
||
3383 088c 0B93 str r3, [sp, #44]
|
||
3384 .LVL559:
|
||
3385 088e 5AE7 b .L258
|
||
3386 .L304:
|
||
3387 .align 3
|
||
3388 .L303:
|
||
3389 0890 2B0DFCA8 .word 2835090731
|
||
3390 0894 86FDDF3F .word 1071644038
|
||
3391 0898 3EE8D9AC .word 2899961918
|
||
3392 089c FA5CEF3F .word 1072651514
|
||
3393 08a0 FCA9F1D2 .word 3539053052
|
||
3394 08a4 4D62503F .word 1062232653
|
||
3395 08a8 182D4454 .word 1413754136
|
||
ARM GAS /tmp/cclqT4it.s page 73
|
||
|
||
|
||
3396 08ac FB210940 .word 1074340347
|
||
3397 08b0 7B14AE47 .word 1202590843
|
||
3398 08b4 E17A843F .word 1065646817
|
||
3399 08b8 5C8FC2F5 .word 4123168604
|
||
3400 08bc 285CEF3F .word 1072651304
|
||
3401 08c0 AE47E17A .word 2061584302
|
||
3402 08c4 14AEEF3F .word 1072672276
|
||
3403 08c8 FF81A6A6 .word 2795930111
|
||
3404 08cc F5FFEFBF .word -1074790411
|
||
3405 08d0 7C14AE47 .word 1202590844
|
||
3406 08d4 E17A843F .word 1065646817
|
||
3407 08d8 C3718BB6 .word 3062591939
|
||
3408 08dc 65BC693F .word 1063894117
|
||
3409 .cfi_endproc
|
||
3410 .LFE4:
|
||
3412 .section .text.Goertzel,"ax",%progbits
|
||
3413 .align 1
|
||
3414 .p2align 2,,3
|
||
3415 .global Goertzel
|
||
3416 .syntax unified
|
||
3417 .thumb
|
||
3418 .thumb_func
|
||
3419 .fpu fpv4-sp-d16
|
||
3421 Goertzel:
|
||
3422 .LFB5:
|
||
425:Core/Src/FIRFilterCode.c **** int j;
|
||
3423 .loc 1 425 0
|
||
3424 .cfi_startproc
|
||
3425 @ args = 0, pretend = 0, frame = 16
|
||
3426 @ frame_needed = 0, uses_anonymous_args = 0
|
||
3427 .LVL560:
|
||
3428 0000 2DE9F04F push {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
||
3429 .LCFI29:
|
||
3430 .cfi_def_cfa_offset 36
|
||
3431 .cfi_offset 4, -36
|
||
3432 .cfi_offset 5, -32
|
||
3433 .cfi_offset 6, -28
|
||
3434 .cfi_offset 7, -24
|
||
3435 .cfi_offset 8, -20
|
||
3436 .cfi_offset 9, -16
|
||
3437 .cfi_offset 10, -12
|
||
3438 .cfi_offset 11, -8
|
||
3439 .cfi_offset 14, -4
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
3440 .loc 1 431 0
|
||
3441 0004 3AA3 adr r3, .L315+8
|
||
3442 0006 D3E90023 ldrd r2, [r3]
|
||
425:Core/Src/FIRFilterCode.c **** int j;
|
||
3443 .loc 1 425 0
|
||
3444 000a 85B0 sub sp, sp, #20
|
||
3445 .LCFI30:
|
||
3446 .cfi_def_cfa_offset 56
|
||
425:Core/Src/FIRFilterCode.c **** int j;
|
||
3447 .loc 1 425 0
|
||
3448 000c 0D46 mov r5, r1
|
||
3449 000e 0446 mov r4, r0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
ARM GAS /tmp/cclqT4it.s page 74
|
||
|
||
|
||
3450 .loc 1 431 0
|
||
3451 0010 51EC100B vmov r0, r1, d0
|
||
3452 .LVL561:
|
||
3453 0014 FFF7FEFF bl __aeabi_dmul
|
||
3454 .LVL562:
|
||
3455 0018 41EC100B vmov d0, r0, r1
|
||
3456 001c FFF7FEFF bl cos
|
||
3457 .LVL563:
|
||
3458 0020 53EC102B vmov r2, r3, d0
|
||
3459 0024 10EE100A vmov r0, s0 @ int
|
||
3460 0028 1946 mov r1, r3
|
||
3461 002a FFF7FEFF bl __aeabi_dadd
|
||
3462 .LVL564:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3463 .loc 1 432 0
|
||
3464 002e 002D cmp r5, #0
|
||
431:Core/Src/FIRFilterCode.c **** for (j=0; j<N; j++)
|
||
3465 .loc 1 431 0
|
||
3466 0030 CDE90001 strd r0, [sp]
|
||
3467 .LVL565:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3468 .loc 1 432 0
|
||
3469 0034 50DD ble .L313
|
||
429:Core/Src/FIRFilterCode.c ****
|
||
3470 .loc 1 429 0
|
||
3471 0036 0026 movs r6, #0
|
||
3472 0038 0027 movs r7, #0
|
||
3473 003a 04EBC505 add r5, r4, r5, lsl #3
|
||
3474 .LVL566:
|
||
3475 003e B246 mov r10, r6
|
||
3476 0040 BB46 mov fp, r7
|
||
3477 0042 03E0 b .L307
|
||
3478 .LVL567:
|
||
3479 .L310:
|
||
3480 0044 DDE90001 ldrd r0, [sp]
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3481 .loc 1 434 0
|
||
3482 0048 C246 mov r10, r8
|
||
3483 .LVL568:
|
||
3484 004a CB46 mov fp, r9
|
||
3485 .LVL569:
|
||
3486 .L307:
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3487 .loc 1 434 0 is_stmt 0 discriminator 3
|
||
3488 004c 5246 mov r2, r10
|
||
3489 004e 5B46 mov r3, fp
|
||
3490 0050 F4E80289 ldrd r8, [r4], #8
|
||
3491 0054 FFF7FEFF bl __aeabi_dmul
|
||
3492 .LVL570:
|
||
3493 0058 3246 mov r2, r6
|
||
3494 005a 3B46 mov r3, r7
|
||
3495 005c CDE90201 strd r0, [sp, #8]
|
||
3496 0060 FFF7FEFF bl __aeabi_dsub
|
||
3497 .LVL571:
|
||
3498 0064 4246 mov r2, r8
|
||
3499 0066 4B46 mov r3, r9
|
||
3500 0068 FFF7FEFF bl __aeabi_dadd
|
||
ARM GAS /tmp/cclqT4it.s page 75
|
||
|
||
|
||
3501 .LVL572:
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3502 .loc 1 432 0 is_stmt 1 discriminator 3
|
||
3503 006c A542 cmp r5, r4
|
||
434:Core/Src/FIRFilterCode.c **** Reg2 = Reg1; // Shift the values.
|
||
3504 .loc 1 434 0 discriminator 3
|
||
3505 006e 8046 mov r8, r0
|
||
3506 0070 8946 mov r9, r1
|
||
3507 .LVL573:
|
||
3508 0072 5646 mov r6, r10
|
||
3509 0074 5F46 mov r7, fp
|
||
432:Core/Src/FIRFilterCode.c **** {
|
||
3510 .loc 1 432 0 discriminator 3
|
||
3511 0076 E5D1 bne .L310
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
3512 .loc 1 438 0
|
||
3513 0078 5246 mov r2, r10
|
||
3514 007a 5B46 mov r3, fp
|
||
3515 007c 3046 mov r0, r6
|
||
3516 007e 3946 mov r1, r7
|
||
3517 0080 FFF7FEFF bl __aeabi_dmul
|
||
3518 .LVL574:
|
||
3519 0084 4246 mov r2, r8
|
||
3520 0086 0446 mov r4, r0
|
||
3521 0088 0D46 mov r5, r1
|
||
3522 008a 4B46 mov r3, r9
|
||
3523 008c 4046 mov r0, r8
|
||
3524 008e 4946 mov r1, r9
|
||
3525 0090 FFF7FEFF bl __aeabi_dmul
|
||
3526 .LVL575:
|
||
3527 0094 0246 mov r2, r0
|
||
3528 0096 0B46 mov r3, r1
|
||
3529 0098 2046 mov r0, r4
|
||
3530 009a 2946 mov r1, r5
|
||
3531 009c FFF7FEFF bl __aeabi_dadd
|
||
3532 .LVL576:
|
||
3533 00a0 4246 mov r2, r8
|
||
3534 00a2 0446 mov r4, r0
|
||
3535 00a4 0D46 mov r5, r1
|
||
3536 00a6 4B46 mov r3, r9
|
||
3537 00a8 DDE90201 ldrd r0, [sp, #8]
|
||
3538 00ac FFF7FEFF bl __aeabi_dmul
|
||
3539 .LVL577:
|
||
3540 00b0 0246 mov r2, r0
|
||
3541 00b2 0B46 mov r3, r1
|
||
3542 00b4 2046 mov r0, r4
|
||
3543 00b6 2946 mov r1, r5
|
||
3544 00b8 FFF7FEFF bl __aeabi_dsub
|
||
3545 .LVL578:
|
||
3546 .loc 1 440 0
|
||
3547 00bc 0022 movs r2, #0
|
||
3548 00be 0023 movs r3, #0
|
||
438:Core/Src/FIRFilterCode.c ****
|
||
3549 .loc 1 438 0
|
||
3550 00c0 0446 mov r4, r0
|
||
3551 00c2 0D46 mov r5, r1
|
||
3552 .LVL579:
|
||
ARM GAS /tmp/cclqT4it.s page 76
|
||
|
||
|
||
3553 .loc 1 440 0
|
||
3554 00c4 FFF7FEFF bl __aeabi_dcmpgt
|
||
3555 .LVL580:
|
||
3556 00c8 30B1 cbz r0, .L313
|
||
3557 .loc 1 440 0 is_stmt 0 discriminator 1
|
||
3558 00ca 45EC104B vmov d0, r4, r5
|
||
441:Core/Src/FIRFilterCode.c **** else Mag = 1.0E-12;
|
||
442:Core/Src/FIRFilterCode.c ****
|
||
443:Core/Src/FIRFilterCode.c **** return(Mag);
|
||
444:Core/Src/FIRFilterCode.c **** }
|
||
3559 .loc 1 444 0 is_stmt 1 discriminator 1
|
||
3560 00ce 05B0 add sp, sp, #20
|
||
3561 .LCFI31:
|
||
3562 .cfi_remember_state
|
||
3563 .cfi_def_cfa_offset 36
|
||
3564 .LVL581:
|
||
3565 @ sp needed
|
||
3566 00d0 BDE8F04F pop {r4, r5, r6, r7, r8, r9, r10, fp, lr}
|
||
3567 .LCFI32:
|
||
3568 .cfi_restore 14
|
||
3569 .cfi_restore 11
|
||
3570 .cfi_restore 10
|
||
3571 .cfi_restore 9
|
||
3572 .cfi_restore 8
|
||
3573 .cfi_restore 7
|
||
3574 .cfi_restore 6
|
||
3575 .cfi_restore 5
|
||
3576 .cfi_restore 4
|
||
3577 .cfi_def_cfa_offset 0
|
||
3578 .LVL582:
|
||
440:Core/Src/FIRFilterCode.c **** else Mag = 1.0E-12;
|
||
3579 .loc 1 440 0 discriminator 1
|
||
3580 00d4 FFF7FEBF b sqrt
|
||
3581 .LVL583:
|
||
3582 .L313:
|
||
3583 .LCFI33:
|
||
3584 .cfi_restore_state
|
||
441:Core/Src/FIRFilterCode.c **** else Mag = 1.0E-12;
|
||
3585 .loc 1 441 0
|
||
3586 00d8 9FED030B vldr.64 d0, .L315
|
||
3587 .LVL584:
|
||
3588 .loc 1 444 0
|
||
3589 00dc 05B0 add sp, sp, #20
|
||
3590 .LCFI34:
|
||
3591 .cfi_def_cfa_offset 36
|
||
3592 .LVL585:
|
||
3593 @ sp needed
|
||
3594 00de BDE8F08F pop {r4, r5, r6, r7, r8, r9, r10, fp, pc}
|
||
3595 .LVL586:
|
||
3596 .L316:
|
||
3597 00e2 00BFAFF3 .align 3
|
||
3597 0080
|
||
3598 .L315:
|
||
3599 00e8 11EA2D81 .word 2167269905
|
||
3600 00ec 9997713D .word 1030854553
|
||
3601 00f0 182D4454 .word 1413754136
|
||
3602 00f4 FB210940 .word 1074340347
|
||
ARM GAS /tmp/cclqT4it.s page 77
|
||
|
||
|
||
3603 .cfi_endproc
|
||
3604 .LFE5:
|
||
3606 .text
|
||
3607 .Letext0:
|
||
3608 .file 2 "Core/Inc/FIRFilterCode.h"
|
||
3609 .file 3 "/usr/include/newlib/sys/lock.h"
|
||
3610 .file 4 "/usr/include/newlib/sys/_types.h"
|
||
3611 .file 5 "/usr/lib/gcc/arm-none-eabi/7.3.1/include/stddef.h"
|
||
3612 .file 6 "/usr/include/newlib/sys/reent.h"
|
||
3613 .file 7 "/usr/include/newlib/math.h"
|
||
3614 .file 8 "/usr/include/newlib/stdlib.h"
|
||
3615 .file 9 "<built-in>"
|
||
ARM GAS /tmp/cclqT4it.s page 78
|
||
|
||
|
||
DEFINED SYMBOLS
|
||
*ABS*:0000000000000000 FIRFilterCode.c
|
||
/tmp/cclqT4it.s:24 .text.RectWinFIR:0000000000000000 $t
|
||
/tmp/cclqT4it.s:32 .text.RectWinFIR:0000000000000000 RectWinFIR
|
||
/tmp/cclqT4it.s:71 .text.RectWinFIR:000000000000001a $d
|
||
/tmp/cclqT4it.s:76 .text.RectWinFIR:0000000000000024 $t
|
||
/tmp/cclqT4it.s:529 .text.RectWinFIR:0000000000000340 $d
|
||
/tmp/cclqT4it.s:546 .text.RectWinFIR:0000000000000370 $t
|
||
/tmp/cclqT4it.s:914 .text.RectWinFIR:00000000000005a8 $d
|
||
/tmp/cclqT4it.s:928 .text.Sinc:0000000000000000 $t
|
||
/tmp/cclqT4it.s:936 .text.Sinc:0000000000000000 Sinc
|
||
/tmp/cclqT4it.s:991 .text.Sinc:0000000000000048 $d
|
||
/tmp/cclqT4it.s:1001 .text.Bessel:0000000000000000 $t
|
||
/tmp/cclqT4it.s:1009 .text.Bessel:0000000000000000 Bessel
|
||
/tmp/cclqT4it.s:1195 .text.Bessel:0000000000000120 $d
|
||
/tmp/cclqT4it.s:1217 .text.FIRFilterWindow:0000000000000000 $t
|
||
/tmp/cclqT4it.s:1225 .text.FIRFilterWindow:0000000000000000 FIRFilterWindow
|
||
/tmp/cclqT4it.s:1785 .text.FIRFilterWindow:0000000000000368 $d
|
||
/tmp/cclqT4it.s:1800 .text.FIRFilterWindow:000000000000039c $t
|
||
/tmp/cclqT4it.s:2037 .text.FIRFilterWindow:00000000000004f8 $d
|
||
/tmp/cclqT4it.s:2060 .text.FIRFreqError:0000000000000000 $t
|
||
/tmp/cclqT4it.s:2068 .text.FIRFreqError:0000000000000000 FIRFreqError
|
||
/tmp/cclqT4it.s:2396 .text.FIRFreqError:0000000000000200 $d
|
||
/tmp/cclqT4it.s:2412 .text.FIRFreqError:0000000000000238 $t
|
||
/tmp/cclqT4it.s:3389 .text.FIRFreqError:0000000000000890 $d
|
||
/tmp/cclqT4it.s:3413 .text.Goertzel:0000000000000000 $t
|
||
/tmp/cclqT4it.s:3421 .text.Goertzel:0000000000000000 Goertzel
|
||
/tmp/cclqT4it.s:3599 .text.Goertzel:00000000000000e8 $d
|
||
|
||
UNDEFINED SYMBOLS
|
||
__aeabi_i2d
|
||
__aeabi_dmul
|
||
__aeabi_dsub
|
||
__aeabi_dcmpgt
|
||
__aeabi_dcmplt
|
||
__aeabi_ddiv
|
||
__aeabi_dcmpeq
|
||
__aeabi_dadd
|
||
memset
|
||
sin
|
||
cos
|
||
pow
|
||
__aeabi_dcmple
|
||
__aeabi_dcmpge
|
||
malloc
|
||
free
|
||
sqrt
|
||
__aeabi_d2iz
|