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