娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月28日(星期二)

2020年01月28日 | ADS分散加載文件使用總結(lpc23xx)

發布者:CrystalSparkle 來源: eefocus關鍵字:ADS  分散加載文件  lpc23xx 手機看文章 掃描二維碼
隨時隨地手機看文章

有如下分散加載文件:

ROM_LOAD 0x00000000              ;// Origination Point of Code (Code in Flash)
{
    ROM_EXEC 0x00000000           ;// Origination Point of Executing
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
    IRAM 0x40000040                 ;// Origination Point of Internal SRAM
    {                              ;// 0x40000000 ~ 0x4000003F for Vector
        Startup.o (MyStacks)
    }
    STACKS_BOTTOM +0 UNINIT
    {
        Startup.o (StackBottom)
    }
    STACKS 0x40004000 UNINIT      ;// End Point of Internal SRAM

    {

        Startup.o (Stacks)

    }
    ERAM 0x81000000                ;// Origination Point of External SRAM
    {
        * (+RW,+ZI)
    }
    HEAP +0 UNINIT   
    {
        Startup.o (Heap)
    }
    HEAP_BOTTOM 0x81800000 UNINIT   ;// End Point of External SRAM
    {
        Startup.o (HeapTop)
    }
}
  其中,ROM_LOAD為加載區的名稱,其后面的0x00000000表示加載區的起始地址(存放程序代碼的起始地址),也可以在后面添加其空間大小,如“ROM_LOAD 0x00000000 0x20000”表示加載區起始地址為0x00000000,大小為128K字節;ROM_EXEC描述了執行區的地址,放在第一塊位置定義,其起始地址、空間大小與加載區起始地址、空間大小要一致。從起始地址開始放置向量表(即Startup.o(vectors,+First),其中Startup.o為Startup.s的目標文件),接著放置其他代碼(即映像文件)(即 *(RO));變量區IRAM的起始地址為0x4000000040,放置Startup.o(MyStacks);變量區ERAM的起始地址為0x80000000,放置出Startup.o文件之外的其他文件的變量(即 *(+RW,+ZI));緊靠ERAM變量區之后的是系統堆空間(HEAP),放置描述為Startup.o(Heap);堆棧區STACKS使用片內RAM,由于ARM的堆棧一般采用滿遞減堆棧,所以堆棧區的起始地址設置為0x40004000,放置描述為Startup.o(Stacks)

  

2.使用地址不連續的內存(LPC2368)

  Lpc2368一共有56K的RAM,其中通用Ram32K,地址為0x40000000~0x40007fff;8KB的USB專用RAM,地址0x7fd00000~0x7fd01ffff;16KB Ethernet專用RAM,地址為0x7fe00000~0x7fe03fff;以上的USB和Ethernet專用RAM也可用做通用RAM,需要做如下設置:(1)target.c中將USB和Ethernet功能打開,需要設置PCONP寄存器,詳見Datasheet。(2)設置分散加載文件,分配這兩段內存。

在DebugInRam模式下,有如下分散加載文件:

ROM_LOAD 0x40000000
{
    ROM_EXEC 0x40000000     //加載映像文件(通用RAM首地址)
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
    IRAM 0x40007000        //用戶堆棧
    {
        Startup.o (MyStacks)
    }     
    STACKS 0x40008000 UNINIT     //系統堆棧
    {
        Startup.o (Stacks)
    } 
    ERAM 0x7fe00000       
    {
        * (+RW,+ZI)
    } 
    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }
 }

 

3.分散使用Flash地址(LPC2368)

  項目中,要求將片內Flash起始幾個扇區空出來留作他用,或者當用到的Flash地址不連續的時候,都可用以下方法來編寫分散加載文件:

