單片機學習方法
一、總線:我們知道,一個電路總是由元器件通過電線連接而成的,在模擬電路中,連線并不成為一個問題,因為各器件間一般是串行關(guān)系,各器件之間的連線并不很多,但計算機電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協(xié)調(diào),所以需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨連線,則線的數(shù)量將多得驚人,所以在微處理機中引入了總線的概念,各個器件共同享用連線,所有器件的8根數(shù)據(jù)線全部接到8根公用的線上,即相當于各個器件并聯(lián)起來,但僅這樣還不行,如果有兩個器件同時送出數(shù)據(jù),一個為0,一個為1,那么,接收方接收到的究竟是什么呢?這種情況是不允許的,所以要通過控制線進行控制,使器件分時工作,任何時候只能有一個器件發(fā)送數(shù)據(jù)(可以有多個器件同時接收)。器件的數(shù)據(jù)線也就被稱為數(shù)據(jù)總線,器件所有的控制線被稱為控制總線。在單片機內(nèi)部或者外部存儲器及其它器件中有存儲單元,這些存儲單元要被分配地址,才能使用,分配地址當然也是以電信號的形式給出的,由于存儲單元比較多,所以,用于地址分配的線也較多,這些線被稱為地址總線。二、數(shù)據(jù)、地址、指令:之所以將這三者放在一起,是因為這三者的本質(zhì)都是一樣的——數(shù)字,或者說都是一串‘0’和‘1’組成的序列。換言之,地址、指令也都是數(shù)據(jù)。指令:由單片機芯片的設計者規(guī)定的一種數(shù)字,它與我們常用的指令助記符有著嚴格的一一對應關(guān)系,不可以由單片機的開發(fā)者更改。地址:是尋找單片機內(nèi)部、外部的存儲單元、輸入輸出口的依據(jù),內(nèi)部單元的地址值已由芯片設計者規(guī)定好,不可更改,外部的單元可以由單片機開發(fā)者自行決定,但有一些地址單元是一定要有的(詳見程序的執(zhí)行過程)。數(shù)據(jù):這是由微處理機處理的對象,在各種不同的應用電路中各不相同,一般而言,被處理的數(shù)據(jù)可能有這么幾種情況:
1?地址(如MOV DPTR,1000H),即地址1000H送入DPTR。
2?方式字或控制字(如MOV TMOD,#3),3即是控制字。
3?常數(shù)(如MOV TH0,#10H)10H即定時常數(shù)。
4?實際輸出值(如P1口接彩燈,要燈全亮,則執(zhí)行指令:MOV P1,#0FFH,要燈全暗,則執(zhí)行指令:MOV P1,#00H)這里0FFH和00H都是實際輸出值。又如用于LED的字形碼,也是實際輸出的值。
理解了地址、指令的本質(zhì),就不難理解程序運行過程中為什么會跑飛,會把數(shù)據(jù)當成指令來執(zhí)行了。
三、P0口、P2口和P3的第二功能用法:初學時往往對P0口、P2口和P3口的第二功能用法迷惑不解,認為第二功能和原功能之間要有一個切換的過程,或者說要有一條指令,事實上,各端口的第二功能完全是自動的,不需要用指令來轉(zhuǎn)換。如P3.6、P3.7分別是WR、RD信號,當微片理機外接RAM或有外部I/O口時,它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機一執(zhí)行到MOVX指令,就會有相應的信號從P3.6或P3.7送出,不需要事先用指令說明。事實上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當單片機執(zhí)行到這條指令時,也會使P3.7變?yōu)楦唠娖,但使用者不會這么去做,因為這通常會導致系統(tǒng)的崩潰。
四、程序的執(zhí)行過程: 單片機在通電復位后8051內(nèi)的程序計數(shù)器(PC)中的值為‘0000’,所以程序總是從‘0000’單元開始執(zhí)行,也就是說:在系統(tǒng)的ROM中一定要存在‘0000’這個單元,并且在‘0000’單元中存放的一定是一條指令。
五、堆棧: 堆棧是一個區(qū)域,是用來存放數(shù)據(jù)的,這個區(qū)域本身沒有任何特殊之處,就是內(nèi)部RAM的一部份,特殊的是它存放和取用數(shù)據(jù)的方式,即所謂的‘先進后出,后進先出’,并且堆棧有特殊的數(shù)據(jù)傳輸指令,即‘PUSH’和‘POP’,有一個特殊的專為其服務的單元,即堆棧指針SP,每當執(zhí)一次PUSH指令時,SP就(在原來值的基礎上)自動加1,每當執(zhí)行一次POP指令,SP就(在原來值的基礎上)自動減1。由于SP中的值可以用指令加以改變,所以只要在程序開始階段更改了SP的值,就可以把堆棧設置在規(guī)定的內(nèi)存單元中,如在程序開始時,用一條MOV SP,#5FH指令,就時把堆棧設置在從內(nèi)存單元60H開始的單元中。一般程序的開頭總有這么一條設置堆棧指針的指令,因為開機時,SP的初始值為07H,這樣就使堆棧從08H單元開始往后,而08H到1FH這個區(qū)域正是8031的第二、三、四工作寄存器區(qū),經(jīng)常要被使用,這會造成數(shù)據(jù)的混亂。不同作者編寫程序時,初始化堆棧指令也不完全相同,這是作者的習慣問題。當設置好堆棧區(qū)后,并不意味著該區(qū)域成為一種專用內(nèi)存,它還是可以象普通內(nèi)存區(qū)域一樣使用,只是一般情況下編程者不會把它當成普通內(nèi)存用了。
六、單片機的開發(fā)過程: 這里所說的開發(fā)過程并不是一般書中所說的從任務分析開始,我們假設已設計并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實上這些常數(shù)、地址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好后,其地址也就被確定了,當器件的功能被確定下來后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯,直到?jīng)]有語法錯誤,除了極簡單的程序外,一般應用仿真機對軟件進行調(diào)試,直到程序運行正確為止。運行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴展名為HEX的目標文件,一般編程器能夠識別這種格式的文件,只要將此文件調(diào)入即可寫片。在此,為使大家對整個過程有個認識,舉一例說明:
單片機試驗板ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設堆棧
LOOP:
NOP
LJMP LOOP ;循環(huán)
END ;結(jié)束
單片機學習
目前,很多人對匯編語言并不認可。可以說,掌握用C語言單片機編程很重要,可以大大提高開發(fā)的效率。不過初學者可以不了解單片機的匯編語言,但一定要了解單片機具體性能和特點,不然在單片機領域是比較致命的。如果不考慮單片機硬件資源,在KEIL中用C胡亂編程,結(jié)果只能是出了問題無法解決!可以肯定的說,最好的C語言單片機工程師都是從匯編走出來的編程者因為單片機的C語言雖然是高級語言,但是它不同于臺式機個人電腦上的VC++什么的單片機的硬件資源不是非常強大,不同于我們用VC、VB等高級語言在臺式PC上寫程序畢竟臺式電腦的硬件非常強大,所以才可以不考慮硬件資源的問題。還有就是在單片機編程中C語言雖然編程方便,便于人們閱讀,但是在執(zhí)行效率上是要比匯編語言低10%到20%,所以用什么語言編寫程序是要看具體用在什么場合下?偟膩碚f做單片機編程要靈活使用匯編語言與C語言,讓單片機的強大功能以最高是效率展示給用戶。
以8051單片機為例講解單片機的引腳及相關(guān)功能;
《單片機引腳圖》
40個引腳按引腳功能大致可分為4個種類:電源、時鐘、控制和I/O引腳。
、 電源:
、 VCC - 芯片電源,接+5V;
⑵ VSS - 接地端;
注:用萬用表測試單片機引腳電壓一般為0v或者5v,這是標準的TTL電平。但有時候在單片機程序正在工作時候測試結(jié)果并不是這個值而是介于0v-5v之間,其實這是萬用表的響應速度沒這么快而已,在某一個瞬間單片機引腳電壓仍保持在0v或者5v。
⒉ 時鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。
、 控制線:控制線共有4根,
、 ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖
① ALE功能:用來鎖存P0口送出的低8位地址
、 PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。
⑵ PSEN:外ROM讀選通信號。
⑶ RST/VPD:復位/備用電源。
① RST(Reset)功能:復位信號輸入端。
② VPD功能:在Vcc掉電情況下,接備用電源。
、 EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。
、 EA功能:內(nèi)外ROM選擇端。
、 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。
、 I/O線
80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。
P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)
5. P3口第二功能
P30 RXD 串行輸入口
P31 TXD 串行輸出口
P32 INT0 外部中斷0(低電平有效)
P33 INT1 外部中斷1(低電平有效)
P34 T0 定時計數(shù)器0
P35 T1 定時計數(shù)器1
P36 WR 外部數(shù)據(jù)存儲器寫選通(低電平有效)
P37 RD 外部數(shù)據(jù)存儲器讀選通(低電平有效)
常用單片機芯片簡介
STC單片機
STC公司的單片機主要是基于8051內(nèi)核,是新一代增強型單片機,指令代碼完全兼容傳統(tǒng)8051,速度快8~12倍,帶ADC,4路PWM,雙串口,有全球唯一ID號,加密性好,抗干擾強.
PIC單片機:
是MICROCHIP公司的產(chǎn)品,其突出的特點是體積小,功耗低,精簡指令集,抗干擾性好,可靠性高,有較強的模擬接口,代碼保密性好,大部分芯片有其兼容的FLASH程序存儲器的芯片.
EMC單片機:
是臺灣義隆公司的產(chǎn)品,有很大一部分與PIC 8位單片機兼容,且相兼容產(chǎn)品的資源相對比PIC的多,價格便宜,有很多系列可選,但抗干擾較差.
ATMEL單片機(51單片機):
ATMEl公司的8位單片機有AT89、AT90兩個系列,AT89系列是8位Flash單片機,與8051系列單片機相兼容,靜態(tài)時鐘模式;AT90系列單片機是增強RISC結(jié)構(gòu)、全靜態(tài)工作方式、內(nèi)載在線可編程Flash的單片機,也叫AVR單片機.
PHLIPIS 51plc系列單片機(51單片機):
PHILIPS公司的單片機是基于80C51內(nèi)核的單片機,嵌入了掉電檢測、模擬以及片內(nèi)RC振蕩器等功能,這使51LPC在高集成度、低成本、低功耗的應用設計中可以滿足多方面的性能要求.
HOLTEK單片機:
臺灣盛揚半導體的單片機,價格便宜,種類較多,但抗干擾較差,適用于消費類產(chǎn)品.
TI公司單片機(51單片機):
德州儀器提供了TMS370和MSP430兩大系列通用單片機.TMS370系列單片機是8位CMOS單片機,具有多種存儲模式、多種外圍接口模式,適用于復雜的實時控制場合;MSP430系列單片機是一種超低功耗、功能集成度較高的16位低功耗單片機,特別適用于要求功耗低的場合
松翰單片機(SONIX):
是臺灣松翰公司的單片,大多為8位機,有一部分與PIC 8位單片機兼容,價格便宜,系統(tǒng)時鐘分頻可選項較多,有PMW ADC 內(nèi)振 內(nèi)部雜訊濾波。缺點RAM空間過小,抗干擾較好。
從無線電世界到單片機世界
現(xiàn)代計算機技術(shù)的產(chǎn)業(yè)革命,將世界經(jīng)濟從資本經(jīng)濟帶入到知識經(jīng)濟時代。在電子世界領域,從20世紀中的無線電時代也進入到21世紀以計算機技術(shù)為中心的智能化現(xiàn)代電子系統(tǒng)時代。現(xiàn)代電子系統(tǒng)的基本核心是嵌入式計算機系統(tǒng)(簡稱嵌入式系統(tǒng)),而單片機是最典型、最廣泛、最普及的嵌入式系統(tǒng)。
一、 無線電世界造就了幾代英才
在20世紀五六十年代,最具代表的先進的電子技術(shù)就是無線電技術(shù),包括無線電廣播、收音、無線通信(電報)、業(yè)余無線電臺、無線電定位、導航等遙測、遙控、遙信技術(shù)。早期就是這些電子技術(shù)帶領著許多青少年步入了奇妙的電子世界,無線電技術(shù)展示了當時科技生活美妙的前景。電子科學開始形成了一門新興學科。無線電電子學、無線通信開始了電子世界的歷程。
無線電技術(shù)不僅成為了當時先進科學技術(shù)的代表,而且從普及到專業(yè)的科學領域,吸引了廣大青少年,并使他們從中找到了無窮的樂趣。從床頭的礦石收音機到超外差收音機;從無線電發(fā)報到業(yè)余無線電臺;從電話、電鈴到無線電操縱模型。無線電技術(shù)成為當時青少年科普、科技教育最普及、最廣泛的內(nèi)容。至今,許多老一輩的工程師、專家、教授當年都是無線電愛好者。無線電技術(shù)的無窮樂趣、無線電技術(shù)的全面訓練,從電子學基本原理、電子元器件基礎到無線電遙控、遙測、遙信電子系統(tǒng)制作,培養(yǎng)出了幾代科技英才。
二、 從無線電時代到電子技術(shù)普及時代
早期的無線電技術(shù)推動了電子技術(shù)的發(fā)展,其中最主要的是真空管電子技術(shù)向半導體電子技術(shù)的發(fā)展。半導體電子技術(shù)使有源器件實現(xiàn)了微小型化和低成本,使無線電技術(shù)有了更大普及和創(chuàng)新,并大大地開闊了許多非無線電的控制領域。
半導體技術(shù)發(fā)展導致集成電路器件的產(chǎn)生,形成了近代電子技術(shù)的飛躍,電子技術(shù)從分立器件時代走進了電路集成時代。電子設計工程師不再用分立的電子元器件設計電路單元,而直接選擇集成化的電路單元器件構(gòu)成系統(tǒng)。他們從電路單元設計中解放出來,致力于系統(tǒng)設計,大大地解放了科技生產(chǎn)力,促進了電子系統(tǒng)更大范圍的普及。
半導體集成電路首先在基本數(shù)字邏輯電路上取得突破。大量數(shù)字邏輯電路,如門電路、計數(shù)器、定時器、移位寄存器以及模擬開關(guān)、比較器等,為電子數(shù)字控制提供了極佳的條件,使傳統(tǒng)的機械控制轉(zhuǎn)向電子控制。功率電子器件以及傳感技術(shù)的發(fā)展使原先以無線電為中心的電子技術(shù)開始轉(zhuǎn)向工程領域中的機械系統(tǒng)的數(shù)字控制,檢測領域中的信息采集,運動機械對象的電氣伺服驅(qū)動控制。
半導體及其集成電路技術(shù)將我們帶入了一個電子技術(shù)普及時代,無線電技術(shù)成為電子技術(shù)應用領域的一個部分。
進入20世紀70年代,大規(guī)模集成電路出現(xiàn),促進了常規(guī)的電子電路單元的專用電子系統(tǒng)發(fā)展。許多專用電子系統(tǒng)單元變成了集成化器件,如收音機、電子鐘、計算器等,在這些領域的電子工程師從電路、系統(tǒng)的精心設計、調(diào)試轉(zhuǎn)變?yōu)槠骷x擇、外圍器件適配工作。電子技術(shù)發(fā)展了,電子產(chǎn)品豐富了,電子工程師的難度減少了,但與此同時,無線電技術(shù)、電子技術(shù)的魅力卻削弱了。半導體集成電路的發(fā)展使經(jīng)典電子系統(tǒng)日趨完善,留在大規(guī)模集成電路以外的電子技術(shù)日益減少,電子技術(shù)沒有了往昔無線電時代的無窮樂趣和全面的工程訓練。
三、 從經(jīng)典電子技術(shù)時代到現(xiàn)代電子技術(shù)時代
進入20世紀80年代,世紀經(jīng)濟中最重要的變革是計算機的產(chǎn)業(yè)革命。而計算機產(chǎn)業(yè)革命的最重要標志則是計算機嵌入式應用的誕生。近代電子計算機是應數(shù)值計算要求誕生的。在很長的時間內(nèi),電子計算機都是以發(fā)展海量數(shù)值計算為己任。但是電子計算機表現(xiàn)出的邏輯運算、處理、控制能力,吸引了電子控制領域的專家,他們要求發(fā)展能滿足控制對象要求,實現(xiàn)嵌入式應用的計算機系統(tǒng)。如果將滿足海量數(shù)據(jù)處理的計算機系統(tǒng)稱為通用計算機系統(tǒng),那么則可把嵌入到對象體系(如艦船、飛機、機車等)中的計算機系統(tǒng)稱作嵌入式計算機。顯而易見,兩者的技術(shù)發(fā)展方向是不同的。前者要求海量數(shù)據(jù)存儲、吞吐、高速數(shù)據(jù)處理分析及傳輸;而后者要求在對象環(huán)境中可靠運行,對外部物理參數(shù)的高速采集、邏輯分析處理和對外部對象的快速控制等。早期人們將通用計算機加上數(shù)據(jù)采集單元、輸出驅(qū)動電路勉為其難地構(gòu)成一個熱處理爐的溫控系統(tǒng)。這樣的通用計算機系統(tǒng)不可能為大多數(shù)電子系統(tǒng)采用,而且要使通用計算機系統(tǒng)滿足嵌入式應用要求,必然影響高速數(shù)值處理技術(shù)的發(fā)展。為了解決計算機技術(shù)發(fā)展的矛盾,在20世紀70年代,半導體專家另辟蹊徑,完全按照電子系統(tǒng)的計算機嵌入式應用要求,將一個微型計算機的基本系統(tǒng)集成在一個芯片上,形成了早期的單片機(Single Chip Microcomputer)。單片機問世后,在計算機領域中開始出現(xiàn)了通用計算機系統(tǒng)和嵌入式系統(tǒng)的兩大分支。此后,無論是嵌入式系統(tǒng),還是通用計算機系統(tǒng)都得到了飛速的發(fā)展。
早期雖然有通用計算機改裝而成的嵌入式計算機系統(tǒng),而真正意義上的嵌入式系統(tǒng)始于單片機的出現(xiàn)。因為單片機是專門為嵌入式應用設計的,單片機只能實現(xiàn)嵌入式應用。單片機能最好地滿足嵌入式應用的環(huán)境要求,例如,芯片級的物理空間、大規(guī)模集成電路的低價位、良好的外圍接口總線和突出控制功能的指令系統(tǒng)。
單片機有計算機系統(tǒng)內(nèi)核,嵌入到電子系統(tǒng)中,為電子系統(tǒng)智能化奠定了基礎。因此,當前單片機在電子系統(tǒng)中的廣泛使用,使經(jīng)典電子系統(tǒng)迅速過渡到智能化的現(xiàn)代電子系統(tǒng)。
四、 單片機開創(chuàng)了現(xiàn)代電子系統(tǒng)時代
1單片機與嵌入式系統(tǒng)
嵌入式系統(tǒng)源于計算機的嵌入式應用,早期嵌入式系統(tǒng)為通用計算機經(jīng)改裝后嵌入到對象體系中的各種電子系統(tǒng),如艦船的自動駕駛儀,輪機監(jiān)測系統(tǒng)等。嵌入式系統(tǒng)首先是一個計算機系統(tǒng),其次它被嵌入到對象體系中、在對象體系中實現(xiàn)對象要求的數(shù)據(jù)采集、處理、狀態(tài)顯示、輸出控制等功能,由于嵌入在對象體系中,嵌入式系統(tǒng)的計算機沒有計算機的獨立形式及功能。單片機完全是按照嵌入式系統(tǒng)要求設計的,因此單片機是最典型的嵌入式系統(tǒng)。早期的單片機只是按嵌入式應用技術(shù)要求設計的計算機單芯片集成,故名單片機。隨后,單片機為滿足嵌入式應用要求不斷增強其控制功能與外圍接口功能,尤其是突出控制功能,因此國際上已將單片機正名為微控制器(MCU,Microcontroller Unit)。
2單片機構(gòu)成的現(xiàn)代電子系統(tǒng)將成為主流電子系統(tǒng)
單片機是器件級計算機系統(tǒng),它可以嵌入到任何對象體系中去,實現(xiàn)智能化控制。小到微型機械,如手表、助聽器。集成器件級的低價位,低到幾元、十幾元,足以使單片機普及到許多民用家電、電子玩具中去。單片機構(gòu)成的現(xiàn)代電子系統(tǒng)已深入到各家各戶,正改變我們的生活,如家庭中的音響、電視機、洗衣機、微波爐、電話、防盜系統(tǒng)、空調(diào)機等。單片機革新了原有電子系統(tǒng),如微波爐采用單片機控制后,可方便地進行時鐘設置、程序記憶、功率控制;空調(diào)機采用單片機后不但遙控參數(shù)設置方便,運行狀態(tài)自動變換,還可實現(xiàn)變頻控制。目前許多家用電器如VCD、DVD只有單片機出現(xiàn)后才可能實現(xiàn)其功能。
3嵌入式系統(tǒng)帶動了整個電子產(chǎn)業(yè)
目前電子元器件產(chǎn)業(yè)除了微處理器、嵌入式系統(tǒng)器件外,大多是圍繞現(xiàn)代電子系統(tǒng)配套的元器件產(chǎn)業(yè),例如滿足人機交互用的按鍵,LED/LCD顯示驅(qū)動、LED/LCD顯示單元、語音集成器件等,滿足數(shù)據(jù)采集通道要求的數(shù)字傳感器、ADC、數(shù)據(jù)采集模塊、信號調(diào)理模塊等,滿足伺服驅(qū)動控制的DAC、固體繼電器、步進電機控制器、變頻控制單元等,滿足通信要求的各種總線驅(qū)動器、電平轉(zhuǎn)換器等。
世界電子元器件在嵌入式系統(tǒng)帶動下,沿著充分滿足嵌入式應用的現(xiàn)代電子系統(tǒng)要求發(fā)展。這就使原來經(jīng)典電子系統(tǒng)的天地愈來愈小。電子系統(tǒng)中的各類從業(yè)人員應盡早轉(zhuǎn)向現(xiàn)代電子系統(tǒng)的康莊大道。
五、 單片機將造就新一代電子精英
如果說五十年代起,無線電世界造就了幾代精英,那么當今的單片機世界將會造就出新一代電子精英。
1單片機帶你進入智能化電子領域
若將經(jīng)典電子系統(tǒng)當作一個僵死的電子系統(tǒng),那么智能化的現(xiàn)代電子系統(tǒng)則是一個具有“生命”的電子系統(tǒng)。單片機應用系統(tǒng)的硬件結(jié)構(gòu)給予電子系統(tǒng)“身軀”,單片機應用系統(tǒng)的應用程序賦予其“生命”。例如,在設計智能化儀器顯示器的顯示功能時,可在開機時顯示系統(tǒng)自檢結(jié)果,未進入工作時顯示各種待機狀態(tài),儀器運行時顯示運行過程,工作結(jié)束后可顯示當前結(jié)果、自檢結(jié)果、原始數(shù)據(jù)、各種處理報表等。在無人值守時,可給定各種自動運行功能。
電子系統(tǒng)的智能化為無止境境界,常常不需硬件資源的增添就能實現(xiàn)各種翻新功能。這也是當前許多家用電器功能大量增設的因素之一。
2單片機帶你進入計算機工控領域
21世紀是全人類進入計算機時代的世紀,許多人不是在制造計算機便是在使用計算機。在使用計算機的人們中,只有從事嵌入式系統(tǒng)應用的人才真正地進入到計算機系統(tǒng)的內(nèi)部軟、硬件體系中,才能真正領會計算機的智能化本質(zhì)并掌握智能化設計的知識。從學習單片機應用技術(shù)入手是當今培養(yǎng)計算機應用軟、硬件技術(shù)人才的最佳道路之一。
3單片機帶你進入最具魅力的電子世界
獨具魅力的單片機能使你體會到電腦的真諦,你可以用單片機親自動手設計智能玩具,可以設計不同的應用程序?qū)崿F(xiàn)不同的功能。既有硬件制作又有軟件設計,既動腦、又動手。初級水平可開發(fā)智能玩具,用宏指令編程。中級水平可開發(fā)一些智能控制器,如電腦鼠、智能車、各種遙控模型。高級水平可開發(fā)機器人,如機器人足球賽,開發(fā)工業(yè)控制單元,網(wǎng)絡通信等,并用匯編語言或高級語言設計應用程序。圍繞單片機及嵌入式系統(tǒng)形成的電子產(chǎn)業(yè)的未來,將會為電子愛好者提供廣闊的天地,一個比當年無線電世界更廣闊、更豐富、更持久、更具魅力的電子世界。投身到單片機世界來,將使你一生受益。
單片機攻擊技術(shù)
目前,攻擊單片機主要有四種技術(shù),分別是:
(1)軟件攻擊
該技術(shù)通常使用處理器通信接口并利用協(xié)議、加密算法或這些算法中的安全漏洞來進行攻擊。軟件攻擊取得成功的一個典型事例是對早期ATMEL AT89C 系列單片機的攻擊。攻擊者利用了該系列單片機擦除操作時序設計上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲器數(shù)據(jù)的操作,從而使加過密的單片機變成沒加密的單片機,然后利用編程器讀出片內(nèi)程序。
。ǎ玻 電子探測攻擊
該技術(shù)通常以高時間分辨率來監(jiān)控處理器在正常操作時所有電源和接口連接的模擬特性,并通過監(jiān)控它的電磁輻射特性來實施攻擊。因為單片機是一個活動的電子器件,當它執(zhí)行不同的指令時,對應的電源功率消耗也相應變化。這樣通過使用特殊的電子測量儀器和數(shù)學統(tǒng)計方法分析和檢測這些變化,即可獲取單片機中的特定關(guān)鍵信息。
。ǎ常┻^錯產(chǎn)生技術(shù)
該技術(shù)使用異常工作條件來使處理器出錯,然后提供額外的訪問來進行攻擊。使用最廣泛的過錯產(chǎn)生攻擊手段包括電壓沖擊和時鐘沖擊。低電壓和高電壓攻擊可用來禁止保護電路工作或強制處理器執(zhí)行錯誤操作。時鐘瞬態(tài)跳變也許會復位保護電路而不會破壞受保護信息。電源和時鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。
(4)探針技術(shù)
該技術(shù)是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機以達到攻擊目的。為了方便起見,人們將以上四種攻擊技術(shù)分成兩類,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,然后借助半導體測試設備、顯微鏡和微定位器,在專門的實驗室花上幾小時甚至幾周時間才能完成。所有的微探針技術(shù)都屬于侵入型攻擊。另外三種方法屬于非侵入型攻擊,被攻擊的單片機不會被物理損壞。在某些場合非侵入型攻擊是特別危險的,這是因為非侵入型攻擊所需設備通常可以自制和升級,因此非常廉價。
大部分非侵入型攻擊需要攻擊者具備良好的處理器知識和軟件知識。與之相反,侵入型的探針攻擊則不需要太多的初始知識,而且通常可用一整套相似的技術(shù)對付寬范圍的產(chǎn)品。
單片機侵入型攻擊的一般過程
侵入型攻擊的第一步是揭去芯片封裝。有兩種方法可以達到這一目的:第一種是完全溶解掉芯片封裝,暴露金屬連線。第二種是只移掉硅核上面的塑料封裝。第一種方法需要將芯片綁定到測試夾具上,借助綁定臺來操作。第二種方法除了需要具備攻擊者一定的知識和必要的技能外,還需要個人的智慧和耐心,但操作起來相對比較方便。
芯片上面的塑料可以用小刀揭開,芯片周圍的環(huán)氧樹脂可以用濃硝酸腐蝕掉。熱的濃硝酸會溶解掉芯片封裝而不會影響芯片及連線。該過程一般在非常干燥的條件下進行,因為水的存在可能會侵蝕已暴露的鋁線連接。
接著在超聲池里先用丙酮清洗該芯片以除去殘余硝酸,然后用清水清洗以除去鹽分并干燥。沒有超聲池,一般就跳過這一步。這種情況下,芯片表面會有點臟,但是不太影響紫外光對芯片的操作效果。最后一步是尋找保護熔絲的位置并將保護熔絲暴露在紫外光下。一般用一臺放大倍數(shù)至少100倍的顯微鏡,從編程電壓輸入腳的連線跟蹤進去,來尋找保護熔絲。若沒有顯微鏡,則采用將芯片的不同部分暴露到紫外光下并觀察結(jié)果的方式進行簡單的搜索。操作時應用不透明的紙片覆蓋芯片以保護程序存儲器不被紫外光擦除。將保護熔絲暴露在紫外光下5~10分鐘就能破壞掉保護位的保護作用,之后,使用簡單的編程器就可直接讀出程序存儲器的內(nèi)容。
對于使用了防護層來保護EEPROM單元的單片機來說,使用紫外光復位保護電路是不可行的。對于這種類型的單片機,一般使用微探針技術(shù)來讀取存儲器內(nèi)容。在芯片封裝打開后,將芯片置于顯微鏡下就能夠很容易的找到從存儲器連到電路其它部分的數(shù)據(jù)總線。
由于某種原因,芯片鎖定位在編程模式下并不鎖定對存儲器的訪問。利用這一缺陷將探針放在數(shù)據(jù)線的上面就能讀到所有想要的數(shù)據(jù)。在編程模式下,重啟讀過程并連接探針到另外的數(shù)據(jù)線上就可以讀出程序和數(shù)據(jù)存儲器中的所有信息。
還有一種可能的攻擊手段是借助顯微鏡和激光切割機等設備來尋找保護熔絲,從而尋查和這部分電路相聯(lián)系的所有信號線。由于設計有缺陷,因此,只要切斷從保護熔絲到其它電路的某一根信號線,就能禁止整個保護功能。由于某種原因,這根線離其它的線非常遠,所以使用激光切割機完全可以切斷這根線而不影響臨近線。這樣,使用簡單的編程器就能直接讀出程序存儲器的內(nèi)容。
雖然大多數(shù)普通單片機都具有熔絲燒斷保護單片機內(nèi)代碼的功能,但由于通用低檔的單片機并非定位于制作安全類產(chǎn)品,因此,它們往往沒有提供有針對性的防范措施且安全級別較低。加上單片機應用場合廣泛,銷售量大,廠商間委托加工與技術(shù)轉(zhuǎn)讓頻繁,大量技術(shù)資料外瀉,使得利用該類芯片的設計漏洞和廠商的測試接口,并通過修改熔絲保護位等侵入型攻擊或非侵入型攻擊手段來讀取單片機的內(nèi)部程序變得比較容易。
編輯:admin 最后修改時間:2018-05-08