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