當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]主流32位單片機攻略連載:為什么要學(xué)STM32?

為什么學(xué)習(xí)STM32?

  先列舉一下大家問得最多的幾個問題,然后我們一起由問題切入進行一些討論。

  首先問題1:我是單片機好還是直接學(xué)STM32好呢?

  答:1)首先我們談下目的,你學(xué)習(xí)的最終目的是能夠開發(fā)產(chǎn)品或者成為項目經(jīng)理;而目前市場上的單片機都基本用C語言了,用匯編進行開發(fā)的項目已經(jīng)非常少了

  2)在硬件接口這個環(huán)節(jié)上都一樣:學(xué)51單片機和學(xué)STM32都是一樣的,主要看其市場上的資料是不是足夠充分,都是調(diào)用硬件的接口,控制I/O,完成相應(yīng)的功能

 

  3)在軟件這個環(huán)節(jié)上,STM32要強過51單片機:為什么這么說呢?學(xué)STM32它自帶一個官方的庫,而這個庫的源代碼是開放的;而51單片機卻沒有,也就說,當(dāng)你做一個具體項目的時候,用STM32開發(fā)項目速度會比用51單片機要輕松快捷,方便,并且BUG也少。

  4)ST的這個庫專門是由ST官方團隊打造的,是經(jīng)過詳細認真測試過的,例如:你要做處理器支持USB的U盤功能,對51來說,你可能需要在網(wǎng)上去找這樣一個驅(qū)動,然后移植到51單片機上,這樣的缺點是:移植本身就比較累,比較麻煩,并可能有些代碼不一定經(jīng)過驗證了的,很難保證沒有BUG;而STM32是官方推薦的庫源代碼,這些功能早就有了,所以用STM32開發(fā)項目做起來非常的輕松,愉快,放心,BUG也少。

  5)從選型方面考慮:STM32的性價比與單片機相比,雖說單片機很便宜了,一般市場上就5塊錢左右,而STM32最便宜的是10元多一點,但是如果比性價比,STM32還是很要強過51單片機很多,為什么呢?因為首先STM32是72MHZ的主頻,而51單片機是10多M,隨著未來產(chǎn)品功能增多了,要求越來越高,可能51單片機的速度和性能就滿足不了需求,而STM32足夠強勁的主頻,可以延緩這個問題,使得您的產(chǎn)品周期生命得到延長,而且你有其他新需求也可以靈活增加上來,因為STM32完全有能力負擔(dān)得起。

  問題2:STM32如何才能快速入門?

  答:首先就是最好具備基本的電子基礎(chǔ),如果您只有純軟件基礎(chǔ),那就應(yīng)該打扎實C語言基礎(chǔ),然后弄一塊開發(fā)板,邊學(xué)邊補充硬件電子方面的知識。

  因為軟件背景去理論的學(xué)硬件,那是非常枯燥的事情,而且效果也不一定理想;那么此時你就需要一款比較的板子,板子大與小,功能多與少都不是那么重要,這里最重要的就是要資料豐富,資料豐富,才是最好的;我當(dāng)時就從同事那里弄了一塊STM32神舟系列的板子,大概花了1,2個星期就正式入門了。以下是我摘抄的關(guān)于那個板子的一些特點,大家可以看看:

  特點1:STM32神舟系列的每款開發(fā)板都有一個非常詳細的幾百頁的說明手冊。有很多愛好者反映,買到的開發(fā)板沒有手冊或手冊不全,手冊不詳細,拿到手后沒有什么用,無從下手,那么您可以考慮STM32神舟系列的開發(fā)板,其中神舟IV號的手冊有將近700多頁之多,無論還是從原理還是從代碼都是非常值得閱讀的資料書籍。

 

  特點2:開發(fā)板所帶的例程代碼非常好,易懂和方便移植。很多開發(fā)板的代碼寫得很難閱讀,不規(guī)范,有的甚至是用寄存器實現(xiàn)的代碼,可讀性非常差,并且不容易重用到新的實際項目中,而STM32神舟系列的開發(fā)板,全部用ST的專用庫實現(xiàn),庫代碼全部開源,庫即是將底層寄存器部分代碼全部封裝成函數(shù),融入了軟件設(shè)計的架構(gòu)理念,想跟蹤到硬件實現(xiàn)的驅(qū)動底層,就跟進對應(yīng)的函數(shù)即可看到一切原始代碼,所以您可以有選擇的想看寄存器版本就看寄存器版本,想看函數(shù)庫版本就有函數(shù)庫版本,無論對實際項目也好,針對學(xué)習(xí)也好,兩全其美?。?!

  特點3:神舟系列板子因為系列全,所以技術(shù)支持以及技術(shù)進一步拓展空間大。許多單獨的開發(fā)板技術(shù)支持根本不行,有的就算是技術(shù)支持不錯,但是你想更深入一步去學(xué)習(xí),就很難了;而成一個完整系列的STM32神舟系列是值考慮和選擇的,因為該系列包含了103RBT,VCT,VET,ZET,以及107VCT,207,4XX系列等多個系列的開發(fā)板,無論你先學(xué)難,再拖展知識面,還是怎么樣都好,絕對不怕資料少!沒資料?。?!而且各個系列之間還可以相互借鑒,相互依存,各個設(shè)計的高手非常多,大家一起相互交流,產(chǎn)生更多更新碰撞和資料。

  特點4:硬件資料豐富。硬件資源以及相關(guān)資料都比同類開發(fā)板要多很多,因為該系列是一個組織在維護和發(fā)展,并不是單獨的個人愛好所設(shè)計的板子,這個組織走在最前沿,不斷收集行業(yè)內(nèi)的知識,在神舟系列上進行驗證和實現(xiàn),所以資料也會越來越多。

  特點5:板子的網(wǎng)絡(luò)接口特別加強。許多STM32開發(fā)板沒有考慮到網(wǎng)口這塊以及無線2.4G(WIFI)和315M通信的例程,隨著嵌入式設(shè)備在網(wǎng)絡(luò)方面日益普及,以太網(wǎng)以及無線網(wǎng)都是嵌入式設(shè)備中必不可少的一個環(huán)節(jié),就算有的嵌入式設(shè)備不需要網(wǎng)口,但是做為提供開發(fā)板的設(shè)計,不可不考慮加強網(wǎng)口這塊的例程,代碼,講解,為各個開發(fā)愛好者做一個提前準(zhǔn)備和設(shè)計,而這些接口神舟系列有已經(jīng)直接運行的代碼以及詳細的講解,大家獲得相關(guān)資料,相互參考一下。

