一個8位的或者16位的CPU或許能夠滿足你當前的應用需求。但是為了保持競爭力,你必須對你的產品做出持續不斷地改進,包括你要不斷的增加它的新特性、不斷地提升它的速度,并在提升它規格的同時降低成本。如果你不做這些,而你的競爭對手在做,你將被甩開。
保持競爭優勢的一個方法是通過逐步改善你現有的設計。但隨著時間的推移,架構的限制可能會是這個過程變得越來越緩慢,成本也越來越高。因此你可以將你的設計移植到32為平臺,這會提升你產品在以下幾個方面的性能。
表1:移植到32位平臺的優勢
你真的需要將你的產品移植到32位平臺嗎?
當你把產品重一個8位的CPU移植到一個32位的CPU上面的時候,有幾點時一定要考慮的。首先是你現有的CPU是否仍然時可用,你將產品搬到32為平臺是否能夠有一個優勢的提升或者性能的改進。8位的應用程序通常是通過簡單的計算實施基本的感知和控制。8位的CPU在計算值低于256的時候,它的位操作和應用程序的表現是很好的,例如一個廣為人知的架構8051。
即使最小的32位CPU也能做到8位CPU所能做到的一切,如圖1所示。
1、能夠處理更復雜的計算。例如包括本機自帶的DSP、圖像處理以及姿勢識別功能。
2、數據挖掘和分析、數據庫查找。
3、實時的多任務處理系統。
圖1-使用Dhrystone做基準的單片機性能比較
即使你不需要使用上述的這些強大性能,32位CPU也能從如下幾個方面提升你的設計:
能耗:例如這樣一個常見的低功耗設計:CPU先處于睡眠的低功耗模式,定期醒來并在主動模式下執行代碼(圖2)。在兩種模式下32位CPU可能需要比8位CPU更多的用電,但32位CPU花更少的時間執行代碼。因此,32位CPU更多的時間是在低功耗模式下的。在許多情況下,這可能會導致它的平均功率比8位CPU更小。
圖2:計算密集型任務的平均能耗比較
可升級:現在,大多數CPU的銷售是跟著一個可以從低性能升級到高性能的產品系列銷售的。如果你的的產品想要升級,那么你的CPU也是必須可以升級的。CPU升級是就從以下方面而言的:
1、指令集、系列里的高端成員應該有更多的指令或者更多現有指令的操作模式,同時保持對低端成員的的向后兼容性。
2、更多的寄存器、或者現有的寄存器有更多的定義位。
3、更多的功能,例如中斷控制和調試。
ARM Cortex-M處理器家族是CPU可升級的最好的例子。如圖3所示:
圖3-ARM Cortex-M處理器家族概述
成本:也許會有一個感知的錯誤,會認為32位CPU會花費跟多的成本。但是隨著技術的發展,32位的CPU不一定會比8位的CPU貴,現在已經有很多的低成本的32位CPU了。例如:因為它簡單的設計和占有小硅區域的ARM Cortex-M0內核,使它更加劃算。舉一個Cypress半導體入門級PSOC 4000CPU為例,它只有0.29美元的價格。
此外,表1顯示支持高代碼密度和更快執行速度的32位CPU可以幫助降低成本。
這不僅僅關系到CPU
通常只關注您的固件代碼移植到新的CPU。但是,請記住CPU只是MCU的一部分,MCU可以盡可能的為它的CPU提供改進機會去滿足客戶的改進要求。例如:
1、MCU的外圍設備能夠提升產品的功能嗎?
2、外圍設備操作能使用更少的代碼嗎?能夠降低CPU的負載嗎?這可能導致該系統使用更少的內存,可能降低成本。
3、該器件可以幫你節省板級和系統級的成本嗎?例如,你可以將PCB板上的某些功能移動到MCU里。
4、MCU足夠靈活,能夠讓你適應不斷變化的需求,而不必制定新電路板嗎?
最后,請注意,單片機設備通常只有集成開發環境(IDE)支持它。確認新的IDE不僅僅是一個編輯器,編譯器和調試器。IDE使您能夠快速構建整個應用程序、使用單片機的硬件特性以及固件可以顯著加速設計。開發工具包和應用筆記也很有幫助。
代碼移植技巧
如果你決定移植一個設計到32位CPU上去,記住這些注意事項:
選擇一個入門級的32位CPU /單片機和IDE。作為你的第一個移植進入32位器件代碼,請保持它簡單,這將減少引入缺陷的風險,你也會熟悉32位設計的不同之處。選擇一個基本的入門級設備,以及一個IDE,可以簡化移植過程。Cypass半導體的一個例子是PSoC 4000MCU,由PSoC創造IDE支持。
選擇一個新的編譯器。當你代碼移植到一個新的CPU,你也必須選擇一個新編譯器。大量的編譯器,其中一些是免費的,可用于32位CPU。例如:GCC,ARM/Keil MD,IAR。
讓你的構建和調試工具工作。創建一個小測試程序,例如閃爍LED燈。你會獲得使用新工具的經驗,這將幫助您完成下面的步驟。
匯編代碼重寫。理想情況下,你的現有代碼應該用C(或者其他一些更高級的語言)。任何8位處理器的匯編語言代碼是不可移植的。如果你在當前設計中有任何的匯編代碼,考慮在C下面重寫它,在開始移植過程開始之前。
封裝特別的代碼。如果你的代碼已經模塊化了(編碼最佳實踐)。代碼的移植直接與單片機寄存器對應,比如讀I /O端口,應該和文件中和其余部分的代碼分開。在這些文件中封裝代碼并按功能命名,例如UART_Receive()。然后你可以重寫這些功能為新的單片機無需更改代碼的其余部分。
其他體系結構更改一個新的單片機可能允許您卸載功能從CPU到外圍設備。此外,一個新的IDE可以自動生成代碼。利用這些特性,考慮重新建構代碼的部分或全部。
因為32位CPU更容易實現任務切換,考慮重新建構代碼作為一組單獨的任務被一個實時操作系統(RTOS)使用。例如:32位系統RTOS供應商Segger和Micrium。
增加的構建和調試,在設計新代碼時,最佳的做法是小部分小部分的增加、測試和調試代碼
。這使得它更容易找到并修復缺陷。這同樣適用于移植——在新的MCU上移植、測試和調試代碼也是一部分一部分的進行。
CPU和MCU舉例,為了對移植過程有更好地理解,讓我們來詳細了解一下上下文中ARM Cortex-M0和PSoC 4000。ARM Cortex-M0處理器是最小的ARM核心。其寄存器架構(圖4)和指令集使它支持C工具。
圖4:Cortex-M0登記冊架構
所有寄存器都是32位,使用32位尋址,擁有4Gbyte地址空間。大多數8 位CPU僅限于64Kbyte的地址空間。
有12的通用寄存器。(低寄存器R0-R7有更多的支持指令集)。特殊寄存器包括:
雙堆棧指針(R13)來幫助實現一個實時操作系統(RTOS)
鏈接寄存器(R14)快速從函數調用返回
程序計數器(R15)
程序狀態寄存器(PSR)包含指令的結果如零和保持標志以及當前異常數
中斷屏蔽寄存器
控制寄存器控制堆棧指針哪個有效
Cortex-M0核心指令集設置簡單但功能強大并且有大量的處理模式。它擁有優秀的代碼密度。從一個8位的CPU將C代碼移植到Cortex-M上,CPU經常使用更少的內存。
ARM Cortex-M系列CPU指令流水線,如圖5所示。這就增加整體代碼執行速度,因為CPU可以執行一條指令的同時抓取和解碼后續指令。
圖5:Cortex-M處理器中的流水線劃分
ARM Cortex-M CPU系列集成支持中斷直接進入CPU內核,使用一個嵌套矢量中斷控制器(NVIC)。NVIC功能包括:
自動動態優先級和優先等待中斷嵌套
低延遲——CPU自動存儲和恢復其狀態沒有指令的開銷
遲到——一個高優先級的中斷在一個低優先級中斷服務堆棧推操作期間到來時被優先執行。
這些特性能夠更快并決定中斷處理。系統定時器”SysTick”促進RTOS的使用和可以操作在CPU睡眠,也包括在內。有高水平中斷支持可用,您可以考慮改變你的架構更依賴中斷處理。
ARM的Cortex-M處理器系列集成調試功能在CPU內核,支持多個IDE便于調試。
Cortex-M0內核是Cortex-M處理器大家庭的一部分,它們有相同的寄存器架構和執行部分或全部Thumb-2指令集,這使得它更容易升級到一個更強大的CPU。例如Cypress的PSoC 5 LP Cortex-M3處理器。
PSoC 4000是入門級PSoC 4系列的一員。除了Cortex-M0處理器,它有一組可靈活動態配置外圍設備,如圖6所示。
圖6:PSoC 4000框圖
這種CPU也有電容式觸摸感應特性。電容式感應在成本、性能和防靜電保護方面比機械按鈕有顯著的優勢。
電容式感應功能包括:
容易實現按鈕、滾動條和接近報警解決方案,每個I/O引腳擁有16個輸入路經
高信噪比(信噪比)確保在嘈雜的環境中的觸摸精度
SmartSense自動調節速度和不需要校準
電容式感應塊包括兩個DAC和一個比較器,您可以把它用作其他目的如果CapSense不需要使用。
Cypress也提供PSoC開發工具,一個適用于PSoC3、4和和5 LP設備的集成設計環境(IDE)。PSoC開發工具是一個免費的基于windows的IDE支持PSoC-based系統的硬件和固件設計。
你可以使用經典的,熟悉原理圖來設計。組件包括自動生成API代碼,可以大大減少您編寫的代碼量。使用PSoC開發工具是很容易實現在PSoC系列之間的設計移植在。如圖7所示。
您還可以導出PSoC的設計到其他IDE,例如:μVision 和IAR。
圖7:PSoC開發工具進行組件配置
現在升級遺留8位和16位設計到32位平臺是很簡單的,同時仍然滿足成本目標。幾個因素必須牢記當計劃移植到一個新的CPU;要選擇的一個初級32位單片機并且有好的IDE支持。
評論
查看更多