STM32F030 BootLoader與應用程序的跳轉設置


document_thumb_thumb前言

本文介紹STM32F030系列芯片從BootLoader跳轉到應用程序,所需要的操作。以下以STM32F030C8T6為例。

document_thumb_thumb正文

  在STM32F030中,BootLoader程序存放在Flash中以0x08000000開始的地址。假設預留給BootLoader的空間為0x3000,即12K。則應用程序的起始地址為0x08003000。應用程序中,除了需要在Target中設置代碼存放地址,還要重定位向量表。然而M0不像M3那樣支持向量表重定位。具體看RM0360手冊45頁,截圖如下:

圖 1 硬件重定位

  上圖給出了解決辦法,具體如下:

  1.復制應用程序向量表到SRAM的起始地址。對應於應用程序Flash,向量表為從0x08003000開始的48×4個字節。具體向量表的大小需要根據啟動文件定義來計算。

    代碼:memcpy((uint32_t*)0x20000000, (uint32_t*)0x08003000, 48*4); 

  2.設置為從SRAM啟動,這樣當發生異常時,就會跳轉到SRAM的起始地址部分,而該部分放置的正好是向量表。

    代碼:SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);

  以上代碼添加在應用程序最開始的地方。

  3.在應用程序的Target菜單中,需要為向量表預留足夠的SRAM空間,48X4=192=0xC0,如圖2所示。

圖2 FLASH及SRAM設置

  通過以上操作,程序即可從BootLoader正常跳轉到應用程序執行。

document_thumb_thumb4[1]聲明

  本文為Xavier_Tse原創作品。本文允許復制,修改,傳遞,但不允許用於商業用途。轉載請注明出處。本文發表於2017年3月28日。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM