在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-01-10 10:05 ? 次閱讀

引言

CAN Bus(Controller Area Network),控制器區(qū)域網,起源于80年代,由國際標準化組織(ISO)所發(fā)布,因為利用雙線差動(two-wired differential),使其即使在電器條件惡劣環(huán)境下,也可正常運作的一種傳輸總線。又因雙線溝通的特性,大幅縮減了其應用線路的使用量,也降低傳統(tǒng)線路復雜易造成錯誤的發(fā)生機會。

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖1. Harvard結構

每個MAXQ器件采用以下存儲器類型:

1.閃存

2.SRAM

3.固定用途ROM

MAXQ器件也可從閃存、固定用途ROM或SRAM執(zhí)行程序代碼。從某個存儲器段執(zhí)行程序代碼時,其它兩個存儲器段可作為數(shù)據(jù)存儲器(更多詳細信息,請參閱從閃存執(zhí)行程序和執(zhí)行固定用途ROM函數(shù)部分)。這是因為程序和數(shù)據(jù)存儲器總線不能同時存取同一存儲器段。

有人可能認為采用Harvard結構的MAXQ微控制器也不能在非易失閃存中儲存數(shù)據(jù)。然而,MAXQ器件內嵌固定用途ROM函數(shù),允許讀、寫非易失閃存數(shù)據(jù)。

從閃存執(zhí)行程序

MAXQ器件中,從閃存執(zhí)行應用程序時,數(shù)據(jù)存儲器為SRAM (讀和寫)和固定用途ROM (只讀)。從閃存執(zhí)行代碼時,數(shù)據(jù)存儲器映射請參見表1,存儲器映射參見圖2.

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

SRAM數(shù)據(jù)存儲器在存儲器映射中位于地址0x0000至0x07FF (字節(jié)尋址模式下)或地址0x0000至0x03FF (字尋址模式下)。

固定用途ROM在存儲器映射中位于地址0x8000至0x9FFFh (字節(jié)模式)或地址0x8000至0x8FFF (字尋址模式下)。

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖2. 從閃存執(zhí)行應用代碼時的存儲器映射

執(zhí)行固定用途ROM函數(shù)

執(zhí)行固定用途ROM函數(shù)時,數(shù)據(jù)存儲器為SRAM (讀和寫)和閃存(讀和寫)。從閃存執(zhí)行應用程序且變量或數(shù)據(jù)對象位于閃存時,可通過固定用途ROM函數(shù)讀或寫這些變量或數(shù)據(jù)對象。通過跳轉至執(zhí)行固定用途ROM函數(shù),即可將閃存作為數(shù)據(jù)進行存取。從固定用途ROM執(zhí)行代碼時,數(shù)據(jù)存儲器映射請參見表2,存儲器映射參見圖3.

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

1.SRAM數(shù)據(jù)存儲器在存儲器映射中位于地址0x0000至0x07FF (字節(jié)尋址模式下)或地址0x0000至0x03FF (字尋址模式下)。

2.字節(jié)尋址模式下,CDA0 = 0時,閃存的低半部分在存儲器映射中位于地址0x8000至0xFFFFh;CDA0 = 1時,閃存的高半部分在存儲器映射中位于地址0x8000至0xFFFFh.字尋址模式下,閃存在存儲器映射中位于地址0x8000至0xFFFF.

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖3. 執(zhí)行固定用途ROM函數(shù)時的存儲器映射

閃存和SRAM中的存儲器分配

IAR嵌入式工作臺IDE用于編程基于MAXQ核的微控制器。IAR? C編譯器(用于MAXQ微控制器)提供用于定義閃存或SRAM位置中數(shù)據(jù)對象或變量的選項。編譯器具有特殊關鍵詞pragma location和pragma required;通過使用關鍵詞,可將存儲器分配給絕對地址的數(shù)據(jù)對象或變量。必須用IAR關鍵詞__no_init或const (標準C關鍵詞)聲明這些變量或數(shù)據(jù)對象。請參見下文中__no_init、const、pragma location和pragma required的關鍵詞說明。

關鍵詞說明

pragma location

#pragma location用于定義絕對地址的單個全局或靜態(tài)變量或數(shù)據(jù)對象。變量或數(shù)據(jù)對象必須聲明為__no_init或const.這對于必須位于固定地址的個體數(shù)據(jù)對象非常有用,例如變量、帶有外部或內部接口的數(shù)據(jù)對象或增加的硬件表項。

pragma required

