日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

Ⅰ、寫(xiě)在前面

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

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

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

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

本文PDF文章可以在我360云盤(pán)下載:

https://yunpan.cn/ckvUU7t8vuWbn訪問(wèn)密碼 42b3

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

Ⅱ、本文要點(diǎn)

1.主要內(nèi)容

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

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

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

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

2.工程代碼下載

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

配置前工程代碼STM32F10x_Demo:

https://yunpan.cn/ckvVFJi5e9r26訪問(wèn)密碼 8ffb

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

https://yunpan.cn/ckvVYAMWBqNjX訪問(wèn)密碼 418b

3.代碼功能描述

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

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

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

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

第二點(diǎn)在本文中的作用也很大,就是使用了中斷功能。由于RAM調(diào)試會(huì)牽涉到向量表,中斷功能就會(huì)使用到向量表,如果沒(méi)有配置正確,這里就不會(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)象來(lái)判斷】。

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

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

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

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

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

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

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

2.配置向量表

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


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

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

其實(shí)這里的宏定義配置也可以在源代碼中實(shí)現(xiàn),打開(kāi)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)見(jiàn)源代碼注釋?zhuān)@里提示的是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)試配置方法就完成了,連接開(kāi)發(fā)板就可以使用RAM在線調(diào)試代碼了。

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

Ⅳ、配置說(shuō)明

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

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


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

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

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

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

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

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

2.配置向量表說(shuō)明

愛(ài)思考(或者會(huì)尋到問(wèn)題)的朋友可能會(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)試配置說(shuō)明


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

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

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

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


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

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

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

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

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

1.修改Linker地址

Project -> Optionsfor Target -> Linker


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

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

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

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

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

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

2.配置向量表

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

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

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

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

3.修改編程地址

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

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

Ⅵ、說(shuō)明

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

    關(guān)注

    8

    文章

    1401

    瀏覽量

    121053
  • STM32
    +關(guān)注

    關(guān)注

    2313

    文章

    11195

    瀏覽量

    374741
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1232

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

    嵌入式軟件開(kāi)發(fā)工具市場(chǎng)新動(dòng)向:訂閱制趨勢(shì)下的中國(guó)開(kāi)發(fā)者選擇

    面對(duì)軟件業(yè)從永久授權(quán)模式廣泛轉(zhuǎn)向訂閱制的行業(yè)趨勢(shì),作為行業(yè)兩大主流嵌入式軟件開(kāi)發(fā)工具,即Keil MDK與IAR Embedded Workbench也推出了不同的市場(chǎng)策略,正在為中國(guó)開(kāi)發(fā)者帶來(lái)新的選擇考量。
    的頭像 發(fā)表于 01-30 17:20 ?941次閱讀
    嵌入式軟件<b class='flag-5'>開(kāi)發(fā)工具</b>市場(chǎng)新動(dòng)向:訂閱制趨勢(shì)下的中國(guó)<b class='flag-5'>開(kāi)發(fā)</b>者選擇

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

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

    宇樹(shù)人形機(jī)器人的配置,核心代碼,調(diào)試方法,二次開(kāi)發(fā)接口

    宇樹(shù)人形機(jī)器人的配置,核心代碼,調(diào)試方法,二次開(kāi)發(fā)接口
    的頭像 發(fā)表于 12-10 09:05 ?5792次閱讀

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

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

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

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

    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—調(diào)試工具安裝

    本文圍繞創(chuàng)龍科技研發(fā)的瑞芯微 RK3588 工業(yè)開(kāi)發(fā)板,詳細(xì)闡述三類(lèi)調(diào)試工具的安裝與配置流程。包括適配 CH340、CH341 芯片的 USB 轉(zhuǎn)串口驅(qū)動(dòng)安裝步驟及故障排查;系統(tǒng)
    的頭像 發(fā)表于 09-16 14:35 ?1302次閱讀
    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)<b class='flag-5'>開(kāi)發(fā)</b>板—<b class='flag-5'>調(diào)試工具</b>安裝

    【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】開(kāi)箱+Keil環(huán)境搭建+點(diǎn)燈

    /products/ra6m4 【板載資源介紹】 板載 2x用戶KEY、2x觸摸KEY、USB接口、USB轉(zhuǎn)串口、3x藍(lán)色LED燈 【開(kāi)發(fā)工具和環(huán)境】 支持 E2 Studio、Keil、IAR 等開(kāi)發(fā)工具
    發(fā)表于 07-16 08:45

    硬件調(diào)試:JLink 驅(qū)動(dòng)配置調(diào)試技巧

    摘要: 本文深入探討了 JLink 調(diào)試器在嵌入式系統(tǒng)硬件調(diào)試中的應(yīng)用,詳細(xì)闡述了 JLink 驅(qū)動(dòng)配置方法以及硬件
    的頭像 發(fā)表于 06-12 23:20 ?1922次閱讀
    硬件<b class='flag-5'>調(diào)試</b>:JLink 驅(qū)動(dòng)<b class='flag-5'>配置</b>與<b class='flag-5'>調(diào)試</b>技巧

    IAR開(kāi)發(fā)平臺(tái)升級(jí)Arm和RISC-V開(kāi)發(fā)工具鏈,加速現(xiàn)代嵌入式系統(tǒng)開(kāi)發(fā)

    IAR正式發(fā)布其旗艦產(chǎn)品的重大更新版本:Arm開(kāi)發(fā)工具鏈v9.70和RISC-V開(kāi)發(fā)工具鏈v3.40。
    的頭像 發(fā)表于 06-11 14:28 ?1153次閱讀

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

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

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

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

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】開(kāi)箱+Keil環(huán)境搭建+點(diǎn)燈

    、藍(lán)色LED燈x3、 【開(kāi)發(fā)工具和環(huán)境】 支持 Keil、E2 Studio 開(kāi)發(fā)工具 使用 Keil 開(kāi)發(fā), 建議安裝瑞薩 RASC (R
    發(fā)表于 05-05 09:37
    东平县| 合水县| 泰兴市| 嘉祥县| 东平县| 宁国市| 永清县| 登封市| 吴江市| 浪卡子县| 永吉县| 南充市| 东丽区| 四会市| 积石山| 盘山县| 合山市| 西畴县| 莱芜市| 汉阴县| 莱阳市| 子长县| 苏尼特右旗| 灵川县| 从化市| 云浮市| 清镇市| 福贡县| 大关县| 梁河县| 永仁县| 鲁甸县| 昂仁县| 昭平县| 渝北区| 浦县| 宁南县| 海盐县| 瑞安市| 洛隆县| 邳州市|