• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 將8051應(yīng)用程序遷移到ARM Cortex-M處理器上

    將8051應(yīng)用程序遷移到ARM Cortex-M處理器上

    作者: 時(shí)間:2012-09-12 來源:網(wǎng)絡(luò) 收藏

    系列包括廣泛使用的3、針對(duì)FPGA的1、2009年初推出的Cortex-M0處理器(最小的 處理器)和2010年初推出的 C o r tex-M4處理器(支持浮點(diǎn)和數(shù)字信號(hào)處理增強(qiáng)指令)。這些處理器具有先進(jìn)的功能特點(diǎn)和簡單易用的編程模型,對(duì)于想從8051微控制器架構(gòu)的開發(fā)人員來說,極具吸引力。本文是一篇入門指南,目的是幫助8051微控制器的開發(fā)人員了解8051和A R M Cor tex-M處理器系列在架構(gòu)、軟件和硬件設(shè)計(jì)上的主要差異,從而加快過程。

    本文引用地址:http://www.czjhyjcfj.com/article/170878.htm

    架構(gòu)概述

    對(duì)于一些嵌入式程序員(尤其是那些習(xí)慣使用匯編語言編程的程序員),首先要做的事情就是了解編程模型。

    寄存器

    Cortex-M處理器具有一個(gè)32位寄存器庫和一個(gè)xPSR(組合程序狀態(tài)寄存器)。而8051具有ACC(累加器)、B、DPTR(數(shù)據(jù)指針)、P SW(處理器狀態(tài)字)和四個(gè)各含八個(gè)寄存器的寄存器庫 (R0-R7)。

    在8051中,一些指令會(huì)頻繁使用某些寄存器,如ACC和 DPTR。

    這種相關(guān)性會(huì)極大降低系統(tǒng)的性能,而在ARM處理器中,指令可使用不同的寄存器來進(jìn)行數(shù)據(jù)處理、內(nèi)存存取和用作內(nèi)存指針,因此不會(huì)有這個(gè)問題。

    從根本上說,ARM 架構(gòu)是一個(gè)基于加載(Load)和存儲(chǔ)(STore)的RI S C架構(gòu),處理器寄存器加載數(shù)據(jù),然后將數(shù)據(jù)傳給A LU進(jìn)行單周期執(zhí)行。而8051寄存器(ACC、B、PSW、SP和DPTR)可在SFR(特殊功能寄存器)的內(nèi)存空間中訪問。

    為了確保普通的C函數(shù)能夠用作中斷處理程序,在需要處理中斷時(shí),C o r t e x- M的寄存器(R 0 - R 3、R12、L R、P C和xPSR)會(huì)被自動(dòng)壓入堆棧,而軟件僅需在必要時(shí)將其他寄存器壓入堆棧。雖然8051具有4個(gè)寄存器庫,但是ACC、B、D P T R和PSW寄存器并不會(huì)自動(dòng)壓棧,因此通常需要通過中斷處理程序?qū)@些寄存器進(jìn)行軟件壓棧。

    寄存器

    ARM處理器具有32位尋址,可實(shí)現(xiàn)一個(gè)4GB的線性內(nèi)存空間。該內(nèi)存空間在結(jié)構(gòu)上分成多個(gè)區(qū)。每個(gè)區(qū)都有各自的推薦用法(雖然并不是固定的)。統(tǒng)一內(nèi)存架構(gòu)不僅增加了內(nèi)存使用的靈活性,而且降低了不同內(nèi)存空間使用不同數(shù)據(jù)類型的復(fù)雜性。

    相反地,8051微控制器具有多個(gè)內(nèi)存空間。內(nèi)存空間的分割使得有效地利用全部內(nèi)存空間變得困難,而且需要借助C語言擴(kuò)展來處理不同的內(nèi)存類型。

    8 0 51在外部R A M內(nèi)存空間上最高支持* K B的程序內(nèi)存和64K B的數(shù)據(jù)內(nèi)存。理論上,可以利用內(nèi)存分頁來擴(kuò)展程序內(nèi)存大小。不過,內(nèi)存分頁解決方案并未標(biāo)準(zhǔn)化,換句話說,不同8051供應(yīng)商的內(nèi)存分頁的實(shí)現(xiàn)并不相同。這不僅會(huì)增加軟件開發(fā)的復(fù)雜性,而且由于處理頁面切換所需的軟件開銷,還會(huì)顯著降低軟件性能。

    在AR M C or tex-M3或M4上,S R A M區(qū)和外設(shè)區(qū)都提供了一個(gè)1MB的位段區(qū)(bit band regiON)。此位段區(qū)允許通過別名地址訪問其內(nèi)部的每個(gè)位。由于位段別名地址只需通過普通的內(nèi)存存取指令即可訪問,因此C語言完全可以支持,不需要任何特殊指令。而8051提供了少量的位尋址內(nèi)存(內(nèi)部R A M上16字節(jié)和S F R空間上16字節(jié))。處理這些位數(shù)據(jù)需要特殊指令,而要支持此功能,C編譯器中需要C語言擴(kuò)展。

    A R M C o r t ex-M處理器的內(nèi)存映射包含多個(gè)內(nèi)置外設(shè)塊。例如,ARM Cortex-M處理器的一個(gè)特性是具有一個(gè)嵌套矢量中斷控制器 (NVIC) 。此外,系統(tǒng)區(qū)中內(nèi)存映射有數(shù)個(gè)指定控制寄存器和調(diào)試組件,以確保優(yōu)異的中斷處理并極大方便開發(fā)人員使用。


    上一頁 1 2 下一頁

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 江阴市| 屏南县| 宜黄县| 新巴尔虎右旗| 黄骅市| 定远县| 和政县| 赤峰市| 东海县| 电白县| 辉县市| 嘉黎县| 伊吾县| 河北区| 江安县| 石渠县| 木兰县| 集贤县| 靖远县| 金堂县| 永城市| 清水河县| 桂阳县| 柳林县| 瑞金市| 库尔勒市| 峨边| 岳阳县| 德昌县| 民勤县| 克拉玛依市| 陆河县| 深圳市| 九江县| 平乡县| 焦作市| 阿拉尔市| 贺州市| 太原市| 德保县| 专栏|