單片機小白學(xué)步(17) 單片機/計算機系統(tǒng)概述:核心模塊
為了便于進行說明,后面會將單片機/計算機簡單的統(tǒng)稱為微機系統(tǒng)。
本文引用地址:http://m.butianyuan.cn/article/201611/318516.htm信息與數(shù)據(jù)
何為信息?可以理解成我們周圍各種所能感知到的東西、還有人們所思所想等等,信息的概念不好解釋,但是大家都能理解,也不是我要討論的重點。
在微機系統(tǒng)中,能處理很多信息,例如我正在寫的內(nèi)容,就是文字和圖像信息。處理信息的前提,就是對信息進行表示,例如文字就是一種形式。
何為數(shù)據(jù)?在微機系統(tǒng)中,其結(jié)構(gòu)決定了各種能處理的信息都需要表示成二進制數(shù)字,這就被稱為數(shù)據(jù)。例如英文字符可以通過ASCII碼表示成一個個字節(jié)的數(shù)據(jù)等。
CPU
人的大腦每時每刻所做的最重要的事,就是對大量的信息進行處理。對內(nèi)部已有信息和外界信息進行處理,產(chǎn)生新的信息保存在大腦中,或?qū)ν饨缱鞒龇磻?yīng)。
CPU即中央處理器(CPU=Central Processing Unit),是一個微機系統(tǒng)最核心的部件,可以認為相當于人的大腦中的思維部分,負責數(shù)據(jù)的處理。
存儲器:RAM/ROM/外存儲器
存儲器用來保存數(shù)據(jù),例如在硬盤上可以存放電影音樂,可以認為相當于大腦中的記憶部分。
RAM
即隨機存儲器(RAM=Random Access Memory),最重要的特點是可讀可寫。寫是指修改或者刪除數(shù)據(jù)。另外,RAM的速度相對比較快;斷電后數(shù)據(jù)會丟失;另外由于造價較高通常容量不大,但是夠用了。通常在電腦中相當于內(nèi)存。
在學(xué)習(xí)C語言的時候,定義一個變量,例如int a,程序在執(zhí)行的時候,這個變量就會保存在RAM中。
RAM根據(jù)結(jié)構(gòu)和工作原理,又分為SRAM(=Static RAM,靜態(tài)RAM)和DRAM(=Dynamic RAM,動態(tài)RAM)兩種,有興趣可以自己查閱相關(guān)資料。
ROM
即只讀存儲器(ROM=Read Only Memory),主要特點是通常情況下存儲內(nèi)容不能被修改;斷電后數(shù)據(jù)不會丟失。
最早的ROM是一次性寫入的,寫入完成后通過高電壓燒斷ROM內(nèi)部的熔絲,之后就不能再修改,而這也是單片機“燒寫程序”一詞的由來。后來為了適應(yīng)硬件發(fā)展,可用紫外線擦寫的ROM被發(fā)明出來,但是操作起來比較麻煩。再到后來電擦寫的ROM誕生了,也就是后面會用到的EEPROM(EEPROM=Electrically Erasable Programmable Read-Only Memory,帶電可擦可編程只讀存儲器)。
給單片機燒寫程序時,就是將代碼燒寫到了單片機的ROM中;運行程序的時候,指令就會從ROM中取出并被執(zhí)行。
備注1:ROM常被誤認為是對應(yīng)于計算機上的硬盤,實際上硬盤屬于外部存儲,而ROM對應(yīng)于計算機主板上的BIOS存儲器等。
備注2:在計算機中,常用到的應(yīng)用程序平時是保存在硬盤中的,執(zhí)行的時候,會由操作系統(tǒng)裝載到內(nèi)存的代碼區(qū)域而不是ROM,這和單片機中的程序的執(zhí)行過程不一樣(與單片機程序執(zhí)行過程一致的是BIOS程序等,而不是操作系統(tǒng)之上的應(yīng)用程序)。
備注3:一些單片機具備IAP功能(IAP=In Application Programming,在應(yīng)用編程),利用一段小程序更新單片機ROM中的程序,可以實現(xiàn)在不斷電的情況下自動更新單片機程序。
外存儲器
一般計算機系統(tǒng)中存儲器包括主存儲器和輔助存儲器,主存儲器又叫內(nèi)存儲器(內(nèi)存),輔助存儲器又叫外儲存器(外存)。常見的外存儲器有硬盤、軟盤、光盤、U盤等,斷電后仍然能保存數(shù)據(jù)。
中斷系統(tǒng)
中斷系統(tǒng)是計算機中非常重要的一個概念,但是這個詞看起來很難理解。何為中斷系統(tǒng)呢?我先講一個故事。
有一天班長收到通知要讓五位同學(xué)每人填一份表格,填完后盡快收集起來上交給老師。班長把表格分別發(fā)給了這五位同學(xué),但是每個同學(xué)什么時候能填好表格是不確定的。這時他有幾種選擇。
方法一,每隔一段時間輪流去問這五位同學(xué)有沒有填完,如果填完了,確認無誤,就收集起來。
方法二,班長發(fā)表格時告訴這幾位同學(xué),填完表后馬上交給他,然后自己就能繼續(xù)好好看書了。每當有同學(xué)交表格的時候,班長就會把書簽放到正在看的那一頁書中,然后檢查這個同學(xué)的表格填寫是否正確。確認了以后,班長又會從剛剛看的那一頁繼續(xù)看書。
顯然,方法一效率實在太低,浪費了很多時間;方法二效果不錯,效率提高了很多。
故事講完了,這里就要介紹中斷系統(tǒng)了。在基本的微機系統(tǒng)中,CPU負責主要數(shù)據(jù)的處理工作(不考慮計算機顯卡這類設(shè)備),通常任務(wù)繁重(相當于故事中的班長)。
有時外圍器件需要執(zhí)行工作,執(zhí)行結(jié)果要讓CPU及時處理,但又不能確定具體完成時間(故事中的同學(xué)填表格)。
原因有可能是因為外圍模塊速度遠不及CPU,例如從硬盤讀數(shù)據(jù);也可能是執(zhí)行不需CPU干預(yù)的費時操作(也可以理解成外圍模塊執(zhí)行這個操作的速度慢);或者是接收來自外界的操作,例如按下鍵盤電腦需要很快進行響應(yīng),要不然就表現(xiàn)為很卡甚至死機了。
這時為了及時知道外圍器件處理的結(jié)果并進行處理,就有幾種工作流程了。
一是輪詢法(故事中的方法一)。以一定的間隔不斷查詢外圍器件工作狀態(tài)。好處是設(shè)計起來比較簡單;缺點是效率太低,特別是當外圍設(shè)備太多、速度差異很大時,CPU幾乎沒空干別的事。
二是中斷法(故事中的方法二)。外圍模塊處理好任務(wù)以后,主動給CPU發(fā)送中斷請求(填好表格交給班長)。然后CPU中斷當前任務(wù),轉(zhuǎn)而處理中斷請求,對該模塊的執(zhí)行結(jié)果進行處理(檢查表格填寫正確,并收集表格)。處理中斷請求之前,需要保護現(xiàn)場(放書簽),處理完中斷請求,再恢復(fù)現(xiàn)場,繼續(xù)之前任務(wù)(繼續(xù)看書)。
DMA
前面的故事其實還有方法三。班長由于最近事情太多,決定請副班長幫忙收集表格,讓同學(xué)們自己把表格交給副班長。副班長把表格都收集完了,再由他交給老師。這種方法需要征得副班長的同意,不過效果很好。
同樣對于微機系統(tǒng)來說,也有第三種方法,這種方法就叫做DMA(DMA=Direct Memory Access,直接內(nèi)存訪問)。在CPU之外設(shè)置一個DMA控制器(副班長),根據(jù)CPU發(fā)送的指令,外圍設(shè)備處理完數(shù)據(jù),通過DMA直接將數(shù)據(jù)保存到內(nèi)存中的指定位置,然后才用中斷通知CPU處理。
在比較復(fù)雜的系統(tǒng)中,DMA能大大提高執(zhí)行效率。51等單片機本身沒有DMA功能,可以在外部添加DMA控制器芯片實現(xiàn)(例如Intel 8237)。不過性能相對較低的單片機不能實現(xiàn)復(fù)雜系統(tǒng),所以使用DMA的意義不大。
定時器/計數(shù)器
這里的定時器和我們生活中的定時器相似,主要區(qū)別是這個定時器往往定時時間很短;定時器定時時間到,不會響鈴,而是通過中斷的形式通知CPU。計數(shù)器則是計數(shù)高低電平脈沖數(shù)量的,而定時器通常正是由計數(shù)器實現(xiàn)的。這兩個模塊放在一起講解,正是因為他們通常就是設(shè)計在一塊的,后面再做詳細介紹。
計算機/單板機/單片機
核心模塊基本介紹完了。對于一個微機系統(tǒng),CPU、存儲器(主要指RAM和ROM)是必不可少的,實際上還會有很多其他設(shè)備。對于計算機而言,這些模塊一般都是獨立的,通過主板連接在一起。早期人們把CPU、RAM、ROM等器件集成到一塊電路板上,被稱為單板機。后來集成電路技術(shù)不斷發(fā)展,CPU、RAM、ROM、中斷等模塊集成到一個芯片中,就成了單片機。
=======================================================
評論