將8051應用程序遷移到ARM Cortex-M處理器上
Cortex-M處理器系列包括廣泛使用的Cortex-M3處理器、針對FPGA的Cortex-M1處理器、2009年初推出的Cortex-M0處理器(最小的 ARM 處理器)和2010年初推出的 C o r tex-M4處理器(支持浮點(diǎn)和數字信號處理增強指令)。這些處理器具有先進(jìn)的功能特點(diǎn)和簡(jiǎn)單易用的編程模型,對于想從8051微控制器遷移到ARM架構的開(kāi)發(fā)人員來(lái)說(shuō),極具吸引力。本文是一篇入門(mén)指南,目的是幫助8051微控制器的開(kāi)發(fā)人員了解8051和A R M Cor tex-M處理器系列在架構、軟件和硬件設計上的主要差異,從而加快遷移過(guò)程。
本文引用地址:http://dyxdggzs.com/article/170878.htm架構概述
對于一些嵌入式程序員(尤其是那些習慣使用匯編語(yǔ)言編程的程序員),首先要做的事情就是了解編程模型。
寄存器
ARM Cortex-M處理器具有一個(gè)32位寄存器庫和一個(gè)xPSR(組合程序狀態(tài)寄存器)。而8051具有ACC(累加器)、B、DPTR(數據指針)、P SW(處理器狀態(tài)字)和四個(gè)各含八個(gè)寄存器的寄存器庫 (R0-R7)。

在8051中,一些指令會(huì )頻繁使用某些寄存器,如ACC和 DPTR。
這種相關(guān)性會(huì )極大降低系統的性能,而在A(yíng)RM處理器中,指令可使用不同的寄存器來(lái)進(jìn)行數據處理、內存存取和用作內存指針,因此不會(huì )有這個(gè)問(wèn)題。
從根本上說(shuō),ARM 架構是一個(gè)基于加載(Load)和存儲(STore)的RI S C架構,處理器寄存器加載數據,然后將數據傳給A LU進(jìn)行單周期執行。而8051寄存器(ACC、B、PSW、SP和DPTR)可在SFR(特殊功能寄存器)的內存空間中訪(fǎng)問(wèn)。
為了確保普通的C函數能夠用作中斷處理程序,在需要處理中斷時(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)壓棧,因此通常需要通過(guò)中斷處理程序對這些寄存器進(jìn)行軟件壓棧。
寄存器
ARM處理器具有32位尋址,可實(shí)現一個(gè)4GB的線(xiàn)性?xún)却婵臻g。該內存空間在結構上分成多個(gè)區。每個(gè)區都有各自的推薦用法(雖然并不是固定的)。統一內存架構不僅增加了內存使用的靈活性,而且降低了不同內存空間使用不同數據類(lèi)型的復雜性。
相反地,8051微控制器具有多個(gè)內存空間。內存空間的分割使得有效地利用全部?jì)却婵臻g變得困難,而且需要借助C語(yǔ)言擴展來(lái)處理不同的內存類(lèi)型。
8 0 51在外部R A M內存空間上最高支持* K B的程序內存和64K B的數據內存。理論上,可以利用內存分頁(yè)來(lái)擴展程序內存大小。不過(guò),內存分頁(yè)解決方案并未標準化,換句話(huà)說(shuō),不同8051供應商的內存分頁(yè)的實(shí)現并不相同。這不僅會(huì )增加軟件開(kāi)發(fā)的復雜性,而且由于處理頁(yè)面切換所需的軟件開(kāi)銷(xiāo),還會(huì )顯著(zhù)降低軟件性能。
在A(yíng)R M C or tex-M3或M4上,S R A M區和外設區都提供了一個(gè)1MB的位段區(bit band regiON)。此位段區允許通過(guò)別名地址訪(fǎng)問(wèn)其內部的每個(gè)位。由于位段別名地址只需通過(guò)普通的內存存取指令即可訪(fǎng)問(wèn),因此C語(yǔ)言完全可以支持,不需要任何特殊指令。而8051提供了少量的位尋址內存(內部R A M上16字節和S F R空間上16字節)。處理這些位數據需要特殊指令,而要支持此功能,C編譯器中需要C語(yǔ)言擴展。

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