ROM_LOAD 0x00000000
{
       ROM_EXEC 0x00000000    
        {
        Startup.o (vectors,+First)  
        }
    。。。
}
ROM_LOAD1 0x00004000   //加載映像文件,從第四個扇區開始
{
       ROM_EXEC1 0x00004000
        {
          * (+RO)
        }
}
值得注意的是,中斷向量表必須放在flash起始地址處,否則無法啟動。根據以上分散加載文件編譯生成的Hex文件會有兩個,分別如下:

Hex1:
:020000040000FA
:1000000018F09FE518F09FE518F09FE518F09FE5C0
。。。

Hex2:
:020000040000FA
:1040000090808FE20F0098E8080080E0081081E0BF
。。。

可以看出,生成的兩段Hex文件的起始地址是不同的,其中一段為中斷向量表;另一段為用戶映像文件。

 

4.固定變量內存地址

  嵌入式開發中,有時會需要在同一片內的不同段程序(比如Bootloader和主程序間)間傳遞數據,這時候往往需要固定變量地址。一般來言,C語言編寫的程序,變量地址是由C編譯器來分配內存的,程序員無法實現知道變量地址。而ADS中的分散加載文件可以告知編譯器,固定某些變量的地址,如下:

ROM_LOAD 0x00000000
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }
     RAM 0x40000000 UNINIT   //Mfile.c中的所有變量地址從0x40000000開始
    {
        Mfile.O(+RW,+ZI)
    }
    IRAM 0x40000010
    {
        Startup.o (MyStacks)
        * (+RW,+ZI)
    }
    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }
    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    }
}


上述分散加載文件固定了Mfile.c中變量的起始地址,以這種方法,可以固定任何全局變量的地址,以便其被其他系統訪問。

關鍵字:ADS  分散加載文件  lpc23xx 引用地址:ADS分散加載文件使用總結(lpc23xx)

上一篇:【嵌入式】S3C2410平臺移植linux 2.6.14內核
下一篇:基于ARM的流水燈仿真示例(第一次修改)

推薦閱讀

全球每年都有超過100萬人死于交通事故,還有3000~5000萬人在交通事故中受傷,因此,開發自動駕駛汽車并提高其可靠性迫在眉睫。在交通事故中失去朋友、家人或鄰居都是讓人難以接受的事情,并且還要承受伴隨人員傷亡產生的經濟損失。鑒于其中90%~95%的悲劇都是由人為錯誤導致,自動駕駛汽車的潛在益處就顯而易見了。據麥姆斯咨詢報道, FLIR近期發布了一款...
一年以前,陸奇在北京國家會議中心上喊出百度要“ALL IN AI”的口號。而去年此時,李彥宏乘坐自動駕駛車趕往會場,收到了那張著名的五環罰單。一年之后,百度已無陸奇,卻有了自動駕駛路試牌照。百度Apollo3.0的量產,讓自動駕駛再一次火爆起來。從世界范圍來看,Waymo、優步(Uber)、Lyft、百度(Baidu)和梅賽德斯-奔馳(Mercedes-Benz)等廠商正逐步...
一直沒搞清楚stm32定時器的TIM_OC1PreloadConfig、TIM_ARRPreloadConfig函數的作用,影子寄存器、預裝載寄存器、重載寄存器的概念。今天來研究一下:首先看定時器的框圖:圖中有陰影的小方框,代表該功能對應的寄存器有影子寄存器,也就是:PSC預分頻器、自動重裝載寄存器、REP寄存器和4個通道的捕獲/比較寄存器??梢钥吹竭@幾個寄存器都是經常用到的,而...
簡介:ARM基礎知識-ARM編譯器中預定義的宏ARM編譯器預定義了一些宏,這些預定義宏對應一定的數值,有些預定義宏沒有對應數值,見下表:_arm_使用編譯器armcc,tcc,armcpp,tcpp時_ARMCC_VERSIONVer代表編譯器版本號,其格式為:PVtbbb,其中:P為產品編號(1代表ADS)V為副版本號(1代表1.1)T為補丁版本號(0代表1.1)bbb為build號(比如650)_APCS_INTERWO...

史海拾趣

