<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)小白學(xué)步(16) 單片機(jī)/計(jì)算機(jī)系統(tǒng)概述:模塊化思想

          單片機(jī)小白學(xué)步(16) 單片機(jī)/計(jì)算機(jī)系統(tǒng)概述:模塊化思想

          作者: 時(shí)間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          截至目前,單片機(jī)入門篇的介紹就告一段落了。從本文開始將進(jìn)入思想篇的學(xué)習(xí)。

          思想篇對后面的具體知識學(xué)習(xí)進(jìn)行整體的框架介紹,解釋一些基礎(chǔ)名詞,以及對學(xué)習(xí)思想方法進(jìn)行總結(jié)。思想篇的內(nèi)容,對于后面的學(xué)習(xí)有很大的指導(dǎo)作用,尤其是模塊化思想將會貫穿整個學(xué)習(xí)篇的知識體系。思想篇并不僅限于接下來的幾篇文章,還會在學(xué)習(xí)篇中通過話題的形式穿插講解。

          本文引用地址:http://www.ex-cimer.com/article/201611/318517.htm

          閱讀建議:如果還沒有涉及到實(shí)踐,閱讀時(shí)不一定能對思想方法有深刻的認(rèn)識,看的時(shí)候有個大致的認(rèn)識就可以了。在具體實(shí)踐的時(shí)候,可以根據(jù)需要再回來看一看。

          ==================================

          為了讓大家更好的理解單片機(jī),從本文開始,會先對單片機(jī)/計(jì)算機(jī)系統(tǒng)進(jìn)行一個整體的介紹。讓大家對單片機(jī)的學(xué)習(xí)和單片機(jī)系統(tǒng)的設(shè)計(jì)有個比較準(zhǔn)確的把握,更好的分清后面各種知識點(diǎn)之間的聯(lián)系,以及它們之間的輕重主次,學(xué)習(xí)起來更加得心應(yīng)手。

          在這幾篇里,會涉及到大量新的名詞術(shù)語,而這些也正是很多初學(xué)者遇到的巨大的困難。我會用通俗的語言對它們進(jìn)行介紹,不需要理解的很透徹,只要有一個大致的認(rèn)識就可以了。同時(shí),也會涉及單片機(jī)和計(jì)算機(jī)系統(tǒng)的各種設(shè)計(jì)思想,以及學(xué)習(xí)時(shí)的思路技巧等。

          因?yàn)閱纹瑱C(jī)和計(jì)算機(jī)本質(zhì)上沒有太大的區(qū)別,所以這里介紹的內(nèi)容絕不是僅僅局限于51單片機(jī),也不只是單片機(jī),而是包含計(jì)算機(jī)在內(nèi)的各種微機(jī)系統(tǒng)。廢話不多說,下面進(jìn)入正題。

          模塊化思想

          模塊化是一個很重要的思想,它的應(yīng)用不僅僅局限在單片機(jī)等技術(shù)方面,還體現(xiàn)在我們的身體構(gòu)造,體現(xiàn)在人類社會生產(chǎn)生活中的方方面面。何為模塊化思想呢?按照我的理解,模塊化思想有幾個特點(diǎn),下面一一道來。

          1、分工合作與專一

          對生物學(xué)有基本認(rèn)識的人都知道,包括人在內(nèi)的很多動物是由多種器官構(gòu)成的,例如大腦負(fù)責(zé)思考,心臟負(fù)責(zé)輸送血液等。每個器官或組織負(fù)責(zé)幾項(xiàng)功能,各個器官之間協(xié)調(diào)工作,共同構(gòu)成一個復(fù)雜的整體。

          在人類社會中,分工合作的現(xiàn)象也是很常見的。生活中需要吃飯穿衣,在比較落后的年代,可能有一些自給自足的經(jīng)濟(jì)形式,自己勞動滿足最基本的生活需求。而在現(xiàn)代社會,人的需求越來越多,不可能全部靠自己生產(chǎn)。每個人都專注于自己的特長,例如農(nóng)民負(fù)責(zé)種植糧食,服裝工人負(fù)責(zé)制造衣服,養(yǎng)殖戶負(fù)責(zé)養(yǎng)殖,程序員負(fù)責(zé)編寫程序等。各種人分工合作,最后互相交換勞動成果。當(dāng)一個人長期專注于一件事,而不用擔(dān)心自己其他的需求時(shí),這個人能把這件事做得更好,總體上來看,社會的生產(chǎn)力也就大大提高了。

          2、模塊抽象

          如果對電腦的基本組成有所了解,可以知道電腦由CPU、內(nèi)存、硬盤、主板、顯示器等幾部分組成。如果想在電腦中存儲更多的電影,可以考慮更換更大的硬盤。我們只需要知道硬盤是電腦中負(fù)責(zé)存儲的部件,而不關(guān)注硬盤內(nèi)部的構(gòu)造。因?yàn)槊總€模塊都是高度抽象的,內(nèi)部原理可能很復(fù)雜,但是對外部而言,它只是一個能完成特定功能的黑盒子。這樣抽象的好處,就是在更換硬盤時(shí),只需要從外部對硬盤有一個抽象的認(rèn)識,就能輕松解決問題,剩下的就只是花錢購買硬盤了。

          3、分層

          如果讓你管理一個龐大的公司,你會怎么管理?分層管理將會是一個很好的選擇。

          你可以根據(jù)實(shí)際情況將公司分為幾個部門,研發(fā)部、營銷部、財(cái)務(wù)部、人事后勤部等。每個部門指派幾個負(fù)責(zé)人進(jìn)行管理,每個部門負(fù)責(zé)指定的工作。而具體到研發(fā)部,管理人員為了便于管理,又可能將其分為軟件部、硬件部等;而到了軟件部,又會有不同的團(tuán)隊(duì),移動客戶端開發(fā)、服務(wù)器端開發(fā)等等。這樣一層一層進(jìn)行分下來,每個人各司其職,也體現(xiàn)了分工合作的特點(diǎn)。

          如果你是公司的老總,當(dāng)發(fā)現(xiàn)這個月公司的軟件產(chǎn)品開發(fā)進(jìn)度非常慢時(shí),可能會直接叫來研發(fā)部的總管大發(fā)雷霆:“公司的XX軟件開發(fā)太慢了,你看人家公司的同類產(chǎn)品早就發(fā)布出去了。這件事你得盡快給我搞定,要不然就走人!”然后指令一層一層的下達(dá)到了最下層的員工,最底層的程序猿們就又要加班加點(diǎn)拼命的干活了。研發(fā)進(jìn)度慢或許只是因?yàn)橛袔讉€程序員最近有事請假了,但是在這個過程中,你不需要過多關(guān)注底層的細(xì)節(jié),你也沒有太多精力去關(guān)注,而只是把整個研發(fā)部當(dāng)做一個抽象的整體去對待,這也體現(xiàn)了模塊抽象的特點(diǎn)。

          模塊化設(shè)計(jì)的方法原則

          前面說了模塊化思想的特點(diǎn),模塊化思想應(yīng)用很廣泛,而根據(jù)這種思想設(shè)計(jì)系統(tǒng),就是模塊化設(shè)計(jì)了。不只是單片機(jī)系統(tǒng),計(jì)算機(jī)軟硬件系統(tǒng)也可以充分利用模塊化設(shè)計(jì)。這里先說一說模塊化設(shè)計(jì)的方法思路。

          對于初學(xué)者,對此只需要先有個大概的認(rèn)識,沒有實(shí)際設(shè)計(jì)過,對這些思想也不容易有所感觸;后來需要設(shè)計(jì)實(shí)際系統(tǒng)時(shí),有需要回來再看看這篇就好了。

          1、自頂向下,逐步求精;邏輯設(shè)計(jì)與物理實(shí)現(xiàn)分離;自底向上

          當(dāng)要設(shè)計(jì)一個比較復(fù)雜的系統(tǒng)時(shí),常常會先畫框圖,每個框表示一個抽象的功能模塊。通過框圖可以設(shè)計(jì)這些模塊之間的邏輯關(guān)系,然后再細(xì)化去設(shè)計(jì)每個模塊。而這樣一個模塊可能也比較復(fù)雜,這時(shí)又會將其拆分為更小的模塊。這樣一步一步的拆分模塊,直到最后技術(shù)細(xì)節(jié)實(shí)現(xiàn)。這就是自頂向下的設(shè)計(jì)方法,將一個復(fù)雜問題進(jìn)行分解,逐步求精。而框圖的設(shè)計(jì)則是模塊之間的邏輯設(shè)計(jì),邏輯設(shè)計(jì)與每個模塊的具體物理實(shí)現(xiàn)可以完全分離。

          和自頂向下的設(shè)計(jì)方法相比,還有一種恰恰相反的思路:自底向上。先設(shè)計(jì)出一些核心模塊,然后再逐步進(jìn)行擴(kuò)展和完善。完全的自底向上的方法只適合設(shè)計(jì)小型的系統(tǒng)。在實(shí)際應(yīng)用中,往往是結(jié)合這兩種方法進(jìn)行設(shè)計(jì)。

          2、模塊獨(dú)立,減小耦合度

          模塊化設(shè)計(jì)中很重要的一個思想是模塊獨(dú)立,減小模塊之間的耦合度。也就是說,每個模塊負(fù)責(zé)完成自己的功能,不同的模塊之間關(guān)聯(lián)要盡可能小,以免互相影響。

          想給電腦換一個更大的硬盤時(shí),一般不用考慮內(nèi)存等其他模塊會不會受到影響,要不然實(shí)在是太麻煩了。因?yàn)殡娔X的模塊化設(shè)計(jì)非常規(guī)范,模塊之間的關(guān)聯(lián)很小。

          減小耦合度這種看似簡單的問題,實(shí)際上在設(shè)計(jì)的時(shí)候卻相當(dāng)麻煩,為了減小耦合度,需要使用很多技術(shù)來完成,后面會在實(shí)際操作中進(jìn)行介紹。

          3、模塊標(biāo)準(zhǔn)化,可代換

          有同學(xué)覺得自己的電腦反應(yīng)太慢,網(wǎng)上一查,原來電腦慢很大可能是因?yàn)闄C(jī)械硬盤的速度太慢。相比硬盤,CPU和內(nèi)存要快很多,所以就如木桶效應(yīng),電腦被最慢的硬盤給拖慢了速度。于是就給電腦換上了固態(tài)硬盤,頓時(shí)速度快了很多。

          固態(tài)硬盤和機(jī)械硬盤的內(nèi)部結(jié)構(gòu)是完全不一樣的。機(jī)械硬盤是依靠磁性盤片存儲數(shù)據(jù)的,讀寫時(shí)需要機(jī)械結(jié)構(gòu)帶動盤片轉(zhuǎn)動,機(jī)械轉(zhuǎn)動速度不能太快(2.5寸機(jī)械硬盤以7200轉(zhuǎn)每分鐘的速度旋轉(zhuǎn),盤片邊緣的速度能達(dá)到86km/h),太快了盤片可能會直接破裂,或者發(fā)熱量巨大,所以讀寫速度遠(yuǎn)遠(yuǎn)沒有電子器件快。而固態(tài)硬盤使用的就是電子芯片來實(shí)現(xiàn)數(shù)據(jù)存儲,所以速度非???。

          兩種硬盤雖然原理和性能差距都很大,但是卻能很輕松的安裝在同一臺電腦上,只要保證一些參數(shù)匹配,例如都是2.5寸的。這是因?yàn)楝F(xiàn)有的不同硬盤設(shè)計(jì)的都是標(biāo)準(zhǔn)化的,硬盤的尺寸、接口等都有標(biāo)準(zhǔn)規(guī)范,所以能很輕松的代換。

          4、模塊通用性,適用于多種產(chǎn)品

          幾年以前的手機(jī)等數(shù)碼產(chǎn)品,不同品牌、不同設(shè)備分別由不同的人和公司設(shè)計(jì),充電的接口各不相同,充電器也都是每個數(shù)碼產(chǎn)品專門配備一套,出門旅行帶的數(shù)碼產(chǎn)品一多,僅僅是大大小小的各種充電器就夠讓人煩了。而且充電器壞了只能重新買配套的充電器。這樣的設(shè)計(jì)浪費(fèi)了很多資源,也給人們的生活帶來了很大的不便。

          而近幾年,MP3、MP4、手機(jī)等數(shù)碼產(chǎn)品的充電器接口慢慢被統(tǒng)一起來,很多設(shè)備都可以使用通用的USB充電頭和數(shù)據(jù)線進(jìn)行充電。對于用戶來說方便多了;對于設(shè)備制造商來說,也不是很有必要單獨(dú)設(shè)計(jì)充電器,直接用標(biāo)準(zhǔn)充電器就可以了;還節(jié)約了資源,例如有些數(shù)碼設(shè)備充電器是可以選配的,有充電器就不用再進(jìn)行購買了。通用的充電頭和手機(jī)充電接口設(shè)計(jì),使得一個充電器可以用于多種產(chǎn)品。

          通用性和前面一點(diǎn)標(biāo)準(zhǔn)化,兩者其實(shí)都可以理解成,設(shè)計(jì)一個模塊或系統(tǒng),都要遵循一定的標(biāo)準(zhǔn)化規(guī)范。一個標(biāo)準(zhǔn)化的模塊,可以應(yīng)用于不同的系統(tǒng)(通用充電器給多種設(shè)備充電);而符合統(tǒng)一標(biāo)準(zhǔn)的多個同類模塊,可以用于同一個系統(tǒng)(機(jī)械硬盤和固態(tài)硬盤都能裝進(jìn)電腦)。

          模塊化設(shè)計(jì)的優(yōu)缺點(diǎn)

          前面通過舉例,已經(jīng)明確的體現(xiàn)了模塊化設(shè)計(jì)的很多優(yōu)點(diǎn),這里對其特點(diǎn)進(jìn)行一個總結(jié)。

          1、便于分工合作

          對于一個實(shí)際產(chǎn)品,很多時(shí)候不是一個人開發(fā)的,而是很多人共同開發(fā)。這里的原因有很多,可能是因?yàn)闀r(shí)間比較緊,例如公司之間的競爭,誰最先開發(fā)并發(fā)布新的產(chǎn)品,就最有可能搶占市場;可能是因?yàn)橄到y(tǒng)太龐大,一個人一輩子也做不完,例如操作系統(tǒng)的代碼量往往能達(dá)到幾百萬行;分工合作還會提高整體效率,前面已經(jīng)說過了。

          多個人開發(fā)同一個系統(tǒng),模塊化開發(fā)是最好的選擇。一些人專注于一個領(lǐng)域,例如安卓程序、平面設(shè)計(jì)、服務(wù)器等,每個人負(fù)責(zé)開發(fā)和他的專注領(lǐng)域匹配的小模塊,而另外一些知識面比較廣、經(jīng)驗(yàn)豐富的人,負(fù)責(zé)模塊之間的邏輯組合,最后將整個系統(tǒng)整合到一起。這個過程也可能會有分層,系統(tǒng)分成大的模塊,再拆分成小的模塊,逐層分解并實(shí)現(xiàn)。

          2、提高開發(fā)效率

          一方面,分工合作的方式能提高效率;另一方面,運(yùn)用已經(jīng)實(shí)現(xiàn)好的模塊,像積木一樣搭建新的系統(tǒng),更是讓效率大大提高。

          模塊的開發(fā),可能是很多人分別完成的,也可能是同一個人在不同時(shí)期完成的,還有可能是從別人那免費(fèi)獲得或購買的。

          具體到單片機(jī)的學(xué)習(xí),其實(shí)一開始我們就在使用別人的模塊。單片機(jī)、各種元件都是別人生產(chǎn)好的,運(yùn)用這些模塊,我們很快的搭建了自己的開發(fā)板。

          同樣的道理,在后面的詳細(xì)學(xué)習(xí)過程中,我希望大家每次學(xué)完一個技術(shù)知識,就自己實(shí)現(xiàn)一個程序模塊,例如數(shù)碼管的驅(qū)動程序(雖然現(xiàn)在你可能還不理解這是什么)。到整個知識都快學(xué)完了,就有了一套自己的程序庫,也就是全套的模塊程序。

          時(shí)間久了,或許你就有點(diǎn)記不清數(shù)碼管驅(qū)動當(dāng)初是怎么寫的了。但是沒關(guān)系,只要你寫好了自己的程序模塊,并且給出了規(guī)范的使用說明,需要時(shí)直接照著說明去用就可以了,而不需要再去復(fù)習(xí)一遍前面的知識。所以在后面開發(fā)自己的單片機(jī)系統(tǒng)時(shí),直接用自己開發(fā)好的模塊,就能極大的提高開發(fā)效率。

          而在后面具體技術(shù)的學(xué)習(xí)中,我也會詳細(xì)的分析,如何才能盡可能好的實(shí)現(xiàn)每一個模塊,用到哪些技術(shù)知識,幫助大家一起搭建自己的程序庫。

          3、能開發(fā)出復(fù)雜系統(tǒng)

          分工合作,使得人們能開發(fā)出一個人有生之年根本完成不了的、很龐大的系統(tǒng)。

          而對于個人開發(fā)系統(tǒng)來說,如果你花幾個月寫一個比較龐大的程序,寫到后面可能就忘記了前面的程序是怎么寫的,這樣可能會影響程序的繼續(xù)編寫。這時(shí)你可能需要回過頭來再看以前的程序,但程序畢竟不是自然語言,看起來還是比較費(fèi)勁的,很可能后來你自己也很難看懂了,至少是需要很多時(shí)間才能看懂。等你終于看懂了前面的東西,發(fā)現(xiàn)后面的代碼又忘了。

          而模塊化的設(shè)計(jì)方法,你可以在一個小的時(shí)間段里,設(shè)計(jì)一個小的模塊,并把它做的足夠好,然后對整個模塊編寫一個自己能看懂的使用說明。以后要用這個模塊,就把它當(dāng)做一個抽象的整體,不需要關(guān)注模塊內(nèi)部細(xì)節(jié)實(shí)現(xiàn),直接看使用說明就行了。這樣,你才更有可能獨(dú)立開發(fā)一個比較龐大的程序。

          4、便于維護(hù)和查錯

          便于維護(hù)也是模塊化很重要的一個特點(diǎn)。模塊化講究降低模塊間的耦合度,一個不是很核心的模塊出了問題,往往不會對其他模塊造成很大影響,只會表現(xiàn)出系統(tǒng)中的一些功能無法使用(當(dāng)然,如果核心模塊例如電腦CPU出了問題,可能會導(dǎo)致整個系統(tǒng)崩潰)。這時(shí)你可以直接判斷出哪個模塊有問題,然后去修復(fù)那個模塊,大大縮小了檢查錯誤的范圍。

          不知道大家對前面《單片機(jī)程序下載失敗總結(jié)》的那篇文章還有沒有印象,文中提到,下載失敗時(shí),如果你能有一套正常下載程序的電腦、下載線、單片機(jī)系統(tǒng)板裝備,通過替換的方法,很快就能確定問題是否出在你的電腦上。從這里可以看出來模塊化思想在查錯時(shí)的重大意義。

          5、缺點(diǎn)

          任何事物都有兩面性,模塊化思想也不例外。這里我簡單說一下。

          不知道大家有沒有聽說過這樣的話,很多互聯(lián)網(wǎng)公司都是“三個人拿四個人的錢干五個人的活”。為什么很多互聯(lián)網(wǎng)公司工作非常累,工資很高,但是老板卻不愿意降低工資多招聘一些人,同時(shí)讓員工能更輕松呢?

          有本書叫《人月神話》,里面就解釋了這個問題的原因。人月是一個單位,表示一個人一個月能完成的工作量。按照人月理論,6個人月的工作兩個人需要三個月完成,而三個人則只需要兩個月。而事實(shí)是,在互聯(lián)網(wǎng)公司,三個人往往需要遠(yuǎn)遠(yuǎn)不止兩個月,甚至三個月還完成不了任務(wù),人月理論只是一個不可能的神話。

          為什么會這樣呢?原因是多個人設(shè)計(jì)同一個系統(tǒng),人與人之間需要溝通,人越多溝通需要的成本越大。所以招聘更多的人,意味著浪費(fèi)掉更多的溝通成本。

          如果把每個人看做一個模塊,人月神話說明了,過多的模塊會增加模塊之間的交流成本,從而降低系統(tǒng)效率;而在模塊特別多、關(guān)系很密切的時(shí)候,保持模塊的獨(dú)立性和模塊之間的匹配,本身就成了很大的難題。

          但是總體來說,模塊化的優(yōu)點(diǎn)遠(yuǎn)大于缺點(diǎn),有些時(shí)候模塊化也是不得已而為之的,而一些缺點(diǎn)往往是在特定情況下才有的。

          =======================================================



          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();