新聞中心

EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 不增加成本的32位移植設(shè)計(jì)

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

作者: 時(shí)間:2016-12-06 來(lái)源:網(wǎng)絡(luò) 收藏

  一個(gè)8位的或者16位的CPU或許能夠滿足你當(dāng)前的應(yīng)用需求。但是為了保持競(jìng)爭(zhēng)力,你必須對(duì)你的產(chǎn)品做出持續(xù)不斷地改進(jìn),包括你要不斷的增加它的新特性、不斷地提升它的速度,并在提升它規(guī)格的同時(shí)降低成本。如果你不做這些,而你的競(jìng)爭(zhēng)對(duì)手在做,你將被甩開。

本文引用地址:http://butianyuan.cn/article/201612/326845.htm

  保持競(jìng)爭(zhēng)優(yōu)勢(shì)的一個(gè)方法是通過(guò)逐步改善你現(xiàn)有的設(shè)計(jì)。但隨著時(shí)間的推移,架構(gòu)的限制可能會(huì)是這個(gè)過(guò)程變得越來(lái)越緩慢,成本也越來(lái)越高。因此你可以將你的設(shè)計(jì)移植到32為平臺(tái),這會(huì)提升你產(chǎn)品在以下幾個(gè)方面的性能。

  

  表1:移植到32位平臺(tái)的優(yōu)勢(shì)

  你真的需要將你的產(chǎn)品移植到32位平臺(tái)嗎?

  當(dāng)你把產(chǎn)品重一個(gè)8位的CPU移植到一個(gè)32位的CPU上面的時(shí)候,有幾點(diǎn)時(shí)一定要考慮的。首先是你現(xiàn)有的CPU是否仍然時(shí)可用,你將產(chǎn)品搬到32為平臺(tái)是否能夠有一個(gè)優(yōu)勢(shì)的提升或者性能的改進(jìn)。8位的應(yīng)用程序通常是通過(guò)簡(jiǎn)單的計(jì)算實(shí)施基本的感知和控制。8位的CPU在計(jì)算值低于256的時(shí)候,它的位操作和應(yīng)用程序的表現(xiàn)是很好的,例如一個(gè)廣為人知的架構(gòu)8051。

  即使最小的32位CPU也能做到8位CPU所能做到的一切,如圖1所示。

  1、能夠處理更復(fù)雜的計(jì)算。例如包括本機(jī)自帶的DSP、圖像處理以及姿勢(shì)識(shí)別功能。

  2、數(shù)據(jù)挖掘和分析、數(shù)據(jù)庫(kù)查找。

  3、實(shí)時(shí)的多任務(wù)處理系統(tǒng)。

  

  圖1-使用Dhrystone做基準(zhǔn)的單片機(jī)性能比較

  即使你不需要使用上述的這些強(qiáng)大性能,32位CPU也能從如下幾個(gè)方面提升你的設(shè)計(jì):

  能耗:例如這樣一個(gè)常見的低功耗設(shè)計(jì):CPU先處于睡眠的低功耗模式,定期醒來(lái)并在主動(dòng)模式下執(zhí)行代碼(圖2)。在兩種模式下32位CPU可能需要比8位CPU更多的用電,但32位CPU花更少的時(shí)間執(zhí)行代碼。因此,32位CPU更多的時(shí)間是在低功耗模式下的。在許多情況下,這可能會(huì)導(dǎo)致它的平均功率比8位CPU更小。

  

  圖2:計(jì)算密集型任務(wù)的平均能耗比較

  可升級(jí):現(xiàn)在,大多數(shù)CPU的銷售是跟著一個(gè)可以從低性能升級(jí)到高性能的產(chǎn)品系列銷售的。如果你的的產(chǎn)品想要升級(jí),那么你的CPU也是必須可以升級(jí)的。CPU升級(jí)是就從以下方面而言的:

  1、指令集、系列里的高端成員應(yīng)該有更多的指令或者更多現(xiàn)有指令的操作模式,同時(shí)保持對(duì)低端成員的的向后兼容性。

  2、更多的寄存器、或者現(xiàn)有的寄存器有更多的定義位。

  3、更多的功能,例如中斷控制和調(diào)試。

  ARM Cortex-M處理器家族是CPU可升級(jí)的最好的例子。如圖3所示:

  

  圖3-ARM Cortex-M處理器家族概述

  成本:也許會(huì)有一個(gè)感知的錯(cuò)誤,會(huì)認(rèn)為32位CPU會(huì)花費(fèi)跟多的成本。但是隨著技術(shù)的發(fā)展,32位的CPU不一定會(huì)比8位的CPU貴,現(xiàn)在已經(jīng)有很多的低成本的32位CPU了。例如:因?yàn)樗?jiǎn)單的設(shè)計(jì)和占有小硅區(qū)域的ARM Cortex-M0內(nèi)核,使它更加劃算。舉一個(gè)Cypress半導(dǎo)體入門級(jí)PSOC 4000CPU為例,它只有0.29美元的價(jià)格。

  此外,表1顯示支持高代碼密度和更快執(zhí)行速度的32位CPU可以幫助降低成本。

  這不僅僅關(guān)系到CPU

  通常只關(guān)注您的固件代碼移植到新的CPU。但是,請(qǐng)記住CPU只是MCU的一部分,MCU可以盡可能的為它的CPU提供改進(jìn)機(jī)會(huì)去滿足客戶的改進(jìn)要求。例如:

  1、MCU的外圍設(shè)備能夠提升產(chǎn)品的功能嗎?

  2、外圍設(shè)備操作能使用更少的代碼嗎?能夠降低CPU的負(fù)載嗎?這可能導(dǎo)致該系統(tǒng)使用更少的內(nèi)存,可能降低成本。

  3、該器件可以幫你節(jié)省板級(jí)和系統(tǒng)級(jí)的成本嗎?例如,你可以將PCB板上的某些功能移動(dòng)到MCU里。

  4、MCU足夠靈活,能夠讓你適應(yīng)不斷變化的需求,而不必制定新電路板嗎?

  最后,請(qǐng)注意,單片機(jī)設(shè)備通常只有集成開發(fā)環(huán)境(IDE)支持它。確認(rèn)新的IDE不僅僅是一個(gè)編輯器,編譯器和調(diào)試器。IDE使您能夠快速構(gòu)建整個(gè)應(yīng)用程序、使用單片機(jī)的硬件特性以及固件可以顯著加速設(shè)計(jì)。開發(fā)工具包和應(yīng)用筆記也很有幫助。

  代碼移植技巧

  如果你決定移植一個(gè)設(shè)計(jì)到32位CPU上去,記住這些注意事項(xiàng):

  選擇一個(gè)入門級(jí)的32位CPU /單片機(jī)和IDE。作為你的第一個(gè)移植進(jìn)入32位器件代碼,請(qǐng)保持它簡(jiǎn)單,這將減少引入缺陷的風(fēng)險(xiǎn),你也會(huì)熟悉32位設(shè)計(jì)的不同之處。選擇一個(gè)基本的入門級(jí)設(shè)備,以及一個(gè)IDE,可以簡(jiǎn)化移植過(guò)程。Cypass半導(dǎo)體的一個(gè)例子是PSoC 4000MCU,由PSoC創(chuàng)造IDE支持。

  選擇一個(gè)新的編譯器。當(dāng)你代碼移植到一個(gè)新的CPU,你也必須選擇一個(gè)新編譯器。大量的編譯器,其中一些是免費(fèi)的,可用于32位CPU。例如:GCC,ARM/Keil MD,IAR。

  讓你的構(gòu)建和調(diào)試工具工作。創(chuàng)建一個(gè)小測(cè)試程序,例如閃爍LED燈。你會(huì)獲得使用新工具的經(jīng)驗(yàn),這將幫助您完成下面的步驟。

  匯編代碼重寫。理想情況下,你的現(xiàn)有代碼應(yīng)該用C(或者其他一些更高級(jí)的語(yǔ)言)。任何8位處理器的匯編語(yǔ)言代碼是不可移植的。如果你在當(dāng)前設(shè)計(jì)中有任何的匯編代碼,考慮在C下面重寫它,在開始移植過(guò)程開始之前。

  封裝特別的代碼。如果你的代碼已經(jīng)模塊化了(編碼最佳實(shí)踐)。代碼的移植直接與單片機(jī)寄存器對(duì)應(yīng),比如讀I /O端口,應(yīng)該和文件中和其余部分的代碼分開。在這些文件中封裝代碼并按功能命名,例如UART_Receive()。然后你可以重寫這些功能為新的單片機(jī)無(wú)需更改代碼的其余部分。

  其他體系結(jié)構(gòu)更改一個(gè)新的單片機(jī)可能允許您卸載功能從CPU到外圍設(shè)備。此外,一個(gè)新的IDE可以自動(dòng)生成代碼。利用這些特性,考慮重新建構(gòu)代碼的部分或全部。

  因?yàn)?2位CPU更容易實(shí)現(xiàn)任務(wù)切換,考慮重新建構(gòu)代碼作為一組單獨(dú)的任務(wù)被一個(gè)實(shí)時(shí)操作系統(tǒng)(RTOS)使用。例如:32位系統(tǒng)RTOS供應(yīng)商Segger和Micrium。

  增加的構(gòu)建和調(diào)試,在設(shè)計(jì)新代碼時(shí),最佳的做法是小部分小部分的增加、測(cè)試和調(diào)試代碼

  。這使得它更容易找到并修復(fù)缺陷。這同樣適用于移植——在新的MCU上移植、測(cè)試和調(diào)試代碼也是一部分一部分的進(jìn)行。

  CPU和MCU舉例,為了對(duì)移植過(guò)程有更好地理解,讓我們來(lái)詳細(xì)了解一下上下文中ARM Cortex-M0和PSoC 4000。ARM Cortex-M0處理器是最小的ARM核心。其寄存器架構(gòu)(圖4)和指令集使它支持C工具。

  圖4:Cortex-M0登記冊(cè)架構(gòu)

  所有寄存器都是32位,使用32位尋址,擁有4Gbyte地址空間。大多數(shù)8 位CPU僅限于64Kbyte的地址空間。

  有12的通用寄存器。(低寄存器R0-R7有更多的支持指令集)。特殊寄存器包括:

  雙堆棧指針(R13)來(lái)幫助實(shí)現(xiàn)一個(gè)實(shí)時(shí)操作系統(tǒng)(RTOS)

  鏈接寄存器(R14)快速?gòu)暮瘮?shù)調(diào)用返回

  程序計(jì)數(shù)器(R15)

  程序狀態(tài)寄存器(PSR)包含指令的結(jié)果如零和保持標(biāo)志以及當(dāng)前異常數(shù)

  中斷屏蔽寄存器

  控制寄存器控制堆棧指針哪個(gè)有效

  Cortex-M0核心指令集設(shè)置簡(jiǎn)單但功能強(qiáng)大并且有大量的處理模式。它擁有優(yōu)秀的代碼密度。從一個(gè)8位的CPU將C代碼移植到Cortex-M上,CPU經(jīng)常使用更少的內(nèi)存。

  ARM Cortex-M系列CPU指令流水線,如圖5所示。這就增加整體代碼執(zhí)行速度,因?yàn)镃PU可以執(zhí)行一條指令的同時(shí)抓取和解碼后續(xù)指令。

  

  圖5:Cortex-M處理器中的流水線劃分

  ARM Cortex-M CPU系列集成支持中斷直接進(jìn)入CPU內(nèi)核,使用一個(gè)嵌套矢量中斷控制器(NVIC)。NVIC功能包括:

  自動(dòng)動(dòng)態(tài)優(yōu)先級(jí)和優(yōu)先等待中斷嵌套

  低延遲——CPU自動(dòng)存儲(chǔ)和恢復(fù)其狀態(tài)沒(méi)有指令的開銷

  遲到——一個(gè)高優(yōu)先級(jí)的中斷在一個(gè)低優(yōu)先級(jí)中斷服務(wù)堆棧推操作期間到來(lái)時(shí)被優(yōu)先執(zhí)行。

  這些特性能夠更快并決定中斷處理。系統(tǒng)定時(shí)器”SysTick”促進(jìn)RTOS的使用和可以操作在CPU睡眠,也包括在內(nèi)。有高水平中斷支持可用,您可以考慮改變你的架構(gòu)更依賴中斷處理。

  ARM的Cortex-M處理器系列集成調(diào)試功能在CPU內(nèi)核,支持多個(gè)IDE便于調(diào)試。

  Cortex-M0內(nèi)核是Cortex-M處理器大家庭的一部分,它們有相同的寄存器架構(gòu)和執(zhí)行部分或全部Thumb-2指令集,這使得它更容易升級(jí)到一個(gè)更強(qiáng)大的CPU。例如Cypress的PSoC 5 LP Cortex-M3處理器。

  PSoC 4000是入門級(jí)PSoC 4系列的一員。除了Cortex-M0處理器,它有一組可靈活動(dòng)態(tài)配置外圍設(shè)備,如圖6所示。

  

  圖6:PSoC 4000框圖

  這種CPU也有電容式觸摸感應(yīng)特性。電容式感應(yīng)在成本、性能和防靜電保護(hù)方面比機(jī)械按鈕有顯著的優(yōu)勢(shì)。

  電容式感應(yīng)功能包括:

  容易實(shí)現(xiàn)按鈕、滾動(dòng)條和接近報(bào)警解決方案,每個(gè)I/O引腳擁有16個(gè)輸入路經(jīng)

  高信噪比(信噪比)確保在嘈雜的環(huán)境中的觸摸精度

  SmartSense自動(dòng)調(diào)節(jié)速度和不需要校準(zhǔn)

  電容式感應(yīng)塊包括兩個(gè)DAC和一個(gè)比較器,您可以把它用作其他目的如果CapSense不需要使用。

  Cypress也提供PSoC開發(fā)工具,一個(gè)適用于PSoC3、4和和5 LP設(shè)備的集成設(shè)計(jì)環(huán)境(IDE)。PSoC開發(fā)工具是一個(gè)免費(fèi)的基于windows的IDE支持PSoC-based系統(tǒng)的硬件和固件設(shè)計(jì)。

  你可以使用經(jīng)典的,熟悉原理圖來(lái)設(shè)計(jì)。組件包括自動(dòng)生成API代碼,可以大大減少您編寫的代碼量。使用PSoC開發(fā)工具是很容易實(shí)現(xiàn)在PSoC系列之間的設(shè)計(jì)移植在。如圖7所示。

  您還可以導(dǎo)出PSoC的設(shè)計(jì)到其他IDE,例如:μVision 和IAR。

  

  圖7:PSoC開發(fā)工具進(jìn)行組件配置

  現(xiàn)在升級(jí)遺留8位和16位設(shè)計(jì)到32位平臺(tái)是很簡(jiǎn)單的,同時(shí)仍然滿足成本目標(biāo)。幾個(gè)因素必須牢記當(dāng)計(jì)劃移植到一個(gè)新的CPU;要選擇的一個(gè)初級(jí)32位單片機(jī)并且有好的IDE支持。



關(guān)鍵詞: 32位移植設(shè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