日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

stm32 复位到内部bootloader

發布時間:2023/12/19 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 复位到内部bootloader 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sm32的bootloader一般是通過開機時設置boot0=1來實現的。下面是通過程序來實現:

原來的startup文件是直接把flash的數據加載到ram里面然后跑main函數循環

bootloader的程序在0x1FFF D800

那只要在進入main函數之前先判斷是否要進入bootloader,如果要進入bootloader,就載入0x1fff d800這個地址就好了。否則就繼續未修改之前的操作。

void systemReset(void) {// Generate system resetSCB->AIRCR = AIRCR_VECTKEY_MASK | (uint32_t)0x04; }void systemResetToBootloader(void) {/*修改在RAM里面的標志位*/*((uint32_t *)0x20009FFC) = 0xDEADBEEF; // 40KB SRAM STM32F30X, 0x20009FFC=0x20000000+40*1024-4(ram的最后一個字)/*產生復位信號*/systemReset(); }

?

修改startup?的Reset_Handler

原來的:

**********************************************************************

Reset_Handler:/* Copy the data segment initializers from flash to SRAM */movs ?r1, #0b ?LoopCopyDataInit

?

?

修改后的:

***********************************************************************

Reset_Handler:ldr r0, =0x20009FFC? ? ? ? ?ldr r1, =0xDEADBEEF? ? ? ? ?ldr r2, [r0, #0]? ? ? ? ? ??str r0, [r0, #0]? ? ? ? ? ??cmp r2, r1? ? ? ? ? ? ? ? ??beq Reboot_Loader? ? ? ? ? ?/* Copy the data segment initializers from flash to SRAM */movs ?r1, #0b ?LoopCopyDataInitReboot_Loader:? ? ? ? ? ? ? ??// Reboot to ROM? ? ? ? ? ??ldr ? ? r0, =0x1FFFD800? ? ?ldr ? ? sp,[r0, #0]? ? ? ??ldr ? ? r0,[r0, #4]? ? ? ??bx ? ? ?r0? ? ? ? ? ? ? ??

?

總結

以上是生活随笔為你收集整理的stm32 复位到内部bootloader的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。