chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32內(nèi)部RAM在線調(diào)試配置方法及詳細(xì)說明 (基于Keil開發(fā)工具)

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

掃碼添加小助手

加入工程師交流群

Ⅰ、寫在前面

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

讓程序運行在RAM中調(diào)試代碼有兩優(yōu)點:1.速度快;2.減少對芯片F(xiàn)LASH讀寫次數(shù),增加芯片壽命。

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

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

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

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

關(guān)于本文的更多詳情請往下看。

Ⅱ、本文要點

1.主要內(nèi)容

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

l實現(xiàn)STM32內(nèi)部RAM調(diào)試的配置方法

l每條配置的詳細(xì)說明

l網(wǎng)上配置方法說明及存在的不足

2.工程代碼下載

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

配置前工程代碼STM32F10x_Demo:

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

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

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

3.代碼功能描述

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

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

l串口中斷接收數(shù)據(jù),會將收到數(shù)據(jù)通過串口發(fā)送出去。

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

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

4.驗證配置成功方法

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

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

Ⅲ、RAM調(diào)試配置方法

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

1.修改內(nèi)存地址

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

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

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

2.配置向量表

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


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

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

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

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

3.調(diào)試配置

同上:Project -> Options for Target -> Debug,這里是關(guān)于調(diào)試的配置。

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

第二步:導(dǎo)入RAM初始化文件。


RAM初始化文件里面內(nèi)容如下:

FUNC void Setup (void) {

SP = _RDWORD(0x20000000);

PC = _RDWORD(0x20000004);

_WDWORD(0xE000ED08, 0x20000000);

}

LOADObjects\ExecutableFile.axfINCREMENTAL

Setup();

g, main

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

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

4.調(diào)試不更新目標(biāo)程序

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

至此,STM32內(nèi)部RAM在線調(diào)試配置方法就完成了,連接開發(fā)板就可以使用RAM在線調(diào)試代碼了。

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

Ⅳ、配置說明

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

1.修改內(nèi)存地址說明


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

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

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

查看“ExecutableFile.sct”文件的方法:Project -> Options for Target -> Linker,如下圖?!拘枰幾g之后才能輸出“ExecutableFile.sct”文件,即編譯后才能查看】

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

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

2.配置向量表說明

愛思考(或者會尋到問題)的朋友可能會發(fā)現(xiàn),我不宏定義VECT_TAB_SRAM這個參數(shù),程序照??梢赃\行(LED變化、串口打印數(shù)據(jù))。

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

3.調(diào)試配置說明


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

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

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

4.調(diào)試不更新目標(biāo)程序說明


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

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

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

Ⅴ、網(wǎng)上配置說明

筆者開始學(xué)習(xí)RAM調(diào)試的內(nèi)容時,也是參考網(wǎng)上很多的教程,但是經(jīng)過筆者親自,并且多次測試發(fā)現(xiàn)網(wǎng)上的有些教程存在不足之處。本節(jié)主要是提出網(wǎng)上某些教程存在的不足或者多余之處?!救粲胁粚χ幘凑堈徑狻?/p>

1.修改Linker地址

Project -> Optionsfor Target -> Linker


網(wǎng)上的配置,這里的地址基本上都是修改了的。

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

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

于是我就不配置(不修改)這里的地址進(jìn)行驗證,結(jié)果還是可以在RAM中調(diào)試,大量測試也沒發(fā)現(xiàn)什么問題。

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

因此,網(wǎng)上所配置的這里其實是多余的配置。

2.配置向量表

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

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

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

細(xì)心的朋友可能會發(fā)現(xiàn),我在“Ⅲ、RAM調(diào)試配置方法”這一章節(jié)中沒有修改源代碼,只是修改了配置。這樣就保證了代碼的一致性。

3.修改編程地址

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

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