問題3:為什么是STM32呢?為什么不是ARM9,ARM11呢?

  答:這里有個誤區(qū),很多同學(xué)如果就僅僅希望入門嵌入式,那就盡量不要選擇ARM9和ARM11,為什么呢?因為誘惑太多了,因為你一旦選擇ARM9或 ARM11,那么這個平臺就僅僅linux和wince等操作系統(tǒng)內(nèi)核,驅(qū)動,應(yīng)用,各種協(xié)議,硬件原理圖,等都有夠?qū)W一年半載了,沒這點時間,你無法完全掌握,所以并不適合入門,周期太長,難度相對來說較大。

 

  入門最好選擇主頻低一點的處理器,一切都是先掌握好原理,弄明白,弄透徹了,一切就都好辦!所以單片機中,STM32是目前最最主流的芯片,加上目前 STM32的資料非常的多,所以,最好還是推薦STM32的開發(fā)板做為入門級的板子,學(xué)會之后,即可自己獨立開發(fā)出各種產(chǎn)品,STM32官方提供的開源代碼庫也是非常好用,將底層的各種匯編,管腳定義都封裝成了各個功能函數(shù),開發(fā)起來非常方便,快捷!

  20年的嵌入式經(jīng)驗分享學(xué)習(xí)——來自STM32神舟系列開發(fā)板設(shè)計師的總結(jié)

  首先,如果你有幸看到這篇文章,千萬不要試圖在2個小時內(nèi)閱讀完,就算你2個小時閱讀完,我相信你也不會理解里面講解的精華之處,我相信,你應(yīng)該將此文章,慢慢品嘗,這絕對是一篇需要品嘗2~3天,再結(jié)合自己過往的經(jīng)驗,加上自己的思考,我相信會對你不僅僅是技術(shù)能力,甚至包括整體的思維方式都會有一個非常大的提高。

  結(jié)合這篇文章,再結(jié)合STM32神舟系列開發(fā)板一些學(xué)習(xí),可能會更加加深對嵌入式概念的理解。

  我寫這篇文章的目的,是用本人20年的嵌入式經(jīng)驗呈現(xiàn)給大家一副完整的產(chǎn)品,項目開發(fā)藍圖,用本人多年經(jīng)的歷總結(jié)了一些教訓(xùn)無私的分享給各位,希望各位今后能站在本人的肩膀之上,少走彎路,多為公司,為個人多做貢獻,那我的愿望就達到了,也同時希望能看到大家反饋和回復(fù),留個腳印,留下你的見解和智慧,為后人乘涼打點基礎(chǔ),先在這謝謝各位了。

  那么由此開始我們充滿知識的旅程吧,最重要的一點,就是在一個產(chǎn)品或項目的開發(fā)過程中,如果沒有明確的目標(biāo),那么成功將無從談起,做任何事的第一步必須明確目標(biāo)。

  與日常生活中的大多數(shù)事務(wù)一樣,設(shè)計一個嵌入式產(chǎn)品的過程也必須從確定目標(biāo)開始,對生產(chǎn)的產(chǎn)品進行明確定義。對產(chǎn)品進行定義主要是對產(chǎn)品是什么和能有什么功能進行描述,其次是在我們的整個開發(fā)過程中,應(yīng)該要撰寫一些開發(fā)文檔,大概的框架的如下:[!--empirenews.page--]

  1)產(chǎn)品需求文檔:描述產(chǎn)品的特性

  2)功能需求文檔:描述產(chǎn)品必須具備的功能

  3)工程說明文檔:描述系統(tǒng)實現(xiàn)的方法和滿足需求的手段

  4)硬件說明文檔:對有關(guān)硬件進行描述

  5)軟件或固件說明文檔:描述特定處理器下設(shè)計微程序以及固件的方法

  6)測試說明文檔:描述必須測試的項目和驗證系統(tǒng)正常運行的方法

  1.需求定義

  需求定義用來描述產(chǎn)品的基本功能,對于公司來說,需求一般由該公司的市場銷售部門或該公司的主要客戶來制定;而對小公司或愛好者,技術(shù)人員可以自己負責(zé)定義需求,并撰寫成文檔;對于STM32神舟系列開發(fā)板來說,主要就是提供各種接口,為大家開發(fā)產(chǎn)品時提供借鑒!

  通常需求定義是圍繞以下幾個因素而來:

  1)系統(tǒng)的用途(定義需要系統(tǒng)實現(xiàn)的各種功能)

  2)實際輸入輸出是何種方式實現(xiàn)的(為元器件的選型做參考)

  3)系統(tǒng)是否需要操作界面(涉及軟件層操作系統(tǒng)的選型)

  其實對小型的嵌入式產(chǎn)品來說,定義需求是非常關(guān)鍵的,因為需求清楚了,就可以避免后續(xù)開發(fā)過程中出現(xiàn)的諸如隨機存儲器(RAM)容量不足或所選的CPU速度不能滿足處理的需要等一系列問題。

  ----------------------------------------------------------------------------------------------------------

  下面舉個簡單的實際例子,供大家來參考:

  系統(tǒng)描述:用于從化溫泉的水泵換水系統(tǒng)(用STM32神舟III號開發(fā)板模擬實現(xiàn))

  電源輸入:使用來自于變壓器的9V~12V直流電

  水泵功率:375W

  1)使用單相交流電機,由機械電氣進行控制

  2)如果溫泉池處于低水位,則輸入開關(guān)閉合信號,以禁止水泵繼續(xù)運行

  3)用戶可以自由設(shè)置水泵運行或關(guān)閉的時間長度

  4)除了自動設(shè)置控制外,還需要提供一種人工裝置來允許維護人員靈活控制水泵進行維修

  5)水泵開啟/關(guān)閉/人工干預(yù)的時間可以30分鐘為單位,在30分鐘到23小時的范圍內(nèi)進行調(diào)節(jié)

  6)顯示設(shè)備可以指示水泵的開關(guān)狀態(tài),剩余時間,以及水泵是否處于人工干預(yù)模式

  7)具備監(jiān)視低水位的功能,并顯示在屏幕上

  如果需要商用,那么除了上面給出的功能要求外,其設(shè)計文檔中還要包括電磁干擾(EMI)和電磁兼容性(EMC)認證、安全認證以及使用環(huán)境(包括環(huán)境溫度、濕度、鹽霧腐蝕等)等方面的需求。

  實際上,以上的需求確定之后,接下來就是要考慮選擇一款合適的CPU來滿足和實現(xiàn)系統(tǒng)的功能,那么我們就要將上述7點用戶能夠理解的需求轉(zhuǎn)化成我們專業(yè)領(lǐng)域的需求,轉(zhuǎn)化如下,大家可以參考一下:

  a.處理或更新輸入輸出信號的速率究竟需要多快?

  解釋:目前嵌入式處理器的主頻一般都在幾十兆到幾百兆不等,單片機的主頻一般是幾十兆,STM32神舟系列開發(fā)板的CPU都是72MHZ,有的 ARM9,ARM11處理器可以到幾百兆;我們主要看這個產(chǎn)品是否需要對大量數(shù)據(jù)進行處理,或是否需要對緩沖區(qū)進行頻繁操作,是否有類似的占用CPU資料的工作要做,這就決定我們要選擇一款合適的處理器來讓該產(chǎn)品得到最佳的性能。

  b.是否可使用單片集成電路(專用IC)或FPGA來完成數(shù)據(jù)處理?

  解釋:如果可以的話,就不一定要選擇處理器來做,用這些專業(yè)芯片就能替代

  c.系統(tǒng)是否有大量的用戶輸入輸出操作(如對開關(guān)和顯示設(shè)備進行頻繁操作)?

  解釋:如果有的話,要在處理器選型的時候考慮這些因素,選擇一款能夠滿足以上要求的CPU.

  d.系統(tǒng)與其他外部設(shè)備之間需要使用何種接口?

  解釋:這也是需要評估處理器的一個關(guān)鍵問題,選擇具備這些接口功能的處理器會方便于我們的電路設(shè)計以及軟件編程

  e.設(shè)計完成后是否有可能需要進行改動,或在設(shè)計過程中系統(tǒng)需求是否可能出現(xiàn)變化?我們的設(shè)計是否能適應(yīng)系統(tǒng)需求的變化?

  解釋:要避免選擇的處理器剛好滿足當(dāng)前要求,這樣當(dāng)以后事務(wù)要求逐漸提高,處理器性能如果還有一定空間的話,那么就可以重用目前的產(chǎn)品;第二個就是要選擇不會即將停產(chǎn)的芯片,很多處理器用得很廣乏,可以借鑒的資料也很多,但是很可能這款芯片已經(jīng)在市場上流行很長時間了,芯片廠商已經(jīng)推出更新?lián)Q代的替代品了,如果你選擇了這款芯片,很可能1,2年后就買不到這款處理器芯片了,導(dǎo)致不得不重新選擇新的處理器,重新設(shè)計產(chǎn)品,這樣的既耗費時間,金錢,更消耗人力,延誤市場的戰(zhàn)機。

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的使用,但對外部存儲器進行訪問時,處理器一般需要占用8條到10條I/O管腳)。

  還有,有些處理器帶有專用的內(nèi)部定時時鐘,這類時鐘也需要使用一個端口管腳來實現(xiàn)某些定時功能;某些處理器中還具有漏極輸出和高電流輸出能力,可以方便的直接驅(qū)動繼電器或電磁鐵線圈,而不再需要額外驅(qū)動硬件的支持。

  當(dāng)對處理器I/O管腳進行計數(shù)時,我們一定要把使用處理器內(nèi)部功能(如串行接口和定時器等)時限制使用的某些管腳考慮在內(nèi)。

  2.2.需要使用的接口數(shù)量

  嵌入式處理器的主要功能是與應(yīng)用環(huán)境中的硬件進行交互操作,這不僅需要外部硬件對接口具有實時處理能力,而且還要求處理器必須以足夠快的速度對接口數(shù)據(jù)進行有效處理。

  舉例來說,STM32神舟系列開發(fā)板的CPU是ST公司出品的一款工業(yè)級微處理器,它基于CORTEX M3的核心,處理主頻可達72MHZ,同時處理器內(nèi)部配置了USB、SPI、IIC等接口,像STM32神舟IV號的107處理器還支持Ethernet 等輸出接口,其目的是更方便的利用這些接口開發(fā)出嵌入式產(chǎn)品。

  需要注意的是,由于許多處理器具有的局限性沒有在處理器技術(shù)資料中給予足夠的說明,因此一定要仔細閱讀處理器的指標(biāo)說明。例如,在閱讀資料的過程中發(fā)現(xiàn),該資料可能會說明其串行接口可以在最高波特率下工作,但仔細研究該處理器的指標(biāo)數(shù)據(jù)時,可能會發(fā)現(xiàn)并非該串口接口的所有操作模式都可以在最大波特率下運行。

  深入了解并明確接口要求的方法:可以自己動手編寫一些程序來對接口進行實際測試,以確認某種處理器是否可以滿足應(yīng)用的要求;因為,確認某個處理器是否可以滿足接口要求并非是一件簡單的任務(wù)。

  2.3.需要使用的內(nèi)存容量

  決定內(nèi)存容量的大小是嵌入式產(chǎn)品設(shè)計過程中的一個基本步驟,如果對所需內(nèi)存容量估計過高,那么我們就有可能會選擇成本較高的解決方案;反之,如果低估了所需內(nèi)存容量,就有可能因系統(tǒng)需要重新設(shè)計而導(dǎo)致項目不能按時完工。

  a.RAM和ROM的區(qū)別:存儲器分為隨機存儲器(RAM)和只讀存儲器(ROM)兩種。其中ROM通常用來固化存儲一些生產(chǎn)廠家寫入的程序或數(shù)據(jù),用于啟動電腦和控制電腦的工作方式。而RAM則用來存取各種動態(tài)的輸入輸出數(shù)據(jù)、中間計算結(jié)果以及與外部存儲器交換的數(shù)據(jù)和暫存數(shù)據(jù)。設(shè)備斷電后,RAM中存儲的數(shù)據(jù)就會丟失。

  b.隨即存儲器(RAM)的選擇:RAM容量的預(yù)測是比較直觀的,我們只需把所有變量數(shù)目與所有內(nèi)部緩沖區(qū)的容量以及先入先出(FIFO)隊列長度和堆棧長度直接相加,就能得到所需RAM容量的總數(shù)。

  如果所需內(nèi)存容量超出這類處理器的尋址范圍,那么只能通過增加外部RAM來滿足需求;然而,增加外部RAM的同時將會占用一定數(shù)量的I/O管腳來對擴展內(nèi)存進行尋址,這種擴展往往會影響到處理器來實現(xiàn)應(yīng)用的初衷。[!--empirenews.page--]

  需要注意的一個問題是,某些微處理器限制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ù)測精度。

  然而,最重要的并不是精確計算程序的代碼長度,而是要清楚地估算代碼長度的上限。根據(jù)經(jīng)驗,如果80%的ROM空間被代碼占用的話,那么就太擁擠了,除非能確保系統(tǒng)需求不會有任何變化,否則至少要為可能發(fā)生的變化保留足夠的備用ROM空間。

  在多數(shù)情況下,我們可以試著在ROM中寫入一部分程序代碼,以便觀察代碼占用空間的情況,對于帶有內(nèi)部ROM的微處理器系統(tǒng)來說,系統(tǒng)程序都只能占用有限的程序存儲器空間。

  d.經(jīng)驗之談:ROM與RAM使用情況相類似,程序代碼長度與所選用的開發(fā)語言有關(guān)。舉例來說,使用匯編語言編制的程序要比使用C語言編制的程序占用少得多的空間。

  對于追求低成本的小型系統(tǒng)來說,一般不提倡使用高級程序設(shè)計語言;這是因為雖然高級語言在使用、調(diào)試以及維護方面來的比較容易,但同時這類語言需要占用更多的內(nèi)存空間和大量的處理器時鐘周期。

  如果開發(fā)語言選擇不當(dāng),其后果可能是把一個簡單、低成本的單片機系統(tǒng)變?yōu)橐粋€需要使用配置若干兆字節(jié)RAM空間的64位嵌入式處理器系統(tǒng)。

  2.4.需要使用的中斷數(shù)量

  中斷的主要用途是向中央處理器通報當(dāng)前發(fā)生的某類特殊事件,這類事件包括諸如定時器超時事件、硬件引發(fā)的事件等。

  需要強調(diào)的是,多數(shù)系統(tǒng)設(shè)計師經(jīng)常過多地使用中斷功能,實際上,中斷的主要作用只是中斷現(xiàn)行程序的執(zhí)行,中斷最適用于必須要求中央處理器立即提供服務(wù)的事件。

  在需要設(shè)計和使用中斷的情況下,一定要首先確認實際需要的中斷數(shù)量,然后必須考慮到系統(tǒng)內(nèi)部占用的中斷資源,如果需要使用的中斷資源超出了處理器可以接收的中斷數(shù)量,我們就應(yīng)借助于某些特殊手段來減少所需中斷信號的數(shù)量。

  2.5.實時處理方面的考慮

  實時處理是一個涉及范圍很廣的題目,其主要內(nèi)容與系統(tǒng)的處理速度有密切聯(lián)系,實時事件是嵌入式微處理器需要關(guān)注的主要任務(wù)。

  例如:處理器跟串口進行通信時,通常通過上層軟件(為了保證實時性,進行任務(wù)切換的時間足夠短),然后再占用處理器去執(zhí)行從串口拿數(shù)據(jù)的任務(wù),并且要保證處理器的速率比串口速率快,那么處理器可以以最快的速度反應(yīng)并處理串口的相關(guān)的任務(wù),這樣就可以達到最大的實時性;

  另一方面,如果處理器本身就內(nèi)置了串口控制器、或DMA、或LCD的控制器等,那么它就可以保證直接使用這些處理器內(nèi)置的接口去控制串口、液晶屏等對象,以達到最大的實時性能。

  2.6.該廠商是否提供好的開發(fā)工具和環(huán)境

  選擇一款新的處理器,很可能就要使用一個新的開發(fā)工具和開發(fā)環(huán)境,包括軟件的編譯環(huán)境等;對于開發(fā)日程安排比較緊張的項目來說,開發(fā)人員往往無法抽出專門的時間來研究,熟悉新的開發(fā)工具,從而也無法全面掌握開發(fā)工具的使用技巧。

  并且,有的開發(fā)工具價格也比較昂貴,而且很可能只能從制造商那里購買,還有仿真工具也是需要付費的,這些對我們在選擇一款處理器的時候,是都應(yīng)該考慮進去的成本因素。
