国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32內部RAM在線調試配置方法及詳細說明 (基于Keil開發工具)

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-24 14:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ、寫在前面

本文主要講述的內容:基于Keil開發工具下,STM32內部RAM在線調試配置方法,以及每一項配置的詳細說明。如需要了解更多相關的文章,可以到我博客,或微信公眾號查看。

讓程序運行在RAM中調試代碼有兩優點:1.速度快;2.減少對芯片FLASH讀寫次數,增加芯片壽命。

本文牽涉的知識比較多,如果弄明白所有細節問題,對自己這方面的技能是一種很大的提升。

本文基于ST公司Cortex-M內核的STM32來講述其配置方法,其實也適用于其他公司(如:TINXP等)的Cortex-M芯片,原理都是一樣的。

本文PDF文章可以在我360云盤下載:

https://yunpan.cn/ckvUU7t8vuWbn訪問密碼 42b3

關于本文的更多詳情請往下看。

Ⅱ、本文要點

1.主要內容

由于本文牽涉的內容比較多,我會按章節來講述各項內容,大體分為:

l實現STM32內部RAM調試的配置方法

l每條配置的詳細說明

l網上配置方法說明及存在的不足

2.工程代碼下載

為了方便大家學習,我將配置前(一般常用)工程和配置后工程分別打包上傳至360云盤供大家下載參考學習。配置前和配置后工程實現的功能都是一樣的。

配置前工程代碼STM32F10x_Demo:

https://yunpan.cn/ckvVFJi5e9r26訪問密碼 8ffb

配置后工程代碼STM32F10x_Demo(RAM調試):

https://yunpan.cn/ckvVYAMWBqNjX訪問密碼 418b

3.代碼功能描述

上面提供下載的代碼實現的功能是一樣的,具體如下兩點:

l間隔500ms LED亮滅變化一次,串口打印數據“Demo..”一次。

l串口中斷接收數據,會將收到數據通過串口發送出去。

第一點是為了有一個狀態顯示,知道程序在運行。

第二點在本文中的作用也很大,就是使用了中斷功能。由于RAM調試會牽涉到向量表,中斷功能就會使用到向量表,如果沒有配置正確,這里就不會響應中斷,或者出錯。

4.驗證配置成功方法

本文提供的“STM32F10x_Demo”是斷電后重新上電會繼續運行代碼;而“STM32F10x_Demo(RAM調試)”是斷點之后程序丟掉了,也就是不能運行了【請更加LED及串口打印現象來判斷】。

注意:使用RAM調試之前請將FLASH里面的數據擦除掉,否則使用RAM調試斷電再上電,程序會從FLASH運行,會認為程序依然在運行,從而影響判斷。

Ⅲ、RAM調試配置方法

本節主要講述配置方法的過程,為什么這么配置,以及配置的原理將會在下一章節講述。

1.修改內存地址

打開目標配置:Project -> Options for Target -> Target 或“工程目標配置”點擊快捷按鈕。

ROM和RAM地址映射到如下圖地址。 我們使用STM32F103ZE芯片,該芯片的RAM大小為0x10000 即64KB,我們這里平分RAM,即各自的大小為0x5000。

注意:配置的地址范圍不能超過芯片實際的大小。

2.配置向量表

同上,打開目標配置:Project -> Options for Target -> C/C++,使用宏定義VECT_TAB_SRAM。如下圖:


這里的宏定義是為了讓向量表指向RAM(我們默認是指向ROM),重要的一個目的就是讓中斷向量表指向RAM,上面“代碼功能”中斷的意義就是為了驗證向量表的正確性。

注意:這里的宏定義是在工具鏈中配置的,多個宏定義之間需要有“逗號”隔離開來。

其實這里的宏定義配置也可以在源代碼中實現,打開system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定義,如下圖:

【個人建議:調試和非調試代碼最好一致,也就是源代碼不變】

3.調試配置

同上:Project -> Options for Target -> Debug,這里是關于調試的配置。

第一步:去掉“Load Application at Startup”前面的勾選項

第二步:導入RAM初始化文件。


RAM初始化文件里面內容如下:

FUNC void Setup (void) {

SP = _RDWORD(0x20000000);

PC = _RDWORD(0x20000004);

_WDWORD(0xE000ED08, 0x20000000);

}

LOADObjects\ExecutableFile.axfINCREMENTAL

Setup();

g, main

每一條語句具體意思請見源代碼注釋,這里提示的是Objects\ExecutableFile.axf

也就是輸出路徑和輸出文件名,它的路徑與文件名與你工程配置需對應。

4.調試不更新目標程序

同上:Project -> Options for Target -> Utilities,不勾選“更新”。意思就是在線調試時,不更新芯片(下載FLASH)程序。

至此,STM32內部RAM在線調試配置方法就完成了,連接開發板就可以使用RAM在線調試代碼了。

網上相關的問題還有其他無關的配置,我會在下面單獨說明一下為什么不用配置那些。

Ⅳ、配置說明

上面配置過程已經知道了,這一節講述一下為什么這樣配置,以及這么配置的意思。

