ARM GAS /tmp/ccGt6Pje.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 1 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "squeow.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Src/squeow.c" 20 .section .text.audio_play,"ax",%progbits 21 .align 1 22 .global audio_play 23 .syntax unified 24 .thumb 25 .thumb_func 27 audio_play: 28 .LVL0: 29 .LFB332: 1:Src/squeow.c **** #include 2:Src/squeow.c **** #include 3:Src/squeow.c **** #include 4:Src/squeow.c **** #include 5:Src/squeow.c **** 6:Src/squeow.c **** #include "squeow.h" 7:Src/squeow.c **** 8:Src/squeow.c **** /* SQUEOW 9:Src/squeow.c **** 10:Src/squeow.c **** TIM3 eventi 98304000/(49152×200) 10hz 11:Src/squeow.c **** TIM2 PWM 98304000/2048 48khz 12:Src/squeow.c **** 13:Src/squeow.c **** risoluzione PWM 4*2048 -> 8192 (13bit) 14:Src/squeow.c **** 15:Src/squeow.c **** */ 16:Src/squeow.c **** 17:Src/squeow.c **** uint8_t stato_audio; 18:Src/squeow.c **** uint16_t pwm_value, sample_value; 19:Src/squeow.c **** char display_buffer[16]; 20:Src/squeow.c **** uint8_t rails_number; 21:Src/squeow.c **** uint16_t samples_ringbuf[SAMPLES_BUFFER_SIZE]; ///< buffer ad anello dei dati RX 22:Src/squeow.c **** uint16_t samples_ringbuf_input_index, samples_ringbuf_output_index; 23:Src/squeow.c **** 24:Src/squeow.c **** 25:Src/squeow.c **** void audio_play(uint16_t pbuf, uint8_t size){ 30 .loc 1 25 45 view -0 31 .cfi_startproc 32 @ args = 0, pretend = 0, frame = 0 33 @ frame_needed = 0, uses_anonymous_args = 0 ARM GAS /tmp/ccGt6Pje.s page 2 34 @ link register save eliminated. 26:Src/squeow.c **** /* 27:Src/squeow.c **** char display_buffer[16]; 28:Src/squeow.c **** uint16_t static indice; 29:Src/squeow.c **** indice++; 30:Src/squeow.c **** snprintf(display_buffer, 10, "n %d", indice); 31:Src/squeow.c **** ssd1306_SetCursor(0, 1); 32:Src/squeow.c **** ssd1306_WriteString(display_buffer, Font_11x18, White); 33:Src/squeow.c **** // ssd1306_UpdateScreen(&hi2c1); 34:Src/squeow.c **** */ 35:Src/squeow.c **** for (uint8_t i=0; i= 6.28) angle = 0; 135 .loc 1 50 10 is_stmt 1 view .LVU24 136 .loc 1 50 12 is_stmt 0 view .LVU25 137 001a 11A3 adr r3, .L10+8 138 001c D3E90023 ldrd r2, [r3] 139 0020 FFF7FEFF bl __aeabi_dcmpge 140 .LVL11: 141 0024 18B1 cbz r0, .L6 142 .loc 1 50 28 is_stmt 1 discriminator 1 view .LVU26 143 .loc 1 50 34 is_stmt 0 discriminator 1 view .LVU27 144 0026 0020 movs r0, #0 145 0028 0021 movs r1, #0 146 002a C4E90001 strd r0, [r4] 147 .L6: 51:Src/squeow.c **** return (uint16_t)((sin(angle)*0x7fff)+0x7fff); 148 .loc 1 51 9 is_stmt 1 view .LVU28 149 .loc 1 51 28 is_stmt 0 view .LVU29 150 002e 104B ldr r3, .L10+24 151 0030 93ED000B vldr.64 d0, [r3] 152 0034 FFF7FEFF bl sin 153 .LVL12: 154 0038 51EC100B vmov r0, r1, d0 155 .loc 1 51 38 view .LVU30 156 003c 0AA3 adr r3, .L10+16 157 003e D3E90023 ldrd r2, [r3] 158 0042 FFF7FEFF bl __aeabi_dmul 159 .LVL13: 160 .loc 1 51 46 view .LVU31 161 0046 08A3 adr r3, .L10+16 162 0048 D3E90023 ldrd r2, [r3] 163 004c FFF7FEFF bl __aeabi_dadd 164 .LVL14: 165 .loc 1 51 16 view .LVU32 166 0050 FFF7FEFF bl __aeabi_d2uiz 167 .LVL15: 52:Src/squeow.c **** } 168 .loc 1 52 1 view .LVU33 169 0054 80B2 uxth r0, r0 170 0056 10BD pop {r4, pc} 171 .L11: 172 .align 3 173 .L10: 174 0058 7F6ABC74 .word 1958505087 175 005c 9318D43F .word 1070864531 176 0060 1F85EB51 .word 1374389535 177 0064 B81E1940 .word 1075388088 178 0068 00000000 .word 0 ARM GAS /tmp/ccGt6Pje.s page 5 179 006c C0FFDF40 .word 1088421824 180 0070 00000000 .word angle.1 181 .cfi_endproc 182 .LFE334: 184 .section .text.u12_sine,"ax",%progbits 185 .align 1 186 .global u12_sine 187 .syntax unified 188 .thumb 189 .thumb_func 191 u12_sine: 192 .LFB335: 53:Src/squeow.c **** 54:Src/squeow.c **** uint16_t u12_sine(void){ 193 .loc 1 54 24 is_stmt 1 view -0 194 .cfi_startproc 195 @ args = 0, pretend = 0, frame = 0 196 @ frame_needed = 0, uses_anonymous_args = 0 197 0000 10B5 push {r4, lr} 198 .LCFI1: 199 .cfi_def_cfa_offset 8 200 .cfi_offset 4, -8 201 .cfi_offset 14, -4 55:Src/squeow.c **** static double angle; 202 .loc 1 55 9 view .LVU35 56:Src/squeow.c **** angle += SINE_INCREMENT; 203 .loc 1 56 9 view .LVU36 204 .loc 1 56 15 is_stmt 0 view .LVU37 205 0002 1B4C ldr r4, .L17+24 206 0004 14A3 adr r3, .L17 207 0006 D3E90023 ldrd r2, [r3] 208 000a D4E90001 ldrd r0, [r4] 209 000e FFF7FEFF bl __aeabi_dadd 210 .LVL16: 211 0012 0246 mov r2, r0 212 0014 0B46 mov r3, r1 213 0016 C4E90023 strd r2, [r4] 57:Src/squeow.c **** if(angle >= 6.28) angle = 0; 214 .loc 1 57 10 is_stmt 1 view .LVU38 215 .loc 1 57 12 is_stmt 0 view .LVU39 216 001a 11A3 adr r3, .L17+8 217 001c D3E90023 ldrd r2, [r3] 218 0020 FFF7FEFF bl __aeabi_dcmpge 219 .LVL17: 220 0024 18B1 cbz r0, .L13 221 .loc 1 57 28 is_stmt 1 discriminator 1 view .LVU40 222 .loc 1 57 34 is_stmt 0 discriminator 1 view .LVU41 223 0026 0020 movs r0, #0 224 0028 0021 movs r1, #0 225 002a C4E90001 strd r0, [r4] 226 .L13: 58:Src/squeow.c **** return (uint16_t)((sin(angle)*0x7ff)+0x7ff); 227 .loc 1 58 9 is_stmt 1 view .LVU42 228 .loc 1 58 28 is_stmt 0 view .LVU43 229 002e 104B ldr r3, .L17+24 230 0030 93ED000B vldr.64 d0, [r3] 231 0034 FFF7FEFF bl sin ARM GAS /tmp/ccGt6Pje.s page 6 232 .LVL18: 233 0038 51EC100B vmov r0, r1, d0 234 .loc 1 58 38 view .LVU44 235 003c 0AA3 adr r3, .L17+16 236 003e D3E90023 ldrd r2, [r3] 237 0042 FFF7FEFF bl __aeabi_dmul 238 .LVL19: 239 .loc 1 58 45 view .LVU45 240 0046 08A3 adr r3, .L17+16 241 0048 D3E90023 ldrd r2, [r3] 242 004c FFF7FEFF bl __aeabi_dadd 243 .LVL20: 244 .loc 1 58 16 view .LVU46 245 0050 FFF7FEFF bl __aeabi_d2uiz 246 .LVL21: 59:Src/squeow.c **** } 247 .loc 1 59 1 view .LVU47 248 0054 80B2 uxth r0, r0 249 0056 10BD pop {r4, pc} 250 .L18: 251 .align 3 252 .L17: 253 0058 7F6ABC74 .word 1958505087 254 005c 9318D43F .word 1070864531 255 0060 1F85EB51 .word 1374389535 256 0064 B81E1940 .word 1075388088 257 0068 00000000 .word 0 258 006c 00FC9F40 .word 1084226560 259 0070 00000000 .word angle.0 260 .cfi_endproc 261 .LFE335: 263 .section .text.sample,"ax",%progbits 264 .align 1 265 .global sample 266 .syntax unified 267 .thumb 268 .thumb_func 270 sample: 271 .LFB336: 60:Src/squeow.c **** 61:Src/squeow.c **** uint16_t sample(void){ 272 .loc 1 61 22 is_stmt 1 view -0 273 .cfi_startproc 274 @ args = 0, pretend = 0, frame = 0 275 @ frame_needed = 0, uses_anonymous_args = 0 276 @ link register save eliminated. 62:Src/squeow.c **** /* 63:Src/squeow.c **** stato_audio == STATO_AUDIO_ADC; 64:Src/squeow.c **** HAL_ADC_Start(&hadc1); 65:Src/squeow.c **** if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK){ 66:Src/squeow.c **** // store_sample(HAL_ADC_GetValue(&hadc1) << 4); 67:Src/squeow.c **** sample_value = HAL_ADC_GetValue(&hadc1); 68:Src/squeow.c **** } 69:Src/squeow.c **** HAL_ADC_Stop(&hadc1); 70:Src/squeow.c **** */ 71:Src/squeow.c **** } 277 .loc 1 71 1 view .LVU49 ARM GAS /tmp/ccGt6Pje.s page 7 278 0000 7047 bx lr 279 .cfi_endproc 280 .LFE336: 282 .section .text.store_sample,"ax",%progbits 283 .align 1 284 .global store_sample 285 .syntax unified 286 .thumb 287 .thumb_func 289 store_sample: 290 .LVL22: 291 .LFB338: 72:Src/squeow.c **** 73:Src/squeow.c **** void store_samples(uint16_t *data, uint16_t size){ 74:Src/squeow.c **** for(uint16_t i = 0; i < size; ++i) { 75:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 76:Src/squeow.c **** store_sample(data[i]); 77:Src/squeow.c **** } 78:Src/squeow.c **** } 79:Src/squeow.c **** 80:Src/squeow.c **** void store_sample(uint16_t sample){ 292 .loc 1 80 35 view -0 293 .cfi_startproc 294 @ args = 0, pretend = 0, frame = 0 295 @ frame_needed = 0, uses_anonymous_args = 0 296 .loc 1 80 35 is_stmt 0 view .LVU51 297 0000 08B5 push {r3, lr} 298 .LCFI2: 299 .cfi_def_cfa_offset 8 300 .cfi_offset 3, -8 301 .cfi_offset 14, -4 81:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = sample; 302 .loc 1 81 17 is_stmt 1 view .LVU52 303 .loc 1 81 32 is_stmt 0 view .LVU53 304 0002 054B ldr r3, .L22 305 0004 1988 ldrh r1, [r3] 306 .loc 1 81 62 view .LVU54 307 0006 054A ldr r2, .L22+4 308 0008 22F81100 strh r0, [r2, r1, lsl #1] @ movhi 82:Src/squeow.c **** ringbuf_increment(&samples_ringbuf_input_index, SAMPLES_BUFFER_SIZE_MASK); 309 .loc 1 82 17 is_stmt 1 view .LVU55 310 000c 40F2FF31 movw r1, #1023 311 0010 1846 mov r0, r3 312 .LVL23: 313 .loc 1 82 17 is_stmt 0 view .LVU56 314 0012 FFF7FEFF bl ringbuf_increment 315 .LVL24: 83:Src/squeow.c **** } 316 .loc 1 83 1 view .LVU57 317 0016 08BD pop {r3, pc} 318 .L23: 319 .align 2 320 .L22: 321 0018 00000000 .word samples_ringbuf_input_index 322 001c 00000000 .word samples_ringbuf 323 .cfi_endproc 324 .LFE338: ARM GAS /tmp/ccGt6Pje.s page 8 326 .section .text.store_samples,"ax",%progbits 327 .align 1 328 .global store_samples 329 .syntax unified 330 .thumb 331 .thumb_func 333 store_samples: 334 .LVL25: 335 .LFB337: 73:Src/squeow.c **** for(uint16_t i = 0; i < size; ++i) { 336 .loc 1 73 50 is_stmt 1 view -0 337 .cfi_startproc 338 @ args = 0, pretend = 0, frame = 0 339 @ frame_needed = 0, uses_anonymous_args = 0 73:Src/squeow.c **** for(uint16_t i = 0; i < size; ++i) { 340 .loc 1 73 50 is_stmt 0 view .LVU59 341 0000 70B5 push {r4, r5, r6, lr} 342 .LCFI3: 343 .cfi_def_cfa_offset 16 344 .cfi_offset 4, -16 345 .cfi_offset 5, -12 346 .cfi_offset 6, -8 347 .cfi_offset 14, -4 348 0002 0646 mov r6, r0 349 0004 0D46 mov r5, r1 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 350 .loc 1 74 9 is_stmt 1 view .LVU60 351 .LBB3: 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 352 .loc 1 74 13 view .LVU61 353 .LVL26: 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 354 .loc 1 74 22 is_stmt 0 view .LVU62 355 0006 0024 movs r4, #0 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 356 .loc 1 74 9 view .LVU63 357 0008 0AE0 b .L25 358 .LVL27: 359 .L26: 75:Src/squeow.c **** store_sample(data[i]); 360 .loc 1 75 15 is_stmt 1 discriminator 3 view .LVU64 75:Src/squeow.c **** store_sample(data[i]); 361 .loc 1 75 30 is_stmt 0 discriminator 3 view .LVU65 362 000a 074B ldr r3, .L28 363 000c 1A88 ldrh r2, [r3] 75:Src/squeow.c **** store_sample(data[i]); 364 .loc 1 75 66 discriminator 3 view .LVU66 365 000e 36F81400 ldrh r0, [r6, r4, lsl #1] 75:Src/squeow.c **** store_sample(data[i]); 366 .loc 1 75 60 discriminator 3 view .LVU67 367 0012 064B ldr r3, .L28+4 368 0014 23F81200 strh r0, [r3, r2, lsl #1] @ movhi 76:Src/squeow.c **** } 369 .loc 1 76 17 is_stmt 1 discriminator 3 view .LVU68 370 0018 FFF7FEFF bl store_sample 371 .LVL28: 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; ARM GAS /tmp/ccGt6Pje.s page 9 372 .loc 1 74 39 discriminator 3 view .LVU69 373 001c 0134 adds r4, r4, #1 374 .LVL29: 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 375 .loc 1 74 39 is_stmt 0 discriminator 3 view .LVU70 376 001e A4B2 uxth r4, r4 377 .LVL30: 378 .L25: 74:Src/squeow.c **** samples_ringbuf[samples_ringbuf_input_index] = data[i]; 379 .loc 1 74 31 is_stmt 1 discriminator 1 view .LVU71 380 0020 AC42 cmp r4, r5 381 0022 F2D3 bcc .L26 382 .LBE3: 78:Src/squeow.c **** 383 .loc 1 78 1 is_stmt 0 view .LVU72 384 0024 70BD pop {r4, r5, r6, pc} 385 .LVL31: 386 .L29: 78:Src/squeow.c **** 387 .loc 1 78 1 view .LVU73 388 0026 00BF .align 2 389 .L28: 390 0028 00000000 .word samples_ringbuf_input_index 391 002c 00000000 .word samples_ringbuf 392 .cfi_endproc 393 .LFE337: 395 .section .bss.angle.0,"aw",%nobits 396 .align 3 399 angle.0: 400 0000 00000000 .space 8 400 00000000 401 .section .bss.angle.1,"aw",%nobits 402 .align 3 405 angle.1: 406 0000 00000000 .space 8 406 00000000 407 .global samples_ringbuf_output_index 408 .section .bss.samples_ringbuf_output_index,"aw",%nobits 409 .align 1 412 samples_ringbuf_output_index: 413 0000 0000 .space 2 414 .global samples_ringbuf_input_index 415 .section .bss.samples_ringbuf_input_index,"aw",%nobits 416 .align 1 419 samples_ringbuf_input_index: 420 0000 0000 .space 2 421 .global samples_ringbuf 422 .section .bss.samples_ringbuf,"aw",%nobits 423 .align 2 426 samples_ringbuf: 427 0000 00000000 .space 2048 427 00000000 427 00000000 427 00000000 427 00000000 428 .global rails_number 429 .section .bss.rails_number,"aw",%nobits ARM GAS /tmp/ccGt6Pje.s page 10 432 rails_number: 433 0000 00 .space 1 434 .global display_buffer 435 .section .bss.display_buffer,"aw",%nobits 436 .align 2 439 display_buffer: 440 0000 00000000 .space 16 440 00000000 440 00000000 440 00000000 441 .global sample_value 442 .section .bss.sample_value,"aw",%nobits 443 .align 1 446 sample_value: 447 0000 0000 .space 2 448 .global pwm_value 449 .section .bss.pwm_value,"aw",%nobits 450 .align 1 453 pwm_value: 454 0000 0000 .space 2 455 .global stato_audio 456 .section .bss.stato_audio,"aw",%nobits 459 stato_audio: 460 0000 00 .space 1 461 .text 462 .Letext0: 463 .file 2 "/usr/lib/gcc/arm-none-eabi/12.2.1/include/stdint.h" 464 .file 3 "Inc/squeow.h" 465 .file 4 "/usr/include/newlib/math.h" ARM GAS /tmp/ccGt6Pje.s page 11 DEFINED SYMBOLS *ABS*:00000000 squeow.c /tmp/ccGt6Pje.s:21 .text.audio_play:00000000 $t /tmp/ccGt6Pje.s:27 .text.audio_play:00000000 audio_play /tmp/ccGt6Pje.s:62 .text.sat_sub:00000000 $t /tmp/ccGt6Pje.s:68 .text.sat_sub:00000000 sat_sub /tmp/ccGt6Pje.s:106 .text.u16_sine:00000000 $t /tmp/ccGt6Pje.s:112 .text.u16_sine:00000000 u16_sine /tmp/ccGt6Pje.s:174 .text.u16_sine:00000058 $d /tmp/ccGt6Pje.s:405 .bss.angle.1:00000000 angle.1 /tmp/ccGt6Pje.s:185 .text.u12_sine:00000000 $t /tmp/ccGt6Pje.s:191 .text.u12_sine:00000000 u12_sine /tmp/ccGt6Pje.s:253 .text.u12_sine:00000058 $d /tmp/ccGt6Pje.s:399 .bss.angle.0:00000000 angle.0 /tmp/ccGt6Pje.s:264 .text.sample:00000000 $t /tmp/ccGt6Pje.s:270 .text.sample:00000000 sample /tmp/ccGt6Pje.s:283 .text.store_sample:00000000 $t /tmp/ccGt6Pje.s:289 .text.store_sample:00000000 store_sample /tmp/ccGt6Pje.s:321 .text.store_sample:00000018 $d /tmp/ccGt6Pje.s:419 .bss.samples_ringbuf_input_index:00000000 samples_ringbuf_input_index /tmp/ccGt6Pje.s:426 .bss.samples_ringbuf:00000000 samples_ringbuf /tmp/ccGt6Pje.s:327 .text.store_samples:00000000 $t /tmp/ccGt6Pje.s:333 .text.store_samples:00000000 store_samples /tmp/ccGt6Pje.s:390 .text.store_samples:00000028 $d /tmp/ccGt6Pje.s:396 .bss.angle.0:00000000 $d /tmp/ccGt6Pje.s:402 .bss.angle.1:00000000 $d /tmp/ccGt6Pje.s:412 .bss.samples_ringbuf_output_index:00000000 samples_ringbuf_output_index /tmp/ccGt6Pje.s:409 .bss.samples_ringbuf_output_index:00000000 $d /tmp/ccGt6Pje.s:416 .bss.samples_ringbuf_input_index:00000000 $d /tmp/ccGt6Pje.s:423 .bss.samples_ringbuf:00000000 $d /tmp/ccGt6Pje.s:432 .bss.rails_number:00000000 rails_number /tmp/ccGt6Pje.s:433 .bss.rails_number:00000000 $d /tmp/ccGt6Pje.s:439 .bss.display_buffer:00000000 display_buffer /tmp/ccGt6Pje.s:436 .bss.display_buffer:00000000 $d /tmp/ccGt6Pje.s:446 .bss.sample_value:00000000 sample_value /tmp/ccGt6Pje.s:443 .bss.sample_value:00000000 $d /tmp/ccGt6Pje.s:453 .bss.pwm_value:00000000 pwm_value /tmp/ccGt6Pje.s:450 .bss.pwm_value:00000000 $d /tmp/ccGt6Pje.s:459 .bss.stato_audio:00000000 stato_audio /tmp/ccGt6Pje.s:460 .bss.stato_audio:00000000 $d UNDEFINED SYMBOLS __aeabi_dadd __aeabi_dcmpge __aeabi_dmul __aeabi_d2uiz sin ringbuf_increment