基于單片機(jī)雙CPU構(gòu)成的復(fù)雜系統(tǒng)應(yīng)用研究
介紹了單片機(jī)雙CPU構(gòu)成復(fù)雜系統(tǒng)的電路以及該系統(tǒng)的幾種應(yīng)用實(shí)例。
關(guān)鍵詞:單片機(jī),雙CPU,總線,數(shù)據(jù)存儲(chǔ)器
單片機(jī)以其功能強(qiáng)、體積小、可靠性高及價(jià)格低廉等優(yōu)勢,被廣泛應(yīng)用在各種智能化儀器、儀表以及各種小型控制系統(tǒng)中。但其本身結(jié)構(gòu)較為簡單,自身資源少,在一些較為復(fù)雜的應(yīng)用系統(tǒng)中就顯出其硬件資源不足,速度太慢等缺點(diǎn)。在這種情況下,往往采取雙CPU或多CPU的設(shè)計(jì)方案,以彌補(bǔ)其不足。但是由于單片微機(jī)不像通用的微機(jī)系統(tǒng)具有其它總線主控設(shè)備向CPU請求總線使用申請信號(hào)輸入端,以及CPU對系統(tǒng)中其他總線主控設(shè)備請求使用權(quán)的應(yīng)答信號(hào)輸出端,這就給雙CPU系統(tǒng)的設(shè)計(jì)帶來一定的困難。本文提出一種雙CPU共享外部數(shù)據(jù)存儲(chǔ)器的設(shè)計(jì)方案,并介紹了該系統(tǒng)的幾種應(yīng)用實(shí)例。
1 系統(tǒng)的硬件設(shè)計(jì)
ATMEL公司的89系列是目前廣泛應(yīng)用的單片微機(jī),圖1所示的是用兩片89C52和一片6264構(gòu)成的雙CPU共享一個(gè)外部存儲(chǔ)器系統(tǒng)。其中89C52(1)為主CPU,89C52(2)為從CPU,兩個(gè)CPU分別用P1.0來執(zhí)行對6264地址線、數(shù)據(jù)線的控制權(quán),6264既可作為兩個(gè)CPU共享的數(shù)據(jù)存儲(chǔ)器,也可作為兩個(gè)CPU共享的程序存儲(chǔ)器。雙CPU之間的通信分別通過各自的和P1.1實(shí)現(xiàn)。當(dāng)從CPU需獲得6264的訪問權(quán)時(shí),可以通過P1.1口線向主CPU提出中斷申請,主CPU同意從CPU享有對6264的控制權(quán)時(shí),則首先使P1.0為“1”,讓出總線使用權(quán),隨后通過P1.1向從CPU送出應(yīng)答信號(hào)。從CPU得到主CPU的應(yīng)答信號(hào)后,便將P1.0變?yōu)?ldquo;0”,從而獲得了總線控制權(quán)。當(dāng)從CPU操作完畢,便通過P1.1通知主CPU恢復(fù)總線控制權(quán)。當(dāng)從CPU正處于對總線的使用狀態(tài)中,而主CPU需立即恢復(fù)控制權(quán)時(shí),也可通過主CPU的P1.1向從CPU發(fā)出中斷申請,從而恢復(fù)總線的使用權(quán)。
2 應(yīng)用之一(主、從處理器工作模式)
當(dāng)某些單片機(jī)系統(tǒng)需處理的問題較多時(shí),例如,需快速進(jìn)行數(shù)據(jù)采集與分析,鍵盤掃描,顯示與打印,執(zhí)行機(jī)構(gòu)的驅(qū)動(dòng)信號(hào)輸出等,這些操作都必須依據(jù)數(shù)據(jù)的最終處理結(jié)果,使用一個(gè)CPU來同時(shí)完成,時(shí)序上安排較困難,對故障分析和系統(tǒng)升級(jí)都會(huì)帶來麻煩。如采用圖1所示的雙CPU系統(tǒng)就能較為輕松地完成這些任務(wù)。主CPU負(fù)責(zé)數(shù)據(jù)處理、執(zhí)行機(jī)構(gòu)驅(qū)動(dòng)信號(hào)的輸出、顯示、打印等工作,而從CPU負(fù)責(zé)數(shù)據(jù)采集、鍵盤掃描等。從CPU將采樣的數(shù)據(jù)或鍵盤的鍵值送入共享的數(shù)據(jù)存儲(chǔ)器后便通知主CPU負(fù)責(zé)處理。主CPU則從數(shù)據(jù)存貯器中讀取采集的數(shù)據(jù)或鍵碼后進(jìn)行必要的處理,再進(jìn)行顯示、打印,并根據(jù)需要驅(qū)動(dòng)相應(yīng)的執(zhí)行機(jī)構(gòu)。設(shè)計(jì)人員可以將主、從CPU的程序分別設(shè)計(jì)調(diào)試,只要按照預(yù)先約定的控制規(guī)則,主、從CPU的程序可以由不同的設(shè)計(jì)人員同時(shí)完成。這就節(jié)省了大量的研發(fā)時(shí)間,加快了研制進(jìn)度。
3 應(yīng)用之二(系統(tǒng)軟件加密)
89C52單片機(jī)其內(nèi)部駐留有8KB程序存儲(chǔ)器,自帶軟件加密字,以防軟件被竊。但就目前技術(shù)而言,通過專用破解工具進(jìn)行程序解密是輕而易舉的事。一旦源程序被解密,極易被分析后進(jìn)行非法修改或升級(jí),這樣整個(gè)系統(tǒng)就被竊取了。而采用雙CPU構(gòu)成的復(fù)雜系統(tǒng),就可以通過軟件加密的方法使非法竊取者不易獲得兩個(gè)CPU運(yùn)行的源程序,具體方法如下:
我們可以將兩個(gè)CPU運(yùn)行程序中的關(guān)鍵程序段不放在各自89C52的內(nèi)部程序存儲(chǔ)器中,而是將這些關(guān)鍵的程序段通過匯編成機(jī)器碼后,分別讓另一個(gè)CPU以數(shù)據(jù)的形式寫入外部數(shù)據(jù)存儲(chǔ)器。如主CPU的一部分程序段匯編成機(jī)器碼后,由從CPU以數(shù)據(jù)的形式寫入圖1中所示的6264中,數(shù)據(jù)寫入后,從CPU通過P1.1向主CPU發(fā)出中斷請求,主CPU響應(yīng)中斷,轉(zhuǎn)向外部6264中取指令,而這些指令正是剛才從CPU以數(shù)據(jù)形式寫入的程序段,這些程序段可以是系統(tǒng)程序的一些關(guān)鍵部分,如標(biāo)志位、重要數(shù)據(jù)等,一旦主CPU執(zhí)行完這些程序后,又返回至內(nèi)部程序執(zhí)行,同時(shí)通知從CPU程序執(zhí)行完畢。從CPU隨后用其他數(shù)據(jù)覆蓋6264中剛才寫入的程序部分。系統(tǒng)設(shè)計(jì)者也可以用時(shí)間估算的辦法來覆蓋程序,如寫入6264的程序估計(jì)需執(zhí)行500μs,此時(shí)從CPU可啟動(dòng)定時(shí)器,于1ms后將剛才寫入的數(shù)據(jù)覆蓋,使用這種方法可避免通過單步仿真操作來獲得這些程序。用同樣的方法也可對從CPU進(jìn)行程序加密處理。
采用這種方法來進(jìn)行軟件加密的特點(diǎn)是:一般情況下軟件竊取者很難獲得全部源程序,因此,不能對系統(tǒng)的軟件進(jìn)行修改、升級(jí)或仿制,從而能有效地保護(hù)設(shè)計(jì)者的權(quán)利。
以下程序是主、從CPU進(jìn)行程序加密的一個(gè)例子。首先,從CPU將主CPU執(zhí)行的程序以數(shù)據(jù)格式寫入6264。
4 結(jié)束語
單片機(jī)雙CPU構(gòu)成復(fù)雜系統(tǒng)提高了整個(gè)系統(tǒng)的性能,用這種方法還可以構(gòu)成兩個(gè)以上CPU的復(fù)雜系統(tǒng),從而完成更復(fù)雜的控制。用這種方法構(gòu)成的系統(tǒng)實(shí)際上是一個(gè)多CPU共享資源的問題,也是對總線使用權(quán)合理分配的問題。圖1所示介紹的是雙CPU共享SRAM,可以設(shè)想,只要是通過總線擴(kuò)展的外設(shè),只需CPU間通過約定的通信和使用協(xié)議,同樣可以實(shí)現(xiàn)共享。
評論