1.修改內存地址說明


內存地址為什么ROM設置為0x20000000,RAM設置為0x20005000。原因在于芯片的RAM其實地址就是0x20000000(沒有猜錯的話Cortex-M那芯片RAM起止地址都是0x20000000)。

至于大小嘛,就是看芯片型號了,我們這里平分大小,也可以不用平分大小。

這里分配的地址會直接影響輸出的文件“ExecutableFile.sct”,也就是我們鏈接的時候需要使用到的“ExecutableFile.sct”文件。

查看“ExecutableFile.sct”文件的方法:Project -> Options for Target -> Linker,如下圖。【需要編譯之后才能輸出“ExecutableFile.sct”文件,即編譯后才能查看】

對比沒有配置RAM調試(也就是沒有修改地址)的工程如下圖:

網上配置教程說要修改Linker下的地址,其實是多余的,詳情請見下一章節。

2.配置向量表說明

愛思考(或者會尋到問題)的朋友可能會發現,我不宏定義VECT_TAB_SRAM這個參數,程序照常可以運行(LED變化、串口打印數據)。

其實這里的配置主要是針對“向量表”,比如中斷向量表。如果當我們不宏定義VECT_TAB_SRAM這個參數,測試串口中斷的時候,程序就會跑死,(暫停)程序會指向一個非法的地址,如下圖:

3.調試配置說明


這個地方的配置很好理解,就是我們要將程序指針指向我們特定的地址(RAM)區域,這樣好讓程序執行我們指定地址里面的程序。

我們加載文件“CpuRAM.ini”,因此不需要勾選“Load Application at Startup”這個選項。

加載文件的名稱“CpuRAM.ini”和網上一些教程命名一樣,可以自己命名,只要后綴名一樣就行。

4.調試不更新目標程序說明


這個地方其實就是在調試的時候更新(下載)芯片FLASH的代碼,由于我們沒有修改FLASH的燒寫算法,這里就不勾選次選項。

當我們修改了FLASH的燒寫算法(程序指向RAM),這里可以勾選上。

相比兩者,我們選擇不勾選該選項簡單一點,因此這里選擇不勾選。

Ⅴ、網上配置說明

筆者開始學習RAM調試的內容時,也是參考網上很多的教程,但是經過筆者親自,并且多次測試發現網上的有些教程存在不足之處。本節主要是提出網上某些教程存在的不足或者多余之處。【若有不對之處敬請諒解】

1.修改Linker地址

Project -> Optionsfor Target -> Linker


網上的配置,這里的地址基本上都是修改了的。

1.去掉勾選; 2.再次修改地址。

我剛開始學習配置時也是修改了的,但后面我再次配置時發現一個問題:地址前面為勾選。什么意思呢,就是沒有使用這個配置的地址。

于是我就不配置(不修改)這里的地址進行驗證,結果還是可以在RAM中調試,大量測試也沒發現什么問題。

我再次查看Scatter File文件ExecutableFile.sct,發現不修改地址也是一樣的。其實“ExecutableFile.sct”文件的地址是我上一章節里面說的,由Target里面的地址決定的。

因此,網上所配置的這里其實是多余的配置。

2.配置向量表

有很多教程使用了在main函數開始配置向量表,也就是在main函數開始出增加一條語句:NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

這條語句其實是system_stm32f10x.c文件里面第265行的:SCB -> VTOR = SRAM_BASE | VECT_TAB_OFFSET;一樣的意思。

因此,我個人覺得,項目中的調試代碼和真正運行的源代碼不能有差異。定義了VECT_TAB_SRAM這個宏定義,就沒必要還在main函數里面增加一條語句。

細心的朋友可能會發現,我在“Ⅲ、RAM調試配置方法”這一章節中沒有修改源代碼,只是修改了配置。這樣就保證了代碼的一致性。

3.修改編程地址

網上有很多教程是修改了下圖中編程的地址,也就是修改了編程算法。

作為調試,本來就是運行在RAM中,再在這里配置,我覺得是多次一舉。因此我們上面講述的是沒有勾選:Update Target Before Debugging.

Ⅵ、說明

STM32內部RAM調試代碼時,復位不起作用,需要復位請重新鏈接運行。關于RAM在線調試配置還有許多未講述完,請親自配置并測試驗證,你或許會明白更多有用知識。

