From 6caccce7513c4742465fc364f9e5ae0a6b767f2a Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 12 Aug 2024 21:54:29 +0200 Subject: [PATCH] wip --- build/final.elf | Bin 61264 -> 61884 bytes build/final.elf.map | 280 ++++++++++++------------- build/main.S | 494 ++++++++++++++++++++++++-------------------- build/main.i | 15 +- build/main.o | Bin 50460 -> 50820 bytes build/usart.S | 469 +++++++++++++++++++++++++++-------------- build/usart.i | 23 ++- build/usart.o | Bin 47188 -> 47848 bytes src/main.c | 5 +- src/usart.c | 12 +- src/usart.h | 11 + 11 files changed, 780 insertions(+), 529 deletions(-) diff --git a/build/final.elf b/build/final.elf index 0e569e0ccd648b086bbc6490c36e0c43fa1e562f..64ba45f9d4a3ddeaae627af19f178299fd9816f9 100755 GIT binary patch delta 6008 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 |= (1 << (led >> 8)); @@ -2417,6 +2428,8 @@ int main(void) { led_on = !led_on; gpio_write(led, led_on); + usart2_write_byte('a'); + counter = ((struct timer *) (0x40000800U))->CNT; } }; diff --git a/build/main.o b/build/main.o index 22ca0117314eb8bf57c8e8085404a7ab96c5a695..79371523de9fe81b7706c85ff380249d4ea3da88 100644 GIT binary patch delta 8411 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 delta 8136 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 IzzRx(0C1sivj6}9 diff --git a/build/usart.S b/build/usart.S index 367db15..8f5b9b4 100644 --- a/build/usart.S +++ b/build/usart.S @@ -230,6 +230,64 @@ usart2_start: .cfi_endproc .LFE1: .size usart2_start, .-usart2_start + .section .text.usart2_write_byte,"ax",%progbits + .align 1 + .global usart2_write_byte + .syntax unified + .thumb + .thumb_func + .type usart2_write_byte, %function +usart2_write_byte: +.LFB2: + .loc 1 65 32 + .cfi_startproc + @ args = 0, pretend = 0, frame = 8 + @ frame_needed = 1, uses_anonymous_args = 0 + @ link register save eliminated. + push {r7} + .cfi_def_cfa_offset 4 + .cfi_offset 7, -4 + sub sp, sp, #12 + .cfi_def_cfa_offset 16 + add r7, sp, #0 + .cfi_def_cfa_register 7 + mov r3, r0 + strb r3, [r7, #7] + .loc 1 67 35 + ldr r2, .L9 + .loc 1 67 40 + ldrb r3, [r7, #7] @ zero_extendqisi2 + str r3, [r2, #4] + .loc 1 70 9 + nop +.L8: + .loc 1 70 43 discriminator 1 + ldr r3, .L9 + ldr r3, [r3] + .loc 1 70 48 discriminator 1 + and r3, r3, #128 + .loc 1 70 60 discriminator 1 + cmp r3, #0 + beq .L8 + .loc 1 71 1 + nop + nop + adds r7, r7, #12 + .cfi_def_cfa_offset 4 + mov sp, r7 + .cfi_def_cfa_register 13 + @ sp needed + ldr r7, [sp], #4 + .cfi_restore 7 + .cfi_def_cfa_offset 0 + bx lr +.L10: + .align 2 +.L9: + .word 1073759232 + .cfi_endproc +.LFE2: + .size usart2_write_byte, .-usart2_write_byte .text .Letext0: .file 2 "/nix/store/yr89i11mszv2az19r26l372zgaiivj1c-gcc-arm-embedded-12.3.rel1/arm-none-eabi/include/machine/_default_types.h" @@ -239,16 +297,16 @@ usart2_start: .file 6 "src/usart.h" .section .debug_info,"",%progbits .Ldebug_info0: - .4byte 0x300 + .4byte 0x32b .2byte 0x5 .byte 0x1 .byte 0x4 .4byte .Ldebug_abbrev0 .uleb128 0x8 - .4byte .LASF994 + .4byte .LASF998 .byte 0x1d - .4byte .LASF995 - .4byte .LASF996 + .4byte .LASF999 + .4byte .LASF1000 .4byte .LLRL0 .4byte 0 .4byte .Ldebug_line0 @@ -256,25 +314,25 @@ usart2_start: .uleb128 0x3 .byte 0x1 .byte 0x6 - .4byte .LASF945 + .4byte .LASF949 .uleb128 0x3 .byte 0x1 .byte 0x8 - .4byte .LASF946 + .4byte .LASF950 .uleb128 0x3 .byte 0x2 .byte 0x5 - .4byte .LASF947 + .4byte .LASF951 .uleb128 0x3 .byte 0x2 .byte 0x7 - .4byte .LASF948 + .4byte .LASF952 .uleb128 0x3 .byte 0x4 .byte 0x5 - .4byte .LASF949 + .4byte .LASF953 .uleb128 0x4 - .4byte .LASF954 + .4byte .LASF958 .byte 0x2 .byte 0x4f .byte 0x1b @@ -282,15 +340,15 @@ usart2_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF950 + .4byte .LASF954 .uleb128 0x3 .byte 0x8 .byte 0x5 - .4byte .LASF951 + .4byte .LASF955 .uleb128 0x3 .byte 0x8 .byte 0x7 - .4byte .LASF952 + .4byte .LASF956 .uleb128 0x9 .byte 0x4 .byte 0x5 @@ -298,9 +356,9 @@ usart2_start: .uleb128 0x3 .byte 0x4 .byte 0x7 - .4byte .LASF953 + .4byte .LASF957 .uleb128 0x4 - .4byte .LASF955 + .4byte .LASF959 .byte 0x3 .byte 0x30 .byte 0x14 @@ -321,13 +379,13 @@ usart2_start: .4byte 0x88 .byte 0 .uleb128 0x1 - .4byte .LASF956 + .4byte .LASF960 .byte 0x4 .byte 0x8 .4byte 0x88 .byte 0x4 .uleb128 0x1 - .4byte .LASF957 + .4byte .LASF961 .byte 0x4 .byte 0x9 .4byte 0x88 @@ -339,115 +397,115 @@ usart2_start: .4byte 0x88 .byte 0xc .uleb128 0x1 - .4byte .LASF958 + .4byte .LASF962 .byte 0x4 .byte 0xb .4byte 0x88 .byte 0x10 .uleb128 0x1 - .4byte .LASF959 + .4byte .LASF963 .byte 0x4 .byte 0xc .4byte 0x88 .byte 0x14 .uleb128 0x1 - .4byte .LASF960 + .4byte .LASF964 .byte 0x4 .byte 0xd .4byte 0x1fa .byte 0x18 .uleb128 0x1 - .4byte .LASF961 + .4byte .LASF965 .byte 0x4 .byte 0xe .4byte 0x88 .byte 0x20 .uleb128 0x1 - .4byte .LASF962 + .4byte .LASF966 .byte 0x4 .byte 0xf .4byte 0x88 .byte 0x24 .uleb128 0x1 - .4byte .LASF963 + .4byte .LASF967 .byte 0x4 .byte 0x10 .4byte 0x1fa .byte 0x28 .uleb128 0x1 - .4byte .LASF964 + .4byte .LASF968 .byte 0x4 .byte 0x11 .4byte 0x88 .byte 0x30 .uleb128 0x1 - .4byte .LASF965 + .4byte .LASF969 .byte 0x4 .byte 0x12 .4byte 0x88 .byte 0x34 .uleb128 0x1 - .4byte .LASF966 + .4byte .LASF970 .byte 0x4 .byte 0x13 .4byte 0x1fa .byte 0x38 .uleb128 0x1 - .4byte .LASF967 + .4byte .LASF971 .byte 0x4 .byte 0x14 .4byte 0x88 .byte 0x40 .uleb128 0x1 - .4byte .LASF968 + .4byte .LASF972 .byte 0x4 .byte 0x15 .4byte 0x88 .byte 0x44 .uleb128 0x1 - .4byte .LASF969 + .4byte .LASF973 .byte 0x4 .byte 0x16 .4byte 0x1fa .byte 0x48 .uleb128 0x1 - .4byte .LASF970 + .4byte .LASF974 .byte 0x4 .byte 0x17 .4byte 0x88 .byte 0x50 .uleb128 0x1 - .4byte .LASF971 + .4byte .LASF975 .byte 0x4 .byte 0x18 .4byte 0x88 .byte 0x54 .uleb128 0x1 - .4byte .LASF972 + .4byte .LASF976 .byte 0x4 .byte 0x19 .4byte 0x1fa .byte 0x58 .uleb128 0x1 - .4byte .LASF973 + .4byte .LASF977 .byte 0x4 .byte 0x1a .4byte 0x88 .byte 0x60 .uleb128 0x1 - .4byte .LASF974 + .4byte .LASF978 .byte 0x4 .byte 0x1b .4byte 0x88 .byte 0x64 .uleb128 0x1 - .4byte .LASF975 + .4byte .LASF979 .byte 0x4 .byte 0x1c .4byte 0x1fa .byte 0x68 .uleb128 0x1 - .4byte .LASF976 + .4byte .LASF980 .byte 0x4 .byte 0x1d .4byte 0x88 @@ -459,25 +517,25 @@ usart2_start: .4byte 0x88 .byte 0x74 .uleb128 0x1 - .4byte .LASF977 + .4byte .LASF981 .byte 0x4 .byte 0x1f .4byte 0x1fa .byte 0x78 .uleb128 0x1 - .4byte .LASF978 + .4byte .LASF982 .byte 0x4 .byte 0x20 .4byte 0x88 .byte 0x80 .uleb128 0x1 - .4byte .LASF979 + .4byte .LASF983 .byte 0x4 .byte 0x21 .4byte 0x88 .byte 0x84 .uleb128 0x1 - .4byte .LASF980 + .4byte .LASF984 .byte 0x4 .byte 0x22 .4byte 0x88 @@ -493,31 +551,31 @@ usart2_start: .uleb128 0x5 .4byte 0x1ea .uleb128 0x6 - .4byte .LASF981 + .4byte .LASF985 .byte 0x28 .byte 0x5 .byte 0x7 .4byte 0x284 .uleb128 0x1 - .4byte .LASF982 + .4byte .LASF986 .byte 0x5 .byte 0x8 .4byte 0x88 .byte 0 .uleb128 0x1 - .4byte .LASF983 + .4byte .LASF987 .byte 0x5 .byte 0x9 .4byte 0x88 .byte 0x4 .uleb128 0x1 - .4byte .LASF984 + .4byte .LASF988 .byte 0x5 .byte 0xa .4byte 0x88 .byte 0x8 .uleb128 0x1 - .4byte .LASF985 + .4byte .LASF989 .byte 0x5 .byte 0xb .4byte 0x88 @@ -535,32 +593,32 @@ usart2_start: .4byte 0x88 .byte 0x14 .uleb128 0x1 - .4byte .LASF986 + .4byte .LASF990 .byte 0x5 .byte 0xe .4byte 0x88 .byte 0x18 .uleb128 0x1 - .4byte .LASF987 + .4byte .LASF991 .byte 0x5 .byte 0xf .4byte 0x88 .byte 0x1c .uleb128 0x1 - .4byte .LASF988 + .4byte .LASF992 .byte 0x5 .byte 0x10 .4byte 0x88 .byte 0x20 .uleb128 0x1 - .4byte .LASF989 + .4byte .LASF993 .byte 0x5 .byte 0x11 .4byte 0x88 .byte 0x24 .byte 0 .uleb128 0x6 - .4byte .LASF990 + .4byte .LASF994 .byte 0x1c .byte 0x6 .byte 0x6 @@ -602,21 +660,45 @@ usart2_start: .4byte 0x88 .byte 0x14 .uleb128 0x1 - .4byte .LASF991 + .4byte .LASF995 .byte 0x6 .byte 0xd .4byte 0x88 .byte 0x18 .byte 0 + .uleb128 0xd + .4byte .LASF1001 + .byte 0x1 + .byte 0x41 + .byte 0x6 + .4byte .LFB2 + .4byte .LFE2-.LFB2 + .uleb128 0x1 + .byte 0x9c + .4byte 0x307 + .uleb128 0xe + .ascii "c\000" + .byte 0x1 + .byte 0x41 + .byte 0x1d + .4byte 0x307 + .uleb128 0x2 + .byte 0x91 + .sleb128 -9 + .byte 0 + .uleb128 0x3 + .byte 0x1 + .byte 0x8 + .4byte .LASF511 .uleb128 0x7 - .4byte .LASF992 + .4byte .LASF996 .byte 0x3d .4byte .LFB1 .4byte .LFE1-.LFB1 .uleb128 0x1 .byte 0x9c .uleb128 0x7 - .4byte .LASF993 + .4byte .LASF997 .byte 0x5 .4byte .LFB0 .4byte .LFE0-.LFB0 @@ -806,9 +888,53 @@ usart2_start: .uleb128 0xb .byte 0 .byte 0 + .uleb128 0xd + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .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 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xe + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x39 + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 .byte 0 .section .debug_aranges,"",%progbits - .4byte 0x24 + .4byte 0x2c .2byte 0x2 .4byte .Ldebug_info0 .byte 0x4 @@ -819,6 +945,8 @@ usart2_start: .4byte .LFE0-.LFB0 .4byte .LFB1 .4byte .LFE1-.LFB1 + .4byte .LFB2 + .4byte .LFE2-.LFB2 .4byte 0 .4byte 0 .section .debug_rnglists,"",%progbits @@ -836,6 +964,9 @@ usart2_start: .byte 0x7 .4byte .LFB1 .uleb128 .LFE1-.LFB1 + .byte 0x7 + .4byte .LFB2 + .uleb128 .LFE2-.LFB2 .byte 0 .Ldebug_ranges3: .section .debug_macro,"",%progbits @@ -3852,7 +3983,7 @@ usart2_start: .uleb128 0x38 .4byte .LASF929 .byte 0 - .section .debug_macro,"G",%progbits,wm4.usart.h.2.0debbac628af0f73f2055baa828e03f0,comdat + .section .debug_macro,"G",%progbits,wm4.usart.h.2.499ef099adc8b232d514889834b2ea6a,comdat .Ldebug_macro17: .2byte 0x5 .byte 0 @@ -3878,29 +4009,41 @@ usart2_start: .uleb128 0x1a .4byte .LASF936 .byte 0x5 - .uleb128 0x1d + .uleb128 0x1e .4byte .LASF937 .byte 0x5 - .uleb128 0x1e + .uleb128 0x1f .4byte .LASF938 .byte 0x5 - .uleb128 0x21 + .uleb128 0x22 .4byte .LASF939 .byte 0x5 - .uleb128 0x22 + .uleb128 0x23 .4byte .LASF940 .byte 0x5 - .uleb128 0x25 + .uleb128 0x26 .4byte .LASF941 .byte 0x5 - .uleb128 0x26 + .uleb128 0x27 .4byte .LASF942 .byte 0x5 - .uleb128 0x28 + .uleb128 0x2a .4byte .LASF943 .byte 0x5 - .uleb128 0x29 + .uleb128 0x2b .4byte .LASF944 + .byte 0x5 + .uleb128 0x2e + .4byte .LASF945 + .byte 0x5 + .uleb128 0x2f + .4byte .LASF946 + .byte 0x5 + .uleb128 0x31 + .4byte .LASF947 + .byte 0x5 + .uleb128 0x32 + .4byte .LASF948 .byte 0 .section .debug_line,"",%progbits .Ldebug_line0: @@ -3915,7 +4058,7 @@ usart2_start: .ascii "__UHA_FBIT__ 8\000" .LASF815: .ascii "PRIiFAST64 __PRI64FAST(i)\000" -.LASF946: +.LASF950: .ascii "unsigned char\000" .LASF225: .ascii "__FLT64_DENORM_MIN__ 4.9406564584124654e-324F64\000" @@ -3943,7 +4086,7 @@ usart2_start: .ascii "__PTRDIFF_MAX__ 0x7fffffff\000" .LASF542: .ascii "_LONG_DOUBLE long double\000" -.LASF981: +.LASF985: .ascii "gpio\000" .LASF592: .ascii "INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)\000" @@ -3967,7 +4110,7 @@ usart2_start: .ascii "__int20__\000" .LASF901: .ascii "RCC_APB1ENR_TIM4_BIT 2\000" -.LASF944: +.LASF948: .ascii "USART_BRR_FRACTION_MASK (0b111)\000" .LASF18: .ascii "__SIZEOF_LONG_LONG__ 8\000" @@ -4010,6 +4153,8 @@ usart2_start: .ascii "PRIo16 __PRI16(o)\000" .LASF203: .ascii "__FLT32_DECIMAL_DIG__ 9\000" +.LASF379: + .ascii "__GCC_ATOMIC_LLONG_LOCK_FREE 1\000" .LASF182: .ascii "__LDBL_MIN_EXP__ (-1021)\000" .LASF180: @@ -4040,8 +4185,8 @@ usart2_start: .ascii "SCNiFAST8 __SCN8FAST(i)\000" .LASF909: .ascii "GPIOA_BASE_ADDR (0x40020000U)\000" -.LASF120: - .ascii "__UINT_LEAST16_MAX__ 0xffff\000" +.LASF791: + .ascii "__SCN64FAST(x) __FAST64 __STRINGIFY(x)\000" .LASF617: .ascii "INT_FAST16_MAX (__INT_FAST16_MAX__)\000" .LASF281: @@ -4082,7 +4227,7 @@ usart2_start: .ascii "__need_wchar_t\000" .LASF199: .ascii "__FLT32_MIN_EXP__ (-125)\000" -.LASF994: +.LASF998: .ascii "GNU C2X 12.3.1 20230626 -mcpu=cortex-m4 -mthumb -mf" .ascii "loat-abi=hard -mfpu=fpv4-sp-d16 -march=armv7e-m+fp " .ascii "-g3 -ggdb -O0 -std=c2x -ffunction-sections -fdata-s" @@ -4156,7 +4301,7 @@ usart2_start: .ascii "CC_CFGR_SW_BIT)\000" .LASF134: .ascii "__UINT_FAST8_MAX__ 0xffffffffU\000" -.LASF943: +.LASF947: .ascii "USART_BRR_FRACTION_BIT 0\000" .LASF541: .ascii "_NOTHROW \000" @@ -4182,7 +4327,7 @@ usart2_start: .ascii "__INT64 \"ll\"\000" .LASF138: .ascii "__INTPTR_MAX__ 0x7fffffff\000" -.LASF971: +.LASF975: .ascii "AHB2LPENR\000" .LASF500: .ascii "__RAND_MAX\000" @@ -4225,7 +4370,7 @@ usart2_start: .ascii " RCC_PLLCFGR_PLLP_BIT)\000" .LASF302: .ascii "__UACCUM_IBIT__ 16\000" -.LASF949: +.LASF953: .ascii "long int\000" .LASF720: .ascii "SCNd16 __SCN16(d)\000" @@ -4282,6 +4427,8 @@ usart2_start: .ascii "__ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR\000" .LASF698: .ascii "PRIiFAST8 __PRI8FAST(i)\000" +.LASF936: + .ascii "USART_SR_RXNE_READY (1 <CR1 |= (1 << 15); ((struct usart *) (0x40004400U))->BRR &= ~((0b111111111111) << 4); - ((struct usart *) (0x40004400U))->BRR |= (52 << 4); + ((struct usart *) (0x40004400U))->BRR |= (0x34 << 4); ((struct usart *) (0x40004400U))->BRR &= ~((0b111) << 0); - ((struct usart *) (0x40004400U))->BRR |= (0 << 0); + ((struct usart *) (0x40004400U))->BRR |= (0x0 << 0); ((struct usart *) (0x40004400U))->CR1 |= (1 << 3); @@ -2266,3 +2277,11 @@ void usart2_init(void) { void usart2_start(void) { ((struct usart *) (0x40004400U))->CR1 |= (1 << 13); } + +void usart2_write_byte(char c) { + + ((struct usart *) (0x40004400U))->DR = c; + + + while ((((struct usart *) (0x40004400U))->SR & (1 << 7)) == 0); +} diff --git a/build/usart.o b/build/usart.o index be35d2b39318dcf198eeea8146b9e698cd64c68f..d9bad2b6987e1b97053ac66ac34b3d64edcaefaa 100644 GIT binary patch delta 18938 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 IX;7#D03kmkcmMzZ delta 18680 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 D)su>F diff --git a/src/main.c b/src/main.c index ec063ee..329baf3 100644 --- a/src/main.c +++ b/src/main.c @@ -80,7 +80,7 @@ int main(void) { (void) usart2_init(); (void) tim4_start(); - (void) tim4_start(); + (void) usart2_start(); uint16_t led = PIN('C', 13); // Blue LED RCC->AHB1ENR |= BIT(PINPORT(led)); // Enable GPIO clock for LED @@ -93,8 +93,7 @@ int main(void) { led_on = !led_on; gpio_write(led, led_on); -while ((USART2->ISR & USART_ISR_TC) != USART_ISR_TC); - USART2->TDR = '#'; + usart2_write_byte('a'); counter = TIM4->CNT; } diff --git a/src/usart.c b/src/usart.c index ba79f7f..846bc5a 100644 --- a/src/usart.c +++ b/src/usart.c @@ -49,9 +49,9 @@ void usart2_init(void) { USART2->CR1 |= USART_CR1_OVER8_8; USART2->BRR &= ~(USART_BRR_MANTISSA_MASK << USART_BRR_MANTISSA_BIT); - USART2->BRR |= (52 << USART_BRR_MANTISSA_BIT); + USART2->BRR |= (0x34 << USART_BRR_MANTISSA_BIT); USART2->BRR &= ~(USART_BRR_FRACTION_MASK << USART_BRR_FRACTION_BIT); - USART2->BRR |= (0 << USART_BRR_FRACTION_BIT); + USART2->BRR |= (0x0 << USART_BRR_FRACTION_BIT); // Enable transmitter and receiver USART2->CR1 |= USART_CR1_TE_ENABLE; @@ -61,3 +61,11 @@ void usart2_init(void) { void usart2_start(void) { USART2->CR1 |= USART_CR1_UE_ENABLE; } + +void usart2_write_byte(char c) { + // Send data + USART2->DR = c; + + // Wait indefinitely for transmission to be ready for data + while ((USART2->SR & USART_SR_TXE_TRANSMITTED) == 0); +} diff --git a/src/usart.h b/src/usart.h index 27f3408..873df4e 100644 --- a/src/usart.h +++ b/src/usart.h @@ -16,6 +16,15 @@ struct usart { #define USART2_BASE_ADDR (0x40004400U) #define USART2 ((struct usart *) USART2_BASE_ADDR) +// SR Register +// Transmission data register empty +#define USART_SR_TXE_BIT 7 +#define USART_SR_TXE_TRANSMITTED (1 << USART_SR_TXE_BIT) + +// Read data register not empty +#define USART_SR_RXNE_BIT 5 +#define USART_SR_RXNE_READY (1 <