將8051應用程序遷移到ARM Cortex-M處理器上
Cortex-M處理器系列包括廣泛使用的Cortex-M3處理器、針對FPGA的Cortex-M1處理器、2009年初推出的Cortex-M0處理器(最小的 ARM 處理器)和2010年初推出的 C o r tex-M4處理器(支持浮點和數(shù)字信號處理增強指令)。這些處理器具有先進的功能特點和簡單易用的編程模型,對于想從8051微控制器遷移到ARM架構的開發(fā)人員來說,極具吸引力。本文是一篇入門指南,目的是幫助8051微控制器的開發(fā)人員了解8051和A R M Cor tex-M處理器系列在架構、軟件和硬件設計上的主要差異,從而加快遷移過程。
本文引用地址:http://m.butianyuan.cn/article/170878.htm架構概述
對于一些嵌入式程序員(尤其是那些習慣使用匯編語言編程的程序員),首先要做的事情就是了解編程模型。
寄存器
ARM Cortex-M處理器具有一個32位寄存器庫和一個xPSR(組合程序狀態(tài)寄存器)。而8051具有ACC(累加器)、B、DPTR(數(shù)據(jù)指針)、P SW(處理器狀態(tài)字)和四個各含八個寄存器的寄存器庫 (R0-R7)。
在8051中,一些指令會頻繁使用某些寄存器,如ACC和 DPTR。
這種相關性會極大降低系統(tǒng)的性能,而在ARM處理器中,指令可使用不同的寄存器來進行數(shù)據(jù)處理、內存存取和用作內存指針,因此不會有這個問題。
從根本上說,ARM 架構是一個基于加載(Load)和存儲(STore)的RI S C架構,處理器寄存器加載數(shù)據(jù),然后將數(shù)據(jù)傳給A LU進行單周期執(zhí)行。而8051寄存器(ACC、B、PSW、SP和DPTR)可在SFR(特殊功能寄存器)的內存空間中訪問。
為了確保普通的C函數(shù)能夠用作中斷處理程序,在需要處理中斷時,C o r t e x- M的寄存器(R 0 - R 3、R12、L R、P C和xPSR)會被自動壓入堆棧,而軟件僅需在必要時將其他寄存器壓入堆棧。雖然8051具有4個寄存器庫,但是ACC、B、D P T R和PSW寄存器并不會自動壓棧,因此通常需要通過中斷處理程序對這些寄存器進行軟件壓棧。
寄存器
ARM處理器具有32位尋址,可實現(xiàn)一個4GB的線性內存空間。該內存空間在結構上分成多個區(qū)。每個區(qū)都有各自的推薦用法(雖然并不是固定的)。統(tǒng)一內存架構不僅增加了內存使用的靈活性,而且降低了不同內存空間使用不同數(shù)據(jù)類型的復雜性。
相反地,8051微控制器具有多個內存空間。內存空間的分割使得有效地利用全部內存空間變得困難,而且需要借助C語言擴展來處理不同的內存類型。
8 0 51在外部R A M內存空間上最高支持* K B的程序內存和64K B的數(shù)據(jù)內存。理論上,可以利用內存分頁來擴展程序內存大小。不過,內存分頁解決方案并未標準化,換句話說,不同8051供應商的內存分頁的實現(xiàn)并不相同。這不僅會增加軟件開發(fā)的復雜性,而且由于處理頁面切換所需的軟件開銷,還會顯著降低軟件性能。
在AR M C or tex-M3或M4上,S R A M區(qū)和外設區(qū)都提供了一個1MB的位段區(qū)(bit band regiON)。此位段區(qū)允許通過別名地址訪問其內部的每個位。由于位段別名地址只需通過普通的內存存取指令即可訪問,因此C語言完全可以支持,不需要任何特殊指令。而8051提供了少量的位尋址內存(內部R A M上16字節(jié)和S F R空間上16字節(jié))。處理這些位數(shù)據(jù)需要特殊指令,而要支持此功能,C編譯器中需要C語言擴展。
A R M C o r t ex-M處理器的內存映射包含多個內置外設塊。例如,ARM Cortex-M處理器的一個特性是具有一個嵌套矢量中斷控制器 (NVIC) 。此外,系統(tǒng)區(qū)中內存映射有數(shù)個指定控制寄存器和調試組件,以確保優(yōu)異的中斷處理并極大方便開發(fā)人員使用。
評論