91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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)試配置方法,以及每一項(xiàng)配置的詳細(xì)說明。如需要了解更多相關(guān)的文章,可以到我博客,或微信公眾號(hào)查看。

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

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

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

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

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

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

Ⅱ、本文要點(diǎn)

1.主要內(nèi)容

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

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

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

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

2.工程代碼下載

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

配置前工程代碼STM32F10x_Demo:

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

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

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

3.代碼功能描述

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

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

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

第一點(diǎn)是為了有一個(gè)狀態(tài)顯示,知道程序在運(yùn)行。

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

4.驗(yàn)證配置成功方法

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

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

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

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

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

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

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

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

2.配置向量表

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


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

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

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

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

3.調(diào)試配置

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

第一步:去掉“Load Application at Startup”前面的勾選項(xiàng)

第二步:導(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

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

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

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

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

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

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

Ⅳ、配置說明

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

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


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

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

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

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

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

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

2.配置向量表說明

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

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

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


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

我們加載文件“CpuRAM.ini”,因此不需要勾選“Load Application at Startup”這個(gè)選項(xiàng)。

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

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


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

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

相比兩者,我們選擇不勾選該選項(xiàng)簡(jiǎn)單一點(diǎn),因此這里選擇不勾選。

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

筆者開始學(xué)習(xí)RAM調(diào)試的內(nèi)容時(shí),也是參考網(wǎng)上很多的教程,但是經(jīng)過筆者親自,并且多次測(cè)試發(fā)現(xiàn)網(wǎng)上的有些教程存在不足之處。本節(jié)主要是提出網(wǎng)上某些教程存在的不足或者多余之處?!救粲胁粚?duì)之處敬請(qǐng)諒解】

1.修改Linker地址

Project -> Optionsfor Target -> Linker


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

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

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

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

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

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

2.配置向量表

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

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

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

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

3.修改編程地址

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

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

Ⅵ、說明

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

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

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

    關(guān)注

    8

    文章

    1399

    瀏覽量

    120544
  • STM32
    +關(guān)注

    關(guān)注

    2309

    文章

    11162

    瀏覽量

    373406
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1230

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    使用 Keil Studio for Visual Studio Code開發(fā) STM32 設(shè)備

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

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

    本節(jié)為創(chuàng)龍科技RK3562 單板機(jī) Qt 開發(fā)指南,核心包含開發(fā)環(huán)境配置、工程編譯、網(wǎng)絡(luò)調(diào)試及實(shí)戰(zhàn)案例。詳細(xì)說明 Qt Creator 交叉
    的頭像 發(fā)表于 02-27 10:42 ?4927次閱讀
    RK3562 單板機(jī)圖形用戶界面<b class='flag-5'>開發(fā)</b>完全手冊(cè):Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例詳解(二)

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

    本節(jié)為創(chuàng)龍科技RK3562 單板機(jī) Qt 開發(fā)指南,核心包含開發(fā)環(huán)境配置、工程編譯、網(wǎng)絡(luò)調(diào)試及實(shí)戰(zhàn)案例。詳細(xì)說明 Qt Creator 交叉
    的頭像 發(fā)表于 02-26 11:41 ?266次閱讀
    RK3562 單板機(jī)圖形用戶界面<b class='flag-5'>開發(fā)</b>完全手冊(cè):Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例詳解(一)

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

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

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

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

    三種開發(fā)工具的功能和優(yōu)勢(shì)

    您喜歡搗鼓電子設(shè)備并自己動(dòng)手制作項(xiàng)目嗎?如果是,您可能會(huì)對(duì)Raspberry Pi、Arduino、ROCK及其他能幫助實(shí)現(xiàn)DIY目標(biāo)的開發(fā)工具感興趣。Raspberry Pi在全球已售出約3000萬臺(tái),這一令人矚目的成績(jī)說明這類開發(fā)工
    的頭像 發(fā)表于 09-25 16:45 ?943次閱讀

    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

    【RA4L1-SENSOR】開箱+Keil環(huán)境搭建+點(diǎn)燈

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

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】開箱+Keil環(huán)境搭建+點(diǎ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)試變頻器是一個(gè)復(fù)雜但至關(guān)重要的過程,它涉及多個(gè)參數(shù)的設(shè)定和調(diào)整,以確保變頻器能夠正常運(yùn)行并滿足特定應(yīng)用需求。以下是對(duì)變頻器調(diào)試詳細(xì)說明。 一、準(zhǔn)備工作 1. 選擇合適的電機(jī)功率:根據(jù)實(shí)際需求選擇
    的頭像 發(fā)表于 04-25 15:32 ?2045次閱讀

    rk3568開發(fā)工具

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

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

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

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

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

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

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

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

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