#pragma required確保鏈接輸出中包括某個符號所需的另一個符號。該指令必須放在緊鄰第二個符號的前邊。如果符號在應用中不可見,使用該指令。例如,如果僅通過某個變量所在的段對其進行間接引用,必須使用#pragma required.

__no_init

正常情況下,應用程序啟動時,IAR運行時環(huán)境將全部全局和靜態(tài)變量初始化為0.IAR C編譯器支持聲明不初始化的變量,使用__no_init類型限定符。聲明為__no_init的變量在啟動時被禁止。不可能為__no_init對象賦予初始值。

例如:__no_init char MaximChar @ 0x0200;

本例中,聲明為__no_init的變量被放在默認數(shù)據(jù)存儲器(SRAM)的一個絕對地址。

const

const關鍵詞意味著對象為只讀。這類限定符用于表示直接或通過指針存取的數(shù)據(jù)對象,不可寫。當const隨關鍵詞#pragma location和#pragma required一起使用時,IAR分配#pragma location定義的位置的存儲器。這對于配置從外部接口進行存取的參數(shù)非常有用。這樣的閃存數(shù)據(jù)只能由固定用途ROM函數(shù)讀或寫。

IAR默認存儲器模型中,不可存取絕對地址的常量。利用選項Place constants in CODE (在IAR Project Option General Option Target window)使其可存取,如圖4所示。

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖4. IAR項目選項窗口

例1

const int FLASH_DATA0;

//FLASH_DATA0 is initialized to 0x0000 and linker will allocate memory address.

例2

#pragma location = 0xA000

const int FLASH_DATA1 = 0x1234;

#pragma required = FLASH_DATA1

本例中,存儲器分配為閃存地址0xA000,初始化為0x1234.

例3

#pragma location = 0xA002

__no_init const int FLASH_DATA2 //Memory is allocated at the address 0xA002 (byte address)

#pragma required = FLASH_DATA2

本例中,存儲器分配為閃存地址0xA002,不初始化。

上例中,有三個聲明為常量的對象,第一個初始化為0,第二個初始化為規(guī)定值,第三個不初始化。全部三個變量均在閃存中。

關鍵詞舉例

例1

下例中,F(xiàn)LASH_CONFIG為FlashMemoryMap結構變量。利用關鍵詞#pragma location和#pragma required顯式定義該結構變量的開始地址為"CONFIG_FLASH" (0xEE00)。

//Structure for Memory Map

typedef struct

{

unsigned char SYSTEM_CONFIG; //Address 0x00

unsigned char TEMP_CONFIG; //Address 0x01

unsigned char SLAVE_ADDR_A0; //Address 0x02

unsigned char NULL_A0_3; //Address 0x03

signed int INTERNAL_TEMP_THRES; //Address 0x04-5

signed int EXTERNAL_TEMP_THRES; //Address 0x06-7

signed int DS75_TEMP_THRES; //Address 0x08-9

}FlashMemoryMap;

#define CONFIG_FLASH = 0xEE00 //Flash Address

#pragma location = CONFIG_FLASH

const FlashMemoryMap FLASH_CONFIG = //Initialize data objects variable

{

0x00, // SYSTEM_CONFIG

0xFE, // TEMP_CONFIG

0xA0, // SLAVE_ADDR_A0

0x00, // NULL_A0_3

0x3200, // INTERNAL_TEMP_THRES

0x4200, // EXTERNAL_TEMP_THRES

0x5200 // DS75_TEMP_THRES

};

#pragma required = FLASH_CONFIG

為了在IAR嵌入式工作臺IDE中查看存儲器分配和初始化,進入View Memory.在顯示的編輯框中,在Go to框中鍵入0xEE00,然后從下拉框中選擇Code,如圖5所示。

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖5. 存儲器分配

例2

下例中,在地址0x0116創(chuàng)建DATA SRAMMemoryMap結構變量(DATA_MONITOR),該變量將被初始化(使用__no_init類型限定符)。

typedef struct

{

//Read Only

signed int INTERNAL_TEMP; //Address = OFFSET + 0x00-1

signed int EXTERNAL_TEMP; //Address = OFFSET + 0x02-3

signed int DS75_TEMP; //Address = OFFSET + 0x04-5

signed int VOLTAGE0; //Address = OFFSET + 0x06-7

signed int VOLTAGE1; //Address = OFFSET + 0x08-9

}SRAMMemoryMap;

#define CONFIG_SRAM 0x0116 //SRAM Address 0x0116

#pragma location = CONFIG_SRAM

__no_init SRAMMemoryMap DATA_MONITOR;

