小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

基于固件庫(kù)的STM32F10x程序在Keil v5 MDK 下的RAM調(diào)試方法

 旭日東升4k165w 2019-09-07

為什么要RAM調(diào)試?

  1. 相比于FLASH調(diào)試,在RAM調(diào)試可以很快地裝載代碼,可以節(jié)省將代碼下載到Flash的時(shí)間。

  2. RAM的擦寫次數(shù)幾乎無(wú)限,RAM調(diào)試可延長(zhǎng)Flash的使用壽命。圖1

一、準(zhǔn)備(這里以STM32F103C8LED流水燈程序?yàn)槔?

  1. Keil mdk514

  2. Template模板工程 LED流水燈,V3.5.0版本的固件庫(kù)

  3. 示例芯片型號(hào):STM32F103C8芯片的BOOT引腳必須接地

 二、修改工程:打開(kāi)Keil mdk工程,修改以下設(shè)置

   1.添加一個(gè)Project target

   如圖1左Project視圖中右鍵Template_Flash選擇Manage Project Items…出現(xiàn)工程文件管理界面。

                       

圖1 :左為project視圖,右為工程項(xiàng)管理界面 

   在彈出的工程文件管理界面作圖1右圖所示的設(shè)置:(1)單擊添加按鈕;(2)輸入Target名稱,如Template_RAM;(3)單擊Set as Current Target按鈕,然后按ok保存。

   這樣做的好處是:可以使用下載按鈕旁邊的下拉列表切換用于Flash下載的配置和進(jìn)行RAM調(diào)試的配置,如圖2。

圖2 :編譯目標(biāo)選擇下拉框

   2.分配RAMFlash空間:

     由《STM32數(shù)據(jù)手冊(cè)》得知,STM32F103C8RAM大小為20K,根據(jù)自己索要調(diào)試的代碼分配者20K的空間;

     例如:如圖3是流水燈程序編譯后的keil輸出,流水燈程序占Flash1352字節(jié),占RAM268+24+1632,那么可以將STM32F103C820KRAM10kROM,剩下10k作為RAM

圖3:流水燈程序Build Output

    單擊keil工具欄中的魔術(shù)棒按鈕如圖4(Options for Target…)彈出工程選項(xiàng)窗口:

圖4 :工程選項(xiàng)Options forTarget按鈕

     修改工程選項(xiàng)的Target標(biāo)簽的IROMIRAM如圖5。設(shè)置IROMStart=0x20000000,Size=0x28000x2800=10k);IRAMStart=0x20002800Size=0x2800。

圖5 :工程選項(xiàng)-Target標(biāo)簽設(shè)置

    為何這樣設(shè)置?

    答:下圖來(lái)自《Cortex-M3權(quán)威指南(中文)》84頁(yè),據(jù)圖5.1知Cortex-M3內(nèi)核MCU內(nèi)部RAM起始地址為0x20000000,因?yàn)?/span>STM32F103C8的內(nèi)部RAM=20K,因此地址范圍是:0x20000000~0x20005000。這樣上述設(shè)置將10k分給的代碼區(qū)(IROM),將10k分給了數(shù)據(jù)區(qū)(IRAM)。

  3.修改中間文件和鏈接文件保存路徑:(文件路徑跟別的Target不同即可)

     如圖6,打開(kāi)選項(xiàng)的Output標(biāo)簽,將objects文件的保存路徑改為工程目錄/OBJ/RAM目錄下;同理,選項(xiàng)的Listing標(biāo)簽中,將lst文件的保存路徑改為工程目錄/LIST/RAM目錄下;

圖6:工程選項(xiàng)-Output標(biāo)簽設(shè)置

     目的是:避免二、1步中所示的不同配置的Target產(chǎn)生的中間文件和鏈接文件混淆。

   4.添加宏定義:

    在選項(xiàng)的C/C++標(biāo)簽的Preprocessor Symbolsdefine中添加定義:VECT_TAB_SRAM,若有別的定義,則用英文逗號(hào)隔開(kāi)。

圖7:工程選項(xiàng)-C/C++標(biāo)簽設(shè)置

   5.清除flash編程算法以及添加初始化文件:

  (1)在選項(xiàng)的BEBUG標(biāo)簽中選擇右側(cè)的仿真器如Jlink,圖8左;

圖8 :左 工程選項(xiàng)-Debug標(biāo)簽 ;右 單擊左圖Setting彈出的仿真器設(shè)置界面

     然后單擊右邊的Settings按鈕:彈出如圖8右圖所示設(shè)置頁(yè),選擇Flash download標(biāo)簽,設(shè)置如下:直到將Programming Algorithm中的內(nèi)容清空。選項(xiàng)的Utilities標(biāo)簽也有一個(gè)Setting按鈕,里面的設(shè)置同理。

  (2)在選項(xiàng)的BEBUG標(biāo)簽中選擇右側(cè)的仿真器選擇下方有一個(gè)Initialization File,添加Dbg_RAM.ini文件;

    說(shuō)明Dbg_RAM.ini文件來(lái)自Keil安裝目錄\ARM\Pack\Keil\STM32F1xx_DFP\1.1.0\Boards\Keil\MCBSTM32C\Blinky\Dbg_RAM.ini,將其復(fù)制到工程目錄的USER子目錄下;不同版本Keil該文件路徑可能不同。該文件可手動(dòng)創(chuàng)建,內(nèi)容如下:

  1. FUNC void Setup (void) {
  2. SP = _RDWORD(0x20000000); // Setup Stack Pointer
  3. PC = _RDWORD(0x20000004); // Setup Program Counter
  4. _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
  5. }
  6. FUNC void OnResetExec (void) { // executes upon software RESET
  7. Setup(); // Setup for Running
  8. }
  9. load %L incremental
  10. Setup(); // Setup for Running
  11. g, main

   6.最后的設(shè)置選項(xiàng)的Utilities標(biāo)簽的 Update Target Before DeBugging項(xiàng)不能選中!

圖9:工程選項(xiàng)-Utilities標(biāo)簽

   上述設(shè)置完成后,注意單擊ok保存設(shè)置。

三、enjoy程序調(diào)試:

    重新編譯項(xiàng)目文件,單擊keil工具欄中的Bebug按鈕就可以在RAM中調(diào)試程序。


 注意:

         1.RAM調(diào)試Target不能用于下載,因此不能單擊下載按鈕;

       2.調(diào)試過(guò)程中復(fù)位后必須退出Debug再重新進(jìn)入Debug。原因是復(fù)位后程序回到了芯片flash的起始地址而非RAM起始地址。

      3.若進(jìn)入debug程序立即運(yùn)行,可先在main函數(shù)或需要的地方加好斷點(diǎn),或者取消圖8工程選項(xiàng)-Debug標(biāo)簽所示的Run to main().選項(xiàng)  為什么是取消勾選??不得而知。

RAM調(diào)試工程模板下載:

http://download.csdn.net/detail/weboo10000/9085393

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多