2.7.處理器速度方面的考慮

  主要考慮幾個細節(jié)問題:

  1)處理器速度與處理器時鐘之間的關(guān)系

  例:單片機8031為例,由該處理器可以適應(yīng)12MHz頻率的輸入時鐘,因此就可以認為它是一個速度為12MHz的處理器了嗎?不是,實際上,由于該處理器內(nèi)部邏輯電路執(zhí)行每條指令需要多種不同頻率的時鐘脈沖,因此該處理器內(nèi)部時鐘電路要對輸入的12MHz時鐘12分頻處理;最終為處理器提供的只是 1MHz主頻。

  有的時候,80MHz主頻的處理器(80MHz輸入時鐘,80MHz執(zhí)行速度)要比200MHz主頻的處理器(200MHz輸入時鐘,50MHz執(zhí)行速度)執(zhí)行速度要快得多。

  2)處理器指令系統(tǒng)

  如果不需要執(zhí)行復(fù)雜數(shù)學(xué)運算的應(yīng)用,那么RISC指令集的處理器要快;如果執(zhí)行比較復(fù)雜的操作,則CISC指令集的處理器速度要更快。

  3)芯片結(jié)構(gòu)體系

  現(xiàn)在有的芯片是將多個不同功能的核封裝到一個芯片IC中,定制某種特定的功能,比如DSP,其中包括用于實現(xiàn)數(shù)字解碼、乘法運算的硬件乘法器和移相器等;然而,這類處理器也由其自身局限,往往在執(zhí)行某些普通操作之前必須要使用額外的指令來把RAM中的數(shù)據(jù)放入內(nèi)部寄存器,相比之下,一般處理器只允許對 RAM中的數(shù)據(jù)進行直接訪問。

  2.8.只讀存儲器(ROM)的選擇

  多數(shù)工程項目在其開發(fā)階段一般使用可擦寫可編程只讀存儲器(EPROM)或快速存儲器(Flash Memory);這類可擦寫可重復(fù)寫入存儲器的主要優(yōu)點是可多次使用。一旦產(chǎn)品研制完畢,就可以用一次寫入設(shè)備(OTP)來取代EPROM存儲器,一次性寫入器件的外觀與封裝幾乎與EPROM完全一樣,惟一不同之處就是其表面沒有擦出窗口,并且價格要比EPROM低很多。

  但是,另外一種情況,如果該產(chǎn)品今后需要升級固件,或在線編程,那么我們還是應(yīng)該選擇可擦寫可編程的存儲器。

  還有一種是非易失的存儲器,例如制造一臺電視機,就有可能需要該設(shè)備具有記憶上次觀看最后一個頻道的功能,即使在切斷電源后,該頻道信息也不會丟失。

  總結(jié):所以,根據(jù)不同的產(chǎn)品選擇不同的存儲器也是一門很講究的學(xué)問。

  2.9.電源的要求

  在某些設(shè)計中方案中,電源根本不存在問題,對電源唯一的要求就是可以為電路正常供電;實際上,選擇電源主要要考慮三個方面的問題:

  1)要注意設(shè)計方案中是否對電源的供電方式有所限制,例如,是否像大多數(shù)家用電器那樣需要使用屋內(nèi)墻上的電源插座供電,或是是使用USB接口供電

  2)看系統(tǒng)是否需要使用電池供電方式,如果這樣,我們就要考慮選擇那種對驅(qū)動電流要求不高的處理器,然后再為其選擇合適的電池。

  3)休眠電流:許多微處理器都支持低功率運行模式,在這種模式下,系統(tǒng)的CPU處理器將處于休眠狀態(tài),同時所有外部設(shè)備的電源供電都被暫時切斷,以便減少系統(tǒng)的電能消耗;某些微處理器在這種方式下需要的維持電流極小,但也有一些微處理器在這種方式下并不能節(jié)省多少功率;不管怎樣,我們都要對系統(tǒng)在節(jié)點模式下的工作時間有一個估測,以便對具體情況選擇使用的電池。

  總之,無論哪種情況,我們都要對系統(tǒng)需要的供電總功率做到心中有數(shù)。[!--empirenews.page--]

  2.10.設(shè)備工作環(huán)境的要求

  環(huán)境要求主要內(nèi)容是考慮溫度,濕度等;如果系統(tǒng)必須在溫度范圍較大的環(huán)境下運行,諸如用于軍事設(shè)備或汽車的控制系統(tǒng),那么處理器可選擇的范圍就要小得多;

  并且由于大范圍溫度變化的設(shè)備通常比較昂貴,因此在設(shè)計過程中就不能再根據(jù)一般工業(yè)級器件的價格來制定預(yù)算。

  2.11.使用周期成本

  如果我們的產(chǎn)品是stm32神舟開發(fā)板,在一般情況下,可以不必考慮在用戶現(xiàn)場對stm32神舟開發(fā)板程序進行修改的問題,也不用為是否可以得到設(shè)備備件而著急,這是因為stm32神舟開發(fā)板是一種學(xué)習(xí)型的消費產(chǎn)品,僅僅只是一款開發(fā)板而已。

  換句話說,如果我們的產(chǎn)品是價值幾萬塊的工業(yè)設(shè)備并且需要常年不斷地運行,那么我們在產(chǎn)品設(shè)計過程中就必須從長計議了:

  a.首先,我們需要選擇一種處理器或存儲體系結(jié)構(gòu)都可以升級的器件

  b.考慮到程序升級的可能,我們還要選擇較大容量的內(nèi)存

  c.最后要注意的則是所選處理器是否可以長期供貨,這一點的重要性遠遠大于處理器的價格

  除了上面的考慮之外,使用周期成本也是在設(shè)計之初要考慮的因素??偟膩碚f,生產(chǎn)的部件越多,則可以接受的前期開發(fā)成本也就越大。如果產(chǎn)品是mp3,我們可能會選擇一個低價微處理器,同時投入一大筆錢來開發(fā)控制mp3的軟件。

  但如果我們的產(chǎn)品是價格昂貴的工業(yè)用設(shè)備,那么在產(chǎn)品的使用期內(nèi),該設(shè)備的銷售量將只有幾百臺,毫無疑問,開發(fā)這種產(chǎn)品最重要的就是降低開發(fā)成本(降低開發(fā)成本而不是硬件成本?。。。?;除此之外,工業(yè)產(chǎn)品的成本也不像家用電器或消費電子產(chǎn)品那么敏感。綜上所述,開發(fā)工業(yè)產(chǎn)品當(dāng)然要選擇一種便于進行開發(fā)并且有助于縮短開發(fā)過程的處理器。

  2.12.處理器相關(guān)資料是否豐富

  如果該款處理器在市場上已經(jīng)用得很廣了,那么我們可以獲取更多的相關(guān)資料,觀察人家的產(chǎn)品是如何使用處理器的,也能在網(wǎng)絡(luò)上找到不少的相關(guān)的設(shè)計資料以及相關(guān)技術(shù)主題,這樣就進一步降低了技術(shù)門檻,確保了使用該處理器做產(chǎn)品可行性,減低了風(fēng)險;例如STM32神舟IV號開發(fā)板就有針對該板子有個700多頁的手冊文檔,如果我們選擇STM32芯片來開發(fā)產(chǎn)品的話,借助詳細資料開發(fā)起來就輕松了,達到事半功倍的效果。

  反之,如果是廠商全新推出的處理器,因為市場上還沒有可以借鑒的產(chǎn)品,我們就只能從全英文的芯片手冊開始閱讀,了解這款芯片,這樣開發(fā)周期不僅變長,而且不可預(yù)知的風(fēng)險也很大。

  3.開發(fā)成本的預(yù)測和估計

  大多數(shù)項目或產(chǎn)品都有專人負責(zé)預(yù)測整個過程的開發(fā)成本,對于任何項目來說,其開發(fā)成本主要包括人力和材料開銷。

  預(yù)測開發(fā)成本在很大程度上需要根據(jù)經(jīng)驗,這也是為什么大型公司一般指定有經(jīng)驗的高級工程師來完成這一任務(wù)的原因,除了人力和材料的開銷之外,總結(jié)下來,還有以下的開銷:

  1)人力成本(開發(fā)人員、管理人員、銷售人員、其他行政等輔助人員)的開銷

  2)材料(硬件物料和損耗,有時候需要投幾次PCB版才把產(chǎn)品穩(wěn)定下來)的開銷

  3)開發(fā)系統(tǒng)和開發(fā)工具軟件的開銷

  4)硬件工具的開銷(例如示波器、仿真器等)

  對于整個項目來說,上述的開銷將直接可能導(dǎo)致產(chǎn)品成本增加,其中人力成本最為關(guān)鍵,尤其是在中國。

  4.產(chǎn)品開發(fā)設(shè)計文檔(需要包括硬件和軟件兩個方面)