以上總結僅供參考,若有不對之處,敬請諒解。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1399

    瀏覽量

    120546
  • STM32
    +關注

    關注

    2309

    文章

    11162

    瀏覽量

    373406
  • keil
    +關注

    關注

    69

    文章

    1230

    瀏覽量

    172627
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用 Keil Studio for Visual Studio Code開發 STM32 設備

    Keil Studio是 Arm 最新一代的集成開發環境(IDE),將嵌入式開發工具直接集成到了 Visual Studio Code 中。作為 μVision 的后繼者,它提供了現代化的特性,包括
    的頭像 發表于 03-05 17:41 ?424次閱讀
    使用 <b class='flag-5'>Keil</b> Studio for Visual Studio Code<b class='flag-5'>開發</b> <b class='flag-5'>STM32</b> 設備

    RK3562 單板機圖形用戶界面開發完全手冊:Qt Creator 配置與 LVGL 案例詳解(二)

    本節為創龍科技RK3562 單板機 Qt 開發指南,核心包含開發環境配置、工程編譯、網絡調試及實戰案例。詳細說明 Qt Creator 交叉
    的頭像 發表于 02-27 10:42 ?4929次閱讀
    RK3562 單板機圖形用戶界面<b class='flag-5'>開發</b>完全手冊:Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例詳解(二)

    RK3562 單板機圖形用戶界面開發完全手冊:Qt Creator 配置與 LVGL 案例詳解(一)

    本節為創龍科技RK3562 單板機 Qt 開發指南,核心包含開發環境配置、工程編譯、網絡調試及實戰案例。詳細說明 Qt Creator 交叉
    的頭像 發表于 02-26 11:41 ?267次閱讀
    RK3562 單板機圖形用戶界面<b class='flag-5'>開發</b>完全手冊:Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例詳解(一)

    福晞軟件調試工具介紹之工程添加Debugware IP(1)

    為方便用戶了解和熟悉「福晞軟件」,我們就軟件的調試工具進行詳細的講解和說明,以幫助用戶實現高效地開發調試
    的頭像 發表于 12-15 09:17 ?3524次閱讀
    福晞軟件<b class='flag-5'>調試工具</b>介紹之工程添加Debugware IP(1)

    華大電子支持的主流開發工具有哪些

    華大電子支持的主流開發工具
    的頭像 發表于 09-28 10:43 ?520次閱讀
    華大電子支持的主流<b class='flag-5'>開發工具</b>有哪些

    三種開發工具的功能和優勢

    您喜歡搗鼓電子設備并自己動手制作項目嗎?如果是,您可能會對Raspberry Pi、Arduino、ROCK及其他能幫助實現DIY目標的開發工具感興趣。Raspberry Pi在全球已售出約3000萬臺,這一令人矚目的成績說明這類開發工
    的頭像 發表于 09-25 16:45 ?943次閱讀

    STM32H745XIH6不能進行雙核調試,CM4不能進行在線調試怎么解決?

    你好, 問題: STM32H745XIH6不能進行雙核調試,CM4不能進行在線調試軟件:KEIL 5.41
    發表于 06-09 06:58

    【RA4L1-SENSOR】開箱+Keil環境搭建+點燈

    E2 Studio、Keil、IAR 等開發工具 這里使用 Keil 開發 需要安裝瑞薩 RASC (RA Smart Configurator)軟件進行
    發表于 06-08 11:06

    【RA-Eco-RA4M2開發板評測】開箱+Keil環境搭建+點燈

    、藍色LED燈x3、 【開發工具和環境】 支持 Keil、E2 Studio 開發工具 使用 Keil 開發, 建議安裝瑞薩 RASC (R
    發表于 05-05 09:37

    調試變頻器詳細說明

    調試變頻器是一個復雜但至關重要的過程,它涉及多個參數的設定和調整,以確保變頻器能夠正常運行并滿足特定應用需求。以下是對變頻器調試詳細說明。 一、準備工作 1. 選擇合適的電機功率:根據實際需求選擇
    的頭像 發表于 04-25 15:32 ?2045次閱讀

    rk3568開發工具

    rk3568開發工具
    發表于 04-16 17:03 ?7次下載

    AI開發工具分類與功能

    當下,AI開發工具不僅簡化了AI開發的復雜流程,還提高了開發效率,推動了AI技術的廣泛應用。下面,AI部落小編為大家介紹AI開發工具的分類及其功能。
    的頭像 發表于 04-12 10:12 ?1263次閱讀

    鴻蒙北向開發OpenHarmony5.0 DevEco Studio開發工具安裝與配置

    本文介紹OpenHarmony5.0 DevEco Studio開發工具安裝與配置,鴻蒙北向開發入門必備!由觸覺智能Purple Pi OH鴻蒙開發板演示。搭載了瑞芯微RK3566四核
    的頭像 發表于 03-28 18:05 ?1622次閱讀
    鴻蒙北向<b class='flag-5'>開發</b>OpenHarmony5.0 DevEco Studio<b class='flag-5'>開發工具</b>安裝與<b class='flag-5'>配置</b>

    e2studio和Keil簡介及如何安裝e2studio開發環境

    (簡稱為e2或e2s)是瑞薩電子的一款包含代碼開發、構建和調試開發工具。e2studio基于開源EclipseIDE和與之相關的C/C++開發工具(CDT)。e2studio托管了瑞
    的頭像 發表于 03-13 17:27 ?3183次閱讀
    e2studio和<b class='flag-5'>Keil</b>簡介及如何安裝e2studio<b class='flag-5'>開發</b>環境

    STM32CubeIDE在線調試時,如何配置擦除Flash的部分Page?

    STM32CubeIDE在線調試時,如何配置擦除Flash的部分Page
    發表于 03-13 08:02