国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

我們為什么要將變量、數組存儲到特定的地址?

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2020-11-01 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

變量是程序中重要的一部分,產品中很多業務代碼都是變量起到了關鍵作用。

傳感器采集的數據、通信中傳輸的數據、算法中的數據等這些數據都需要借助變量這個東西來實現。

我們為什么要將變量、數組(例如表或函數)存儲到特定的地址?

因為有些特殊的數據可能需要指定地址,比如加密的密鑰、校驗和等這些數據可能需要存儲在指定內存。

1

變量查看工具

在描述將變量儲存在指定內存地址之前,我們先來描述一下查看變量的工具(通過工具可以查看變量的值)

1.STMStudio

之前給大家分享過《STM Studio調試和診斷工具講解》。

這里簡單說一下STMStudio與本文相關的內容:變量。

STMStudio可管理四種變量:

1.由物理存儲地址標識的絕對變量。

2.能夠計算絕對變量的最小值、最大值、平均值和標準差等值的統計變量。

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

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

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

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

2.J-Scope

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

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

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

2

Keil MDK如何將變量存儲在指定內存地址?

不同的編譯器,實現的方法可能不同,這里主要結合MDK說下基于AC5和AC6編譯,簡述其中的方法。

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

定義一個變量cnt到指定內存地址:0x20008000

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

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

定義一個變量cnt到指定內存地址:0x20008000

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

這個地方進行分段:

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

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

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編譯器
    +關注

    關注

    1

    文章

    1672

    瀏覽量

    51626
  • 變量
    +關注

    關注

    0

    文章

    616

    瀏覽量

    29506
  • 數組
    +關注

    關注

    1

    文章

    420

    瀏覽量

    27368

原文標題:Keil MDK如何將變量存儲在指定內存地址

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    容易造成單片機內存溢出的幾個陷阱介紹

    的時候非常容易出現棧溢出。平常我們程序里不可避免的會調用一些函數,所以我們調用一些函數的時候最好不要有深層次的調用,因為在調用函數的過程中棧區會不停的存儲函數相關的一些變量和一些
    發表于 01-23 07:25

    C語言訪問某特定內存位置

    嵌入式系統經常具有要求程序員去訪問某特定的內存位置的特點。在某工程中,要求設置一絕對地址為0x67a9的整型變量的值為0xaa66。編譯器是一個純粹的ANSI編譯器。寫代碼去完成這一任務。 考察點
    發表于 12-22 15:42

    瑞薩RA系列FSP庫開發實戰指南之定義傳輸源和目標存儲

    首先,要使用DMA傳輸,就肯定要有一個源地址和一個目標地址,這里我們定義SRC_Buffer數組的首地址作為源
    的頭像 發表于 12-15 11:09 ?4096次閱讀
    瑞薩RA系列FSP庫開發實戰指南之定義傳輸源和目標<b class='flag-5'>存儲</b>器

    字符串關聯數字變量如何使用?我們地址都是16位數據,可以使用16位數字變量顯示字符串嗎?

    字符串關聯數字變量如何使用?我們地址都是16位數據,可以使用16位數字變量顯示字符串嗎?
    發表于 12-15 08:24

    C語言全局變量重點使用

    重要的循環中我們不建議使用全局變量。 如果函數過多的使用全局變量,比較好的做法是拷貝全局變量的值局部
    發表于 12-12 06:58

    第7章 變量進階與點陣LED(7.1 7.2)

    知識——變量的作用域和存儲類別。 7.1變量的作用域 所謂的作用域就是指變量起作用的范圍,也是變量的有效范圍。
    的頭像 發表于 12-10 16:25 ?356次閱讀

    使用直接尋址方式提高速度

    允許編譯器生成更高效的代碼,因為訪問變量時不需要額外的地址計算。這樣可以減少指令周期,提高執行速度。直接尋址通常用于內存限制較小的存儲區域,如8051微控制器的內部數據存儲區(通常為1
    發表于 12-04 06:28

    Stack棧到底用來干嘛的呢?

    在函數的局部變量數組這些不能超過1K(含嵌套的函數),否則程序就會崩潰進入hardfaul。 除了這些局部變量以外,還有一些實時操作系統的現場保護、返回地址都是
    發表于 12-01 08:04

    數組的初體驗

    袋中的物品是按一定順序放置的。 1.我們來看一下如何聲明一個數組: 數據類型 數組名稱[長度]; 數組只聲明也不行啊,看一下數組是如何初
    發表于 11-25 08:06

    二維數組介紹

    的: 123456789 和一維數組沒有什么區別,都是一維線性排列。 當我們像 array[1][1]這樣去訪問的時候,編譯器會怎么去計算我們真正所訪問元素的地址呢? 為了
    發表于 11-25 07:42

    如何將某個函數或變量放在固定的地址

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

    CICC2033神經網絡部署相關操作

    在完成神經網絡量化后,需要將神經網絡部署硬件加速器上。首先需要將所有權重數據以及輸入數據導入存儲器內。 在仿真環境下,可將其存于一個文件
    發表于 10-20 08:00

    .elf 轉換成.img 后,如何知道SPI flash 中的變量地址呢?

    我正在使用 cyusb3014。我想知道 C 應用程序中變量在 SPI 閃存中的地址。 我在 C 語言中聲明了一個USB特殊字符串變量,就像 靜態 uint_8 abcDscr[256]; 我可以在
    發表于 07-18 07:44

    NXP MCU RT1166如何使用JTAG/SWD工具將數據存儲內部閃存中?

    我需要使用 JTAG 將數據存儲內部閃存中。我能夠使用 JTAG/SWD 工具 ARM J-Link 將它們存儲在 FlexSPI1 連接的外部閃存上,并且可以通過地址0x30000
    發表于 04-01 06:54

    在starvision2上移植FreeRTOS,objdump后發現static變量地址是0,怎么解決?

    鏈接腳本還是什么的問題。objdump后發現static變量地址是0。 沒太搞懂是為什么。下面是我的鏈接腳本 OUTPUT_ARCH("riscv"
    發表于 03-10 07:21