4.1 硬件文檔撰寫思路

  1)首先是需求定義或產(chǎn)品規(guī)格:

  如果這些是產(chǎn)品最終目標(biāo)的話,那么產(chǎn)品對硬件和軟件的要求就是技術(shù)方案的最終目標(biāo);對硬件和軟件的要求是從定義用戶界面和系統(tǒng)功能開始的。

  2)其次,根據(jù)需求,系統(tǒng)整體定義文檔中給出硬件接口的具體定義:

  定義硬件最有效的方法是從需求開始描述,由于硬件必須支持系統(tǒng)定義的所有功能,因此硬件定義是與系統(tǒng)說明不可分割的;

  例如,我們設(shè)計一個定時器(事先需求說明定時器不能與個人電腦連接,故無法使用CRT顯示時間),我們只有兩種選擇:一種是使用發(fā)光二極管(LED),另一種是使用液晶顯示器件(LCD);盡管LCD的顯示效果比較好,但考慮到定時器要常年位于戶外,并且早期LCD顯示器不能在低溫下工作,最終還是選擇 LED設(shè)備(這整個過程描述了我們硬件選型時的一個思路,這個是密切跟需求掛鉤的)

  3)一旦完成了系統(tǒng)整體說明文檔,就開始進行系統(tǒng)設(shè)計:

  首先要對硬件說明的內(nèi)容進行細化,包括添加能讓工程師理解的設(shè)計意圖,以及軟件工程師圍繞硬件進行程序設(shè)計時需要使用的硬件信息等。

  完成硬件電路板說明文檔后,我們還要在該文檔中增加一個用來描述系統(tǒng)的原始要求的前言部分,包括說明方案的設(shè)計思路和方法,除此之外,還要附上軟件工程師用來對硬件進行控制所需的各類信息,這類信息主要包括如下內(nèi)容(軟件工程所需信息):

  -----內(nèi)存和I/O端口地址(如果需要,還可以提供內(nèi)存映射圖)

  -----可用內(nèi)存容量

  -----狀態(tài)寄存器每一位的定義

  -----每個端口管腳的用途

  -----外部設(shè)備的驅(qū)動方法(例如,說明輸入定時器電路的時鐘頻率等)

  -----其他有管軟件人員設(shè)計程序需要了解的信息

  對于比較復(fù)雜的系統(tǒng)來說,硬件文檔中經(jīng)常使用兩個獨立的部分來進行說明;其第一部分用來描述硬件指標(biāo)和工作原理,第二部分則主要為軟件人員提供程序設(shè)計需要的信息。

  4.2 軟件文檔撰寫思路

  1) 軟件文檔與硬件文檔的組織方法類似,軟件要求文檔的主要內(nèi)容則是定義軟件要實現(xiàn)的功能;一種是在簡單項目設(shè)計過程中,軟件定義也可以只對一種電路板使用的軟件給予描述;對較復(fù)雜的項目來說,由于參與這種項目的軟件人員分別負責(zé)設(shè)計驅(qū)動不同硬件部分的代碼(同一電路板),因此每個軟件人員可能會為自己的設(shè)計代碼指定不同的定義,這類軟件說明需要提供下列的內(nèi)容:

  -----論述包括需求定義、工程指標(biāo)、硬件參數(shù)等實施項目需要的內(nèi)容

  -----說明軟件之間、處理器之間或處理器與其內(nèi)部器件之間使用的通信協(xié)議:其內(nèi)容應(yīng)包括對緩沖區(qū)接口機制、命令/應(yīng)答協(xié)議、信號控制等協(xié)議的具體說明。

  -----借助流程圖、偽代碼或者其他可能的方法來描述軟件的實現(xiàn)方法和過程

  2) 軟件與硬件所考慮的不同之處(此經(jīng)驗方便技術(shù)總監(jiān)或其他相關(guān)管理者參考,因為無論是多高深的技術(shù)管理者,要么是硬件出身,要么是軟件出身,要么就是非技術(shù)出身,armjishu.com里面有少數(shù)軟硬件都精通的高手)

  a. 軟件的靈活性遠遠大于硬件,要讓軟件人員搞清楚某個軟件的內(nèi)部格式是非常困難的任務(wù),解決的辦法:詳細定義其他程序員需要了解的編程接口具體內(nèi)容,以及其他工程人員在實施開發(fā)項目過程中需要使用的技術(shù)細節(jié)信息。

  b. 軟件工程師只有在收到硬件說明文檔后,才有可能知道如何對系統(tǒng)硬件進行操作;而硬件人員一般不需要了解軟件程序的技術(shù)細節(jié)。

  c. 由于軟件易于更改,因此程序內(nèi)容經(jīng)常會按銷售人員提供的要求發(fā)生變更,在某些情況下,軟件文檔的內(nèi)容無法及時反映程序的最新變化。

  d. 軟件經(jīng)常是工程項目最后完成的部分,因此其文檔也經(jīng)常因時間不夠而欠缺完整。實際上,軟件文檔是否詳細、完整,在某種程度上是與公司或客戶的要求有關(guān)的。例如,軍事或國家工程一般要求開發(fā)商就其所有軟件實現(xiàn)的功能提供全面詳細的文檔

  e. 有個潛規(guī)則,對軟件的要求越復(fù)雜,則需求的正確可能性就越小,這個是經(jīng)驗之談了,我們需要把準(zhǔn)需求這個準(zhǔn)繩來做文章,而不是陷入個人主義以及對軟件要求而憑空發(fā)揮自己不切實際的想象。

  f. 我們可以先硬件設(shè)計,接著圍繞該硬件編制軟件。雖然實際系統(tǒng)的實現(xiàn)過程可能是軟硬件并行開發(fā),但軟件人員基本上也是圍繞著已經(jīng)實現(xiàn)的硬件來進行程序設(shè)計的;對于更為復(fù)雜的系統(tǒng)來說,開發(fā)過程可能會出現(xiàn)重復(fù)。

  例如,某個項目的硬件工程師和軟件工程師可能會坐下來開會,共同決定使用哪種硬件來實現(xiàn)某種功能;軟件人員可能提出需要為數(shù)據(jù)緩沖區(qū)口沖內(nèi)存容量,也可能要求提供某種外部設(shè)備接口,以便充分利用現(xiàn)成接口程序提供的各種驅(qū)動代碼。

  總的來說,必須在提高軟件開發(fā)效率與硬件系統(tǒng)的復(fù)雜性與成本之間進行權(quán)衡。

