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