加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

不增加成本的32位移植設(shè)計

2014/12/05
1
閱讀需 13 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

?

一個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支持。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