5.嵌入式高手對技術(shù)的理解(含辛茹苦這么多年的精華體驗)

  有很多人認為:嵌入式系統(tǒng)性能的核心因素是軟件功能,其實,如果按照這種邏輯,系統(tǒng)設(shè)計中存在的問題就應(yīng)由軟件人員來負責(zé);其實這個觀點實際上反映了設(shè)計嵌入式產(chǎn)品時如何考慮劃分硬件和軟件各自應(yīng)實現(xiàn)的功能,也就是這個功能是軟件實現(xiàn),還是考慮用硬件來實現(xiàn)(硬件實現(xiàn):需要購買處理該功能的硬件芯片,從而增加成本;軟件實現(xiàn):無需增加硬件成本,但會占用處理器以及內(nèi)存的資源,這是armjishu.com的專家們體會到的)。

  例如:我們在這里設(shè)計的基于STM32的神舟II號開發(fā)板產(chǎn)品,我們可以使用專業(yè)的解碼芯片來負責(zé)mp3音樂文件的解碼和播放功能,也可以使用另一種方法來解碼mp3語音文件,讓ARM處理器利用軟件控制寄存器來驅(qū)動耳機或音響,處理器通過對mp3語音文件解碼之后再將解碼后的數(shù)據(jù)流按照一定協(xié)議格式送給音頻輸出的硬件接口進行播放。

  優(yōu)點:這種方案在硬件方面節(jié)省了一個器件,降低了成本,并且該功能還方便調(diào)試(因為是軟件實現(xiàn)的)。

  缺點:從另一個角度來看,雖然節(jié)省了一塊語音解碼芯片,但同時要在三個方面增加成本。

  首先,要在程序中增加語音協(xié)議解碼的代碼;

  其次,可能要把增加ROM來存放語音解碼的協(xié)議,這樣可以增加速度;

  最后,運行該程序?qū)⒄加锰幚砥鞯臅r間和資源。

  其實,話又說回來,對于本案例來說,上述成本的節(jié)約并不會引發(fā)任何問題,包括驅(qū)動程序增加也只需少量的,我們討論這個mp3產(chǎn)品的案例的目的在于說明如何對軟件硬件的功能進行合理劃分。

  總的來說,交給軟件實現(xiàn)的功能越多,則產(chǎn)品的成本就越低,當(dāng)然這就要處理器必須有足夠的處理速度和內(nèi)存空間來實現(xiàn)設(shè)計指定的功能;常言說得好,天下沒有免費的午餐;把功能分配給軟件來實現(xiàn),會增加軟件的復(fù)雜性、開發(fā)時間、以及程序的調(diào)試時間;然而,隨著處理器的處理能力的不斷提高,可以預(yù)見,越來越多的功能將會由軟件來實現(xiàn)。

  雖然在軟件中實現(xiàn)各種功能會增加開發(fā)成本,但如果把功能移植到硬件中實現(xiàn),則會增加產(chǎn)品的成本,這類開銷是在構(gòu)造每個系統(tǒng)組件時不可避免的。在低成本設(shè)計方案中,增加任何額外的硬件都會對產(chǎn)品成本產(chǎn)生顯著的影響,因此軟硬件功能劃分就是一個決定產(chǎn)品成本的大問題。在諸如大眾消費產(chǎn)品這一類對成本非常敏感的設(shè)計方案中,一般都會把無法通過軟件實現(xiàn)的功能排除在外的。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