將變量、數(shù)組(例如表或函數(shù))存儲(chǔ)到特定地址的原因有很多。
校驗(yàn)和可能需要位于某個(gè)地址,可能需要將函數(shù)放在特定的內(nèi)存位置,根據(jù)使用的編譯器,可以選擇設(shè)置特定的內(nèi)存區(qū)域。
這個(gè)問(wèn)題是在前面分享文章《STM32開(kāi)發(fā)工具之STM Studio調(diào)試和診斷工具講解》之后,有讀者提出來(lái)的問(wèn)題。
我需要在固定的內(nèi)存地址找到一個(gè)變量,如何使用C源代碼執(zhí)行此操作?
一、回顧STMStudio
前不久分享STMStudio文章之后,很多朋友對(duì)這個(gè)工具比較感興趣,也第一時(shí)間下來(lái)安裝使用了該工具。
這里簡(jiǎn)單說(shuō)一下STMStudio與本文相關(guān)的內(nèi)容:變量。
STMStudio可管理四種變量:
?由物理存儲(chǔ)地址標(biāo)識(shí)的絕對(duì)變量。
?能夠計(jì)算絕對(duì)變量的最小值、最大值、平均值和標(biāo)準(zhǔn)差等值的統(tǒng)計(jì)變量。
?表達(dá)式變量是數(shù)學(xué)表達(dá)式計(jì)算的結(jié)果。表達(dá)式是絕對(duì)變量或統(tǒng)計(jì)變量與數(shù)學(xué)運(yùn)算符(+,-,*,/…)的組合,例如:(Variable1+Variable2)*Variable3。注意,表達(dá)式變量是在統(tǒng)計(jì)變量之后求值的,因此不可能計(jì)算表達(dá)式的統(tǒng)計(jì)值。
?包含用戶(hù)可配置信息的插件變量。
(為了節(jié)約時(shí)間,使用有道翻譯的句子,大家請(qǐng)結(jié)合原文理解)
可以看得出來(lái),局部變量是不支持的。
J-Scope
這個(gè)STMStudio工具和J-Scope有類(lèi)似之處,也能查看變量、波形:
J-Scope也是一個(gè)不錯(cuò)的工具,大家可以下載安裝試試:
https://www.segger.com/products/debug-probes/j-link/tools/j-scope
二、回歸主題
如何將變量存儲(chǔ)在指定內(nèi)存地址?
不同的編譯器,會(huì)有不同的方法,這里主要結(jié)合MDK說(shuō)下基于AC5和AC6編譯,簡(jiǎn)述其中的方法。
結(jié)合STM32F103ZE,有64K(0x10000)內(nèi)存。
1.針對(duì)AC5(ARMCC Compiler version 5.x)
定義一個(gè)變量cnt到指定內(nèi)存地址:0x20008000
uint8_t cnt __attribute__((at(0x20008000)));
2.針對(duì)AC6(ARM Compiler 6 (又名ARMCLANG))
定義一個(gè)變量cnt到指定內(nèi)存地址:0x20008000
uint8_t cnt __attribute__((section(".ARM.__at_0x20008000")));
這個(gè)地方進(jìn)行分段:
這樣指定內(nèi)存地址,即可使用STMStudio進(jìn)行查看指定地址變量了:
好了,先寫(xiě)到這里,希望對(duì)大家有幫助。
-
ARM
+關(guān)注
關(guān)注
134文章
9304瀏覽量
374886 -
keil
+關(guān)注
關(guān)注
69文章
1223瀏覽量
168949 -
MDK
+關(guān)注
關(guān)注
4文章
211瀏覽量
32499
發(fā)布評(píng)論請(qǐng)先 登錄
從Keil MDK到IAR EWARM:通過(guò)工程遷移實(shí)現(xiàn)項(xiàng)目資產(chǎn)的更好管理

Keil uVision 5安裝包下載,詳細(xì)安裝教程~
在starvision2上移植FreeRTOS,objdump后發(fā)現(xiàn)static變量的地址是0,怎么解決?
【RA-Eco-RA4E2-64PIN-V1.0開(kāi)發(fā)板試用】+KEIL+RASC 開(kāi)發(fā)環(huán)境搭建
Keil詳細(xì)安裝教程(同時(shí)兼容51與STM32)

分享一個(gè)keil MDK編譯信息增強(qiáng)工具
新唐科技率先發(fā)布免費(fèi)版Arm Keil MDK,助力嵌入式開(kāi)發(fā)
labview如何獲取到圖像的內(nèi)存地址
keil軟件實(shí)現(xiàn)編程仿真需要哪些步驟
怎樣將keil中的程序?qū)С?/a>
keil5怎么利用sys進(jìn)行配置ti環(huán)境
keil5怎么給ti燒錄程序
Keil中變量不被初始化方法

評(píng)論