問答坊 | AI 解惑

我對如何編寫高質量的程序的看法

我對嵌入式軟件開發的時間也不是很長,僅僅只有5年,算不上高手,也不是老手只能算是5歲的老菜鳥 ,在前面的3年里沒有高人指點,靠著自己摸索也寫了不少的程序吧,那時侯我沒有想過要寫出容易理解 和維護以及移植的問題,僅僅想著如何把這個功能 ...…

查看全部問答∨

主語上道產品品牌設計廣納賢才

品牌設計師 崗位要求: * 視覺傳達設計類專業本科以上學歷; * 有平面設計從業經驗,并有較多的作品; * 熟練使用Photoshop、Illustrator、CorelDraw等軟件,熟悉排版、印刷等后期制作; * 能快速、全面、準確的領悟產品信息,對產品設計有獨 ...…

查看全部問答∨

MCF51CN128 定時器輸出捕獲示例

下面貼個freescale的coldfire v1系列中mcf51cn128 MCU的一個示例,利用定時器實現輸出捕獲的功能。 MCF51CN128是freescale去年推出的V1 CORE的coldfire處理器,具有一個以太網控制器,是實現以太網應用的不錯選擇 具有50MHZ的主頻 ------------- ...…

查看全部問答∨

關于nRF2401的收發。

我想問一下,NRF2401的芯片發送數據時,怎么檢測它到底發沒發信號,我看了許多關于這部分調試的文章,只是對這個問題一帶而過,我現在都不知道整個程序到底是哪出了問題。是發射呢,還是i接收呢? 還有一個小問題就是,我用的是MSP430單片機,沒有 ...…

查看全部問答∨

求助:FPGA對SATA 2硬盤的讀寫

是不是在FPGA和硬盤之間還要一個什么轉接的芯片?怎么在網上也搜不這種芯片。。。求高人指點一下FPGA對SATA 2硬盤的讀寫整體構架和需要的硬件!??!…

查看全部問答∨

模擬電路--做畢設時心電圖設計資料

模擬電路--做畢設時心電圖設計資料…

查看全部問答∨

SD卡顯示盤符的問題

wince5.0系統 SD卡驅動已經可以發現識別卡 并且sdmemory.dll已經被sdbus加載 但是有一個問題: 如果sd卡沒有格式化(其實里面有東西,而且用其他的windows mobile手機能看見卡里面的東西) 那么就沒有sd盤符顯示但是在存儲管理器中能看見它的存在 ...…

查看全部問答∨

H-JTAG SERVER無法連接?

目前我司開發了一套ARM測試板,用的是菲利浦LPC2138型號的cpu,H-JTAG的引腳與cpu的連接正確,前幾天用H-JTAG SERVER檢測cpu的時候可以檢測,也可以在線編程,但是昨天不知道怎么回事用H-JTAG SERVER檢測cpu的時候就是檢測不到,但是沒有改任何的設置, ...…

查看全部問答∨

一個關于Vxworks的實時系統項目

  我以前做工控的,現在有個項目,需要實時系統,本來說基于pc104+IO擴展卡,由于IO數目比較多,PC104可能達不到要求,我現在想基于PC機+PCI或者是PXI,我目前的問題是 1.Vxworks支持哪些CPU,是不是只要是X86架構的都能夠運行。 2.哪 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 江达县| 萝北县| 永安市| 凤凰县| 策勒县| 区。| 牟定县| 顺昌县| 吉木乃县| 木里| 宁乡县| 额济纳旗| 仙居县| 民和| 望城县| 陵水| 徐闻县| 永兴县| 垣曲县| 大理市| 孙吴县| 玉溪市| 克山县| 罗定市| 威信县| 临泽县| 正蓝旗| 嘉定区| 舞阳县| 宁国市| 普安县| 平安县| 康乐县| 富源县| 陆河县| 鄱阳县| 罗田县| 噶尔县| 林芝县| 阿鲁科尔沁旗| 涪陵区|