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