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