Ⅵ、說明

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1392

    瀏覽量

    117557
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365041
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1223

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32H745XIH6不能進(jìn)行雙核調(diào)試,CM4不能進(jìn)行在線調(diào)試怎么解決?

    你好, 問題: STM32H745XIH6不能進(jìn)行雙核調(diào)試,CM4不能進(jìn)行在線調(diào)試軟件:KEIL 5.41
    發(fā)表于 06-09 06:58

    【RA-Eco-RA4M2開發(fā)板評測】開箱+Keil環(huán)境搭建+點燈

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

    調(diào)試變頻器詳細(xì)說明

    調(diào)試變頻器是一個復(fù)雜但至關(guān)重要的過程,它涉及多個參數(shù)的設(shè)定和調(diào)整,以確保變頻器能夠正常運行并滿足特定應(yīng)用需求。以下是對變頻器調(diào)試詳細(xì)說明。 一、準(zhǔn)備工作 1. 選擇合適的電機(jī)功率:根據(jù)實際需求選擇
    的頭像 發(fā)表于 04-25 15:32 ?504次閱讀

    rk3568開發(fā)工具

    rk3568開發(fā)工具
    發(fā)表于 04-16 17:03 ?2次下載

    AI開發(fā)工具分類與功能

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

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

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

    e2studio和Keil簡介及如何安裝e2studio開發(fā)環(huán)境

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

    STM32CubeIDE在線調(diào)試時,如何配置擦除Flash的部分Page?

    STM32CubeIDE在線調(diào)試時,如何配置擦除Flash的部分Page
    發(fā)表于 03-13 08:02

    鴻蒙北向開發(fā)OpenHarmony4.1 DevEco Studio開發(fā)工具安裝與配置

    OpenHarmony4.1 DevEco Studio開發(fā)工具安裝與配置,鴻蒙北向開發(fā)入門必備!
    的頭像 發(fā)表于 02-07 17:35 ?830次閱讀
    鴻蒙北向<b class='flag-5'>開發(fā)</b>OpenHarmony4.1 DevEco Studio<b class='flag-5'>開發(fā)工具</b>安裝與<b class='flag-5'>配置</b>

    盤點工程師常用的嵌入式開發(fā)工具

    嵌入式開發(fā)涉及硬件與軟件的緊密結(jié)合,開發(fā)工具的選擇對效率和質(zhì)量至關(guān)重要。以下是嵌入式開發(fā)中常用的工具分類及代表性工具,涵蓋
    的頭像 發(fā)表于 02-07 10:06 ?2059次閱讀

    電機(jī)方案開發(fā)工具—QE For Motor

    調(diào)試工具Renesas Motor Workbench,通過工具之間更密切的協(xié)調(diào)來提高可用性,并為不熟悉瑞薩MCU的用戶提供簡單的配置工具電機(jī)軟件
    的頭像 發(fā)表于 11-28 17:36 ?997次閱讀
    電機(jī)方案<b class='flag-5'>開發(fā)工具</b>—QE For Motor

    云計算開發(fā)工具包括什么

    云計算開發(fā)工具種類繁多,包括IDE、虛擬化軟件、容器化平臺、自動化部署工具和云平臺等。
    的頭像 發(fā)表于 11-22 10:11 ?553次閱讀

    電機(jī)方案開發(fā)工具QE For Motor的使用教程

    調(diào)試工具Renesas Motor Workbench,通過工具之間更密切的協(xié)調(diào)來提高可用性,并為不熟悉瑞薩MCU的用戶提供簡單的配置工具電機(jī)軟件
    的頭像 發(fā)表于 11-14 15:12 ?1743次閱讀
    電機(jī)方案<b class='flag-5'>開發(fā)工具</b>QE For Motor的使用教程

    瑞星微刷機(jī)工具開發(fā)工具

    瑞星微刷機(jī)工具開發(fā)工具
    發(fā)表于 10-09 11:14 ?3次下載

    AT開發(fā)工具實用教程

    本文主要介紹AT32相關(guān)的圖形化配置工具,通過對MCU的圖形化配置,生成初始化C代碼和對應(yīng)IDE項目,以減少開發(fā)人員的工作量、時間和成本。一、AT32WorkBenchAT32Work
    的頭像 發(fā)表于 08-30 13:22 ?807次閱讀
    AT<b class='flag-5'>開發(fā)工具</b>實用教程