From 11f469564f3b4df04df146f4e867dbea6d149ee8 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Mon, 30 Dec 2024 11:47:54 +0100 Subject: [PATCH] Turn off `HSI` earlier --- build/final.elf | Bin 55108 -> 55108 bytes build/main.S | 153 ++++++++++++++++++++++++------------------------ build/main.i | 6 +- build/main.o | Bin 48592 -> 48592 bytes src/main.c | 6 +- 5 files changed, 83 insertions(+), 82 deletions(-) diff --git a/build/final.elf b/build/final.elf index cdc8fff42d932b1491b296d84c5c233e0e2b8b06..e6ae9b9d07bbea34512c92474c3b43c177b02eac 100755 GIT binary patch delta 298 zcmX@Ij`_$s<_%>+^~xU@nS~SVy`?kkyqv!@7z-yb?6>ij&S3t+V9cQX^Ma+fbcThO z@`r|E;RG}9=nPYkD(2t>WACU8BTr**VQ23I1Mk@x`d-Q(J}^&C(Dl~wnw>E@LEC$F zhL)G|mj}U<6EwVMXQ+ep1y4>;^`4!f;-&m0!Fh6mlDA?#Sh0e)bcVc_GuRS_{W2iy zKQI)7tOv2BL0XfA6C}N*GbFs6zc3UFCy04VXNYK zfz_suoJHU5)7C2eJ5)Ze^5IV^>7>SneRcKiTL@M%{7 delta 308 zcmX@Ij`_$s<_%>+_0C@!jD-^z_S<_)XE1+ZFlNyHdBMh8I>Xva`9njoaDt_GbcThO z^OpwZ-~==8s0>q2GjCyM?*wD-*%?M&${#*3PfjrK*7us7F*!lcdv=Ddm-3ef!IKlT zy=P}=f%FAWPSEh4ouTff{3XG8a)PS23RtbOw{(V*mvcSX5{CWqAnQLc6oae>vE@Ko zlZ6vxyrnawy_~-=6bmOvdP`?WcqxD2XBJKn_MV*~9Lyh>nVGbITx9i@&S3FU{=mo#^7LLej@Tb8 t)dlVh`#0AJ*Z5BkN|u-`mOPz9(U4WmhLzEF^ZMkl6vio=*-qH;0|0hgYKH&- diff --git a/build/main.S b/build/main.S index de60756..7b4b13b 100644 --- a/build/main.S +++ b/build/main.S @@ -61,164 +61,165 @@ system_clock_init: ldr r3, [r3] ldr r2, .L5 .loc 1 21 38 - orr r3, r3, #65536 + bic r3, r3, #1 str r3, [r2] - .loc 1 25 9 - nop -.L2: - .loc 1 25 42 discriminator 1 - ldr r3, .L5 - ldr r3, [r3] - .loc 1 25 47 discriminator 1 - and r3, r3, #131072 - .loc 1 25 10 discriminator 1 - cmp r3, #0 - beq .L2 - .loc 1 29 33 + .loc 1 24 33 ldr r3, .L5 ldr r3, [r3] ldr r2, .L5 - .loc 1 29 38 + .loc 1 24 38 + orr r3, r3, #65536 + str r3, [r2] + .loc 1 28 9 + nop +.L2: + .loc 1 28 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 28 47 discriminator 1 + and r3, r3, #131072 + .loc 1 28 10 discriminator 1 + cmp r3, #0 + beq .L2 + .loc 1 32 33 + ldr r3, .L5 + ldr r3, [r3] + ldr r2, .L5 + .loc 1 32 38 bic r3, r3, #16777216 str r3, [r2] - .loc 1 32 33 + .loc 1 35 33 ldr r3, .L5 ldr r3, [r3, #4] ldr r2, .L5 - .loc 1 32 43 + .loc 1 35 43 orr r3, r3, #4194304 str r3, [r2, #4] - .loc 1 35 33 + .loc 1 38 33 ldr r3, .L5 ldr r2, [r3, #4] ldr r1, .L5 - .loc 1 35 43 + .loc 1 38 43 ldr r3, .L5+8 orrs r3, r3, r2 str r3, [r1, #4] - .loc 1 38 33 + .loc 1 41 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 38 40 + .loc 1 41 40 bic r3, r3, #240 str r3, [r2, #8] - .loc 1 39 33 - ldr r3, .L5 - ldr r2, .L5 - ldr r3, [r3, #8] - .loc 1 39 40 - str r3, [r2, #8] .loc 1 42 33 ldr r3, .L5 - ldr r3, [r3, #8] ldr r2, .L5 + ldr r3, [r3, #8] .loc 1 42 40 - bic r3, r3, #7168 str r3, [r2, #8] - .loc 1 43 33 + .loc 1 45 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 43 40 - orr r3, r3, #4096 + .loc 1 45 40 + bic r3, r3, #7168 str r3, [r2, #8] .loc 1 46 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 46 40 - bic r3, r3, #57344 + orr r3, r3, #4096 str r3, [r2, #8] - .loc 1 47 33 + .loc 1 49 33 ldr r3, .L5 - ldr r2, .L5 ldr r3, [r3, #8] - .loc 1 47 40 + ldr r2, .L5 + .loc 1 49 40 + bic r3, r3, #57344 str r3, [r2, #8] .loc 1 50 33 ldr r3, .L5 - ldr r3, [r3] ldr r2, .L5 - .loc 1 50 38 - orr r3, r3, #16777216 - str r3, [r2] - .loc 1 54 9 - nop -.L3: - .loc 1 54 42 discriminator 1 + ldr r3, [r3, #8] + .loc 1 50 40 + str r3, [r2, #8] + .loc 1 53 33 ldr r3, .L5 ldr r3, [r3] - .loc 1 54 47 discriminator 1 + ldr r2, .L5 + .loc 1 53 38 + orr r3, r3, #16777216 + str r3, [r2] + .loc 1 57 9 + nop +.L3: + .loc 1 57 42 discriminator 1 + ldr r3, .L5 + ldr r3, [r3] + .loc 1 57 47 discriminator 1 and r3, r3, #33554432 - .loc 1 54 10 discriminator 1 + .loc 1 57 10 discriminator 1 cmp r3, #0 beq .L3 - .loc 1 57 35 + .loc 1 60 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 - .loc 1 57 41 + .loc 1 60 41 orr r3, r3, #1024 str r3, [r2] - .loc 1 58 35 - ldr r3, .L5+12 - ldr r3, [r3] - ldr r2, .L5+12 - .loc 1 58 41 - orr r3, r3, #512 - str r3, [r2] .loc 1 61 35 ldr r3, .L5+12 ldr r3, [r3] ldr r2, .L5+12 .loc 1 61 41 + orr r3, r3, #512 + str r3, [r2] + .loc 1 64 35 + ldr r3, .L5+12 + ldr r3, [r3] + ldr r2, .L5+12 + .loc 1 64 41 bic r3, r3, #15 str r3, [r2] - .loc 1 62 33 - ldr r3, .L5 - ldr r3, [r3, #8] - ldr r2, .L5 - .loc 1 62 40 - orr r3, r3, #272 - orr r3, r3, #1 - str r3, [r2, #8] .loc 1 65 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 .loc 1 65 40 + orr r3, r3, #272 + orr r3, r3, #1 + str r3, [r2, #8] + .loc 1 68 33 + ldr r3, .L5 + ldr r3, [r3, #8] + ldr r2, .L5 + .loc 1 68 40 bic r3, r3, #3 str r3, [r2, #8] - .loc 1 66 33 + .loc 1 69 33 ldr r3, .L5 ldr r3, [r3, #8] ldr r2, .L5 - .loc 1 66 40 + .loc 1 69 40 orr r3, r3, #2 str r3, [r2, #8] - .loc 1 70 9 + .loc 1 73 9 nop .L4: - .loc 1 70 42 discriminator 1 + .loc 1 73 42 discriminator 1 ldr r3, .L5 ldr r3, [r3, #8] - .loc 1 70 49 discriminator 1 + .loc 1 73 49 discriminator 1 lsrs r3, r3, #2 - .loc 1 70 55 discriminator 1 + .loc 1 73 55 discriminator 1 and r3, r3, #3 - .loc 1 70 65 discriminator 1 + .loc 1 73 65 discriminator 1 cmp r3, #2 bne .L4 - .loc 1 73 33 - ldr r3, .L5 - ldr r3, [r3] - ldr r2, .L5 - .loc 1 73 38 - bic r3, r3, #1 - str r3, [r2] .loc 1 74 1 nop + nop mov sp, r7 .cfi_def_cfa_register 13 @ sp needed diff --git a/build/main.i b/build/main.i index 1cc263b..d6cb1ed 100644 --- a/build/main.i +++ b/build/main.i @@ -2255,6 +2255,9 @@ static void system_clock_init(void) { ((struct pwr *) (0x40007000U))->CR |= ((0b11) << 14); + ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); + + ((struct rcc *) (0x40023800U))->CR |= (1 << 16); @@ -2305,9 +2308,6 @@ static void system_clock_init(void) { while (((((struct rcc *) (0x40023800U))->CFGR >> 2) & (0b11)) != (0b10)); - - - ((struct rcc *) (0x40023800U))->CR &= ~(1 << 0); } int main(void) { diff --git a/build/main.o b/build/main.o index 35ff02f8bf973aef55120b2870ca52db8dd4a4e2..a62cebb4b1caa0599d56accb964ef6f3d85993ea 100644 GIT binary patch delta 305 zcmccco9V)DrVUn%^~xU@nS~SVy`?kkyqv!@7z-yb?6>ij&S3t+V9cQX^Ma+fbcThO z@`r|E;RG}9=nPYkD(2t>WACU8BTr**VQ23I1Mk@x`d-Q(J}^&C(Dl~wnw>E@LEC$F zhL)G|mj}U<6EwVMXQ+ep1y4>;^`4!f;-&m0!Fh6mlDA?#Sh0e)bcVc_GuRS_{W2iy zKQI)7tOv2BL0XfA6C}N*GbFs6zc3UFCy04VXNYK zfz_stGWG4f1`_LJWz%1qv(IGu@6e{-o4Hz#SpWclA8OG6 delta 304 zcmccco9V)DrVUn%_0C@!jD-^z_S<_)XE1+ZFlNyHdBMh8I>Xva`9njoaDt_GbcThO z^OpwZ-~==8s0>q2GjCyM?*wD-*%?M&${#*3PfjrK*7us7F*!lcdv=Ddm-3ef!IKlT zy=P}=f%FAWPSEh4ouTff{3XG8a)PS23RtbOw{(V*mvcSX5{CWqAnQLc6oae>vE@Ko zlZ6vxyrnawy_~-=6bmOvdP`?WcqxD2XBJKn_MV*~9Lyh>nVGbITx9i@&S3FU{=mo#^7LLej@Tb8 p)dlVh`!_o<#mG-yq`00#(U4WmhLzEFbFk93B*rP5xmu4|001=}X@UR% diff --git a/src/main.c b/src/main.c index 26025cc..8129bf2 100644 --- a/src/main.c +++ b/src/main.c @@ -17,6 +17,9 @@ static void system_clock_init(void) { PWR->CR &= ~(PWR_CR_VOS_MASK << PWR_CR_VOS_BIT); PWR->CR |= (PWR_SCALE3 << PWR_CR_VOS_BIT); + // Turn off HSI (which is on by default) + RCC->CR &= ~RCC_CR_HSION_ON; + // Turn on HSE RCC->CR |= RCC_CR_HSEON_ON; @@ -68,9 +71,6 @@ static void system_clock_init(void) { // 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; } int main(void) {