衡阳派盒市场营销有限公司

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

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

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

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

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

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

介紹

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

poYBAGP0PPKAPiCBAAAq26s7WvA226.png

圖1.哈佛建筑。

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

閃存

SRAM

實用ROM

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

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

從閃存執(zhí)行程序

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

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

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

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

pYYBAGP0PPiABONLAACK9dm2icc247.png

圖2.應用程序從閃存執(zhí)行代碼時的內(nèi)存映射。

執(zhí)行實用程序 ROM 函數(shù)

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

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

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

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

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

poYBAGP0PQiAdZCEAACFcIajY04049.png

圖3.執(zhí)行實用程序 ROM 功能時的內(nèi)存映射。

閃存和SRAM中的內(nèi)存分配

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

關鍵字描述

雜注位置

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

需要編譯指示

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

__no_init

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

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

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

常量

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

放置在絕對地址的常量變量在 IAR 的默認內(nèi)存模型中不可訪問。使用選項“在 CODE 中放置常量”(在 IAR 項目pYYBAGP0NxiAYeTSAAAB-HzF9KM477.gif?imgver=1選項“常規(guī)選項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,鏈接器將分配內(nèi)存地址。

例 2

#pragma位置 = 0xA000

常量整數(shù) FLASH_DATA1 = 0x1234;

所需#pragma = 此處FLASH_DATA1

內(nèi)存在閃存地址 0xA000 處分配并初始化為 0x1234。

例 3

#pragma位置 = 0xA002

__no_init const int FLASH_DATA2 //內(nèi)存在地址0xA002(字節(jié)地址)

處分配#pragma所需的 = FLASH_DATA2

此處,內(nèi)存在閃存地址0xA002分配,無需初始化。

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

審核編輯:郭婷

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

    關注

    48

    文章

    7649

    瀏覽量

    152104
  • 存儲器
    +關注

    關注

    38

    文章

    7528

    瀏覽量

    164341
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49283
收藏 人收藏

    評論

    相關推薦

    帶有紅外收發(fā)的高性能16位RISC微控制器

    Maxim推出帶有紅外(IR)收發(fā)的高性能16位RISC微控制器MAXQ613。MAXQ610微控制
    發(fā)表于 07-28 15:26 ?45次下載

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

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

    應用編程MAXQ微控制器中可分區(qū)擦除的程序和數(shù)據(jù)閃存

    摘要:本應用筆記介紹了MAXQ微控制器中的程序和數(shù)據(jù)閃存,以及如何使用內(nèi)置的應用ROM對閃存進行擦/寫。本應用筆記適用于所有使用分區(qū)擦除閃存
    發(fā)表于 04-23 17:16 ?709次閱讀
    <b class='flag-5'>在</b>應用編程<b class='flag-5'>MAXQ</b><b class='flag-5'>微控制器</b>中可分區(qū)擦除的程序和數(shù)據(jù)<b class='flag-5'>閃存</b>

    MAXQ8913微控制器中從RAM執(zhí)行應用程序

    MAXQ8913微控制器中從RAM執(zhí)行應用程序 MAXQ8913及其它MAXQ®微控制器
    發(fā)表于 01-11 17:56 ?1212次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>MAXQ</b>8913<b class='flag-5'>微控制器</b>中從RAM執(zhí)行應用程序

    如何分配IAR編譯器的MAX微控制器閃存SRAM內(nèi)存

    Abstract: MAXQ devices provide special utility ROM functions, which are called to read and write
    發(fā)表于 12-19 11:44 ?0次下載
    如何<b class='flag-5'>分配</b><b class='flag-5'>IAR</b><b class='flag-5'>編譯器</b><b class='flag-5'>上</b>的MAX<b class='flag-5'>微控制器</b><b class='flag-5'>閃存</b>和<b class='flag-5'>SRAM</b>內(nèi)存

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

    本應用筆記介紹如何利用IAR嵌入式工作臺工具分配和存取MAXQ微控制器閃存
    發(fā)表于 06-21 14:44 ?2584次閱讀
    <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>

    STM32系列微控制器存儲器與外設

    STM32系列微控制器存儲器與外設
    發(fā)表于 09-29 14:50 ?7次下載
    STM32系列<b class='flag-5'>微控制器</b><b class='flag-5'>存儲器</b>與外設

    閃存儲器控制器選擇技巧

    現(xiàn)代快閃存儲器控制器中的磨損平衡技術已經(jīng)有顯著進步,能夠克服快閃存儲器儲存介質(zhì)固有的弱點,并幫助發(fā)揮出快閃存儲器的優(yōu)勢。對于現(xiàn)代快閃存儲器
    發(fā)表于 03-07 09:45 ?1436次閱讀

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

    微控制器進行編程或刻錄意味著“將程序從編譯器傳輸?shù)?b class='flag-5'>微控制器存儲器”。微控制器的程序通常是用C或匯編語言編寫的,最后
    的頭像 發(fā)表于 08-21 15:40 ?1.1w次閱讀

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

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

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

    通常在嵌入式應用中,微控制器的每一個端口引腳都需要,沒有多余的端口引腳。大多數(shù)具有可重寫內(nèi)部程序存儲器(如閃存或EEPROM)的MAXQ?
    的頭像 發(fā)表于 01-10 11:34 ?1242次閱讀

    MAXQ2000數(shù)據(jù)存儲器中實現(xiàn)軟堆棧

    ),存儲與數(shù)據(jù)和程序空間分開的專用內(nèi)部存儲器中。通過子程序調(diào)用和中斷,這一硬堆??捎糜诒4婧突謴?b class='flag-5'>微控制器的操作狀態(tài)。
    的頭像 發(fā)表于 02-14 18:20 ?838次閱讀

    MAXQ8913微控制器的RAM執(zhí)行應用代碼

    MAXQ8913和其他MAXQ微控制器使用的哈佛存儲器映射架構為用戶提供了根據(jù)需要將不同的物理存儲器段(如數(shù)據(jù)
    的頭像 發(fā)表于 02-21 16:18 ?641次閱讀
    從<b class='flag-5'>MAXQ</b>8913<b class='flag-5'>微控制器</b><b class='flag-5'>上</b>的RAM執(zhí)行應用代碼

    IAR編譯器MAXQ2000評估板入門

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

    微控制器內(nèi)部的存儲器有哪些

    微控制器(MCU)內(nèi)部的存儲器微控制器系統(tǒng)的重要組成部分,它負責存儲程序代碼、數(shù)據(jù)以及控制邏輯等信息。這些
    的頭像 發(fā)表于 08-22 10:41 ?889次閱讀
    百家乐官网的必胜方法| 百家乐官网德州扑克发牌盒| 盈丰国际| 丰顺县| 百家乐官网赌博大揭密| 百家乐官网百战百胜| 立即博百家乐现金网| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 澳门百家乐官网官网| 百家乐一邱大师打法| 大发888在线娱乐加盟合作| 一二博| 电脑版百家乐官网下注技巧| 百家乐下载游戏| 威尼斯人娱乐城在线赌博网站| 澳门娱乐城开户| 最好的百家乐官网娱乐场| 24山分阴阳| 大发888娱乐平台下| 百家乐官网里面的奥妙| 金公主百家乐现金网| 足球投注网站| 百家乐官网制胜秘| 百家乐英皇娱乐平台| 御金娱乐城| 新锦江百家乐官网的玩法技巧和规则 | 威尼斯人娱乐的微博| 泰州市| 土豪百家乐官网的玩法技巧和规则 | 百家乐官网投注技巧球讯网| 游戏厅百家乐技巧| 网络博彩qq群| 网上百家乐平台下载| 大发888 制度| 百家乐庄闲出现几| 真人百家乐官网网站接口| 免费百家乐官网过滤软件| 大发888娱乐日博备用| 缅甸百家乐官网龙虎斗| 二八杠的玩法| 百家乐官网双人操作分析仪|