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內存空間上最高支持* 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) 。此外,系統區中內存映射有數個指定控制寄存器和調試組件,以確保優異的中斷處理并極大方便開發人員使用。
堆棧內存
堆棧內存操作是內存架構的重要組成部分。在8051中,堆棧指針只有8位,同時堆棧位于內部的內存空間(上限為256個字節,并由工作寄存器(四個各由R0至R7構成的寄存器庫)和內部數據變量共享)。堆棧操作基于空遞增模型。

與8051不同的是,A RM Cor tex-M處理器使用系統內存作為堆棧,采用滿遞減模型。

滿遞減堆棧內存模型更受C語言的支持。例如,微控制器中的SRAM的使用可組織為:

使用動態分配內存空間的C庫和應用程序通常需要堆內存。
盡管C o r tex-M處理器的每次壓棧需要32位的堆棧內存,總的R A M使用仍然要比8051小。8051的變量通常是靜態地放在IDATA上,而ARM處理的局部變量是放在堆棧內存上的,因此,只有當函數執行的時候,局部變量才會占用RAM空間。
此外,ARM Cortex-M 處理器提供有第二個堆棧指針,以允許操作系統內核和進程堆棧使用不同的堆棧內存。這使得操作更可靠,也使操作系統設計更高效。(堆棧指針切換是自動處理的)8051中的很多外設是通過特殊功能寄存器 (S F R) 來控制的。由于S F R空間只有128個字節,而且其中一些已經為處理器寄存器和標準外設所占用,剩余的S F R地址空間通常非常有限,因此也就限制了可通過S F R控制的外設數量。雖然可以通過外部內存空間來控制外設,但是與S F R存取相比,外部存取通常需要更多的開銷(需要將地址復制到DPTR,數據必須通過ACC傳輸)。
上一篇:用單片機編寫幾種跑馬燈程序
下一篇:讀入獨立鍵點亮相應的LED燈
推薦閱讀
史海拾趣
2005年,FCI迎來了新的發展機遇。貝恩資本,一家在全球近75個工業領域和技術公司有著豐富投資經驗的私有投資基金,決定收購FCI。貝恩資本的加入為FCI提供了強大的財力和國際業務支持,使得FCI在連接器市場上更具競爭力。這一收購也標志著FCI正式邁入了一個新的發展階段。
Amphenol公司的發展故事
Amphenol公司成立于1932年,最初由Arthur J. Schmitt和Gordon K. Klapmeier共同創辦,專注于電磁線纜的制造。然而,隨著技術的進步和市場需求的變化,Amphenol公司逐漸將重心轉向電纜連接器的制造。憑借高品質的產品和服務,Amphenol公司的電纜連接器在市場上獲得了廣泛的認可,并逐漸發展成為全球最大的電纜連接器制造商之一。
在追求經濟效益的同時,Carlisle Interconnect Components公司也積極履行社會責任。公司注重環保和可持續發展,采用環保材料和生產工藝,減少對環境的影響。此外,公司還積極參與社會公益事業,為社會做出貢獻。這種負責任的態度不僅贏得了社會各界的認可,更為公司的長遠發展奠定了堅實的基礎。
這五個故事展示了Carlisle Interconnect Components公司在電子行業中的發展歷程和取得的成就。通過不斷創新、品質管理、技術研發、戰略合作以及履行社會責任等措施,公司逐漸在電子連接器領域樹立起了自己的品牌形象和市場地位。
在XXXX年,Everspin的股票開始在納斯達克全球市場交易,股票代碼為MRAM。這一上市動作不僅為Everspin提供了更多的資金支持,也進一步提升了其在行業中的知名度和影響力。此外,兆易創新旗下的GigaDevice半導體(香港)有限公司還斥資500萬美元購買了Everspin約5%的股份,顯示出市場對Everspin技術和發展前景的認可。
作為一家有社會責任感的企業,API Technologies不僅關注經濟效益,也積極履行社會責任。公司注重環保和可持續發展,在生產過程中采取了一系列環保措施,降低能耗和排放。同時,公司還積極參與社會公益活動,回饋社會,為社區的繁榮和發展做出了貢獻。
這些故事展示了API Technologies在電子行業中的發展歷程和取得的成就。通過不斷創新、全球化布局、品質管理和履行社會責任,公司逐漸成為了電子行業的佼佼者。
API Technologies一直將品質管理作為公司的核心競爭力之一。公司建立了完善的質量管理體系,從原材料采購到產品生產的每一個環節都進行嚴格的質量控制。同時,公司還注重持續改進和優化生產流程,提高生產效率和產品質量。這些措施使得API Technologies的產品在市場上具有極高的口碑和競爭力。
對于工程師來說,尤其是北美的工程師,現在的情況還是相當讓他們滿意的,至少基于EE Tims的對于工程師薪金和工作狀況的年度調查的結果是這樣的。 基于大約1600份調查問卷的統計,在美國2007年工程師的平均年薪包括福利總數為108800美元,略高于去年 ...… 查看全部問答∨ |
在今天各類制造廠正在持續地將服務范圍從與用戶協商轉向交鑰匙工程全程承包。用戶則把更多的精力集中在提高核心競爭力,而把自動化和控制的功能委托給自動化的供應商。這就創造了對服務和支持的更大需求,而PAC的多功能、多專業的能力正是可利用和 ...… 查看全部問答∨ |
我用的是周立功的EasyFPGA030,它只支持并口下載的,但是現在手上沒有并口的下載線,我的筆記本上也沒有,同學也沒有!!難道又要花幾十甚至幾百去買個并口下載線,望高手指點!!!!!!!!!… 查看全部問答∨ |
|
linux-2.6.18內核移植及根文件系統的制做(簡易) 一、 去 http://www.kernel.org 下載內核,下面以 linux-2.6.18.tar.bz2 為例。 [root@Binnary ~ ]# tar –jxvf linux-2.6.18.tar.bz2 & ...… 查看全部問答∨ |
|
#include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit duan=P2^6; //申明U1鎖存器的鎖存端 sbit wei=P2^7; //申U2鎖存器 ...… 查看全部問答∨ |
|
問題是這樣的,在modelsim se中添加了altera的庫,可以看到了。但是在在quartus中調用modelsim se進行仿真時,仍然默認的是work這個庫,仍然會編譯一大堆的altera的東西,我自己添加的altera的庫沒有起到作用。 請問大俠們,該怎么設置可以在調用m ...… 查看全部問答∨ |
我在做msp430g2553的ADC10外部參考電壓時,想設置一個5V以上的外部參考電壓,可怎么也弄不出來!請各位大蝦指教指教! 下面是我的程序: #include <intrinsics.h> #include "1602-4.h" #include "1602-4.c" /******************** ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析