乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       旭日東升4k165w 2019-09-07

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

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

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

      一、準備(這里以STM32F103C8LED流水燈程序為例)

      1. Keil mdk514

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

      3. 示例芯片型號:STM32F103C8,芯片的BOOT引腳必須接地

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

         1.添加一個Project target

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

                             

      圖1 :左為project視圖,右為工程項管理界面 

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

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

      圖2 :編譯目標選擇下拉框

         2.分配RAMFlash空間:

           由《STM32數(shù)據(jù)手冊》得知,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…)彈出工程選項窗口:

      圖4 :工程選項Options forTarget按鈕

           修改工程選項的Target標簽的IROMIRAM如圖5。設(shè)置IROMStart=0x20000000Size=0x28000x2800=10k);IRAMStart=0x20002800Size=0x2800。

      圖5 :工程選項-Target標簽設(shè)置

          為何這樣設(shè)置?

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

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

           如圖6,打開選項的Output標簽,將objects文件的保存路徑改為工程目錄/OBJ/RAM目錄下;同理,選項的Listing標簽中,將lst文件的保存路徑改為工程目錄/LIST/RAM目錄下;

      圖6:工程選項-Output標簽設(shè)置

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

         4.添加宏定義:

          在選項的C/C++標簽的Preprocessor Symbolsdefine中添加定義:VECT_TAB_SRAM,若有別的定義,則用英文逗號隔開。

      圖7:工程選項-C/C++標簽設(shè)置

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

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

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

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

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

          說明Dbg_RAM.ini文件來自Keil安裝目錄\ARM\Pack\Keil\STM32F1xx_DFP\1.1.0\Boards\Keil\MCBSTM32C\Blinky\Dbg_RAM.ini,將其復制到工程目錄的USER子目錄下;不同版本Keil該文件路徑可能不同。該文件可手動創(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è)置選項的Utilities標簽的 Update Target Before DeBugging項不能選中!

      圖9:工程選項-Utilities標簽

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

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

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


       注意:

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

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

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

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多