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

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

3天內不再提示

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

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 11:14 ? 次閱讀

MAXQ器件提供特殊的實用ROM功能,調用ROM功能從程序存儲器讀寫數據。但是,存儲在程序存儲器中的數據不能直接在MAXQ微控制器上訪問。相反,實用程序ROM函數的起始地址集成在IAR嵌入式工作臺中,以訪問存儲的數據。本應用筆記演示如何使用IAR嵌入式工作臺工具在MAXQ微控制器上分配和訪問閃存和SRAM存儲器。

介紹

MAXQ架構描述了一個基于經典哈佛架構的強大單周期RISC微控制器,其中程序和數據存儲器總線是分開的。這種組織需要為每個存儲器提供專用總線(圖1),因此可以同時獲取指令和操作數。由于不存在對單個數據總線的爭用,MAXQ指令只能在一個周期內執行。

poYBAGP0PPKAPiCBAAAq26s7WvA226.png

圖1.哈佛建筑。

每個MAXQ器件包含以下存儲器類型:

閃存

SRAM

實用ROM

MAXQ器件還可以從閃存、實用程序ROM或SRAM執行程序代碼。從一個存儲器段執行程序代碼時,其他兩個存儲器段可用作數據存儲器(有關更多詳細信息,請參閱從閃存執行程序和執行實用程序ROM功能部分。這是因為程序和數據存儲器總線不能同時訪問同一存儲器段。

作為哈佛的機器,人們可能會認為MAXQ微控制器禁止將數據元件存儲到非易失性閃存中。但是,MAXQ器件設計有內置的實用程序ROM功能,允許在非易失性閃存中讀取和寫入數據。

從閃存執行程序

在MAXQ器件中,當應用程序從閃存中執行時,數據存儲器是SRAM(讀寫)和實用程序ROM(只讀)。從閃存執行代碼時,請參閱表1了解數據存儲器映射,有關存儲器映射,請參閱圖2。

SRAM數據存儲器位于從地址0x0000到0x07FF(在字節尋址模式下)或從地址0x0000到0x03FF(在字尋址模式下)的存儲器映射中。

實用程序ROM位于從地址0x8000到0x9FFFh(字節模式)或從地址0x8000到0x8FFF(字尋址模式)的內存映射中。

尋址模式 SRAM 實用ROM
起始地址 結束地址 起始地址 結束地址
字節模式 0x0000 0x07FF 0x8000 0x9FFF
字模式 0x0000 0x03FF 0x8000 0x8FFF

pYYBAGP0PPiABONLAACK9dm2icc247.png

圖2.應用程序從閃存執行代碼時的內存映射。

執行實用程序 ROM 函數

執行實用程序ROM功能時,數據存儲器是SRAM(讀取和寫入)和閃存(讀取和寫入)。當應用程序從閃存執行并在閃存中分配變量或數據對象時,可以通過實用程序ROM函數讀取或寫入這些變量或數據對象。通過將程序執行跳轉到實用程序ROM功能,現在可以將閃存作為數據進行訪問。從實用程序ROM執行代碼時,請參閱表2以獲取數據存儲器映射,有關存儲器映射,請參閱圖3。

SRAM數據存儲器位于從地址0x0000到0x07FF(在字節尋址模式下)或從地址0x0000到0x03FF(在字尋址模式下)的存儲器映射中。

在字節尋址模式下,當CDA0 = 8000時,閃存的下半部分位于從地址0x0到0xFFFFh的內存映射中,當CDA0 = 8000時,閃存的上半部分位于從地址0x0到1xFFFFh的內存映射中。在字尋址模式下,閃存位于從地址0x8000到0xFFFF的存儲器映射中。

尋址模式 SRAM
閃存下半部分 (CDA0 = 0)

閃存上半部分 (CDA0 = 1)
閃存
起始地址 結束地址 起始地址 結束地址 起始地址 結束地址 起始地址 結束地址
字節模式 0x0000 0x07FF 0x8000 0xFFFF 0x8000 0xFFFF
字模式 0x0000 0x03FF 0x8000 0xFFFF

poYBAGP0PQiAdZCEAACFcIajY04049.png

圖3.執行實用程序 ROM 功能時的內存映射。

閃存和SRAM中的內存分配

IAR嵌入式工作臺IDE用于編程基于MAXQ內核的微控制器。IAR? C編譯器(用于MAXQ微控制器)提供了在閃存或SRAM位置定義數據對象或變量的選項。編譯器具有特殊的關鍵字雜注位置所需的雜注;通過使用這些關鍵字,可以將內存分配給絕對地址處的數據對象或變量。這些變量或數據對象必須使用 IAR 關鍵字 __no_initconst(標準 C 關鍵字)聲明。請參閱下面所需__no_init、常量、雜注位置所需程序的關鍵字說明。

關鍵字描述

雜注位置

#pragma location 關鍵字用于將單個全局或靜態變量或數據對象放置在絕對地址處。變量或數據對象必須聲明為 __no_initconst。這對于必須位于固定地址的單個數據對象非常有用,例如變量、具有外部或內部接口的數據對象或填充硬件表。

需要編譯指示

所需的#pragma可確保鏈接輸出中包含另一個符號所需的符號。指令必須放在第二個符號之前。如果對符號的要求在應用程序中不可見,請使用該指令。例如,如果變量僅通過其所在的段間接引用,則必須使用必需#pragma。

__no_init

通常,IAR 運行時環境會在應用程序啟動時將所有全局變量和靜態變量初始化為 0。IAR C 編譯器支持使用 __no_init 類型修飾符聲明不會初始化的變量。使用 __no_init 聲明的變量在啟動時被禁止顯示。無法為__no_init對象指定初始值。

示例:__no_init字符馬克西姆查爾@0x0200;

在此示例中,聲明__no_init變量放置在默認數據存儲器 (SRAM) 中的絕對地址。

常量

const 關鍵字表示對象是只讀的。這種類型的限定符用于指示直接或通過指針訪問的數據對象是不可寫的。當 const 與關鍵字 #pragma 位置一起使用并且需要#pragma時,IAR 會在#pragma位置定義的位置分配內存。這對于可從外部接口訪問的配置參數非常有用。此類閃存數據對象只能由實用程序ROM功能讀取或寫入。

放置在絕對地址的常量變量在 IAR 的默認內存模型中不可訪問。使用選項“在 CODE 中放置常量”(在 IAR 項目pYYBAGP0NxiAYeTSAAAB-HzF9KM477.gif?imgver=1選項“常規選項pYYBAGP0NxiAYeTSAAAB-HzF9KM477.gif?imgver=1 pYYBAGP0NxiAYeTSAAAB-HzF9KM477.gif?imgver=1目標”窗口中)使其可訪問,如圖 4 所示。

poYBAGP0NyGAMPEmAADUzcDtYWY975.gif?imgver=1

圖4.IAR 項目選項窗口。

例 1

const int FLASH_DATA0;

//FLASH_DATA0 初始化為 0x0000,鏈接器將分配內存地址。

例 2

#pragma位置 = 0xA000

常量整數 FLASH_DATA1 = 0x1234;

所需#pragma = 此處FLASH_DATA1

內存在閃存地址 0xA000 處分配并初始化為 0x1234。

例 3

#pragma位置 = 0xA002

__no_init const int FLASH_DATA2 //內存在地址0xA002(字節地址)

處分配#pragma所需的 = FLASH_DATA2

此處,內存在閃存地址0xA002分配,無需初始化。

在上面的示例中,有三個 const 聲明的對象,其中第一個初始化為零,第二個初始化為特定值,第三個未初始化。所有三個變量都放置在閃存中。

審核編輯:郭婷

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

    關注

    48

    文章

    6856

    瀏覽量

    148134
  • 存儲器
    +關注

    關注

    38

    文章

    7207

    瀏覽量

    162293
  • 編譯器
    +關注

    關注

    1

    文章

    1579

    瀏覽量

    48711
收藏 人收藏

    評論

    相關推薦

    TC364微控制器是否支持外部存儲器?

    TC364 微控制器是否支持外部存儲器? 根據我的閱讀,外部總線接口用于外部存儲器。 微控制器的數據手冊中,我看到外部總線為 0。
    發表于 03-04 06:13

    MAXQ1850評估套件(EV kit)和面向MAXQ30的CrossWorks編譯器的設計方案

    的CrossWorks C編譯器。 引言Maxim Integrated Products的MAXQ1850是高性能、安全、小封裝、32位RISC微控制器,設計用于電子商務、銀行和數據安全應用。
    發表于 12-24 09:23

    什么是微控制器

      微控制器是將微型計算機的主要部分集成一個芯片的單芯片微型計算機。微控制器誕生于20世紀70年代中期,經過20多年的發展,其成本越來越低,而性能越來越強大,這使其應用已經無處不在
    發表于 11-14 14:30

    ST推出閃存容量高達512KB的STM32F3微控制器

    (STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM) 的STM32F3系列微控制器再添新產品,滿足市場對高性能、創新功能和價格實惠的需求。新微控制器的片存儲
    發表于 07-06 04:42

    沒有微控制器中提供SRAM

    你好,我想管理我的微控制器STM32 F415(包括2K字節的CCM數據RAM的192K字節SRAM)的存儲器,具有兩個特點:AMQP(需要30K字節)和藍牙通信(需要25K字節)然而,
    發表于 01-02 16:33

    嵌入式相變存儲器汽車微控制器中有什么優點?

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

    帶紅外模塊的16位微控制器MAXQ61C電子資料

    概述:MAXQ61C是一款低功耗、16位MAXQ 微控制器 ,設計用于通用遙控 、消費類電子和白色家電等低功耗產品。器件結合了功能強大的16位RISC
    發表于 04-13 07:16

    16位微控制器MAXQ613電子資料

    概述:MAXQ613是一款低功耗、16位MAXQ 微控制器 ,設計用于通用 遙控 、消費類 電子 和白色家電等低功耗產品。器件結合了強大的16位RISC
    發表于 04-13 07:35

    USB收發的微控制電路MAXQ612相關資料下載

    閃存和6KB數據SRAM。通過安全存儲器管理單元(MMU)提供知識產權(IP)保護,該安全MMU可支持多種授權等級配置,保護代碼不被復制和進行逆向工程。授權等級使廠商可以提供MAXQ6
    發表于 04-19 07:37

    FLASH存儲器SRAM最主要的區別是什么

    概念理解:FLASH存儲器又成為閃存,它與EEPROM都是掉電后數據不丟失的存儲器,但是FLASH得存儲容量都普遍的大于EEPROM,,
    發表于 03-02 07:20

    PrimeCell AHB SRAM/NOR存儲器控制器(PL241)技術參考手冊

    AHB MC是一種符合高級微控制器總線體系結構(AMBA)的片系統(SoC)外圍設備。它由ARM有限公司開發、測試和許可。 AHB MC利用了新開發的靜態存儲器控制器(SMC)。AH
    發表于 08-02 07:14

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

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

    什么是微控制器?如何編程微控制器?

    微控制器進行編程或刻錄意味著“將程序從編譯器傳輸到微控制器存儲器”。微控制器的程序通常是用C或匯編語言編寫的,最后
    的頭像 發表于 08-21 15:40 ?9503次閱讀

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

    發表于 11-17 12:42 ?0次下載
    使用 <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><b class='flag-5'>閃存</b>和 <b class='flag-5'>SRAM</b> <b class='flag-5'>存儲器</b>

    MAXQ8913微控制器上的RAM執行應用代碼

    MAXQ8913和其他MAXQ微控制器使用的哈佛存儲器映射架構為用戶提供了根據需要將不同的物理存儲器段(如數據
    的頭像 發表于 02-21 16:18 ?390次閱讀
    從<b class='flag-5'>MAXQ</b>8913<b class='flag-5'>微控制器</b>上的RAM執行應用代碼
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>