免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

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

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

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

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

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

  1. Keil mdk514

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

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

 二、修改工程:打開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=0x20002800,Size=0x2800。

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

    為何這樣設(shè)置?

    答:下圖來自《Cortex-M3權(quán)威指南(中文)》84頁,據(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,打開選項(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)隔開。

圖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è)置頁,選擇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文件;

    說明Dbg_RAM.ini文件來自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)試過程中復(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

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
stm32固件庫在stm3210e-eval開發(fā)板上的移植
MDK與git一起使用管理嵌入式軟件項(xiàng)目
keil MDK5搭建STM32開發(fā)環(huán)境
keil環(huán)境下stm32f030R8環(huán)境配置_stm32f030 keil
STM32 IAR工程->Keil MDK轉(zhuǎn)換詳解
stm32 開發(fā)環(huán)境MDK+庫文件配置-Changing's Blog
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服