2.處理器的選擇
2.1.需要使用的I/O管腳數(shù)量
多數(shù)處理器都是使用內(nèi)存和外部管腳來控制輸入輸出設(shè)備的,通常處理器都會有內(nèi)置ROM和RAM的,如果內(nèi)置的內(nèi)存就已經(jīng)滿足需要,那么處理器就可以節(jié)省產(chǎn)生引用外部存儲器信號的引腳,這樣處理器可為輸入輸出提供較多的設(shè)備管腳(某些處理器支持外部RAM或ROM的使用,但對外部存儲器進(jìn)行訪問時(shí),處理器一般需要占用8條到10條I/O管腳)。
還有,有些處理器帶有專用的內(nèi)部定時(shí)時(shí)鐘,這類時(shí)鐘也需要使用一個(gè)端口管腳來實(shí)現(xiàn)某些定時(shí)功能;某些處理器中還具有漏極輸出和高電流輸出能力,可以方便的直接驅(qū)動繼電器或電磁鐵線圈,而不再需要額外驅(qū)動硬件的支持。
當(dāng)對處理器I/O管腳進(jìn)行計(jì)數(shù)時(shí),我們一定要把使用處理器內(nèi)部功能(如串行接口和定時(shí)器等)時(shí)限制使用的某些管腳考慮在內(nèi)。
2.2.需要使用的接口數(shù)量
嵌入式處理器的主要功能是與應(yīng)用環(huán)境中的硬件進(jìn)行交互操作,這不僅需要外部硬件對接口具有實(shí)時(shí)處理能力,而且還要求處理器必須以足夠快的速度對接口數(shù)據(jù)進(jìn)行有效處理。
舉例來說,STM32神舟系列開發(fā)板的CPU是ST公司出品的一款工業(yè)級微處理器,它基于CORTEX M3的核心,處理主頻可達(dá)72MHZ,同時(shí)處理器內(nèi)部配置了USB、SPI、IIC等接口,像STM32神舟IV號的107處理器還支持Ethernet 等輸出接口,其目的是更方便的利用這些接口開發(fā)出嵌入式產(chǎn)品。
需要注意的是,由于許多處理器具有的局限性沒有在處理器技術(shù)資料中給予足夠的說明,因此一定要仔細(xì)閱讀處理器的指標(biāo)說明。例如,在閱讀資料的過程中發(fā)現(xiàn),該資料可能會說明其串行接口可以在最高波特率下工作,但仔細(xì)研究該處理器的指標(biāo)數(shù)據(jù)時(shí),可能會發(fā)現(xiàn)并非該串口接口的所有操作模式都可以在最大波特率下運(yùn)行。
深入了解并明確接口要求的方法:可以自己動手編寫一些程序來對接口進(jìn)行實(shí)際測試,以確認(rèn)某種處理器是否可以滿足應(yīng)用的要求;因?yàn)?,確認(rèn)某個(gè)處理器是否可以滿足接口要求并非是一件簡單的任務(wù)。
2.3.需要使用的內(nèi)存容量
決定內(nèi)存容量的大小是嵌入式產(chǎn)品設(shè)計(jì)過程中的一個(gè)基本步驟,如果對所需內(nèi)存容量估計(jì)過高,那么我們就有可能會選擇成本較高的解決方案;反之,如果低估了所需內(nèi)存容量,就有可能因系統(tǒng)需要重新設(shè)計(jì)而導(dǎo)致項(xiàng)目不能按時(shí)完工。
a.RAM和ROM的區(qū)別:存儲器分為隨機(jī)存儲器(RAM)和只讀存儲器(ROM)兩種。其中ROM通常用來固化存儲一些生產(chǎn)廠家寫入的程序或數(shù)據(jù),用于啟動電腦和控制電腦的工作方式。而RAM則用來存取各種動態(tài)的輸入輸出數(shù)據(jù)、中間計(jì)算結(jié)果以及與外部存儲器交換的數(shù)據(jù)和暫存數(shù)據(jù)。設(shè)備斷電后,RAM中存儲的數(shù)據(jù)就會丟失。
b.隨即存儲器(RAM)的選擇:RAM容量的預(yù)測是比較直觀的,我們只需把所有變量數(shù)目與所有內(nèi)部緩沖區(qū)的容量以及先入先出(FIFO)隊(duì)列長度和堆棧長度直接相加,就能得到所需RAM容量的總數(shù)。
如果所需內(nèi)存容量超出這類處理器的尋址范圍,那么只能通過增加外部RAM來滿足需求;然而,增加外部RAM的同時(shí)將會占用一定數(shù)量的I/O管腳來對擴(kuò)展內(nèi)存進(jìn)行尋址,這種擴(kuò)展往往會影響到處理器來實(shí)現(xiàn)應(yīng)用的初衷。
需要注意的一個(gè)問題是,某些微處理器限制RAM的使用,這種限制的目的是為了借用部分內(nèi)存存儲器作為內(nèi)部寄存器組使用。除了以上因素外,所使用的開發(fā)語言也對所需RAM容量有一定的影響,某些效率較低的編譯程序可能會占用大量寶貴的RAM空間。
c.只讀存儲器(ROM)的選擇:系統(tǒng)所需ROM的大小應(yīng)該是系統(tǒng)程序代碼與所有基于ROM的數(shù)據(jù)表容量之和。預(yù)測所需ROM空間容量比較困難的部分是預(yù)測程序代碼的長度,解決這類問題的方法只能是隨著經(jīng)驗(yàn)的逐步積累來提高預(yù)測精度。
然而,最重要的并不是精確計(jì)算程序的代碼長度,而是要清楚地估算代碼長度的上限。根據(jù)經(jīng)驗(yàn),如果80%的ROM空間被代碼占用的話,那么就太擁擠了,除非能確保系統(tǒng)需求不會有任何變化,否則至少要為可能發(fā)生的變化保留足夠的備用ROM空間。
在多數(shù)情況下,我們可以試著在ROM中寫入一部分程序代碼,以便觀察代碼占用空間的情況,對于帶有內(nèi)部ROM的微處理器系統(tǒng)來說,系統(tǒng)程序都只能占用有限的程序存儲器空間。
d.經(jīng)驗(yàn)之談:ROM與RAM使用情況相類似,程序代碼長度與所選用的開發(fā)語言有關(guān)。舉例來說,使用匯編語言編制的程序要比使用C語言編制的程序占用少得多的空間。
對于追求低成本的小型系統(tǒng)來說,一般不提倡使用高級程序設(shè)計(jì)語言;這是因?yàn)殡m然高級語言在使用、調(diào)試以及維護(hù)方面來的比較容易,但同時(shí)這類語言需要占用更多的內(nèi)存空間和大量的處理器時(shí)鐘周期。
如果開發(fā)語言選擇不當(dāng),其后果可能是把一個(gè)簡單、低成本的單片機(jī)系統(tǒng)變?yōu)橐粋€(gè)需要使用配置若干兆字節(jié)RAM空間的64位嵌入式處理器系統(tǒng)。
2.4.需要使用的中斷數(shù)量
中斷的主要用途是向中央處理器通報(bào)當(dāng)前發(fā)生的某類特殊事件,這類事件包括諸如定時(shí)器超時(shí)事件、硬件引發(fā)的事件等。
需要強(qiáng)調(diào)的是,多數(shù)系統(tǒng)設(shè)計(jì)師經(jīng)常過多地使用中斷功能,實(shí)際上,中斷的主要作用只是中斷現(xiàn)行程序的執(zhí)行,中斷最適用于必須要求中央處理器立即提供服務(wù)的事件。
在需要設(shè)計(jì)和使用中斷的情況下,一定要首先確認(rèn)實(shí)際需要的中斷數(shù)量,然后必須考慮到系統(tǒng)內(nèi)部占用的中斷資源,如果需要使用的中斷資源超出了處理器可以接收的中斷數(shù)量,我們就應(yīng)借助于某些特殊手段來減少所需中斷信號的數(shù)量。
2.5.實(shí)時(shí)處理方面的考慮
實(shí)時(shí)處理是一個(gè)涉及范圍很廣的題目,其主要內(nèi)容與系統(tǒng)的處理速度有密切聯(lián)系,實(shí)時(shí)事件是嵌入式微處理器需要關(guān)注的主要任務(wù)。
例如:處理器跟串口進(jìn)行通信時(shí),通常通過上層軟件(為了保證實(shí)時(shí)性,進(jìn)行任務(wù)切換的時(shí)間足夠短),然后再占用處理器去執(zhí)行從串口拿數(shù)據(jù)的任務(wù),并且要保證處理器的速率比串口速率快,那么處理器可以以最快的速度反應(yīng)并處理串口的相關(guān)的任務(wù),這樣就可以達(dá)到最大的實(shí)時(shí)性;
另一方面,如果處理器本身就內(nèi)置了串口控制器、或DMA、或LCD的控制器等,那么它就可以保證直接使用這些處理器內(nèi)置的接口去控制串口、液晶屏等對象,以達(dá)到最大的實(shí)時(shí)性能。
2.6.該廠商是否提供好的開發(fā)工具和環(huán)境
選擇一款新的處理器,很可能就要使用一個(gè)新的開發(fā)工具和開發(fā)環(huán)境,包括軟件的編譯環(huán)境等;對于開發(fā)日程安排比較緊張的項(xiàng)目來說,開發(fā)人員往往無法抽出專門的時(shí)間來研究,熟悉新的開發(fā)工具,從而也無法全面掌握開發(fā)工具的使用技巧。
并且,有的開發(fā)工具價(jià)格也比較昂貴,而且很可能只能從制造商那里購買,還有仿真工具也是需要付費(fèi)的,這些對我們在選擇一款處理器的時(shí)候,是都應(yīng)該考慮進(jìn)去的成本因素。
評論