diff --git a/build/final.elf b/build/final.elf index b09d646..40a2191 100755 Binary files a/build/final.elf and b/build/final.elf differ diff --git a/build/final.elf.map b/build/final.elf.map index 6d411a5..8e44d1b 100644 --- a/build/final.elf.map +++ b/build/final.elf.map @@ -33,6 +33,8 @@ Discarded input sections .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o .group 0x00000000 0xc build/main.o + .group 0x00000000 0xc build/main.o + .group 0x00000000 0xc build/main.o .text 0x00000000 0x0 build/main.o .data 0x00000000 0x0 build/main.o .bss 0x00000000 0x0 build/main.o @@ -86,7 +88,7 @@ LOAD build/startup.o 0x08000000 interrupt_vector_table 0x08000198 . = ALIGN (0x4) -.text 0x08000198 0x1a8 +.text 0x08000198 0x2f4 0x08000198 . = ALIGN (0x4) *(.text) *(.text.*) @@ -96,108 +98,112 @@ LOAD build/startup.o .text.gpio_write 0x080001fa 0x4c build/gpio.o 0x080001fa gpio_write - .text.spin 0x08000246 0x22 build/main.o - .text.main 0x08000268 0x5c build/main.o - 0x08000268 main + *fill* 0x08000246 0x2 + .text.system_clock_init + 0x08000248 0x144 build/main.o + .text.spin 0x0800038c 0x22 build/main.o + *fill* 0x080003ae 0x2 + .text.main 0x080003b0 0x60 build/main.o + 0x080003b0 main .text.init_memory - 0x080002c4 0x64 build/startup.o - 0x080002c4 init_memory - .text.reset 0x08000328 0x10 build/startup.o - 0x08000328 reset + 0x08000410 0x64 build/startup.o + 0x08000410 init_memory + .text.reset 0x08000474 0x10 build/startup.o + 0x08000474 reset .text.default_handler - 0x08000338 0x8 build/startup.o - 0x08000338 exti0 - 0x08000338 debug_monitor - 0x08000338 rcc - 0x08000338 x - 0x08000338 sdio - 0x08000338 usage_fault - 0x08000338 tim1_up_tim10 - 0x08000338 usart1 - 0x08000338 i2c3_er - 0x08000338 spi2 - 0x08000338 dma1_stream1 - 0x08000338 bus_fault - 0x08000338 spi5 - 0x08000338 exti3 - 0x08000338 dma2_stream5 - 0x08000338 tim2 - 0x08000338 dma1_stream6 - 0x08000338 default_handler - 0x08000338 i2c1_er - 0x08000338 hard_fault - 0x08000338 usart6 - 0x08000338 exti15_10 - 0x08000338 usart2 - 0x08000338 pend_sv - 0x08000338 i2c1_ev - 0x08000338 wwdg - 0x08000338 adc - 0x08000338 rtc_alarm - 0x08000338 spi3 - 0x08000338 exti1 - 0x08000338 mem_manage - 0x08000338 dma2_stream1 - 0x08000338 dma1_stream2 - 0x08000338 dma2_stream3 - 0x08000338 sv_call - 0x08000338 tim3 - 0x08000338 otg_fs - 0x08000338 dma1_stream5 - 0x08000338 dma2_stream6 - 0x08000338 flash - 0x08000338 tamp_stamp - 0x08000338 i2c3_ev - 0x08000338 rtc_wkup - 0x08000338 dma2_stream0 - 0x08000338 pvd - 0x08000338 fpu - 0x08000338 exti4 - 0x08000338 exti2 - 0x08000338 spi1 - 0x08000338 dma1_stream0 - 0x08000338 tim1_brk_tim9 - 0x08000338 i2c2_ev - 0x08000338 otg_fs_wkup - 0x08000338 spi4 - 0x08000338 dma2_stream2 - 0x08000338 tim1_cc - 0x08000338 tim1_trg_com_tim11 - 0x08000338 exti9_5 - 0x08000338 dma1_stream3 - 0x08000338 dma2_stream4 - 0x08000338 i2c2_er - 0x08000338 dma2_stream7 - 0x08000338 dma1_stream7 - 0x08000338 nmi - 0x08000338 systick - 0x08000338 tim4 - 0x08000338 tim5 - 0x08000338 dma1_stream4 + 0x08000484 0x8 build/startup.o + 0x08000484 exti0 + 0x08000484 debug_monitor + 0x08000484 rcc + 0x08000484 x + 0x08000484 sdio + 0x08000484 usage_fault + 0x08000484 tim1_up_tim10 + 0x08000484 usart1 + 0x08000484 i2c3_er + 0x08000484 spi2 + 0x08000484 dma1_stream1 + 0x08000484 bus_fault + 0x08000484 spi5 + 0x08000484 exti3 + 0x08000484 dma2_stream5 + 0x08000484 tim2 + 0x08000484 dma1_stream6 + 0x08000484 default_handler + 0x08000484 i2c1_er + 0x08000484 hard_fault + 0x08000484 usart6 + 0x08000484 exti15_10 + 0x08000484 usart2 + 0x08000484 pend_sv + 0x08000484 i2c1_ev + 0x08000484 wwdg + 0x08000484 adc + 0x08000484 rtc_alarm + 0x08000484 spi3 + 0x08000484 exti1 + 0x08000484 mem_manage + 0x08000484 dma2_stream1 + 0x08000484 dma1_stream2 + 0x08000484 dma2_stream3 + 0x08000484 sv_call + 0x08000484 tim3 + 0x08000484 otg_fs + 0x08000484 dma1_stream5 + 0x08000484 dma2_stream6 + 0x08000484 flash + 0x08000484 tamp_stamp + 0x08000484 i2c3_ev + 0x08000484 rtc_wkup + 0x08000484 dma2_stream0 + 0x08000484 pvd + 0x08000484 fpu + 0x08000484 exti4 + 0x08000484 exti2 + 0x08000484 spi1 + 0x08000484 dma1_stream0 + 0x08000484 tim1_brk_tim9 + 0x08000484 i2c2_ev + 0x08000484 otg_fs_wkup + 0x08000484 spi4 + 0x08000484 dma2_stream2 + 0x08000484 tim1_cc + 0x08000484 tim1_trg_com_tim11 + 0x08000484 exti9_5 + 0x08000484 dma1_stream3 + 0x08000484 dma2_stream4 + 0x08000484 i2c2_er + 0x08000484 dma2_stream7 + 0x08000484 dma1_stream7 + 0x08000484 nmi + 0x08000484 systick + 0x08000484 tim4 + 0x08000484 tim5 + 0x08000484 dma1_stream4 *(.rodata) *(.rodata.*) - 0x08000340 . = ALIGN (0x4) - 0x08000340 _data_addr = LOADADDR (.data) + 0x0800048c . = ALIGN (0x4) + 0x0800048c _data_addr = LOADADDR (.data) -.glue_7 0x08000340 0x0 - .glue_7 0x08000340 0x0 linker stubs +.glue_7 0x0800048c 0x0 + .glue_7 0x0800048c 0x0 linker stubs -.glue_7t 0x08000340 0x0 - .glue_7t 0x08000340 0x0 linker stubs +.glue_7t 0x0800048c 0x0 + .glue_7t 0x0800048c 0x0 linker stubs -.vfp11_veneer 0x08000340 0x0 - .vfp11_veneer 0x08000340 0x0 linker stubs +.vfp11_veneer 0x0800048c 0x0 + .vfp11_veneer 0x0800048c 0x0 linker stubs -.v4_bx 0x08000340 0x0 - .v4_bx 0x08000340 0x0 linker stubs +.v4_bx 0x0800048c 0x0 + .v4_bx 0x0800048c 0x0 linker stubs -.iplt 0x08000340 0x0 - .iplt 0x08000340 0x0 build/main.o +.iplt 0x0800048c 0x0 + .iplt 0x0800048c 0x0 build/main.o -.rel.dyn 0x08000340 0x0 - .rel.iplt 0x08000340 0x0 build/main.o +.rel.dyn 0x0800048c 0x0 + .rel.iplt 0x0800048c 0x0 build/main.o -.data 0x20000000 0x0 load address 0x08000340 +.data 0x20000000 0x0 load address 0x0800048c 0x20000000 . = ALIGN (0x4) 0x20000000 _data_start = . *(.data) @@ -205,10 +211,10 @@ LOAD build/startup.o 0x20000000 . = ALIGN (0x4) 0x20000000 _data_end = . -.igot.plt 0x20000000 0x0 load address 0x08000340 +.igot.plt 0x20000000 0x0 load address 0x0800048c .igot.plt 0x20000000 0x0 build/main.o -.bss 0x20000000 0x0 load address 0x08000340 +.bss 0x20000000 0x0 load address 0x0800048c 0x20000000 . = ALIGN (0x4) 0x20000000 _bss_start = . *(.bss) @@ -218,34 +224,34 @@ LOAD build/startup.o OUTPUT(build/final.elf elf32-littlearm) LOAD linker stubs -.debug_info 0x00000000 0x64e +.debug_info 0x00000000 0x6f5 .debug_info 0x00000000 0x21a build/gpio.o - .debug_info 0x0000021a 0x2ac build/main.o - .debug_info 0x000004c6 0x188 build/startup.o + .debug_info 0x0000021a 0x353 build/main.o + .debug_info 0x0000056d 0x188 build/startup.o -.debug_abbrev 0x00000000 0x36d +.debug_abbrev 0x00000000 0x397 .debug_abbrev 0x00000000 0x12b build/gpio.o - .debug_abbrev 0x0000012b 0x11b build/main.o - .debug_abbrev 0x00000246 0x127 build/startup.o + .debug_abbrev 0x0000012b 0x145 build/main.o + .debug_abbrev 0x00000270 0x127 build/startup.o -.debug_aranges 0x00000000 0x80 +.debug_aranges 0x00000000 0x88 .debug_aranges 0x00000000 0x28 build/gpio.o .debug_aranges - 0x00000028 0x28 build/main.o + 0x00000028 0x30 build/main.o .debug_aranges - 0x00000050 0x30 build/startup.o + 0x00000058 0x30 build/startup.o .debug_rnglists - 0x00000000 0x51 + 0x00000000 0x58 .debug_rnglists 0x00000000 0x19 build/gpio.o .debug_rnglists - 0x00000019 0x19 build/main.o + 0x00000019 0x20 build/main.o .debug_rnglists - 0x00000032 0x1f build/startup.o + 0x00000039 0x1f build/startup.o -.debug_macro 0x00000000 0x2e91 +.debug_macro 0x00000000 0x2f1d .debug_macro 0x00000000 0xb56 build/gpio.o .debug_macro 0x00000b56 0x22 build/gpio.o .debug_macro 0x00000b78 0x75 build/gpio.o @@ -261,24 +267,26 @@ LOAD linker stubs .debug_macro 0x00001115 0x4cc build/gpio.o .debug_macro 0x000015e1 0x22 build/gpio.o .debug_macro 0x00001603 0x34 build/gpio.o - .debug_macro 0x00001637 0xb6b build/main.o - .debug_macro 0x000021a2 0x118 build/main.o - .debug_macro 0x000022ba 0x2e build/main.o - .debug_macro 0x000022e8 0xb02 build/startup.o - .debug_macro 0x00002dea 0x56 build/startup.o - .debug_macro 0x00002e40 0x51 build/startup.o + .debug_macro 0x00001637 0xb7d build/main.o + .debug_macro 0x000021b4 0x11e build/main.o + .debug_macro 0x000022d2 0x2e build/main.o + .debug_macro 0x00002300 0x46 build/main.o + .debug_macro 0x00002346 0x2e build/main.o + .debug_macro 0x00002374 0xb02 build/startup.o + .debug_macro 0x00002e76 0x56 build/startup.o + .debug_macro 0x00002ecc 0x51 build/startup.o -.debug_line 0x00000000 0x2fe +.debug_line 0x00000000 0x3ee .debug_line 0x00000000 0x116 build/gpio.o - .debug_line 0x00000116 0xfe build/main.o - .debug_line 0x00000214 0xea build/startup.o + .debug_line 0x00000116 0x1ee build/main.o + .debug_line 0x00000304 0xea build/startup.o -.debug_str 0x00000000 0x5ada +.debug_str 0x00000000 0x5d86 .debug_str 0x00000000 0x5372 build/gpio.o 0x551a (size before relaxing) - .debug_str 0x00005372 0x6e0 build/main.o - 0x5ba5 (size before relaxing) - .debug_str 0x00005a52 0x88 build/startup.o + .debug_str 0x00005372 0x98c build/main.o + 0x5e56 (size before relaxing) + .debug_str 0x00005cfe 0x88 build/startup.o 0x3cdf (size before relaxing) .comment 0x00000000 0x45 @@ -297,18 +305,18 @@ LOAD linker stubs 0x00000068 0x34 build/startup.o .debug_line_str - 0x00000000 0x265 + 0x00000000 0x273 .debug_line_str 0x00000000 0x24e build/gpio.o 0x260 (size before relaxing) .debug_line_str - 0x0000024e 0xd build/main.o - 0x266 (size before relaxing) + 0x0000024e 0x1b build/main.o + 0x274 (size before relaxing) .debug_line_str - 0x0000025b 0xa build/startup.o + 0x00000269 0xa build/startup.o 0x21b (size before relaxing) -.debug_frame 0x00000000 0x124 +.debug_frame 0x00000000 0x144 .debug_frame 0x00000000 0x60 build/gpio.o - .debug_frame 0x00000060 0x58 build/main.o - .debug_frame 0x000000b8 0x6c build/startup.o + .debug_frame 0x00000060 0x78 build/main.o + .debug_frame 0x000000d8 0x6c build/startup.o diff --git a/build/main.S b/build/main.S index 4a25ba7..6c86b0f 100644 --- a/build/main.S +++ b/build/main.S @@ -17,6 +17,225 @@ .Ltext0: .cfi_sections .debug_frame .file 1 "src/main.c" + .section .text.system_clock_init,"ax",%progbits + .align 1 + .syntax unified + .thumb + .thumb_func + .type system_clock_init, %function +system_clock_init: +.LFB0: + .loc 1 9 37 + .cfi_startproc + @ args = 0, pretend = 0, frame = 0 + @ frame_needed = 1, uses_anonymous_args = 0 + @ link register save eliminated. + push {r7} + .cfi_def_cfa_offset 4 + .cfi_offset 7, -4 + add r7, sp, #0 + .cfi_def_cfa_register 7 + .loc 1 11 33 + ldr r3, .L5 + ldr r3, [r3, #64] + ldr r2, .L5 + .loc 1 11 43 + orr r3, r3, #268435456 + str r3, [r2, #64] + .loc 1 14 33 + ldr r3, .L5+4 + ldr r3, [r3] + ldr r2, .L5+4 + .loc 1 14 38 + bic r3, r3, #49152 + str r3, [r2] + .loc 1 15 33 + ldr r3, .L5+4 + ldr r3, [r3] + ldr r2, .L5+4 + .loc 1 15 38 + orr r3, r3, #49152 + str r3, [r2] + .loc 1 18 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 18 38 + orr r3, r3, #65536 + str r3, [r2] + .loc 1 22 9 + nop +.L2: + .loc 1 22 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 22 47 discriminator 1 + and r3, r3, #131072 + .loc 1 22 10 discriminator 1 + cmp r3, #0 + beq .L2 + .loc 1 26 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 26 38 + bic r3, r3, #16777216 + str r3, [r2] + .loc 1 29 33 + ldr r3, .L5 + ldr r3, [r3, #4] + ldr r2, .L5 + .loc 1 29 43 + orr r3, r3, #4194304 + str r3, [r2, #4] + .loc 1 32 33 + ldr r3, .L5 + ldr r2, [r3, #4] + ldr r1, .L5 + .loc 1 32 43 + ldr r3, .L5+8 + orrs r3, r3, r2 + str r3, [r1, #4] + .loc 1 35 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 35 40 + bic r3, r3, #240 + str r3, [r2, #8] + .loc 1 36 33 + ldr r3, .L5 + ldr r2, .L5 + ldr r3, [r3, #8] + .loc 1 36 40 + str r3, [r2, #8] + .loc 1 39 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 39 40 + bic r3, r3, #7168 + str r3, [r2, #8] + .loc 1 40 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 40 40 + orr r3, r3, #4096 + str r3, [r2, #8] + .loc 1 43 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 43 40 + bic r3, r3, #57344 + str r3, [r2, #8] + .loc 1 44 33 + ldr r3, .L5 + ldr r2, .L5 + ldr r3, [r3, #8] + .loc 1 44 40 + str r3, [r2, #8] + .loc 1 47 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 47 38 + orr r3, r3, #16777216 + str r3, [r2] + .loc 1 51 9 + nop +.L3: + .loc 1 51 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 51 47 discriminator 1 + and r3, r3, #131072 + .loc 1 51 10 discriminator 1 + cmp r3, #0 + beq .L3 + .loc 1 54 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 54 41 + orr r3, r3, #1024 + str r3, [r2] + .loc 1 55 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 55 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 58 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 58 41 + bic r3, r3, #15 + str r3, [r2] + .loc 1 59 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 59 40 + orr r3, r3, #272 + orr r3, r3, #1 + str r3, [r2, #8] + .loc 1 62 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 62 40 + bic r3, r3, #3 + str r3, [r2, #8] + .loc 1 63 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 63 40 + orr r3, r3, #2 + str r3, [r2, #8] + .loc 1 67 9 + nop +.L4: + .loc 1 67 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3, #8] + .loc 1 67 49 discriminator 1 + lsrs r3, r3, #2 + .loc 1 67 55 discriminator 1 + and r3, r3, #3 + .loc 1 67 65 discriminator 1 + cmp r3, #2 + bne .L4 + .loc 1 70 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 70 38 + bic r3, r3, #1 + str r3, [r2] + .loc 1 71 1 + nop + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + ldr r7, [sp], #4 + .cfi_restore 7 + .cfi_def_cfa_offset 0 + bx lr +.L6: + .align 2 +.L5: + .word 1073887232 + .word 1073770496 + .word 67252505 + .word 1073888256 + .cfi_endproc +.LFE0: + .size system_clock_init, .-system_clock_init .section .text.spin,"ax",%progbits .align 1 .syntax unified @@ -24,8 +243,8 @@ .thumb_func .type spin, %function spin: -.LFB0: - .loc 1 7 50 +.LFB1: + .loc 1 73 50 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -38,17 +257,17 @@ spin: add r7, sp, #0 .cfi_def_cfa_register 7 str r0, [r7, #4] - .loc 1 8 9 + .loc 1 74 9 nop -.L2: - .loc 1 8 15 discriminator 1 +.L8: + .loc 1 74 15 discriminator 1 ldr r3, [r7, #4] subs r2, r3, #1 str r2, [r7, #4] - .loc 1 8 10 discriminator 1 + .loc 1 74 10 discriminator 1 cmp r3, #0 - bne .L2 - .loc 1 9 1 + bne .L8 + .loc 1 75 1 nop nop adds r7, r7, #12 @@ -61,7 +280,7 @@ spin: .cfi_def_cfa_offset 0 bx lr .cfi_endproc -.LFE0: +.LFE1: .size spin, .-spin .section .text.main,"ax",%progbits .align 1 @@ -71,8 +290,8 @@ spin: .thumb_func .type main, %function main: -.LFB1: - .loc 1 11 16 +.LFB2: + .loc 1 77 16 .cfi_startproc @ args = 0, pretend = 0, frame = 8 @ frame_needed = 1, uses_anonymous_args = 0 @@ -84,58 +303,60 @@ main: .cfi_def_cfa_offset 16 add r7, sp, #0 .cfi_def_cfa_register 7 - .loc 1 12 12 + .loc 1 78 3 + bl system_clock_init + .loc 1 80 12 movw r3, #525 strh r3, [r7, #6] @ movhi - .loc 1 13 33 - ldr r3, .L5 + .loc 1 81 33 + ldr r3, .L11 ldr r3, [r3, #48] - .loc 1 13 57 + .loc 1 81 57 ldrh r2, [r7, #6] lsrs r2, r2, #8 uxth r2, r2 mov r1, r2 - .loc 1 13 49 + .loc 1 81 49 movs r2, #1 lsls r2, r2, r1 mov r1, r2 - .loc 1 13 33 - ldr r2, .L5 - .loc 1 13 43 + .loc 1 81 33 + ldr r2, .L11 + .loc 1 81 43 orrs r3, r3, r1 str r3, [r2, #48] - .loc 1 14 3 + .loc 1 82 3 ldrh r3, [r7, #6] movs r1, #1 mov r0, r3 bl gpio_set_mode -.L4: - .loc 1 16 5 discriminator 1 +.L10: + .loc 1 84 5 discriminator 1 ldrh r3, [r7, #6] movs r1, #1 mov r0, r3 bl gpio_write - .loc 1 17 5 discriminator 1 - ldr r0, .L5+4 + .loc 1 85 5 discriminator 1 + ldr r0, .L11+4 bl spin - .loc 1 18 5 discriminator 1 + .loc 1 86 5 discriminator 1 ldrh r3, [r7, #6] movs r1, #0 mov r0, r3 bl gpio_write - .loc 1 19 5 discriminator 1 - ldr r0, .L5+4 + .loc 1 87 5 discriminator 1 + ldr r0, .L11+4 bl spin - .loc 1 16 5 discriminator 1 + .loc 1 84 5 discriminator 1 nop - b .L4 -.L6: + b .L10 +.L12: .align 2 -.L5: +.L11: .word 1073887232 .word 999999 .cfi_endproc -.LFE1: +.LFE2: .size main, .-main .text .Letext0: @@ -143,18 +364,20 @@ main: .file 3 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_stdint.h" .file 4 "src/rcc.h" .file 5 "src/gpio.h" + .file 6 "src/flash.h" + .file 7 "src/pwr.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x2a8 + .4byte 0x34f .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 - .uleb128 0x9 - .4byte .LASF956 + .uleb128 0xa + .4byte .LASF979 .byte 0x1d - .4byte .LASF957 - .4byte .LASF958 + .4byte .LASF980 + .4byte .LASF981 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -162,17 +385,17 @@ main: .uleb128 0x2 .byte 0x1 .byte 0x6 - .4byte .LASF910 + .4byte .LASF929 .uleb128 0x2 .byte 0x1 .byte 0x8 - .4byte .LASF911 + .4byte .LASF930 .uleb128 0x2 .byte 0x2 .byte 0x5 - .4byte .LASF912 - .uleb128 0x3 - .4byte .LASF915 + .4byte .LASF931 + .uleb128 0x4 + .4byte .LASF934 .byte 0x2 .byte 0x39 .byte 0x1c @@ -180,13 +403,13 @@ main: .uleb128 0x2 .byte 0x2 .byte 0x7 - .4byte .LASF913 + .4byte .LASF932 .uleb128 0x2 .byte 0x4 .byte 0x5 - .4byte .LASF914 - .uleb128 0x3 - .4byte .LASF916 + .4byte .LASF933 + .uleb128 0x4 + .4byte .LASF935 .byte 0x2 .byte 0x4f .byte 0x1b @@ -194,194 +417,220 @@ main: .uleb128 0x2 .byte 0x4 .byte 0x7 - .4byte .LASF917 + .4byte .LASF936 .uleb128 0x2 .byte 0x8 .byte 0x5 - .4byte .LASF918 + .4byte .LASF937 .uleb128 0x2 .byte 0x8 .byte 0x7 - .4byte .LASF919 - .uleb128 0xa + .4byte .LASF938 + .uleb128 0xb .byte 0x4 .byte 0x5 .ascii "int\000" .uleb128 0x2 .byte 0x4 .byte 0x7 - .4byte .LASF920 - .uleb128 0x3 - .4byte .LASF921 + .4byte .LASF939 + .uleb128 0x4 + .4byte .LASF940 .byte 0x3 .byte 0x24 .byte 0x14 .4byte 0x3f - .uleb128 0x3 - .4byte .LASF922 + .uleb128 0x4 + .4byte .LASF941 .byte 0x3 .byte 0x30 .byte 0x14 .4byte 0x59 .uleb128 0x7 .4byte 0x94 - .uleb128 0xb + .uleb128 0x8 .ascii "rcc\000" .byte 0x8c .byte 0x4 - .byte 0x6 - .byte 0x8 - .4byte 0x1e6 - .uleb128 0x6 + .4byte 0x200 + .uleb128 0x3 .ascii "CR\000" + .byte 0x4 .byte 0x7 .4byte 0xa0 .byte 0 .uleb128 0x1 - .4byte .LASF923 + .4byte .LASF942 + .byte 0x4 .byte 0x8 .4byte 0xa0 .byte 0x4 .uleb128 0x1 - .4byte .LASF924 + .4byte .LASF943 + .byte 0x4 .byte 0x9 .4byte 0xa0 .byte 0x8 - .uleb128 0x6 + .uleb128 0x3 .ascii "CIR\000" + .byte 0x4 .byte 0xa .4byte 0xa0 .byte 0xc .uleb128 0x1 - .4byte .LASF925 + .4byte .LASF944 + .byte 0x4 .byte 0xb .4byte 0xa0 .byte 0x10 .uleb128 0x1 - .4byte .LASF926 + .4byte .LASF945 + .byte 0x4 .byte 0xc .4byte 0xa0 .byte 0x14 .uleb128 0x1 - .4byte .LASF927 + .4byte .LASF946 + .byte 0x4 .byte 0xd - .4byte 0x1f6 + .4byte 0x210 .byte 0x18 .uleb128 0x1 - .4byte .LASF928 + .4byte .LASF947 + .byte 0x4 .byte 0xe .4byte 0xa0 .byte 0x20 .uleb128 0x1 - .4byte .LASF929 + .4byte .LASF948 + .byte 0x4 .byte 0xf .4byte 0xa0 .byte 0x24 .uleb128 0x1 - .4byte .LASF930 + .4byte .LASF949 + .byte 0x4 .byte 0x10 - .4byte 0x1f6 + .4byte 0x210 .byte 0x28 .uleb128 0x1 - .4byte .LASF931 + .4byte .LASF950 + .byte 0x4 .byte 0x11 .4byte 0xa0 .byte 0x30 .uleb128 0x1 - .4byte .LASF932 + .4byte .LASF951 + .byte 0x4 .byte 0x12 .4byte 0xa0 .byte 0x34 .uleb128 0x1 - .4byte .LASF933 + .4byte .LASF952 + .byte 0x4 .byte 0x13 - .4byte 0x1f6 + .4byte 0x210 .byte 0x38 .uleb128 0x1 - .4byte .LASF934 + .4byte .LASF953 + .byte 0x4 .byte 0x14 .4byte 0xa0 .byte 0x40 .uleb128 0x1 - .4byte .LASF935 + .4byte .LASF954 + .byte 0x4 .byte 0x15 .4byte 0xa0 .byte 0x44 .uleb128 0x1 - .4byte .LASF936 + .4byte .LASF955 + .byte 0x4 .byte 0x16 - .4byte 0x1f6 + .4byte 0x210 .byte 0x48 .uleb128 0x1 - .4byte .LASF937 + .4byte .LASF956 + .byte 0x4 .byte 0x17 .4byte 0xa0 .byte 0x50 .uleb128 0x1 - .4byte .LASF938 + .4byte .LASF957 + .byte 0x4 .byte 0x18 .4byte 0xa0 .byte 0x54 .uleb128 0x1 - .4byte .LASF939 + .4byte .LASF958 + .byte 0x4 .byte 0x19 - .4byte 0x1f6 + .4byte 0x210 .byte 0x58 .uleb128 0x1 - .4byte .LASF940 + .4byte .LASF959 + .byte 0x4 .byte 0x1a .4byte 0xa0 .byte 0x60 .uleb128 0x1 - .4byte .LASF941 + .4byte .LASF960 + .byte 0x4 .byte 0x1b .4byte 0xa0 .byte 0x64 .uleb128 0x1 - .4byte .LASF942 + .4byte .LASF961 + .byte 0x4 .byte 0x1c - .4byte 0x1f6 + .4byte 0x210 .byte 0x68 .uleb128 0x1 - .4byte .LASF943 + .4byte .LASF962 + .byte 0x4 .byte 0x1d .4byte 0xa0 .byte 0x70 - .uleb128 0x6 + .uleb128 0x3 .ascii "CSR\000" + .byte 0x4 .byte 0x1e .4byte 0xa0 .byte 0x74 .uleb128 0x1 - .4byte .LASF944 + .4byte .LASF963 + .byte 0x4 .byte 0x1f - .4byte 0x1f6 + .4byte 0x210 .byte 0x78 .uleb128 0x1 - .4byte .LASF945 + .4byte .LASF964 + .byte 0x4 .byte 0x20 .4byte 0xa0 .byte 0x80 .uleb128 0x1 - .4byte .LASF946 + .4byte .LASF965 + .byte 0x4 .byte 0x21 .4byte 0xa0 .byte 0x84 .uleb128 0x1 - .4byte .LASF947 + .4byte .LASF966 + .byte 0x4 .byte 0x22 .4byte 0xa0 .byte 0x88 .byte 0 .uleb128 0xc .4byte 0xa0 - .4byte 0x1f6 + .4byte 0x210 .uleb128 0xd .4byte 0x81 .byte 0x1 .byte 0 .uleb128 0x7 - .4byte 0x1e6 + .4byte 0x200 .uleb128 0xe .byte 0x7 .byte 0x1 @@ -389,88 +638,160 @@ main: .byte 0x5 .byte 0x20 .byte 0xe - .4byte 0x222 - .uleb128 0x4 - .4byte .LASF948 + .4byte 0x23c + .uleb128 0x5 + .4byte .LASF967 .byte 0 - .uleb128 0x4 - .4byte .LASF949 + .uleb128 0x5 + .4byte .LASF968 .byte 0x1 - .uleb128 0x4 - .4byte .LASF950 + .uleb128 0x5 + .4byte .LASF969 .byte 0x2 - .uleb128 0x4 - .4byte .LASF951 + .uleb128 0x5 + .4byte .LASF970 .byte 0x3 .byte 0 - .uleb128 0x3 - .4byte .LASF952 + .uleb128 0x4 + .4byte .LASF971 .byte 0x5 .byte 0x25 .byte 0x3 - .4byte 0x1fb + .4byte 0x215 + .uleb128 0xf + .4byte .LASF972 + .byte 0x18 + .byte 0x6 + .byte 0x6 + .byte 0x8 + .4byte 0x29c + .uleb128 0x3 + .ascii "ACR\000" + .byte 0x6 + .byte 0x7 + .4byte 0xa0 + .byte 0 + .uleb128 0x1 + .4byte .LASF973 + .byte 0x6 + .byte 0x8 + .4byte 0xa0 + .byte 0x4 + .uleb128 0x1 + .4byte .LASF974 + .byte 0x6 + .byte 0x9 + .4byte 0xa0 + .byte 0x8 + .uleb128 0x3 + .ascii "SR\000" + .byte 0x6 + .byte 0xa + .4byte 0xa0 + .byte 0xc + .uleb128 0x3 + .ascii "CR\000" + .byte 0x6 + .byte 0xb + .4byte 0xa0 + .byte 0x10 + .uleb128 0x1 + .4byte .LASF975 + .byte 0x6 + .byte 0xc + .4byte 0xa0 + .byte 0x14 + .byte 0 .uleb128 0x8 - .4byte .LASF954 + .ascii "pwr\000" + .byte 0x8 + .byte 0x7 + .4byte 0x2bf + .uleb128 0x3 + .ascii "CR\000" + .byte 0x7 + .byte 0x7 + .4byte 0xa0 + .byte 0 + .uleb128 0x3 + .ascii "CSR\000" + .byte 0x7 + .byte 0x8 + .4byte 0xa0 + .byte 0x4 + .byte 0 + .uleb128 0x9 + .4byte .LASF977 .byte 0x28 - .4byte 0x243 - .uleb128 0x5 + .4byte 0x2d4 + .uleb128 0x6 .4byte 0x88 - .uleb128 0x5 - .4byte 0x243 + .uleb128 0x6 + .4byte 0x2d4 .byte 0 .uleb128 0x2 .byte 0x1 .byte 0x2 - .4byte .LASF953 - .uleb128 0x8 - .4byte .LASF955 + .4byte .LASF976 + .uleb128 0x9 + .4byte .LASF978 .byte 0x27 - .4byte 0x25f - .uleb128 0x5 + .4byte 0x2f0 + .uleb128 0x6 .4byte 0x88 - .uleb128 0x5 - .4byte 0x222 + .uleb128 0x6 + .4byte 0x23c .byte 0 - .uleb128 0xf - .4byte .LASF959 + .uleb128 0x10 + .4byte .LASF982 .byte 0x1 - .byte 0xb + .byte 0x4d .byte 0x5 .4byte 0x7a - .4byte .LFB1 - .4byte .LFE1-.LFB1 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .uleb128 0x1 .byte 0x9c - .4byte 0x289 - .uleb128 0x10 + .4byte 0x31a + .uleb128 0x11 .ascii "led\000" .byte 0x1 - .byte 0xc + .byte 0x50 .byte 0xc .4byte 0x88 .uleb128 0x2 .byte 0x91 .sleb128 -10 .byte 0 - .uleb128 0x11 - .4byte .LASF960 + .uleb128 0x12 + .4byte .LASF983 .byte 0x1 - .byte 0x7 + .byte 0x49 .byte 0x14 - .4byte .LFB0 - .4byte .LFE0-.LFB0 + .4byte .LFB1 + .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c - .uleb128 0x12 - .4byte .LASF961 + .4byte 0x340 + .uleb128 0x13 + .4byte .LASF984 .byte 0x1 - .byte 0x7 + .byte 0x49 .byte 0x2b .4byte 0xa0 .uleb128 0x2 .byte 0x91 .sleb128 -12 .byte 0 + .uleb128 0x14 + .4byte .LASF985 + .byte 0x1 + .byte 0x9 + .byte 0xd + .4byte .LFB0 + .4byte .LFE0-.LFB0 + .uleb128 0x1 + .byte 0x9c .byte 0 .section .debug_abbrev,"",%progbits .Ldebug_abbrev0: @@ -480,8 +801,7 @@ main: .uleb128 0x3 .uleb128 0xe .uleb128 0x3a - .uleb128 0x21 - .sleb128 4 + .uleb128 0xb .uleb128 0x3b .uleb128 0xb .uleb128 0x39 @@ -505,6 +825,24 @@ main: .byte 0 .byte 0 .uleb128 0x3 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0x21 + .sleb128 21 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x4 .uleb128 0x16 .byte 0 .uleb128 0x3 @@ -519,7 +857,7 @@ main: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x4 + .uleb128 0x5 .uleb128 0x28 .byte 0 .uleb128 0x3 @@ -528,30 +866,11 @@ main: .uleb128 0xb .byte 0 .byte 0 - .uleb128 0x5 - .uleb128 0x5 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0x6 - .uleb128 0xd + .uleb128 0x5 .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0x21 - .sleb128 4 - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0x21 - .sleb128 21 .uleb128 0x49 .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb .byte 0 .byte 0 .uleb128 0x7 @@ -562,6 +881,25 @@ main: .byte 0 .byte 0 .uleb128 0x8 + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x21 + .sleb128 6 + .uleb128 0x39 + .uleb128 0x21 + .sleb128 8 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -584,7 +922,7 @@ main: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x9 + .uleb128 0xa .uleb128 0x11 .byte 0x1 .uleb128 0x25 @@ -605,7 +943,7 @@ main: .uleb128 0x17 .byte 0 .byte 0 - .uleb128 0xa + .uleb128 0xb .uleb128 0x24 .byte 0 .uleb128 0xb @@ -616,23 +954,6 @@ main: .uleb128 0x8 .byte 0 .byte 0 - .uleb128 0xb - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x39 - .uleb128 0xb - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 .uleb128 0xc .uleb128 0x1 .byte 0x1 @@ -671,6 +992,23 @@ main: .byte 0 .byte 0 .uleb128 0xf + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x10 .uleb128 0x2e .byte 0x1 .uleb128 0x3f @@ -699,7 +1037,7 @@ main: .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x10 + .uleb128 0x11 .uleb128 0x34 .byte 0 .uleb128 0x3 @@ -716,7 +1054,7 @@ main: .uleb128 0x18 .byte 0 .byte 0 - .uleb128 0x11 + .uleb128 0x12 .uleb128 0x2e .byte 0x1 .uleb128 0x3 @@ -737,9 +1075,11 @@ main: .uleb128 0x18 .uleb128 0x7a .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 .byte 0 .byte 0 - .uleb128 0x12 + .uleb128 0x13 .uleb128 0x5 .byte 0 .uleb128 0x3 @@ -756,9 +1096,32 @@ main: .uleb128 0x18 .byte 0 .byte 0 + .uleb128 0x14 + .uleb128 0x2e + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x6 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x7a + .uleb128 0x19 + .byte 0 + .byte 0 .byte 0 .section .debug_aranges,"",%progbits - .4byte 0x24 + .4byte 0x2c .2byte 0x2 .4byte .Ldebug_info0 .byte 0x4 @@ -769,6 +1132,8 @@ main: .4byte .LFE0-.LFB0 .4byte .LFB1 .4byte .LFE1-.LFB1 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .4byte 0 .4byte 0 .section .debug_rnglists,"",%progbits @@ -786,6 +1151,9 @@ main: .byte 0x7 .4byte .LFB1 .uleb128 .LFE1-.LFB1 + .byte 0x7 + .4byte .LFB2 + .uleb128 .LFE2-.LFB2 .byte 0 .Ldebug_ranges3: .section .debug_macro,"",%progbits @@ -2158,76 +2526,76 @@ main: .byte 0x5 .uleb128 0 .4byte .LASF453 - .file 6 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" + .file 8 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/inttypes.h" .byte 0x3 .uleb128 0x1 - .uleb128 0x6 + .uleb128 0x8 .byte 0x5 .uleb128 0xe .4byte .LASF454 - .file 7 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" + .file 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/newlib.h" .byte 0x3 .uleb128 0x10 - .uleb128 0x7 + .uleb128 0x9 .byte 0x5 .uleb128 0x7 .4byte .LASF455 - .file 8 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" + .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_newlib_version.h" .byte 0x3 .uleb128 0xa - .uleb128 0x8 + .uleb128 0xa .byte 0x7 .4byte .Ldebug_macro2 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro3 .byte 0x4 - .file 9 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" + .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/config.h" .byte 0x3 .uleb128 0x11 - .uleb128 0x9 + .uleb128 0xb .byte 0x5 .uleb128 0x2 .4byte .LASF478 - .file 10 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" + .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/ieeefp.h" .byte 0x3 .uleb128 0x4 - .uleb128 0xa + .uleb128 0xc .byte 0x7 .4byte .Ldebug_macro4 .byte 0x4 - .file 11 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" + .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/features.h" .byte 0x3 .uleb128 0x5 - .uleb128 0xb + .uleb128 0xd .byte 0x7 .4byte .Ldebug_macro5 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro6 .byte 0x4 - .file 12 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" + .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/sys/_intsup.h" .byte 0x3 .uleb128 0x12 - .uleb128 0xc + .uleb128 0xe .byte 0x7 .4byte .Ldebug_macro7 .byte 0x4 - .file 13 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" + .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/_ansi.h" .byte 0x3 .uleb128 0x13 - .uleb128 0xd + .uleb128 0xf .byte 0x7 .4byte .Ldebug_macro8 .byte 0x4 - .file 14 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" + .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdint.h" .byte 0x3 .uleb128 0x14 - .uleb128 0xe - .file 15 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" + .uleb128 0x10 + .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/stdint.h" .byte 0x3 .uleb128 0x9 - .uleb128 0xf + .uleb128 0x11 .byte 0x5 .uleb128 0xa .4byte .LASF546 @@ -2253,10 +2621,10 @@ main: .byte 0x5 .uleb128 0x15 .4byte .LASF647 - .file 16 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" + .file 18 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stddef.h" .byte 0x3 .uleb128 0x16 - .uleb128 0x10 + .uleb128 0x12 .byte 0x7 .4byte .Ldebug_macro12 .byte 0x4 @@ -2274,20 +2642,32 @@ main: .uleb128 0x5 .byte 0x5 .uleb128 0x2 - .4byte .LASF896 - .file 17 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" + .4byte .LASF897 + .file 19 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/lib/gcc/arm-none-eabi/12.3.1/include/stdbool.h" .byte 0x3 .uleb128 0x4 - .uleb128 0x11 + .uleb128 0x13 .byte 0x7 .4byte .Ldebug_macro15 .byte 0x4 .byte 0x7 .4byte .Ldebug_macro16 .byte 0x4 - .byte 0x5 + .byte 0x3 + .uleb128 0x4 + .uleb128 0x6 + .byte 0x7 + .4byte .Ldebug_macro17 + .byte 0x4 + .byte 0x3 .uleb128 0x5 - .4byte .LASF909 + .uleb128 0x7 + .byte 0x7 + .4byte .Ldebug_macro18 + .byte 0x4 + .byte 0x5 + .uleb128 0x7 + .4byte .LASF928 .byte 0x4 .byte 0 .section .debug_macro,"G",%progbits,wm4._newlib_version.h.4.6d111ab2e95434b664b53815e5c8ccba,comdat @@ -3547,7 +3927,7 @@ main: .uleb128 0x135 .4byte .LASF849 .byte 0 - .section .debug_macro,"G",%progbits,wm4.rcc.h.2.a0fe590d50a4a87e3e0cde8c35fecccb,comdat + .section .debug_macro,"G",%progbits,wm4.rcc.h.2.f63dea3638ca6807414aa0ffe92775a0,comdat .Ldebug_macro14: .2byte 0x5 .byte 0 @@ -3573,122 +3953,125 @@ main: .uleb128 0x2f .4byte .LASF856 .byte 0x5 - .uleb128 0x30 + .uleb128 0x32 .4byte .LASF857 .byte 0x5 .uleb128 0x33 .4byte .LASF858 .byte 0x5 - .uleb128 0x34 + .uleb128 0x36 .4byte .LASF859 .byte 0x5 .uleb128 0x37 .4byte .LASF860 .byte 0x5 - .uleb128 0x38 + .uleb128 0x3a .4byte .LASF861 .byte 0x5 .uleb128 0x3b .4byte .LASF862 .byte 0x5 - .uleb128 0x3c + .uleb128 0x3e .4byte .LASF863 .byte 0x5 - .uleb128 0x3e + .uleb128 0x3f .4byte .LASF864 .byte 0x5 - .uleb128 0x3f + .uleb128 0x42 .4byte .LASF865 .byte 0x5 - .uleb128 0x42 + .uleb128 0x43 .4byte .LASF866 .byte 0x5 - .uleb128 0x43 + .uleb128 0x44 .4byte .LASF867 .byte 0x5 - .uleb128 0x44 + .uleb128 0x46 .4byte .LASF868 .byte 0x5 - .uleb128 0x46 + .uleb128 0x47 .4byte .LASF869 .byte 0x5 - .uleb128 0x47 + .uleb128 0x49 .4byte .LASF870 .byte 0x5 - .uleb128 0x49 + .uleb128 0x4a .4byte .LASF871 .byte 0x5 - .uleb128 0x4a + .uleb128 0x4b .4byte .LASF872 .byte 0x5 - .uleb128 0x4b + .uleb128 0x4d .4byte .LASF873 .byte 0x5 - .uleb128 0x4d + .uleb128 0x4e .4byte .LASF874 .byte 0x5 - .uleb128 0x4e + .uleb128 0x4f .4byte .LASF875 .byte 0x5 - .uleb128 0x4f + .uleb128 0x51 .4byte .LASF876 .byte 0x5 - .uleb128 0x51 + .uleb128 0x52 .4byte .LASF877 .byte 0x5 - .uleb128 0x52 + .uleb128 0x53 .4byte .LASF878 .byte 0x5 - .uleb128 0x53 + .uleb128 0x57 .4byte .LASF879 .byte 0x5 - .uleb128 0x57 + .uleb128 0x58 .4byte .LASF880 .byte 0x5 - .uleb128 0x58 + .uleb128 0x5b .4byte .LASF881 .byte 0x5 - .uleb128 0x5b + .uleb128 0x5c .4byte .LASF882 .byte 0x5 - .uleb128 0x5c + .uleb128 0x5f .4byte .LASF883 .byte 0x5 - .uleb128 0x5f + .uleb128 0x60 .4byte .LASF884 .byte 0x5 - .uleb128 0x60 + .uleb128 0x63 .4byte .LASF885 .byte 0x5 - .uleb128 0x63 + .uleb128 0x65 .4byte .LASF886 .byte 0x5 - .uleb128 0x65 + .uleb128 0x66 .4byte .LASF887 .byte 0x5 - .uleb128 0x66 + .uleb128 0x69 .4byte .LASF888 .byte 0x5 - .uleb128 0x69 + .uleb128 0x6b .4byte .LASF889 .byte 0x5 - .uleb128 0x6b + .uleb128 0x6c .4byte .LASF890 .byte 0x5 - .uleb128 0x6c + .uleb128 0x6f .4byte .LASF891 .byte 0x5 - .uleb128 0x6f + .uleb128 0x71 .4byte .LASF892 .byte 0x5 - .uleb128 0x71 + .uleb128 0x72 .4byte .LASF893 .byte 0x5 - .uleb128 0x72 + .uleb128 0x73 .4byte .LASF894 .byte 0x5 - .uleb128 0x73 + .uleb128 0x76 .4byte .LASF895 + .byte 0x5 + .uleb128 0x77 + .4byte .LASF896 .byte 0 .section .debug_macro,"G",%progbits,wm4.stdbool.h.29.eb124ecb79face0a1d832a352bec45e0,comdat .Ldebug_macro15: @@ -3696,19 +4079,19 @@ main: .byte 0 .byte 0x5 .uleb128 0x1d - .4byte .LASF897 - .byte 0x5 - .uleb128 0x21 .4byte .LASF898 .byte 0x5 - .uleb128 0x23 + .uleb128 0x21 .4byte .LASF899 .byte 0x5 - .uleb128 0x24 + .uleb128 0x23 .4byte .LASF900 .byte 0x5 - .uleb128 0x32 + .uleb128 0x24 .4byte .LASF901 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF902 .byte 0 .section .debug_macro,"G",%progbits,wm4.gpio.h.20.f43cb24618dcbca74136a185a6bbf080,comdat .Ldebug_macro16: @@ -3716,25 +4099,89 @@ main: .byte 0 .byte 0x5 .uleb128 0x14 - .4byte .LASF902 - .byte 0x5 - .uleb128 0x15 .4byte .LASF903 .byte 0x5 - .uleb128 0x16 + .uleb128 0x15 .4byte .LASF904 .byte 0x5 - .uleb128 0x18 + .uleb128 0x16 .4byte .LASF905 .byte 0x5 - .uleb128 0x1a + .uleb128 0x18 .4byte .LASF906 .byte 0x5 - .uleb128 0x1c + .uleb128 0x1a .4byte .LASF907 .byte 0x5 - .uleb128 0x1e + .uleb128 0x1c .4byte .LASF908 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF909 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.flash.h.2.51d6f0499046dca8c8d7cee08875e55f,comdat +.Ldebug_macro17: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF910 + .byte 0x5 + .uleb128 0xf + .4byte .LASF911 + .byte 0x5 + .uleb128 0x10 + .4byte .LASF912 + .byte 0x5 + .uleb128 0x14 + .4byte .LASF913 + .byte 0x5 + .uleb128 0x15 + .4byte .LASF914 + .byte 0x5 + .uleb128 0x18 + .4byte .LASF915 + .byte 0x5 + .uleb128 0x19 + .4byte .LASF916 + .byte 0x5 + .uleb128 0x1c + .4byte .LASF917 + .byte 0x5 + .uleb128 0x1e + .4byte .LASF918 + .byte 0x5 + .uleb128 0x1f + .4byte .LASF919 + .byte 0x5 + .uleb128 0x20 + .4byte .LASF920 + .byte 0 + .section .debug_macro,"G",%progbits,wm4.pwr.h.2.b22d01f8fafa27268c4600cc8f787804,comdat +.Ldebug_macro18: + .2byte 0x5 + .byte 0 + .byte 0x5 + .uleb128 0x2 + .4byte .LASF921 + .byte 0x5 + .uleb128 0xb + .4byte .LASF922 + .byte 0x5 + .uleb128 0xc + .4byte .LASF923 + .byte 0x5 + .uleb128 0xf + .4byte .LASF924 + .byte 0x5 + .uleb128 0x12 + .4byte .LASF925 + .byte 0x5 + .uleb128 0x13 + .4byte .LASF926 + .byte 0x5 + .uleb128 0x14 + .4byte .LASF927 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3751,7 +4198,7 @@ main: .ascii "__UHA_FBIT__ 8\000" .LASF814: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF911: +.LASF930: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3785,7 +4232,7 @@ main: .ascii "__WINT_MIN__ 0U\000" .LASF90: .ascii "__INTMAX_MAX__ 0x7fffffffffffffffLL\000" -.LASF950: +.LASF969: .ascii "GPIO_MODE_AF\000" .LASF335: .ascii "__TQ_IBIT__ 0\000" @@ -3809,6 +4256,8 @@ main: .ascii "__FRACT_MIN__ (-0.5R-0.5R)\000" .LASF324: .ascii "__ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK\000" +.LASF972: + .ascii "flash\000" .LASF294: .ascii "__USACCUM_MAX__ 0XFFFFP-8UHK\000" .LASF246: @@ -3863,8 +4312,8 @@ main: .ascii "INT_LEAST16_MAX (__INT_LEAST16_MAX__)\000" .LASF703: .ascii "SCNiFAST8 __SCN8FAST(i)\000" -.LASF120: - .ascii "__UINT_LEAST16_MAX__ 0xffff\000" +.LASF790: + .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" .LASF616: .ascii "INT_FAST16_MAX (__INT_FAST16_MAX__)\000" .LASF281: @@ -3875,6 +4324,10 @@ main: .ascii "_LDBL_EQ_DBL 1\000" .LASF675: .ascii "PRIi8 __PRI8(i)\000" +.LASF916: + .ascii "FLASH_ACR_ICEN_ENABLE (1 <= ((maj) << 16) + (min))\000" @@ -4022,7 +4478,7 @@ main: .ascii "INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)\000" .LASF672: .ascii "__SCN8LEAST(x) __LEAST8 __STRINGIFY(x)\000" -.LASF857: +.LASF856: .ascii "RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT)\000" .LASF55: .ascii "__UINT_LEAST8_TYPE__ unsigned char\000" @@ -4032,12 +4488,12 @@ main: .ascii "__ACCUM_FBIT__ 15\000" .LASF791: .ascii "PRId64 __PRI64(d)\000" -.LASF873: +.LASF872: .ascii "RCC_PLLCFGR_PLLP(p) ((p & RCC_PLLCFGR_PLLP_MASK) <<" .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF914: +.LASF933: .ascii "long int\000" .LASF719: .ascii "SCNd16 __SCN16(d)\000" @@ -4055,7 +4511,7 @@ main: .ascii "__FLT32X_EPSILON__ 2.2204460492503131e-16F32x\000" .LASF556: .ascii "___int_least16_t_defined 1\000" -.LASF879: +.LASF878: .ascii "RCC_PLLCFGR_PLLM(m) ((m & RCC_PLLCFGR_PLLM_MASK) <<" .ascii " RCC_PLLCFGR_PLLM_BIT)\000" .LASF59: @@ -4068,7 +4524,7 @@ main: .ascii "PRIdFAST32 __PRI32FAST(d)\000" .LASF93: .ascii "__UINTMAX_C(c) c ## ULL\000" -.LASF866: +.LASF865: .ascii "RCC_PLLCFGR_PLLQ_BIT 24\000" .LASF31: .ascii "__SIZEOF_POINTER__ 4\000" @@ -4076,7 +4532,7 @@ main: .ascii "INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)\000" .LASF371: .ascii "__GCC_ATOMIC_BOOL_LOCK_FREE 2\000" -.LASF894: +.LASF893: .ascii "RCC_CFGR_SW_MASK (0b11)\000" .LASF432: .ascii "__ARM_NEON__\000" @@ -4086,7 +4542,7 @@ main: .ascii "__FLT32_MAX_EXP__ 128\000" .LASF824: .ascii "__PRIMAX(x) __STRINGIFY(ll ##x)\000" -.LASF959: +.LASF982: .ascii "main\000" .LASF435: .ascii "__THUMB_INTERWORK__ 1\000" @@ -4104,7 +4560,7 @@ main: .ascii "__CHAR32_TYPE__ long unsigned int\000" .LASF429: .ascii "__ARM_FEATURE_FP16_VECTOR_ARITHMETIC\000" -.LASF896: +.LASF897: .ascii "GPIO_H_ \000" .LASF179: .ascii "__DBL_IS_IEC_60559__ 2\000" @@ -4116,7 +4572,7 @@ main: .ascii "__SIZEOF_LONG__ 4\000" .LASF753: .ascii "PRIi32 __PRI32(i)\000" -.LASF935: +.LASF954: .ascii "APB2ENR\000" .LASF850: .ascii "RCC_H_ \000" @@ -4130,9 +4586,11 @@ main: .ascii "__INT_LEAST32_WIDTH__ 32\000" .LASF232: .ascii "__FLT32X_MIN_EXP__ (-1021)\000" +.LASF915: + .ascii "FLASH_ACR_ICEN_BIT 9\000" .LASF815: .ascii "PRIoFAST64 __PRI64FAST(o)\000" -.LASF937: +.LASF956: .ascii "AHB1LPENR\000" .LASF406: .ascii "__ARM_FEATURE_SIMD32 1\000" @@ -4144,7 +4602,7 @@ main: .ascii "PRIoLEAST16 __PRI16LEAST(o)\000" .LASF458: .ascii "__NEWLIB__ 4\000" -.LASF947: +.LASF966: .ascii "DCKCFGR\000" .LASF720: .ascii "SCNi16 __SCN16(i)\000" @@ -4154,7 +4612,7 @@ main: .ascii "__FLT_DECIMAL_DIG__ 9\000" .LASF562: .ascii "_UINT8_T_DECLARED \000" -.LASF910: +.LASF929: .ascii "signed char\000" .LASF805: .ascii "PRIuLEAST64 __PRI64LEAST(u)\000" @@ -4164,7 +4622,7 @@ main: .ascii "INTMAX_MIN (-INTMAX_MAX - 1)\000" .LASF364: .ascii "__GNUC_STDC_INLINE__ 1\000" -.LASF952: +.LASF971: .ascii "GPIO_MODE\000" .LASF256: .ascii "__FRACT_FBIT__ 15\000" @@ -4176,44 +4634,47 @@ main: .ascii "__GNUC_PATCHLEVEL__ 1\000" .LASF374: .ascii "__GCC_ATOMIC_CHAR32_T_LOCK_FREE 2\000" -.LASF867: +.LASF866: .ascii "RCC_PLLCFGR_PLLQ_MASK (0b1111)\000" -.LASF648: - .ascii "__wchar_t__ \000" +.LASF120: + .ascii "__UINT_LEAST16_MAX__ 0xffff\000" .LASF410: .ascii "__ARM_ARCH_PROFILE 77\000" .LASF546: .ascii "_STDINT_H \000" -.LASF897: +.LASF898: .ascii "_STDBOOL_H \000" .LASF219: .ascii "__FLT64_MAX_10_EXP__ 308\000" -.LASF875: +.LASF874: .ascii "RCC_PLLCFGR_PLLN_MASK (0b111111111)\000" -.LASF927: +.LASF946: .ascii "RESERVED0\000" -.LASF930: +.LASF949: .ascii "RESERVED1\000" -.LASF933: +.LASF952: .ascii "RESERVED2\000" .LASF3: .ascii "__STDC_UTF_32__ 1\000" -.LASF939: +.LASF958: .ascii "RESERVED4\000" .LASF241: .ascii "__FLT32X_DENORM_MIN__ 4.9406564584124654e-324F32x\000" -.LASF944: +.LASF963: .ascii "RESERVED6\000" .LASF152: .ascii "__FLT_MAX_10_EXP__ 38\000" .LASF42: .ascii "__SIG_ATOMIC_TYPE__ int\000" -.LASF884: +.LASF883: .ascii "RCC_CFGR_PPRE1_BIT 10\000" .LASF259: .ascii "__FRACT_MAX__ 0X7FFFP-15R\000" .LASF728: .ascii "PRIxLEAST16 __PRI16LEAST(x)\000" +.LASF927: + .ascii "PWR_CR_VOS(scale) ((scale & PWR_CR_VOS_MASK) << PWR" + .ascii "_CR_VOS_BIT)\000" .LASF130: .ascii "__INT_FAST32_MAX__ 0x7fffffff\000" .LASF10: @@ -4222,7 +4683,7 @@ main: .ascii "_READ_WRITE_RETURN_TYPE int\000" .LASF771: .ascii "SCNoLEAST32 __SCN32LEAST(o)\000" -.LASF892: +.LASF891: .ascii "RCC_CFGR_SW_PLL (0b10)\000" .LASF844: .ascii "PRIXPTR __PRIPTR(X)\000" @@ -4246,25 +4707,29 @@ main: .ascii "__int_fast64_t_defined 1\000" .LASF837: .ascii "__PRIPTR(x) __STRINGIFY(x)\000" -.LASF921: +.LASF940: .ascii "uint16_t\000" .LASF417: .ascii "__thumb2__ 1\000" .LASF321: .ascii "__ULLACCUM_FBIT__ 32\000" -.LASF953: +.LASF976: .ascii "_Bool\000" +.LASF895: + .ascii "RCC_APB1ENR_PWREN_BIT 28\000" .LASF366: .ascii "__STRICT_ANSI__ 1\000" .LASF485: .ascii "_SYS_FEATURES_H \000" .LASF812: .ascii "SCNxLEAST64 __SCN64LEAST(x)\000" -.LASF936: +.LASF769: + .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" +.LASF955: .ascii "RESERVED3\000" .LASF22: .ascii "__SIZEOF_LONG_DOUBLE__ 8\000" -.LASF942: +.LASF961: .ascii "RESERVED5\000" .LASF386: .ascii "__PRAGMA_REDEFINE_EXTNAME 1\000" @@ -4272,7 +4737,7 @@ main: .ascii "__WCHAR_TYPE__ unsigned int\000" .LASF469: .ascii "_MB_LEN_MAX 8\000" -.LASF949: +.LASF968: .ascii "GPIO_MODE_OUTPUT\000" .LASF357: .ascii "__USA_IBIT__ 16\000" @@ -4286,7 +4751,7 @@ main: .ascii "__need_wchar_t \000" .LASF66: .ascii "__UINT_FAST64_TYPE__ long long unsigned int\000" -.LASF890: +.LASF889: .ascii "RCC_CFGR_SWS_BIT 2\000" .LASF156: .ascii "__FLT_MIN__ 1.1754943508222875e-38F\000" @@ -4312,9 +4777,9 @@ main: .ascii "__SCN64(x) __INT64 __STRINGIFY(x)\000" .LASF646: .ascii "_GCC_WRAP_STDINT_H \000" -.LASF915: +.LASF934: .ascii "__uint16_t\000" -.LASF932: +.LASF951: .ascii "AHB2ENR\000" .LASF804: .ascii "PRIoLEAST64 __PRI64LEAST(o)\000" @@ -4342,10 +4807,12 @@ main: .ascii "INTMAX_MAX (__INTMAX_MAX__)\000" .LASF601: .ascii "INT32_MAX (__INT32_MAX__)\000" -.LASF905: +.LASF906: .ascii "BIT(x) (1 << x)\000" -.LASF350: - .ascii "__DA_FBIT__ 31\000" +.LASF985: + .ascii "system_clock_init\000" +.LASF912: + .ascii "FLASH ((struct flash *) FLASH_BASE_ADDR)\000" .LASF69: .ascii "__GXX_ABI_VERSION 1017\000" .LASF109: @@ -4354,16 +4821,16 @@ main: .ascii "__FLT_DENORM_MIN__ 1.4012984643248171e-45F\000" .LASF533: .ascii "__LEAST8 \"hh\"\000" -.LASF886: +.LASF885: .ascii "RCC_CFGR_HPRE_DIV_NONE 0\000" -.LASF859: - .ascii "RCC_CR_HSEBYP (1 << RCC_CR_HSEBYP_BIT)\000" .LASF539: .ascii "_END_STD_C \000" -.LASF899: +.LASF900: .ascii "true ((_Bool)+1u)\000" .LASF766: .ascii "PRIuLEAST32 __PRI32LEAST(u)\000" +.LASF917: + .ascii "FLASH_ACR_LATENCY_3_WAIT_STATES (0x0111)\000" .LASF599: .ascii "UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)\000" .LASF123: @@ -4372,15 +4839,13 @@ main: .ascii "PRIiLEAST16 __PRI16LEAST(i)\000" .LASF303: .ascii "__UACCUM_MIN__ 0.0UK\000" -.LASF871: +.LASF870: .ascii "RCC_PLLCFGR_PLLP_BIT 16\000" .LASF157: .ascii "__FLT_EPSILON__ 1.1920928955078125e-7F\000" -.LASF856: - .ascii "RCC_CR_PLLON_OFF (0 << RCC_CR_PLLON_BIT)\000" -.LASF769: - .ascii "SCNdLEAST32 __SCN32LEAST(d)\000" -.LASF906: +.LASF297: + .ascii "__ACCUM_IBIT__ 16\000" +.LASF907: .ascii "PIN(port,num) ((((port) - 'A') << 8) | num)\000" .LASF806: .ascii "PRIxLEAST64 __PRI64LEAST(x)\000" @@ -4400,7 +4865,7 @@ main: .ascii "INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)\000" .LASF376: .ascii "__GCC_ATOMIC_SHORT_LOCK_FREE 2\000" -.LASF864: +.LASF863: .ascii "RCC_CR_HSION_BIT 0\000" .LASF778: .ascii "PRIxFAST32 __PRI32FAST(x)\000" @@ -4416,10 +4881,8 @@ main: .ascii "__MISC_VISIBLE 0\000" .LASF306: .ascii "__LACCUM_FBIT__ 31\000" -.LASF943: +.LASF962: .ascii "BDCR\000" -.LASF865: - .ascii "RCC_CR_HSION_OFF (0 << RCC_CR_HSION_BIT)\000" .LASF211: .ascii "__FLT32_HAS_QUIET_NAN__ 1\000" .LASF484: @@ -4452,7 +4915,7 @@ main: .ascii "__FP_FAST_FMAF 1\000" .LASF628: .ascii "SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)\000" -.LASF863: +.LASF860: .ascii "RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT)\000" .LASF564: .ascii "_INT16_T_DECLARED \000" @@ -4474,15 +4937,13 @@ main: .ascii "__ARM_FEATURE_FP16_FML\000" .LASF802: .ascii "PRIdLEAST64 __PRI64LEAST(d)\000" -.LASF858: - .ascii "RCC_CR_HSEBYP_BIT 18\000" .LASF255: .ascii "__USFRACT_EPSILON__ 0x1P-8UHR\000" -.LASF861: +.LASF858: .ascii "RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT)\000" .LASF762: .ascii "SCNx32 __SCN32(x)\000" -.LASF924: +.LASF943: .ascii "CFGR\000" .LASF557: .ascii "___int_least32_t_defined 1\000" @@ -4528,6 +4989,8 @@ main: .ascii "__PRI8LEAST(x) __LEAST8 __STRINGIFY(x)\000" .LASF174: .ascii "__DBL_EPSILON__ ((double)2.2204460492503131e-16L)\000" +.LASF974: + .ascii "OPTKEYR\000" .LASF268: .ascii "__LFRACT_MIN__ (-0.5LR-0.5LR)\000" .LASF117: @@ -4550,7 +5013,7 @@ main: .ascii "___int8_t_defined 1\000" .LASF248: .ascii "__SFRACT_MIN__ (-0.5HR-0.5HR)\000" -.LASF917: +.LASF936: .ascii "long unsigned int\000" .LASF349: .ascii "__SA_IBIT__ 16\000" @@ -4566,11 +5029,11 @@ main: .ascii "__ARM_FP16_FORMAT_IEEE\000" .LASF48: .ascii "__UINT16_TYPE__ short unsigned int\000" -.LASF869: +.LASF868: .ascii "RCC_PLLCFGR_PLLSRC_BIT 22\000" -.LASF954: +.LASF977: .ascii "gpio_write\000" -.LASF900: +.LASF901: .ascii "false ((_Bool)+0u)\000" .LASF656: .ascii "_WCHAR_T_DEFINED_ \000" @@ -4578,11 +5041,11 @@ main: .ascii "__FLT_EVAL_METHOD_TS_18661_3__ 0\000" .LASF521: .ascii "int +2\000" -.LASF958: +.LASF981: .ascii "/home/alex/code/own/c-compile-experiments\000" .LASF636: .ascii "INT8_C(x) __INT8_C(x)\000" -.LASF909: +.LASF928: .ascii "exit 42\000" .LASF63: .ascii "__UINT_FAST8_TYPE__ unsigned int\000" @@ -4614,7 +5077,7 @@ main: .ascii "SCNx8 __SCN8(x)\000" .LASF208: .ascii "__FLT32_DENORM_MIN__ 1.4012984643248171e-45F32\000" -.LASF955: +.LASF978: .ascii "gpio_set_mode\000" .LASF125: .ascii "__UINT64_C(c) c ## ULL\000" @@ -4634,7 +5097,7 @@ main: .ascii "__GCC_ATOMIC_CHAR16_T_LOCK_FREE 2\000" .LASF789: .ascii "__PRI64FAST(x) __FAST64 __STRINGIFY(x)\000" -.LASF893: +.LASF892: .ascii "RCC_CFGR_SW_BIT 0\000" .LASF168: .ascii "__DBL_MAX_EXP__ 1024\000" @@ -4662,8 +5125,6 @@ main: .ascii "_INT32_T_DECLARED \000" .LASF1: .ascii "__STDC_VERSION__ 202000L\000" -.LASF790: - .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" .LASF531: .ascii "__FAST32 \000" .LASF519: @@ -4684,12 +5145,12 @@ main: .ascii "SCNxLEAST32 __SCN32LEAST(x)\000" .LASF711: .ascii "__SCN16LEAST(x) __LEAST16 __STRINGIFY(x)\000" -.LASF923: - .ascii "PLLCFGR\000" .LASF5: .ascii "__GNUC__ 12\000" .LASF692: .ascii "SCNiLEAST8 __SCN8LEAST(i)\000" +.LASF923: + .ascii "PWR ((struct pwr *) PWR_BASE_ADDR)\000" .LASF752: .ascii "PRId32 __PRI32(d)\000" .LASF84: @@ -4712,7 +5173,7 @@ main: .ascii "__ULACCUM_MIN__ 0.0ULK\000" .LASF461: .ascii "_ATEXIT_DYNAMIC_ALLOC 1\000" -.LASF916: +.LASF935: .ascii "__uint32_t\000" .LASF188: .ascii "__LDBL_MAX__ 1.7976931348623157e+308L\000" @@ -4722,7 +5183,7 @@ main: .ascii "__FLT_RADIX__ 2\000" .LASF454: .ascii "_INTTYPES_H \000" -.LASF918: +.LASF937: .ascii "long long int\000" .LASF784: .ascii "SCNxFAST32 __SCN32FAST(x)\000" @@ -4730,6 +5191,10 @@ main: .ascii "__ARM_FEATURE_CMSE\000" .LASF602: .ascii "UINT32_MAX (__UINT32_MAX__)\000" +.LASF648: + .ascii "__wchar_t__ \000" +.LASF925: + .ascii "PWR_CR_VOS_BIT 14\000" .LASF195: .ascii "__LDBL_HAS_QUIET_NAN__ 1\000" .LASF85: @@ -4754,8 +5219,12 @@ main: .ascii "__INTPTR_WIDTH__ 32\000" .LASF379: .ascii "__GCC_ATOMIC_LLONG_LOCK_FREE 1\000" +.LASF942: + .ascii "PLLCFGR\000" .LASF239: .ascii "__FLT32X_MIN__ 2.2250738585072014e-308F32x\000" +.LASF918: + .ascii "FLASH_ACR_LATENCY_BIT 0\000" .LASF218: .ascii "__FLT64_MAX_EXP__ 1024\000" .LASF653: @@ -4766,7 +5235,7 @@ main: .ascii "___int32_t_defined 1\000" .LASF83: .ascii "__INT_WIDTH__ 32\000" -.LASF929: +.LASF948: .ascii "APB2RSTR\000" .LASF409: .ascii "__ARM_ARCH_PROFILE\000" @@ -4816,15 +5285,15 @@ main: .ascii "__ARM_NEON_FP\000" .LASF280: .ascii "__LLFRACT_EPSILON__ 0x1P-63LLR\000" -.LASF941: +.LASF960: .ascii "APB2LPENR\000" .LASF820: .ascii "SCNiFAST64 __SCN64FAST(i)\000" -.LASF960: +.LASF983: .ascii "spin\000" .LASF683: .ascii "SCNu8 __SCN8(u)\000" -.LASF961: +.LASF984: .ascii "count\000" .LASF261: .ascii "__UFRACT_FBIT__ 16\000" @@ -4839,16 +5308,19 @@ main: .ascii "__FLOAT_TYPE float\000" .LASF185: .ascii "__LDBL_MAX_10_EXP__ 308\000" +.LASF920: + .ascii "FLASH_ACR_LATENCY(latency) ((latency & FLASH_ACR_LA" + .ascii "TENCY_MASK) << FLASH_ACR_LATENCY_BIT)\000" .LASF175: .ascii "__DBL_DENORM_MIN__ ((double)4.9406564584124654e-324" .ascii "L)\000" .LASF607: .ascii "INT64_MAX (__INT64_MAX__)\000" -.LASF920: +.LASF939: .ascii "unsigned int\000" -.LASF860: +.LASF857: .ascii "RCC_CR_HSERDY_BIT 17\000" -.LASF903: +.LASF904: .ascii "GPIO_PORT_OFFSET (0x400U)\000" .LASF459: .ascii "__NEWLIB_MINOR__ 3\000" @@ -4862,6 +5334,8 @@ main: .ascii "PRIiFAST16 __PRI16FAST(i)\000" .LASF292: .ascii "__USACCUM_IBIT__ 8\000" +.LASF914: + .ascii "FLASH_ACR_DCEN_ENABLE (1 <> 8)\000" .LASF198: .ascii "__FLT32_DIG__ 6\000" -.LASF885: +.LASF884: .ascii "RCC_CFGR_PPRE1_MASK (0b111)\000" .LASF645: .ascii "UINTMAX_C(x) __UINTMAX_C(x)\000" @@ -5058,17 +5540,17 @@ main: .ascii "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1\000" .LASF733: .ascii "SCNuLEAST16 __SCN16LEAST(u)\000" -.LASF928: +.LASF947: .ascii "APB1RSTR\000" .LASF298: .ascii "__ACCUM_MIN__ (-0X1P15K-0X1P15K)\000" .LASF393: .ascii "__ARM_FEATURE_CRYPTO\000" -.LASF934: +.LASF953: .ascii "APB1ENR\000" .LASF741: .ascii "SCNdFAST16 __SCN16FAST(d)\000" -.LASF868: +.LASF867: .ascii "RCC_PLLCFGR_PLLQ(q) ((q & RCC_PLLCFGR_PLLQ_MASK) <<" .ascii " RCC_PLLCFGR_PLLQ_BIT)\000" .LASF787: @@ -5089,18 +5571,18 @@ main: .ascii "__NEWLIB_PATCHLEVEL__ 0\000" .LASF26: .ascii "__ORDER_LITTLE_ENDIAN__ 1234\000" -.LASF870: +.LASF869: .ascii "RCC_PLLCFGR_PLLSRC_HSE (1 << RCC_PLLCFGR_PLLSRC_BIT" .ascii ")\000" .LASF155: .ascii "__FLT_NORM_MAX__ 3.4028234663852886e+38F\000" -.LASF919: +.LASF938: .ascii "long long unsigned int\000" .LASF611: .ascii "UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)\000" .LASF150: .ascii "__FLT_MIN_10_EXP__ (-37)\000" -.LASF891: +.LASF890: .ascii "RCC_CFGR_SWS_MASK (0b11)\000" .LASF312: .ascii "__ULACCUM_IBIT__ 32\000" @@ -5134,11 +5616,13 @@ main: .ascii "__SACCUM_MIN__ (-0X1P7HK-0X1P7HK)\000" .LASF274: .ascii "__ULFRACT_MAX__ 0XFFFFFFFFP-32ULR\000" -.LASF876: +.LASF875: .ascii "RCC_PLLCFGR_PLLN(n) ((n & RCC_PLLCFGR_PLLN_MASK) <<" .ascii " RCC_PLLCFGR_PLLN_BIT)\000" .LASF56: .ascii "__UINT_LEAST16_TYPE__ short unsigned int\000" +.LASF924: + .ascii "PWR_SCALE3 (0b11)\000" .LASF573: .ascii "_INTMAX_T_DECLARED \000" .LASF309: @@ -5203,7 +5687,9 @@ main: .ascii "PRIoMAX __PRIMAX(o)\000" .LASF747: .ascii "__SCN32(x) __INT32 __STRINGIFY(x)\000" -.LASF948: +.LASF919: + .ascii "FLASH_ACR_LATENCY_MASK (0b1111)\000" +.LASF967: .ascii "GPIO_MODE_INPUT\000" .LASF743: .ascii "SCNoFAST16 __SCN16FAST(o)\000" @@ -5261,7 +5747,7 @@ main: .ascii "__UINT_LEAST32_TYPE__ long unsigned int\000" .LASF405: .ascii "__ARM_FEATURE_NUMERIC_MAXMIN\000" -.LASF902: +.LASF903: .ascii "GPIO_BASE_ADDR (0x40020000U)\000" .LASF38: .ascii "__INTMAX_TYPE__ long long int\000" @@ -5271,7 +5757,7 @@ main: .ascii "__ARM_ARCH_7EM__ 1\000" .LASF428: .ascii "__ARM_FEATURE_FP16_SCALAR_ARITHMETIC\000" -.LASF931: +.LASF950: .ascii "AHB1ENR\000" .LASF295: .ascii "__USACCUM_EPSILON__ 0x1P-8UHK\000" @@ -5311,11 +5797,11 @@ main: .ascii "__DBL_DIG__ 15\000" .LASF275: .ascii "__ULFRACT_EPSILON__ 0x1P-32ULR\000" -.LASF926: +.LASF945: .ascii "AHB2RSTR\000" .LASF671: .ascii "__SCN8(x) __INT8 __STRINGIFY(x)\000" -.LASF883: +.LASF882: .ascii "RCC_CFGR_PPRE2_MASK (0b111)\000" .LASF23: .ascii "__SIZEOF_SIZE_T__ 4\000" @@ -5333,15 +5819,15 @@ main: .ascii "__LDBL_MIN__ 2.2250738585072014e-308L\000" .LASF445: .ascii "__ARM_FEATURE_CDE\000" -.LASF297: - .ascii "__ACCUM_IBIT__ 16\000" +.LASF973: + .ascii "KEYR\000" .LASF716: .ascii "PRIu16 __PRI16(u)\000" .LASF509: .ascii "unsigned\000" .LASF381: .ascii "__GCC_DESTRUCTIVE_SIZE 64\000" -.LASF912: +.LASF931: .ascii "short int\000" .LASF835: .ascii "SCNuMAX __SCNMAX(u)\000" @@ -5351,7 +5837,7 @@ main: .ascii "__UDA_IBIT__ 32\000" .LASF534: .ascii "__LEAST16 \"h\"\000" -.LASF878: +.LASF877: .ascii "RCC_PLLCFGR_PLLM_MASK (0b111111)\000" .LASF586: .ascii "INTPTR_MAX (__INTPTR_MAX__)\000" @@ -5365,7 +5851,7 @@ main: .ascii "_ATTRIBUTE(attrs) __attribute__ (attrs)\000" .LASF443: .ascii "__ARM_FEATURE_COPROC\000" -.LASF951: +.LASF970: .ascii "GPIO_MODE_ANALOG\000" .LASF177: .ascii "__DBL_HAS_INFINITY__ 1\000" @@ -5375,6 +5861,8 @@ main: .ascii "UINT64_MAX (__UINT64_MAX__)\000" .LASF471: .ascii "_RETARGETABLE_LOCKING 1\000" +.LASF913: + .ascii "FLASH_ACR_DCEN_BIT 10\000" .LASF453: .ascii "__USES_INITFINI__ 1\000" .LASF637: @@ -5397,7 +5885,7 @@ main: .ascii "__INT16_MAX__ 0x7fff\000" .LASF478: .ascii "__SYS_CONFIG_H__ \000" -.LASF877: +.LASF876: .ascii "RCC_PLLCFGR_PLLM_BIT 0\000" .LASF8: .ascii "__VERSION__ \"12.3.1 20230626\"\000" @@ -5433,7 +5921,7 @@ main: .ascii "PRIdMAX __PRIMAX(d)\000" .LASF388: .ascii "__SIZEOF_WINT_T__ 4\000" -.LASF882: +.LASF881: .ascii "RCC_CFGR_PPRE2_BIT 13\000" .LASF782: .ascii "SCNoFAST32 __SCN32FAST(o)\000" @@ -5447,7 +5935,7 @@ main: .ascii "PRIXFAST8 __PRI8FAST(X)\000" .LASF308: .ascii "__LACCUM_MIN__ (-0X1P31LK-0X1P31LK)\000" -.LASF957: +.LASF980: .ascii "src/main.c\000" .LASF126: .ascii "__INT_FAST8_MAX__ 0x7fffffff\000" @@ -5489,7 +5977,7 @@ main: .ascii "__GCC_CONSTRUCTIVE_SIZE 64\000" .LASF664: .ascii "_BSD_WCHAR_T_\000" -.LASF946: +.LASF965: .ascii "PLLI2SCFGR\000" .LASF277: .ascii "__LLFRACT_IBIT__ 0\000" @@ -5499,18 +5987,22 @@ main: .ascii "PRIx32 __PRI32(x)\000" .LASF278: .ascii "__LLFRACT_MIN__ (-0.5LLR-0.5LLR)\000" -.LASF922: +.LASF941: .ascii "uint32_t\000" -.LASF874: +.LASF873: .ascii "RCC_PLLCFGR_PLLN_BIT 6\000" .LASF689: .ascii "PRIxLEAST8 __PRI8LEAST(x)\000" .LASF506: .ascii "_SYS__INTSUP_H \000" +.LASF975: + .ascii "OPTCR\000" .LASF290: .ascii "__SACCUM_EPSILON__ 0x1P-7HK\000" .LASF415: .ascii "__GCC_ASM_FLAG_OUTPUTS__ 1\000" +.LASF911: + .ascii "FLASH_BASE_ADDR (0x40023C00U)\000" .LASF745: .ascii "SCNxFAST16 __SCN16FAST(x)\000" .LASF470: @@ -5535,7 +6027,7 @@ main: .ascii "__LDBL_DIG__ 15\000" .LASF89: .ascii "__SIZE_WIDTH__ 32\000" -.LASF872: +.LASF871: .ascii "RCC_PLLCFGR_PLLP_MASK (0b11)\000" .LASF480: .ascii "_SUPPORTS_ERREXCEPT \000" @@ -5551,13 +6043,13 @@ main: .ascii "__INT_LEAST16_TYPE__ short int\000" .LASF159: .ascii "__FLT_HAS_DENORM__ 1\000" -.LASF907: +.LASF908: .ascii "PINNUM(pin) (pin & 0b1111)\000" .LASF768: .ascii "PRIXLEAST32 __PRI32LEAST(X)\000" .LASF171: .ascii "__DBL_MAX__ ((double)1.7976931348623157e+308L)\000" -.LASF913: +.LASF932: .ascii "short unsigned int\000" .LASF276: .ascii "__LLFRACT_FBIT__ 63\000" @@ -5571,17 +6063,21 @@ main: .ascii "PRIXLEAST8 __PRI8LEAST(X)\000" .LASF328: .ascii "__HQ_FBIT__ 15\000" -.LASF901: +.LASF902: .ascii "__bool_true_false_are_defined 1\000" -.LASF904: +.LASF905: .ascii "GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADD" .ascii "R + (GPIO_PORT_OFFSET * port)))\000" .LASF798: .ascii "SCNi64 __SCN64(i)\000" +.LASF861: + .ascii "RCC_CR_HSIRDY_BIT 1\000" .LASF80: .ascii "__SIZE_MAX__ 0xffffffffU\000" .LASF818: .ascii "PRIXFAST64 __PRI64FAST(X)\000" +.LASF910: + .ascii "FLASH_H_ \000" .LASF412: .ascii "__ARM_ARCH\000" .LASF590: @@ -5598,7 +6094,7 @@ main: .ascii "SCNuFAST32 __SCN32FAST(u)\000" .LASF522: .ascii "long +4\000" -.LASF925: +.LASF944: .ascii "AHB1RSTR\000" .LASF723: .ascii "SCNx16 __SCN16(x)\000" @@ -5650,7 +6146,7 @@ main: .ascii "INT_FAST32_MAX (__INT_FAST32_MAX__)\000" .LASF205: .ascii "__FLT32_NORM_MAX__ 3.4028234663852886e+38F32\000" -.LASF898: +.LASF899: .ascii "bool _Bool\000" .LASF698: .ascii "PRIoFAST8 __PRI8FAST(o)\000" @@ -5662,7 +6158,7 @@ main: .ascii "__ULFRACT_IBIT__ 0\000" .LASF852: .ascii "RCC ((struct rcc *) RCC_BASE_ADDR)\000" -.LASF888: +.LASF887: .ascii "RCC_CFGR_HPRE_MASK (0b1111)\000" .LASF72: .ascii "__INT_MAX__ 0x7fffffff\000" @@ -5670,6 +6166,8 @@ main: .ascii "__INT_LEAST64_TYPE__ long long int\000" .LASF103: .ascii "__UINT16_MAX__ 0xffff\000" +.LASF922: + .ascii "PWR_BASE_ADDR (0x40007000U)\000" .LASF446: .ascii "__ARM_FEATURE_CDE_COPROC\000" .LASF765: diff --git a/build/main.i b/build/main.i index 8675bbd..ed3b075 100644 --- a/build/main.i +++ b/build/main.i @@ -2012,14 +2012,9 @@ struct rcc { #define RCC_CR_PLLON_BIT 24 -#define RCC_CR_PLLON_OFF (0 << RCC_CR_PLLON_BIT) #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) -#define RCC_CR_HSEBYP_BIT 18 -#define RCC_CR_HSEBYP (1 << RCC_CR_HSEBYP_BIT) - - #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -2027,8 +2022,13 @@ struct rcc { #define RCC_CR_HSEON_BIT 16 #define RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT) + +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT) + + #define RCC_CR_HSION_BIT 0 -#define RCC_CR_HSION_OFF (0 << RCC_CR_HSION_BIT) +#define RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT) #define RCC_PLLCFGR_PLLQ_BIT 24 @@ -2081,6 +2081,10 @@ struct rcc { #define RCC_CFGR_SW_BIT 0 #define RCC_CFGR_SW_MASK (0b11) #define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) + + +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) # 3 "src/main.c" 2 # 1 "src/gpio.h" 1 @@ -2140,28 +2144,150 @@ void gpio_write(uint16_t pin, # 40 "src/gpio.h" val); # 4 "src/main.c" 2 +# 1 "src/flash.h" 1 + +#define FLASH_H_ + + + +struct flash { + volatile uint32_t ACR; + volatile uint32_t KEYR; + volatile uint32_t OPTKEYR; + volatile uint32_t SR; + volatile uint32_t CR; + volatile uint32_t OPTCR; +}; + +#define FLASH_BASE_ADDR (0x40023C00U) +#define FLASH ((struct flash *) FLASH_BASE_ADDR) + + + +#define FLASH_ACR_DCEN_BIT 10 +#define FLASH_ACR_DCEN_ENABLE (1 <APB1ENR |= (1 << 28); + + + ((struct pwr *) (0x40007000U))->CR &= ~((0b11) << 14); + ((struct pwr *) (0x40007000U))->CR |= ((0b11) << 14); + + + ((struct rcc *) (0x40023800U))->CR |= (1 << 16); + + + + while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17))); + + + + ((struct rcc *) (0x40023800U))->CR &= ~(1 << 24); + + + ((struct rcc *) (0x40023800U))->PLLCFGR |= (1 << 22); + + + ((struct rcc *) (0x40023800U))->PLLCFGR |= ((25 & (0b111111)) << 0) | ((196 & (0b111111111)) << 6) | ((2 & (0b11)) << 16) | ((4 & (0b1111)) << 24); + + + ((struct rcc *) (0x40023800U))->CFGR &= ~((0b1111) << 4); + ((struct rcc *) (0x40023800U))->CFGR |= (0 << 4); + + + ((struct rcc *) (0x40023800U))->CFGR &= ~((0b111) << 10); + ((struct rcc *) (0x40023800U))->CFGR |= ((0b100) << 10); + + + ((struct rcc *) (0x40023800U))->CFGR &= ~((0b111) << 13); + ((struct rcc *) (0x40023800U))->CFGR |= (0 << 13); + + + ((struct rcc *) (0x40023800U))->CR |= (1 << 24); + + + + while (!(((struct rcc *) (0x40023800U))->CR & (1 << 17))); + + + ((struct flash *) (0x40023C00U))->ACR |= (1 <<10); + ((struct flash *) (0x40023C00U))->ACR |= (1 <<9); + + + ((struct flash *) (0x40023C00U))->ACR &= ~((0b1111) << 0); + ((struct rcc *) (0x40023800U))->CFGR |= ((0x0111) << 0); + + + ((struct rcc *) (0x40023800U))->CFGR &= ~((0b11) << 0); + ((struct rcc *) (0x40023800U))->CFGR |= ((0b10) << 0); + + + + while (((((struct rcc *) (0x40023800U))->CFGR >> 2) & (0b11)) != (0b10)); + + + ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); +} + static inline void spin(volatile uint32_t count) { while (count--) (void) 0; } int main(void) { + (void) system_clock_init(); + uint16_t led = (((('C') - 'A') << 8) | 13); ((struct rcc *) (0x40023800U))->AHB1ENR |= (1 << (led >> 8)); gpio_set_mode(led, GPIO_MODE_OUTPUT); for (;;) { gpio_write(led, -# 16 "src/main.c" 3 4 +# 84 "src/main.c" 3 4 ((_Bool)+1u) -# 16 "src/main.c" +# 84 "src/main.c" ); spin(999999); gpio_write(led, -# 18 "src/main.c" 3 4 +# 86 "src/main.c" 3 4 ((_Bool)+0u) -# 18 "src/main.c" +# 86 "src/main.c" ); spin(999999); }; diff --git a/build/main.o b/build/main.o index 8c3c42b..12ff0e9 100644 Binary files a/build/main.o and b/build/main.o differ diff --git a/src/flash.h b/src/flash.h index 780cee5..aa17358 100644 --- a/src/flash.h +++ b/src/flash.h @@ -17,7 +17,6 @@ struct flash { // ACR Register // Data cache enable - #define FLASH_ACR_DCEN_BIT 10 #define FLASH_ACR_DCEN_ENABLE (1 < #include "rcc.h" #include "gpio.h" +#include "flash.h" +#include "pwr.h" #define exit 42 +static void system_clock_init(void) { + // Power on clock for PLL + RCC->APB1ENR |= RCC_APB1ENR_PWREN_CLOCK_ENABLE; + + // Set voltage scaling to "high" + PWR->CR &= ~(PWR_CR_VOS_MASK << PWR_CR_VOS_BIT); + PWR->CR |= (PWR_SCALE3 << PWR_CR_VOS_BIT); + + // Turn on HSE + RCC->CR |= RCC_CR_HSEON_ON; + + // Wait indefinitely for HSE to be ready + // TODO indicate error/timeout somehow? + while (!(RCC->CR & RCC_CR_HSERDY_READY)); + + // Disable PLL before changing settings as documentation state + // "These bits should be written only if PLL is disabled." + RCC->CR &= ~RCC_CR_PLLON_ON; + + // Set HSE as PLL source + RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE; + + // Settings to achieve system clock of 96Mhz + RCC->PLLCFGR |= RCC_PLLCFGR_PLLM(25) | RCC_PLLCFGR_PLLN(196) | RCC_PLLCFGR_PLLP(2) | RCC_PLLCFGR_PLLQ(4); + + // Set AHB prescalar to /1 + RCC->CFGR &= ~(RCC_CFGR_HPRE_MASK << RCC_CFGR_HPRE_BIT); + RCC->CFGR |= (RCC_CFGR_HPRE_DIV_NONE << RCC_CFGR_HPRE_BIT); + + // Set APB1 prescalar to /2 + RCC->CFGR &= ~(RCC_CFGR_PPRE1_MASK << RCC_CFGR_PPRE1_BIT); + RCC->CFGR |= (RCC_CFGR_PPRE_DIV_2 << RCC_CFGR_PPRE1_BIT); + + // Set APB2 prescalar to /1 + RCC->CFGR &= ~(RCC_CFGR_PPRE2_MASK << RCC_CFGR_PPRE2_BIT); + RCC->CFGR |= (RCC_CFGR_PPRE_DIV_NONE << RCC_CFGR_PPRE2_BIT); + + // Turn PLL back on + RCC->CR |= RCC_CR_PLLON_ON; + + // Wait indefinitely for PLL to be ready + // TODO indicate error/timeout somehow? + while (!(RCC->CR & RCC_CR_HSERDY_READY)); + + // Enable caching of instructions and data + FLASH->ACR |= FLASH_ACR_DCEN_ENABLE; + FLASH->ACR |= FLASH_ACR_ICEN_ENABLE; + + // Set latency to be 3 wait states (TODO: understand why exactly 3) + FLASH->ACR &= ~(FLASH_ACR_LATENCY_MASK << FLASH_ACR_LATENCY_BIT); + RCC->CFGR |= (FLASH_ACR_LATENCY_3_WAIT_STATES << FLASH_ACR_LATENCY_BIT); + + // Use PLL as system clock + RCC->CFGR &= ~(RCC_CFGR_SW_MASK << RCC_CFGR_SW_BIT); + RCC->CFGR |= (RCC_CFGR_SW_PLL << RCC_CFGR_SW_BIT); + + // Wait indefinitely for PLL clock to be selected + // TODO indicate error/timeout somehow? + while (((RCC->CFGR >> RCC_CFGR_SWS_BIT) & RCC_CFGR_SWS_MASK) != RCC_CFGR_SWS_PLL); + + // Turn off HSI (which is on by default) + RCC->CR &= ~RCC_CR_HSION_ON; +} + static inline void spin(volatile uint32_t count) { while (count--) (void) 0; } int main(void) { + (void) system_clock_init(); + uint16_t led = PIN('C', 13); // Blue LED RCC->AHB1ENR |= BIT(PINPORT(led)); // Enable GPIO clock for LED gpio_set_mode(led, GPIO_MODE_OUTPUT); // Set blue LED to output mode diff --git a/src/pwr.h b/src/pwr.h new file mode 100644 index 0000000..3bbd6d2 --- /dev/null +++ b/src/pwr.h @@ -0,0 +1,22 @@ +#ifndef PWR_H_ +#define PWR_H_ + +#include + +struct pwr { + volatile uint32_t CR; // Power control register + volatile uint32_t CSR; // Power control/status registe +}; + +#define PWR_BASE_ADDR (0x40007000U) +#define PWR ((struct pwr *) PWR_BASE_ADDR) + +// Power control register +#define PWR_SCALE3 (0b11) + +// Regulator voltage scaling output selection +#define PWR_CR_VOS_BIT 14 // Bits [15:14] +#define PWR_CR_VOS_MASK (0b11) +#define PWR_CR_VOS(scale) ((scale & PWR_CR_VOS_MASK) << PWR_CR_VOS_BIT) + +#endif diff --git a/src/rcc.h b/src/rcc.h index bfd657e..5fcb8b5 100644 --- a/src/rcc.h +++ b/src/rcc.h @@ -44,13 +44,8 @@ struct rcc { // PLL toggle #define RCC_CR_PLLON_BIT 24 -#define RCC_CR_PLLON_OFF (0 << RCC_CR_PLLON_BIT) #define RCC_CR_PLLON_ON (1 << RCC_CR_PLLON_BIT) -// HSE clock bypass -#define RCC_CR_HSEBYP_BIT 18 -#define RCC_CR_HSEBYP (1 << RCC_CR_HSEBYP_BIT) - // HSE clock ready flag #define RCC_CR_HSERDY_BIT 17 #define RCC_CR_HSERDY_READY (1 << RCC_CR_HSERDY_BIT) @@ -59,8 +54,13 @@ struct rcc { #define RCC_CR_HSEON_BIT 16 #define RCC_CR_HSEON_ON (1 << RCC_CR_HSEON_BIT) +// HSI clock ready flag +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSIRDY_READY (1 << RCC_CR_HSIRDY_BIT) + +// HSI clock enable #define RCC_CR_HSION_BIT 0 -#define RCC_CR_HSION_OFF (0 << RCC_CR_HSION_BIT) +#define RCC_CR_HSION_ON (1 << RCC_CR_HSION_BIT) // PLLCFGR Register #define RCC_PLLCFGR_PLLQ_BIT 24 // Bits [27:24] @@ -114,4 +114,8 @@ struct rcc { #define RCC_CFGR_SW_MASK (0b11) #define RCC_CFGR_SW(clock) ((clock & RCC_CFGR_SW_MASK) << RCC_CFGR_SW_BIT) +// APB1ENR Register +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_PWREN_CLOCK_ENABLE (1 << RCC_APB1ENR_PWREN_BIT) + #endif