#pragma required = DATA_MONITOR

在IAR中調試時,為了查看該結構變量的內容,選擇變量,點擊右鍵,然后選擇Add to Watch選項,參見圖6.

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖6. IAR查看窗口

Intel? HEX文件中查看分配的存儲器

可在IAR嵌入式工作臺生成的Intel HEX文件中查看在代碼存儲器中為數(shù)據(jù)對象分配的存儲器。請參見圖7中的高亮部分。本例中,為數(shù)據(jù)對象分配的存儲器為閃存中0xEE00至0xEE15.

如何利用IAR嵌入式工具分配和存取MAXQ微控制器的存儲數(shù)據(jù)

圖7. 釋放模式下IAR生成的HEX文件

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

    關注

    48

    文章

    7576

    瀏覽量

    151725
  • 嵌入式
    +關注

    關注

    5087

    文章

    19153

    瀏覽量

    306423
  • CAN
    CAN
    +關注

    關注

    57

    文章

    2762

    瀏覽量

    464007
收藏 人收藏

    評論

    相關推薦

    如何為嵌入式應用選擇合適的微控制器

    。如果套件不存在那么特定部件很可能不是一個好的選擇,他們應該回過頭幾步,發(fā)現(xiàn)更好的部分。目前大多數(shù)套件的價格低于100美元。支付更多費用太多了。另一部分可能是更好的選擇。最后,我們可以得出結論,在為嵌入式應用選擇微控制器時需要考慮許多功能。包括硬件,
    發(fā)表于 12-21 17:58

    嵌入式相變存儲器在汽車微控制器中有什么優(yōu)點?

    汽車微控制器正在挑戰(zhàn)嵌入式非易失性存儲器(e-NVM)的極限,主要體現(xiàn)在存儲單元面積、訪問時間和耐熱性能三個方面。在許多細分市場(例如:網關、車身
    發(fā)表于 08-13 06:47

    基于微控制器的現(xiàn)代嵌入式系統(tǒng)

    通常是基于微控制器(如含集成內存和/或外設接口的中央處理單元)的,但在較復雜的系統(tǒng)中普通微處理器使用外部存儲芯片和外設接口電路。與個人計算機這樣的通用計算機系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求...
    發(fā)表于 07-30 07:49

    嵌入式平臺上板載的微控制器是什么

    1 填空題嵌入式競賽平臺上板載的微控制器是: 3 級流水線,具有 128 Kbytes的Flash存儲空間。(請在第一、二空格處填寫10進制數(shù)值)解析:STM32G431RBT6采用采用
    發(fā)表于 11-08 06:09

    嵌入式編程和微控制器應用

    歡迎進入嵌入式編程和微控制器應用的世界!使用日益流行且價格適宜的AtmelAVR嵌入式控制器作為學習平臺。本書是目前可以獲得的最佳書籍之一。對于初學者,本書將會是極好的選擇。隨著
    發(fā)表于 09-20 07:52

    時間觸發(fā)嵌入式系統(tǒng)設計模式(使用8051微控制器開發(fā)可靠應用

    時間觸發(fā)嵌入式系統(tǒng)設計模式:使用8051微控制器開發(fā)可靠應用主要關注使用軟件模式迅速地開發(fā)時間觸發(fā)嵌入式系統(tǒng)的軟件,涉及的系統(tǒng)全部基于8051系列微控制器。時間觸發(fā)技術
    發(fā)表于 10-28 23:20 ?689次下載
    時間觸發(fā)<b class='flag-5'>嵌入式</b>系統(tǒng)設計模式(使用8051<b class='flag-5'>微控制器</b>開發(fā)可靠應用

    采用MAXQ610評估套件(EV kit)和IAR嵌入式工作

    采用MAXQ610評估套件(EV kit)和IAR嵌入式工作臺進行設計 摘要:應用筆記介紹怎樣面向MAXQ610低功耗RISC微控制器開發(fā)
    發(fā)表于 01-13 08:08 ?1046次閱讀
    采用<b class='flag-5'>MAXQ</b>610評估套件(EV kit)和<b class='flag-5'>IAR</b><b class='flag-5'>嵌入式</b>工作

    采用MAXQ610評估套件(EV kit)和IAR嵌入式工作

    摘要:應用筆記介紹怎樣面向MAXQ610低功耗RISC微控制器開發(fā)、構建并調試應用程序。文章使用了IAR™系統(tǒng)公司提供的IAR Embedded Workbench®
    發(fā)表于 04-23 15:50 ?1083次閱讀
    采用<b class='flag-5'>MAXQ</b>610評估套件(EV kit)和<b class='flag-5'>IAR</b><b class='flag-5'>嵌入式</b>工作

    MAXQ微控制器中JTAG接口引腳的復用

    摘要:通常在嵌入式應用中,微控制器的每個端口引腳都是必需的,沒有多余引腳。大部分MAXQ®微控制器帶有可重新進行寫操作的內部程序存儲器
    發(fā)表于 04-23 16:28 ?967次閱讀

    利用MAXQ1103微控制器產生RSA密鑰

    利用MAXQ1103微控制器產生RSA密鑰 摘要:Maxim的RSA密鑰生成庫提供了一個簡單易用的接口,利用MAXQ1103
    發(fā)表于 04-27 16:12 ?1005次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>MAXQ</b>1103<b class='flag-5'>微控制器</b>產生RSA密鑰

    MAXQ構架上閃存和SRAM存儲器分配

    本應用筆記介紹如何利用IAR嵌入式工作臺工具分配存取MAX
    發(fā)表于 06-21 14:44 ?2550次閱讀
    <b class='flag-5'>MAXQ</b>構架上閃存和SRAM<b class='flag-5'>存儲器</b>的<b class='flag-5'>分配</b>

    MAXQ1061加密控制器保護存儲安全

    MAXQ1061是用于嵌入式設備的DeepCover?加密控制器。DeepCover嵌入式安全方案采用多重先進的物理安全機制保護敏感數(shù)據(jù),提
    的頭像 發(fā)表于 10-09 05:00 ?3791次閱讀

    使用IAR編譯MAXQ微控制器分配閃存和SRAM存儲器

    中,以訪問存儲數(shù)據(jù)。本應用筆記演示如何使用IAR嵌入式工作臺工具MAXQ
    的頭像 發(fā)表于 02-21 11:14 ?1427次閱讀
    使用<b class='flag-5'>IAR</b>編譯<b class='flag-5'>器</b>在<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>上<b class='flag-5'>分配</b>閃存和SRAM<b class='flag-5'>存儲器</b>

    IAR編譯MAXQ2000評估板入門

    MAXQ平臺由一套世界級的工具支持,即IARMAXQ嵌入式工作臺。本應用筆記描述了如何創(chuàng)建、構建和調試用C語言編寫的面向
    的頭像 發(fā)表于 03-02 14:18 ?1354次閱讀
    <b class='flag-5'>IAR</b>編譯<b class='flag-5'>器</b>和<b class='flag-5'>MAXQ</b>2000評估板入門

    使用IAR嵌入式工作臺調用實用程序ROM函數(shù)用于MAXQ

    實現(xiàn)了所謂的“偽馮諾依曼”架構:開發(fā)人員可以在程序空間中存儲數(shù)據(jù)和表,但只能使用特殊的實用程序ROM例程。除了這些核心功能外,每個MAXQ微控制器的ROM都可以具有特定于該器件的例程。
    的頭像 發(fā)表于 03-03 14:14 ?1651次閱讀
    使用<b class='flag-5'>IAR</b>的<b class='flag-5'>嵌入式</b>工作臺調用實用程序ROM函數(shù)用于<b class='flag-5'>MAXQ</b>
    主站蜘蛛池模板: 最近在线视频免费观看2019| 欧美色图狠狠干| 久久婷婷色| 婷婷激情综合五月天| 午夜在线观看视频| 久久综合色区| 色香蕉在线| 在线播放12p| 69xxx网站| 国产精品人人爱一区二区白浆| 在线免费影视| 国产高清视频免费最新在线| 欧美 日韩 中文字幕| 四虎影院永久网址| 亚洲天堂不卡| 狠狠色噜噜狠狠狠狠米奇777| 日木69xxxhd| 国产成人1024精品免费| 日日夜夜狠狠| 五月天婷婷综合| 一级免费看| www.av123| 超级极品白嫩美女在线| 国产欧美在线一区二区三区| 久久精品视频观看| 国产精品高清一区二区三区不卡 | 狠狠要| 天天做天天爱天天综合网| 韩国三级视频在线| 美女性视频网站| 免费边摸边吃奶边叫床视频gif| 日本黄色录像视频| 特级一级片| 噜噜色网| 午夜国产精品久久影院| 波多野结衣第一页| 色成人免费网站| 99久久精品费精品国产一区二| 99亚洲精品卡2卡三卡4卡2卡| 五月天在线播放| 黑人破乌克兰美女处|