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

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

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

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

如何將變量存儲在指定內(nèi)存地址 (基于Keil MDK-ARM)

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 作者:黃工的嵌入式技術(shù) ? 2020-02-29 16:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

將變量、數(shù)組(例如表或函數(shù))存儲到特定地址的原因有很多。

校驗和可能需要位于某個地址,可能需要將函數(shù)放在特定的內(nèi)存位置,根據(jù)使用的編譯器,可以選擇設(shè)置特定的內(nèi)存區(qū)域。

這個問題是在前面分享文章《STM32開發(fā)工具之STM Studio調(diào)試和診斷工具講解》之后,有讀者提出來的問題。

我需要在固定的內(nèi)存地址找到一個變量,如何使用C源代碼執(zhí)行此操作?

一、回顧STMStudio

前不久分享STMStudio文章之后,很多朋友對這個工具比較感興趣,也第一時間下來安裝使用了該工具。

這里簡單說一下STMStudio與本文相關(guān)的內(nèi)容:變量。

STMStudio可管理四種變量:

?由物理存儲地址標(biāo)識的絕對變量。

?能夠計算絕對變量的最小值、最大值、平均值和標(biāo)準(zhǔn)差等值的統(tǒng)計變量。

?表達式變量是數(shù)學(xué)表達式計算的結(jié)果。表達式是絕對變量或統(tǒng)計變量與數(shù)學(xué)運算符(+,-,*,/…)的組合,例如:(Variable1+Variable2)*Variable3。注意,表達式變量是在統(tǒng)計變量之后求值的,因此不可能計算表達式的統(tǒng)計值。

?包含用戶可配置信息的插件變量。

(為了節(jié)約時間,使用有道翻譯的句子,大家請結(jié)合原文理解)

可以看得出來,局部變量是不支持的。

J-Scope

這個STMStudio工具和J-Scope有類似之處,也能查看變量、波形:

J-Scope也是一個不錯的工具,大家可以下載安裝試試:

https://www.segger.com/products/debug-probes/j-link/tools/j-scope

二、回歸主題

如何將變量存儲在指定內(nèi)存地址?

不同的編譯器,會有不同的方法,這里主要結(jié)合MDK說下基于AC5和AC6編譯,簡述其中的方法。

結(jié)合STM32F103ZE,有64K(0x10000)內(nèi)存。

1.針對AC5(ARMCC Compiler version 5.x)

定義一個變量cnt到指定內(nèi)存地址:0x20008000

uint8_t cnt __attribute__((at(0x20008000)));

2.針對AC6(ARM Compiler 6 (又名ARMCLANG))

定義一個變量cnt到指定內(nèi)存地址:0x20008000

uint8_t cnt __attribute__((section(".ARM.__at_0x20008000")));

這個地方進行分段:

這樣指定內(nèi)存地址,即可使用STMStudio進行查看指定地址變量了:

好了,先寫到這里,希望對大家有幫助。

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

    關(guān)注

    135

    文章

    9553

    瀏覽量

    391913
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1230

    瀏覽量

    172648
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    211

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guā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 ?1051次閱讀
    使用 <b class='flag-5'>Keil</b> Studio for Visual Studio Code開發(fā) STM32 設(shè)備

    MDK-ARM平臺下的fft介紹

    MDK-ARM平臺 #include &quot;arm_math.h&quot; #include &quot
    發(fā)表于 01-22 07:35

    【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀體驗】+讀深入理解Linux內(nèi)核內(nèi)存分配

    的一部分。也就是說,ARM架構(gòu)中,MMU是已獲得許可的處理核心的一部分,負責(zé)每次訪問內(nèi)存虛擬地址
    發(fā)表于 01-16 20:05

    有新版keil MDK-ARM V5 注冊機安裝包不,孩子下載keil卡在許可碼過期了,救救孩子吧

    有新版keil MDK-ARM V5 注冊機安裝包不,孩子下載keil卡在許可碼過期了,救救孩子吧
    發(fā)表于 01-14 19:37

    LAT1185+一個地址未對齊引起的 HardFault 異常應(yīng)用筆記

    ,則程序運行正常。表面上看,這似乎是 KEIL MDK 的問題,通過分析,導(dǎo)致這個問題的本質(zhì)原因是內(nèi)存地址沒有對齊引起的,下面章節(jié)詳細分析該問題的來龍去脈以及解決方法。
    發(fā)表于 01-11 17:28 ?0次下載

    聊聊MCU下載算法Keil MDK里的那些事兒

    嗨,嵌入式開發(fā)的小伙伴們!用 Keil MDK(μVision)搭配 J-Link 或 DAPLink 調(diào)試器刷代碼到 MCU 的 Flash,是咱們?nèi)粘i_發(fā)的老套路了。里面有個關(guān)鍵
    的頭像 發(fā)表于 12-16 09:30 ?4359次閱讀
    聊聊MCU下載算法<b class='flag-5'>在</b><b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b>里的那些事兒

    不同位數(shù)的CPU的變量所占的內(nèi)存

    不同位數(shù)的CPU(單片機)的變量所占的內(nèi)存也不盡相同,具體如下表所示。 8位16位32位64位 char1 Byte1 Byte1 Byte1 Byte short int2 Byte2 Byte2
    發(fā)表于 12-09 07:30

    Keil5中查看棧大小

    為需要的大小,然后保存并重新編譯工程,新的棧大小即可生效。 2、查看.map文件: 方法說明:Keil MDK中編譯工程后,會生成一個.map文件,該文件包含了內(nèi)存分配和使用的詳細
    發(fā)表于 11-14 06:32

    CW32 MCU用什么IDE開發(fā)?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發(fā)CW32 MCU應(yīng)用,其中新版本IAR EWARM直接支持CW32 MCU,
    發(fā)表于 11-12 07:52

    如何將某個函數(shù)或變量放在固定的地址 ?

    如題,如何將某個函數(shù)或者變量放在固定的地址?類似于__attribute__( at(絕對地址) ),用的nucleistudio ide, __attribute__( at(絕對
    發(fā)表于 11-07 06:07

    請問Modus Toolbox下針對CYW20719B2編程,能否指定全局變量地址?

    請問Modus Toolbox 下針對CYW20719B2編程,能否指定全局變量地址?
    發(fā)表于 07-08 07:20

    Keil MDK到IAR EWARM:通過工程遷移實現(xiàn)項目資產(chǎn)的更好管理

    對于需要統(tǒng)一開發(fā)環(huán)境或涉及多核架構(gòu)(如Cortex-A/R)的項目,越來越多的用戶選擇從Keil MDK遷移到IAR EWARM。這就會面臨著需要將之前的Keil MDK工程遷移到IA
    的頭像 發(fā)表于 05-08 09:03 ?1294次閱讀
    從<b class='flag-5'>Keil</b> <b class='flag-5'>MDK</b>到IAR EWARM:通過工程遷移實現(xiàn)項目資產(chǎn)的更好管理

    Keil uVision 5安裝包下載,詳細安裝教程~

    目錄(覆蓋原有文件)。 ISIS中啟用\"Use Remote Debug MONITOR\",Keil for ARM選擇\"Proteus VSM
    發(fā)表于 03-15 12:10

    指定文件下的函數(shù)加載到指定ram問題

    問題:mcuxpresso環(huán)境,xip模式下我需要使用flexspinorflash的一部分作為文件系統(tǒng),flex以及fatfs相關(guān)函數(shù)全部加載到ram,發(fā)現(xiàn)rodata仍然flash
    發(fā)表于 03-12 17:02

    starvision2上移植FreeRTOS,objdump后發(fā)現(xiàn)static變量地址是0,怎么解決?

    以下內(nèi)容為評論 我是嵌入式的新手,目前打算freeRTOS移植到starvision2上。 但是鏈接的時候遇到一個問題。 main.c:74:(.text+0x26): relocation
    發(fā)表于 03-10 07:21