將8051應用程序遷移到ARM Cortex-M處理器上
堆棧內存
堆棧內存操作是內存架構的重要組成部分。在8051中,堆棧指針只有8位,同時(shí)堆棧位于內部的內存空間(上限為256個(gè)字節,并由工作寄存器(四個(gè)各由R0至R7構成的寄存器庫)和內部數據變量共享)。堆棧操作基于空遞增模型。

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

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

使用動(dòng)態(tài)分配內存空間的C庫和應用程序通常需要堆內存。
盡管C o r tex-M處理器的每次壓棧需要32位的堆棧內存,總的R A M使用仍然要比8051小。8051的變量通常是靜態(tài)地放在IDATA上,而ARM處理的局部變量是放在堆棧內存上的,因此,只有當函數執行的時(shí)候,局部變量才會(huì )占用RAM空間。
此外,ARM Cortex-M 處理器提供有第二個(gè)堆棧指針,以允許操作系統內核和進(jìn)程堆棧使用不同的堆棧內存。這使得操作更可靠,也使操作系統設計更高效。(堆棧指針切換是自動(dòng)處理的)8051中的很多外設是通過(guò)特殊功能寄存器 (S F R) 來(lái)控制的。由于S F R空間只有128個(gè)字節,而且其中一些已經(jīng)為處理器寄存器和標準外設所占用,剩余的S F R地址空間通常非常有限,因此也就限制了可通過(guò)S F R控制的外設數量。雖然可以通過(guò)外部?jì)却婵臻g來(lái)控制外設,但是與S F R存取相比,外部存取通常需要更多的開(kāi)銷(xiāo)(需要將地址復制到DPTR,數據必須通過(guò)ACC傳輸)。
評論