国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多微控制器系統(tǒng)任務調(diào)用方法

      文檔序號:6555718閱讀:175來源:國知局
      專利名稱:多微控制器系統(tǒng)任務調(diào)用方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種多MCU(Micro Control Unit)系統(tǒng)的任務調(diào)用的方法,可應用于MCS-51指令體系的多微控制器系統(tǒng),亦可應用于其它多微控制器、多微處理器等領(lǐng)域。
      背景技術(shù)
      在微控制器運行中,需要調(diào)用很多子程序和子任務。這些任務和主程序并不一定是按順序在程序存儲區(qū)中依次存放,而是通過中斷或者調(diào)用程序如ACALL,LCALL等命令來實現(xiàn)的。傳統(tǒng)的任務調(diào)用是通過純軟件的方法,當使用任務調(diào)用的時候需要保護現(xiàn)場,將現(xiàn)有程序指針等信息壓到堆棧中,當任務結(jié)束后再將壓棧的信息彈出,這種方法對于相對較簡單的系統(tǒng)沒有問題,但是對于數(shù)據(jù)運算量非常龐大的特定系統(tǒng),譬如數(shù)字圖像處理系統(tǒng),每幀圖像的信息量就非常巨大,如果此系統(tǒng)還包括知識庫的管理、自學習等功能,把實現(xiàn)這些功能的程序都集成在單個MCU中作為子程序調(diào)用,需要很大的存儲空間,并且全部由單個處理器來調(diào)用和完成將嚴重地影響到系統(tǒng)的工作速度。如果在不改變指令系統(tǒng)的前提下,采用多MCU系統(tǒng),把這些大量的任務和子程序分配給若干個從處理器來完成,將降低對主處理器存儲空間的要求,并且大大提高系統(tǒng)的并行處理能力和速度。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于提供一種基于多微控制器系統(tǒng)任務調(diào)用方法。在指令系統(tǒng)不變的前提下,將應用系統(tǒng)的各個獨立的任務調(diào)用程序分配到各個從處理器中,由多個微控制器來共同完成系統(tǒng)的任務調(diào)用工作,從而降低對主處理器存儲能力和處理強度的要求,以便將價格相對較低,應用廣泛的MCS-51架構(gòu)微控制器應用于需要大量復雜算法的高端系統(tǒng)中。
      為達到上述目的,本發(fā)明的構(gòu)思如下將幾個微處理器通過片上總線連接成一個多MCU系統(tǒng),其中一個微處理器作為主處理器直接面向終端用戶,而其它作為從處理器。將應用系統(tǒng)領(lǐng)域的各個任務調(diào)用程序集成在各個從處理器的程序存儲器中,并且將這些任務進行編號,將它們一一對應于幾組代碼,本發(fā)明中稱為超級指令碼。當用戶程序需要調(diào)用這些任務調(diào)用程序時,通過總線機制實現(xiàn)多MCU的通訊,由主處理器向相應的從處理器發(fā)送相應的超級指令碼,即可由從處理器自動完成該任務,實現(xiàn)任務的調(diào)用。而要想從處理器自動完成這些特定任務,就需要一種有效的尋址方式,可以根據(jù)發(fā)過來的超級指令碼找到任務調(diào)用程序的入口地址,而對各個任務調(diào)用程序的長度幾乎沒有限制。
      根據(jù)上述構(gòu)思,本發(fā)明采用下述技術(shù)方案一種微控制器系統(tǒng)超級指令任務調(diào)用方法,基于MCS-51體系,其特征在于在指令系統(tǒng)不變的前提下,將幾個基于MCS-51體系的MCU通過片上總線連接成一個多MCU系統(tǒng),其中一個MCU作為主處理器直接面向終端用戶,其它作為從處理器;將應用系統(tǒng)領(lǐng)域的各個任務程序集成在各個從處理器的程序存儲器中,并將這些任務編號為超級指令碼;對這些任務的調(diào)用是通過總線機制,由主處理器向相應的從處理器發(fā)送相應的超級指令碼,即由從處理器根據(jù)特定的尋址方法找到任務程序,自動完成該任務,實現(xiàn)任務調(diào)用。
      上述多MCU系統(tǒng)任務調(diào)用方法的具體步驟為a.在主處理器中添加主處理器總線接口模塊,實現(xiàn)主處理器與總線的連接;b.在從處理器中添加從處理器總線接口模塊,實現(xiàn)從處理器與總線的連接;c.對主處理器中的程序指針模塊進行改動,實現(xiàn)選定從處理器忙時主處理器的等待重試功能;(注MCU中的程序指針模塊主要負責程序存儲器的讀取控制,其程序指針寄存器PROGA用于存放當前程序地址);d.對從處理器的操作碼寄存器模塊進行改動,使得從處理器可以區(qū)分當前處于執(zhí)行普通指令期間還是從處理器自動尋址期間。操作碼寄存器模塊在執(zhí)行普通指令期間的原始功能是將指令中的機器碼和立即數(shù)區(qū)分開來,分別送給譯碼模塊和ALU(算術(shù)邏輯單元)處理。此處當從處理器接收到超級指令碼時,并不按照普通指令碼處理,也即并不將得到的入口地址送去譯碼,而是代之以空操作,讓該從處理器繼續(xù)保持在等待狀態(tài)。
      e.對從處理器中的程序指針模塊進行改動,實現(xiàn)從處理器根據(jù)超級指令碼由硬件自動尋址的功能。
      上述的在主處理器中添加主處理器總線接口模塊,實現(xiàn)主處理器與總線連接的具體步驟如下a.上述設(shè)定多MCU系統(tǒng)控制特殊功能寄存器MPCON的方法為(a)確定多MCU系統(tǒng)控制特殊功能寄存器MPCON的地址為OCAH,通過讀寫多MCU系統(tǒng)控制特殊功能寄存器MPCON來實現(xiàn)對從處理器的選擇與控制;MPCON地址CAH

      (b)多MCU系統(tǒng)控制特殊功能寄存器MPCON在系統(tǒng)復位時為00H,用戶通過指令MOV MPCON,#8xH(x=1~n,n為從處理器的個數(shù))控制該特殊功能寄存器MPCON,其最高位被置1表示當前進行多MCU系統(tǒng)主從處理器通信;同時該特殊功能寄存器低三位用于存放從處理器的地址標號,當主處理器要進行一次超級指令任務調(diào)用的時候,首先向從處理器發(fā)送地址標號選擇需要執(zhí)行當前任務的從處理器;b.在主處理器中設(shè)置超級指令碼特殊功能寄存器SCOM(a)確定多MCU系統(tǒng)超級指令碼特殊功能寄存器SCOM的地址為OCBH,所有超級指令碼通過讀寫特殊功能寄存器SCOM來實現(xiàn);SCOM地址CBH

      (b)多MCU系統(tǒng)超級指令碼特殊功能寄存器SCOM在系統(tǒng)復位后為00H,用戶通過MOV SCOM,#**H指令控制該特殊功能寄存器SCOM,當主處理器發(fā)送完地址標號后,如果選中的從處理器空閑可以接受任務,則主處理器通過寫特殊功能寄存器SCOM,將超級指令碼發(fā)送給從處理器;c.在主處理器中設(shè)置從處理器反饋接收寄存器SREADY從處理器反饋接收寄存器SREADY用戶不可見,其位數(shù)等于從處理器的個數(shù),其每一位分別連接到各從處理器的空閑標志位RHx上;主處理器通過查詢主處理器反饋接受寄存器SREADY[x]的狀態(tài)獲知相應從處理器的當前狀態(tài);
      SREADY[(n-1):0]

      d.設(shè)定重試撤銷信號DONTSTAY,從處理器的反饋狀態(tài)及主處理器自身狀態(tài)共同決定DONTSTAY的狀態(tài),該信號是在發(fā)生過若干次重試后不再需要重試時置1有效,表示主處理器此時脫離“重試”狀態(tài),不需要再重新輸出地址標號;e.在設(shè)置超級指令碼特殊功能寄存器SCOM后,當用戶程序為MOV SCOM,#**H時,將微處理器內(nèi)部數(shù)據(jù)線上的數(shù)據(jù)賦予S_COM,其它時刻寄存器S_COM為0;g.設(shè)定MCU通信標志信號MPSOC_STROBE,該信號根據(jù)多MCU系統(tǒng)控制特殊功能寄存器MPCON的最高位MPCON[7]的狀態(tài)變化;如果MPCON[7]發(fā)生由0變?yōu)?的跳變,則表示發(fā)生主從通信,MPSOC_STROBE為1,并且只維持一個時鐘周期。其它情況下MPSOC_STROBE為0。
      上述的在從處理器中添加從處理器的總線接口模塊,實現(xiàn)從處理器與總線連接的具體步驟如下a.在從處理器總線接口模塊中設(shè)定從處理器空閑標志READY(a)確定從處理器空閑標志特殊功能寄存器READY的地址位OCCH,從處理器任務完成狀態(tài)由該寄存器標志;READY地址CCH

      (b)從處理器空閑標志特殊功能寄存器READY在系統(tǒng)復位時為80H,該特殊功能寄存器READY的最高位命名為RHx(x=1~n,n為從處理器的個數(shù)),RHx=1表示相應從處理器當前空閑,等待任務;RHx=0表示相應從處理器當前仍在執(zhí)行上一任務,不接受新任務;RHx由硬件清零,軟件置位;用戶通過MOV READY,#80H的指令將寄存器READY的最高位RHx置1;READY的其它位暫為保留位,默認為0,它可以用于將來的系統(tǒng)擴充,從處理器可以向主處理器反饋更多信息;RHx連接到主處理器的SREADY的各個位,形成從處理器對主處理器的反饋信息;b.設(shè)定數(shù)據(jù)輸入門控信號S_COM_ENTRY及從處理器超級指令碼寄存器S_COM_NUM;當數(shù)據(jù)輸入門控信號S_COM_ENTRY為1有效,允許主從通信的數(shù)據(jù)總線上的超級指令碼進入該從處理器,即把主處理器的輸出S_COM讀入從處理器內(nèi)部,并賦予從處理器內(nèi)的超級指令碼寄存器S_COM_NUM;S_COM_ENTRY在從處理器找到任務調(diào)用程序的入口地址后清零;c.設(shè)定內(nèi)部寄存器RH_tp,它比RH信號延遲2個時鐘周期,目的是將RH信號狀態(tài)延遲,以避免RH信號和其它判斷信號同時變化,產(chǎn)生競爭冒險;d.當同時滿足以下三個條件(1)地址標號與自身匹配;(2)RH_tp為1,即該從處理器空閑;(3)主處理器超級指令碼寫有效信號有效;此時S_COM_ENTRY信號打開允許超級指令碼進入,同時RHx信號被硬件清零;e.設(shè)定從處理器接收狀態(tài)信號RECEPTEDx(x=1~n,n為從處理器的個數(shù))信號,該信號將輸出到主處理器中,表征超級指令碼是否已被指定從處理器獲得;若已獲得超級指令碼,則相應的RECEPTEDx為1,否則為0;RECEPTED[(n-1):0] 每一個從處理器的接收狀態(tài)信號RECEPTEDx(x=1~n)分別輸出送到主處理器的接收狀態(tài)寄存器RECEPTED[(n-1):0]各位。
      上述對主處理器修改程序指針模塊,實現(xiàn)從處理器忙時等待的重試功能的具體步驟為a.設(shè)定內(nèi)部標志位NEEDSTAY,在檢測到選擇的從處理器正忙的時候置1,表示此次發(fā)送超級指令任務調(diào)用不成功,主處理器需要重試;b.設(shè)定重試撤銷標志信號DONTSTAY,作為輸出送到主處理器總線接口模塊,控制MPCON是否被賦值;c.當主從通信發(fā)生并且所選擇的從處理器正忙時,需要做三件事(a)設(shè)定的內(nèi)部寄存器PROGRAM_COUNT_LAST存放指針回退前的PROGRAM_COUNT(當前指針位置);(b)PROGRAM_COUNT被減6,使指針回到超級指令任務調(diào)用的起始處;(c)內(nèi)部寄存器NEEDSTAY被置1,表示主處理器需要做好重試的準備工作;d.當NEEDSTAY=1時,表示主處理器可能需要重試。在這種情況下繼續(xù)判斷是否需要重試
      (a)當由從處理器傳來的接收狀態(tài)寄存器RECEPTED[(n-1):0]中的相應位RECEPTED[x]=1,表示指定從處理器收到了超級指令碼,則 將剛才寄存的回退前的地址PROGRAM_COUNT_LAST重新賦予當前指針PROGRAM_COUNT; NEEDSTAY清零,說明超級指令已接收,無需重試; DONTSTAY置1,輸出到主處理器總線接口模塊,作為判斷條件,當DONTSTAY有效時,說明此次重試已成功,指定從處理器已經(jīng)收到剛才發(fā)出的超級指令,本次無需再給MPCON賦值,直接將MPCON賦為0;(b)當由從處理器傳來的接收狀態(tài)寄存器RECEPTED[(n-1):0]中的相應位RECEPTED[x]=0,則說明指定從處理器正忙,無法接收超級指令碼,則NEEDSTAY繼續(xù)保留3個時鐘脈沖后撤銷,回到狀態(tài)0,以便主處理器進入重試狀態(tài)重新開始發(fā)送超級指令。
      e.當NEEDSTAY=0時,說明無需進入重試狀態(tài),主處理器正常向下執(zhí)行其它指令。
      上述的實現(xiàn)從處理器區(qū)分當前處于執(zhí)行普通指令期間還是接收超級指令自動尋址期間的方法為對從處理器的操作碼寄存器模塊進行改動,在讀取程序存儲器的內(nèi)容后,判斷從處理器是否剛接到超級指令尚在尋找入口地址期間,即判斷條件RHx(x=1~n)=0(從處理器接到命令)且S_COM_ENTERY=1(從處理器尚在尋找入口地址)是否成立,如果成立,說明讀到的數(shù)據(jù)不是操作碼或立即數(shù),而是任務調(diào)用程序入口地址的一部分,處理器轉(zhuǎn)入特殊狀態(tài),即將操作碼用00H空操作填充;如果上述條件不成立,則正常執(zhí)行。
      上述的實現(xiàn)從處理器接收到執(zhí)行超級指令時由硬件自動尋址的具體步驟為a.設(shè)置從處理器的程序存儲器的特殊存放結(jié)構(gòu)(a)該從處理器負責的各個獨立的任務調(diào)用程序依次存放在其程序存儲器中,它們之間沒有必然聯(lián)系;(b)在每個從處理器的程序存儲區(qū)各開辟一個屏蔽區(qū),在編譯的時候就將各個任務調(diào)用程序的入口地址依次存放在該屏蔽區(qū)內(nèi),其存放序號編制為8位的超級指令碼。各從處理器可以根據(jù)超級指令碼自動找到任務調(diào)用程序的入口地址;b.改動從處理器的程序指針模塊,實現(xiàn)從處理器的任務調(diào)用自動尋址功能步驟如下(a)從處理器在空閑等待的狀態(tài)下程序指針停留在0,即程序存儲器起始處;(b)從處理器在剛剛接收到超級指令尚未找到入口地址期間(即RHx=0及S_COM_ENTRY=1時),做如下計算 ADDR_OFFSET(入口地址在屏蔽區(qū)中的位置偏移量)=S_COM_NUM(超級指令碼)×m(其中m為每個入口地址所占的字節(jié)數(shù),例如16M的地址空間需要24位的地址,則需要占用3個字節(jié),m=3) “ADDR_LOCATION(入口地址所在位置)=`ADDR_START(屏蔽區(qū)起始地址)+ADDR_OFFSET”;即得到任務調(diào)用程序的入口地址在屏蔽區(qū)中存放的位置地址。
      (c)將入口地址所在位置地址賦予程序指針寄存器,讓從處理器類似讀取一般程序一樣讀取m個字節(jié)的入口地址;(d)上述入口地址讀取方法雖然和讀取普通程序一樣,但是讀到的內(nèi)容并不如同普通操作碼或者立即數(shù)一樣送去解碼或者計算,因為它讀到的內(nèi)容并不是操作碼或者立即數(shù),而是任務調(diào)用的入口地址。因此,從處理器將讀到的入口地址重新賦予程序指針寄存器,從而轉(zhuǎn)向該入口地址開始如同普通MCU一樣執(zhí)行任務調(diào)用程序。
      c.在每個任務調(diào)用程序結(jié)尾用戶用指令將從處理器的狀態(tài)標志RHx置1,表示該從處理器又重新回到空閑狀態(tài)。程序指針重新回到0。
      上述的實現(xiàn)從處理器根據(jù)超級指令碼自動找到任務調(diào)用程序入口地址的具體實現(xiàn)方法為a.設(shè)定內(nèi)部地址寄存器ENTRY_ADDR,其位數(shù)和入口地址位數(shù)相同(例如16M的程序存儲器空間需要24位的地址,ENTRY_ADDR就為24位),用于暫存任務調(diào)用程序的入口地址。
      b.在從處理器的程序指針模塊中設(shè)定4位的內(nèi)部計數(shù)器MP_COUNTERx(x=1~n,n為從處理器個數(shù))。在MP_COUNTERx的不同時刻,從處理器的程序指針寄存器做相應變換,先根據(jù)“屏蔽區(qū)起始地址+超級指令碼×m”的計算得到任務調(diào)用程序的入口地址位置地址,再讀出真實入口地址并賦予內(nèi)部地址寄存器ENTRY_ADDR,最后將ENTRY_ADDR的內(nèi)容重新賦予程序指針。在程序指針被賦予真正的入口地址之后,MP_COUNTERx被重新清零,從處理器轉(zhuǎn)入正常模式執(zhí)行任務調(diào)用程序。
      本發(fā)明與現(xiàn)有技術(shù)相比較,具有如下突出實質(zhì)性的特點和顯著優(yōu)點基于8051單片機的多MCU架構(gòu),用多個MCU分別執(zhí)行多個任務,以數(shù)量的優(yōu)勢彌補MCU性能的不足,用低端微處理器執(zhí)行高端系統(tǒng)的工作。主處理器面向用戶,完全用微控制器的指令系統(tǒng)執(zhí)行應用系統(tǒng)的某個運算;而將某個應用領(lǐng)域常用的算法集成在從處理器中,由該領(lǐng)域的專業(yè)人士編寫專門的任務調(diào)用程序,用戶無需參與對專業(yè)要求極高的底層處理,即可方便地實現(xiàn)在本設(shè)計中被定義為超級指令的任務調(diào)用,而該任務調(diào)用對于用戶來說只是執(zhí)行兩條普通的指令。此種超級指令任務調(diào)用的方法適用于單芯片多處理器系統(tǒng)的各種應用中,對于那些可以分割出相對獨立的基本操作并且經(jīng)常重復調(diào)用程序的系統(tǒng),可大大減少主處理器的負擔,提高系統(tǒng)的并行處理能力,并且降低了用戶對某個系統(tǒng)應用領(lǐng)域中的底層算法的要求。


      圖1是本發(fā)明一個具體實例的多MCU系統(tǒng)結(jié)構(gòu)框圖。
      圖2是圖1示例的從處理器程序存儲區(qū)結(jié)構(gòu)示意圖。
      圖3是圖1示例的多MCU系統(tǒng)的總線接口模塊結(jié)構(gòu)框圖。
      圖4是超級指令任務調(diào)用從處理器工作流程圖。
      圖5是超級指令任務調(diào)用主處理器工作流程圖。
      圖6是順利執(zhí)行超級指令任務調(diào)用主處理器時序圖。
      圖7是重試執(zhí)行超級指令任務調(diào)用主處理器時序圖。
      圖8是超級指令任務調(diào)用從處理器時序圖。
      表1是部分超級指令碼映射表。
      表2是主從處理器地址標號表。
      具體實施例方式
      本發(fā)明的一個優(yōu)選實施例以一個基于多MCU(4周期MCS-51體系)架構(gòu)的目的機器視覺系統(tǒng)為例,按前述步驟實現(xiàn)多微控制器系統(tǒng)任務調(diào)用a.構(gòu)建一個基于MCS-51體系的主從結(jié)構(gòu)多MCU硬件系統(tǒng);b.在從處理器的程序存儲器中開辟屏蔽區(qū),除屏蔽區(qū)外的其它區(qū)域存放各個獨立的任務調(diào)用程序,屏蔽區(qū)專門存放任務調(diào)用程序的入口地址;為每個從處理器確定相應的超級指令碼映射表,對應于各從處理器中的任務調(diào)用程序;c.在主從處理器中建立主處理器總線接口模塊及相應的握手信號實現(xiàn)超級指令任務調(diào)用的主從通信;d.改動主從處理器的程序指針模塊,實現(xiàn)從處理器的自動尋址和執(zhí)行功能以及主處理器的重試功能。
      發(fā)送超級指令任務調(diào)用的結(jié)果分為以下兩種情況(a)順利調(diào)用選定的從處理器空閑,超級指令任務調(diào)用一切正常,從處理器自動尋址和執(zhí)行任務調(diào)用程序。主處理器發(fā)送超級指令后,繼續(xù)向下執(zhí)行其它指令。而各從處理器比對地址標號后,選中的從處理器讀入超級指令碼,并將自身狀態(tài)置為忙碌,根據(jù)“屏蔽區(qū)起始地址+超級指令碼×m”(本實例中16M程序空間,地址為24位,因此m=3)計算得到程序的入口地址所在位置,讀出任務調(diào)用程序入口地址并放入其程序指針寄存器,從而該從處理器自動轉(zhuǎn)向任務調(diào)用程序起始處執(zhí)行。執(zhí)行結(jié)束后,由任務調(diào)用程序最后一條指令將狀態(tài)標志為RHx置1;從處理器工作流程圖見附圖4。
      (b)重試調(diào)用當選中的從處理器此時繁忙,則不接受下一個任務。此時主處理器需要重新發(fā)送超級指令,直到選中的從處理器空閑,超級指令發(fā)送成功,主處理器轉(zhuǎn)入下面的程序;主處理器工作流程圖見附圖5。
      e.對從處理器的操作碼寄存器模塊進行改動,在從處理器尋址期間,并不將讀到的程序存儲器單元中的內(nèi)容作為操作碼譯碼,而是讓該從處理器執(zhí)行空操作。
      本實施例多MCU系統(tǒng)的超級指令任務調(diào)用方法構(gòu)建下述多MCU結(jié)構(gòu)(見附圖1) 四個基于MCS-51體系的MCU構(gòu)成多MCU系統(tǒng),一個主處理器和三個從處理器; 每個MCU各自具有16M程序存儲器和16M的數(shù)據(jù)存儲器,地址為24位; 每個16M數(shù)據(jù)存儲區(qū)內(nèi)有4M程序存儲區(qū)統(tǒng)一編址,作為共享存儲區(qū);本實施例采取下述從處理器程序存儲區(qū)結(jié)構(gòu)(見附圖2)a.在從000000H到0EFFFFFH的15M程序存儲空間內(nèi)存放機器視覺系統(tǒng)的獨立的任務調(diào)用程序,等待調(diào)用時執(zhí)行;b.從0F00000H開始的1M空間開辟為屏蔽區(qū),該區(qū)域不存放普通的程序,而按序存放前15M空間內(nèi)各個任務調(diào)用程序的入口地址;每段任務調(diào)用程序入口地址在屏蔽區(qū)中的位置對應于超級指令碼,即超級指令碼類似于一個轉(zhuǎn)跳表中的序號,表征相應程序的入口地址。當從處理器接收到超級指令碼時,只需根據(jù)“屏蔽區(qū)起始地址+超級指令碼×3(24位程序入口地址占用3個字節(jié))”獲得入口地址所在位置。例如附圖2中,任務2的任務調(diào)用程序是BMP-YIQ圖像顏色空間轉(zhuǎn)換程序,該程序存放在從處理器的程序存儲區(qū)從地址332211H開始的地方,它對應的超級指令碼為02H。則根據(jù)“0F00000H+02H×3=0F00006H”得到BMP-YIQ圖像顏色空間轉(zhuǎn)換程序在該從處理器中的程序入口地址分放在屏蔽區(qū)中0F00006H~0F00008H三個單元內(nèi)。
      c.為每個從處理器設(shè)定超級指令映射表。用戶在使用的時候無需了解從處理器那些任務調(diào)用程序或算法的底層設(shè)計,只要有一張任務調(diào)用程序和超級指令碼的映射表即可,附圖3為部分超級指令碼映射表(見附表1)。
      本實施例中設(shè)定主從處理器的總線接口模塊及涉及到的握手信號的步驟如下(見附圖3)a.在標準的MCS-51體系的MCU所保留的特殊功能寄存器(SFR)中定義兩個特殊功能寄存器,一個多處理器控制寄存器MPCON和一個超級指令碼寄存器SCOM(a)多處理器控制特殊功能寄存器MPCON的定義如下
      MPCON地址CAH

      MPCON.7主從通信的標志位。主處理器向從處理器發(fā)送超級指令時被置1有效。當它從0到1跳變時,其狀態(tài)通過主處理器總線接口模塊內(nèi)部寄存器MPSOC_STROBE反映到主處理器總線接口模塊的輸出,MPSOC_STROBE比MPCON.7延遲2個時鐘周期輸出,并且只保持一個時鐘周期。
      MULTI_ADDR主處理器向從處理器發(fā)出地址標號選擇特定的從處理器,MULTI_ADDR=001/010/011分別代表了從處理器1/2/3(見附表2)。MPCON默認為00H,當用戶程序中需要調(diào)用某一從處理器中的某一任務,則通過指令MOV MPCON,#8xH,將MPCON.7(進而將MPSOC_STROBE)置1,且同時將地址標號MULTI_ADDR發(fā)送到地址總線上。
      (b)超級指令碼特殊功能寄存器SCOM的定義如下SCOM地址CBH

      該特殊功能寄存器存放超級指令碼,用戶需要調(diào)用哪個任務調(diào)用程序,只需要結(jié)合從處理器地址標號,向相應的從處理器發(fā)送超級指令碼即可。也即,用戶通過指令MOV SCOM,#**H寫該超級指令碼特殊功能寄存器SCOM,即將超級指令碼放到數(shù)據(jù)總線上。
      b.主處理器向從處理器發(fā)送超級指令,也即主處理器向從處理器的輸出主要有(a)MULTI_ADDR[2:0]多MCU中各處理器的地址標號,可以擴充到八個處理器。本實例中連接了四個處理器;(b)S_COM[7:0]超級指令碼;(c)S_COM_WRITE主處理器的超級指令碼寫有效信號,輸出到從處理器內(nèi)作為讀控制信號之一;c.從處理器對主處理器的反饋主要有(a)SREADY[2:0]
      RECEPTED[2:0] 作為主處理器的輸入,由3個從處理器的輸出RH1,RH2,RH3組合連接而成。
      SREADY的每一位表征相應的從處理器是否處于空閑狀態(tài);(b)RECEPTED[2:0]SREADY[2:0] 作為主處理器的輸入,由3個從處理器的輸出RECEPTED1,RECEPTED2,RECEPTED3組合連接而成。RECEPTED的每一位表征相應的從處理器在被選中后是否由于正處于忙碌狀態(tài)沒有接收超級指令碼。
      本實施例中對于主處理器的程序指針模塊進行改動,在主處理器先后向從處理器1發(fā)送兩次超級指令任務調(diào)用,可分別實現(xiàn)順利調(diào)用和重試調(diào)用兩種調(diào)用情況,其實現(xiàn)步驟如下a.設(shè)定MCU通信標志信號輸入MPSOC_STROBE,該信號由主處理器總線接口模塊輸出。根據(jù)當主處理器總線接口模塊中控制特殊功能寄存器MPCON的最高位MPCON[7]發(fā)生由0變?yōu)?的跳變,則表示發(fā)生主從通信,MPSOC_STROBE在2個時鐘周期后為1,并且只維持一個時鐘周期。其它情況下MPSOC_STROBE為0。該信號輸入到主處理器的程序指針模塊中作為主從通信的判斷條件之一;b.設(shè)定地址標號輸入MULTI_ADDR[2:0],結(jié)合從處理器的反饋SREADY的各位作為另一個主從通信的判斷條件;c.設(shè)定內(nèi)部重試狀態(tài)信號NEEDSTAY,當主處理器發(fā)送超級指令但相應從處理器正忙時,NEEDSTAY信號置1有效;d.輸出重試撤銷信號DONTSTAY發(fā)送到主處理器總線接口模塊,主處理器總線接口模塊根據(jù)該信號撤銷重試。當主處理器執(zhí)行MOV MPCON,#8xH時,在該條指令的最后一個時鐘周期判斷DONTSTAY信號,如果DONTSTAY為1,則表示主處理器從“重試”狀態(tài)脫離,而地址標號此時已讀入,MPCON=0;當DONTSTAY為0,則說明沒有發(fā)生重試,任務調(diào)用順利執(zhí)行,MPCON接收超級指令任務調(diào)用的第一條指令內(nèi)容,獲得地址標號,并維持到主處理器輸出超級指令碼之后。其它時刻MPCON為0;e.設(shè)定內(nèi)部寄存器PROGRAM_COUNTER_LAST,存放重試前的程序指針;f.設(shè)定判斷條件判斷發(fā)送超級指令時從處理器的狀態(tài)是否需要重試,進而執(zhí)行相應操作;本實施例上述主處理器順利執(zhí)行超級指令任務調(diào)用時的時序步驟如下(見附圖6)在本實例中4時鐘周期為1個機器周期的MCU中,超級指令任務調(diào)用使用MOV MPCON,#8xH和MOV SCOM,#0CH兩條指令。這兩條指令的機器碼都為75H,且占用2個機器周期。在此期間,若SREADY[2:0]的某位為1,則說明相應的從處理器處于空閑狀態(tài),若該從處理器被選中執(zhí)行任務調(diào)用,則超級指令任務調(diào)用可正常執(zhí)行。在第一條指令即MOV MPCON,#8xH最后一個時鐘周期,主處理器寫特殊功能寄存器MPCON有效,在下一個時鐘周期,也即本條指令結(jié)束時,特殊功能寄存器MPCON被賦值,其最后三位MULTI_ADDR為所選從處理器的地址標號,且在2個時鐘周期后,主從通信標志位輸出MPSOC_STROBE有效;在第二條MOV指令執(zhí)行的最后一個時鐘周期寫有效信號S_COM_WRITE有效,即主處理器寫特殊功能寄存器SCOM有效,在其后的一個時鐘周期,特殊功能寄存器SCOM被賦予超級指令碼,通過S_COM輸出。其它時刻SCOM為00H。
      本實施例上述主處理器在超級指令任務調(diào)用時發(fā)生重試調(diào)用的時序步驟如下(見附圖7)a.主處理器在每個系統(tǒng)時鐘上升沿判斷主從是否通信且選中的從處理器是否空閑if(MPSoC_STROBE&amp;&amp;((MULTI_ADDR[2:0]==3′b001&amp;&amp;~SREADY
      )‖(MULTI_ADDR[2:0]==3′b010&amp;&amp;~SREADY[1])‖(MULTI_ADDR[2:0]==3′b011&amp;&amp;~SREADY[2])))如果選中的從處理器正忙,則雖然SCOM寄存器中已獲得超級指令碼,但是選中的從處理器并不會接收到超級指令碼。如附圖8中所示,此時由于選中的從處理器正忙,S_COM_ENTRY無效,超級指令碼并未進入選中的從處理器中,而是進行如下操作(a)將當前指針保存到PROGRAM_COUNTER_LAST中備用;(b)將當前指針減6重新回到發(fā)送MOV MPCON,#8xH這條指令的前一個程序地址處開始重試,因為超級指令任務調(diào)用的2條MOV指令一共占用6個字節(jié)的程序存儲器空間,所以從超級指令發(fā)送地址標號起始到此時經(jīng)過指針已向下增加了6,因此此處減6;(c)將NEEDSTAY置位,表示當前情況下主處理器發(fā)送超級指令需要做好重試的準備工作;b.標志位NEEDSTAY僅表示主處理器需要做好重試的準備而并不確定重試是因為,該系統(tǒng)中的各個處理器雖然采用同樣的系統(tǒng)時鐘源,但是它們可以獨立的工作,因此它們的指令結(jié)束時間不一樣,機器周期并不統(tǒng)一。也即主處理器的選中的從處理器可能在上述條件判別后開始空閑,因此還需要另外一個接收狀態(tài)標志RECEPTED[2:0],RECEPTED的各位連接各個從處理器的接收狀態(tài)信號RECEPTEDx(x=1~3)輸出,表征從處理器是否接收到了超級指令(a)如果RECEPTED[x]=0,表示選中的從處理器(x+1)的確沒有接收到,則在主處理器開始重試后將NEEDSTAY清0;(b)如果RECEPTED[x]=1,表示選中的從處理器(x+1)在主處理器判斷之后已經(jīng)空閑,主處理器雖然最好了重試的準備,但是已經(jīng)無需重試了,則從處理器 將剛才保存的程序地址PROGRAM_COUNTER_LAST送還給主處理器的程序指針,以便其跳出“重試”正常往下執(zhí)行程序; NEEDSTAY清0; DONTSTAY置1,輸出到主處理器的總線接口模塊。由于在保存的主處理器指針還原前主處理器又再次執(zhí)行了一部分MOV MPCON,#8xH指令,而此時主處理器由于已經(jīng)接收到了超級指令,狀態(tài)為忙。因此為了避免判重試條件再次成立,DONTSTAY信號有效時,主處理器總線模塊中不再將得到的數(shù)據(jù)賦予MPCON,而是將00H賦予MPCON,以便主從處理器都可以正常執(zhí)行下面的程序。
      本實施例中對于各從處理器的程序指針模塊進行改動,實現(xiàn)從處理器接收超級指令自動尋址和執(zhí)行任務調(diào)用程序的功能,其實現(xiàn)步驟如下(見附圖8)a.設(shè)定輸入RHx(x=1~3)和S_COM_ENTRY,這2個信號都來自同一個從處理器總線接口模塊,在從處理器的程序指針模塊中,用于控制從處理器程序指針變化的時機;b.設(shè)定輸入S_COM_NUM,該輸入是由從處理器總線接口模塊輸出的超級指令碼;c.設(shè)定入口地址偏移位置寄存器ADDR_OFFSET和入口地址位置寄存器ADDR_LOCATION,分別存放從處理器根據(jù)超級指令碼計算得到任務程序入口地址的在屏蔽區(qū)中存放的偏移量和位置地址;d.設(shè)定內(nèi)部計數(shù)器MP_COUNTERx(x=1~3),在該內(nèi)部計數(shù)器的不同時刻,從處理器的指針做不同的變換,分別找到任務調(diào)用程序的入口地址位置和入口地址。并且,該信號輸出到從處理器的總線接口模塊,控制超級指令接收允許位S_COM_ENTRY的結(jié)束;e.設(shè)定入口地址寄存器ENTRY_ADDR,用于暫存任務調(diào)用程序入口地址;f.從處理器接收超級指令實現(xiàn)任務調(diào)用的時序步驟如下(見附圖8)當從處理器判別出地址標號MULTI_ADDR和自己的匹配后,若此時本從處理器正空閑,則(1)將空閑狀態(tài)標志位清0表示此從處理器當前忙,(2)同時將超級指令碼門控信號S_COM_ENTRY打開表示數(shù)據(jù)總線上的超級指令碼可以讀入,至此,從處理器將進行如下操作(a)將數(shù)據(jù)總線上的超級指令碼賦予從處理器總線接口模塊的輸出S_COM_NUM;(b)從處理器的內(nèi)部計數(shù)器MP_COUNTERx(x=1~3)開始計數(shù),以便從處理器根據(jù)不同時刻完成不同任務;(c)根據(jù)獲得的超級指令碼,計算任務調(diào)用程序入口地址在屏蔽區(qū)中存放的偏移量ADDR_OFFSET;上述過程完成后,從處理器繼續(xù)進行如下工作(a)根據(jù)“屏蔽區(qū)起始地址+ADDR_OFFSET”得到任務調(diào)用程序入口地址的位置,即該位置的地址ADDR_LOCATION并賦予程序指針寄存器PROGA;(b)在內(nèi)部計數(shù)器MP_COUNTERx分別等于2、4、6的時刻讀取這3個程序存儲單元內(nèi)的內(nèi)容,并在MP_COUNTERx分別等于3、5、7的時刻反映到入口地址寄存器ENTRY_ADDR_H、ENTRY_ADDR_M和ENTRY_ADDR_L;(c)在MP_COUNTERx等于11的時刻,通過PROGA<={ENTRANCE_ADDR_H,ENTRANCE_ADDR_M,ENTRANCE_ADDR_L};將入口地址寄存器的高、中、低位賦予程序指針寄存器PROGA,至此,從處理器自動轉(zhuǎn)向任務調(diào)用程序的入口地址開始執(zhí)行任務;(d)獲得入口地址后,將內(nèi)部計數(shù)器MP_COUNTERx重置為0,輸出至相應從處理器總線接口模塊控制S_COM_ENTRY清零。
      在本段任務調(diào)用程序結(jié)束時,任務調(diào)用程序通過MOV READY,#80H,將其最高位狀態(tài)標志位RHx重新置1,表示此時回到空閑狀態(tài)。
      本實例中對從處理器的操作碼寄存器模塊進行改動,實現(xiàn)從處理器區(qū)分當前處于執(zhí)行普通指令期間還是接收超級指令碼后自動尋址期間,其實現(xiàn)方法如下在讀取程序存儲器的內(nèi)容后,判斷從處理器是否剛接到超級指令處于自動尋址期間,即判斷條件RHx(x=1~3)=0(從處理器接到命令)&amp;S_COM_ENTERY=1(從處理器尚在尋找入口地址)是否成立,如果成立,說明讀到的數(shù)據(jù)不是操作碼或立即數(shù),而是任務調(diào)用程序入口地址的一部分,處理器轉(zhuǎn)入特殊狀態(tài),即不將讀到的入口地址當作操作碼譯碼,而將操作碼用00H空操作填充;如果上述條件不成立,則如同普通的MCS-51系列的MCU正常執(zhí)行譯碼操作。
      權(quán)利要求
      1.一種微控制器系統(tǒng)任務調(diào)用方法,基于MCS-51體系,其特征在于在指令系統(tǒng)不變的前提下,將幾個基于MCS-51體系的MCU通過片上總線連接成一個多MCU系統(tǒng),其中一個MCU作為主處理器直接面向終端用戶,其它作為從處理器;將應用系統(tǒng)領(lǐng)域的各個任務程序集成在各個從處理器的程序存儲器中,并將這些任務編號為超級指令碼;對這些任務的調(diào)用是通過總線機制,由主處理器向相應的從處理器發(fā)送相應的超級指令碼,即由從處理器根據(jù)特定的尋址方法找到任務程序,自動完成該任務,實現(xiàn)任務調(diào)用。
      2.根據(jù)權(quán)利要求1所述的多微控制器任務調(diào)用方法,其特征在于具體步驟為a.在主處理器中添加主處理器總線接口模塊,實現(xiàn)主處理器與總線的連接;b.在從處理器中添加從處理器總線接口模塊,實現(xiàn)從處理器與總線的連接;c.對主處理器中的程序指針模塊進行改動,實現(xiàn)選定從處理器忙時主處理器的等待重試功能;d.對從處理器的操作碼寄存器模塊進行改動,使得從處理器可以區(qū)分當前處于執(zhí)行普通指令期間還是接收超級指令自動尋址期間。操作碼寄存器模塊在執(zhí)行普通指令期間的原始功能是將指令中的機器碼和立即數(shù)區(qū)分開來,分別送給譯碼模塊和ALU(算術(shù)邏輯單元)處理;此處當從處理器接收到超級指令碼時,并不按照普通指令碼處理,也即并不將得到的入口地址送去譯碼,而是代之以空操作,讓該從處理器繼續(xù)保持在等待狀態(tài);e.對從處理器中的程序指針模塊進行改動,實現(xiàn)從處理器根據(jù)超級指令碼由硬件自動尋址的功能。
      3.根據(jù)權(quán)利要求2所述的多微控制器系統(tǒng)任務調(diào)用方法,其特征在于所述的步驟a中在主處理器中添加主處理器總線接口模塊,實現(xiàn)主處理器與總線連接的具體步驟為a.在主處理器中設(shè)置多MCU系統(tǒng)控制特殊功能寄存器MPCON(a)確定多MCU系統(tǒng)控制特殊功能寄存器MPCON的地址為OCAH,通過讀寫多MCU系統(tǒng)控制特殊功能寄存器MPCON來實現(xiàn)對從處理器的選擇與控制;MPCON 地址CAH
      (b)多MCU系統(tǒng)控制特殊功能寄存器MPCON在系統(tǒng)復位時為OOH,用戶通過指令MOV MPCON,#8xH(x=1~n,n為從處理器的個數(shù))控制該特殊功能寄存器MPCON,其最高位被置1表示當前進行多MCU系統(tǒng)主從處理器通信;同時該特殊功能寄存器低三位用于存放從處理器的地址標號,當主處理器要進行一次超級指令任務調(diào)用的時候,首先向從處理器發(fā)送地址標號選擇需要執(zhí)行當前任務的從處理器;b.在主處理器中設(shè)置超級指令碼特殊功能寄存器SCOM(a)確定多MCU系統(tǒng)超級指令碼特殊功能寄存器SCOM的地址為OCBH,所有超級指令碼通過讀寫特殊功能寄存器SCOM來實現(xiàn);SCOM 地址CBH
      (b)多MCU系統(tǒng)超級指令碼特殊功能寄存器SCOM在系統(tǒng)復位后為OOH,用戶通過MOV SCOM,#**H指令控制該特殊功能寄存器SCOM,當主處理器發(fā)送完地址標號后,如果選中的從處理器空閑可以接受任務,則主處理器通過寫特殊功能寄存器SCOM,將超級指令碼發(fā)送給從處理器;c.在主處理器中設(shè)置從處理器反饋接收寄存器SREADY從處理器反饋接收寄存器SREADY用戶不可見,其位數(shù)等于從處理器的個數(shù),其每一位分別連接到各從處理器的空閑標志位RHx上;主處理器通過查詢主處理器反饋接受寄存器SREADY[x]的狀態(tài)獲知相應從處理器的當前狀態(tài);SREADY[(n-1):0]
      d.設(shè)定重試撤銷信號DONTSTAY,從處理器的反饋狀態(tài)及主處理器自身狀態(tài)共同決定DONTSTAY的狀態(tài),該信號是在發(fā)生過若干次重試后不再需要重試時置1有效,表示主處理器此時脫離“重試”狀態(tài),不需要再重新輸出地址標號;e.在設(shè)置超級指令碼特殊功能寄存器SCOM后,當用戶程序為MOV SCOM,#**H時,將微處理器內(nèi)部數(shù)據(jù)線上的數(shù)據(jù)賦予S_COM,其它時刻寄存器S_COM為0;g.設(shè)定MCU通信標志信號MPSOC_STROBE,該信號根據(jù)多MCU系統(tǒng)控制特殊功能寄存器MPCON的最高位MPCON[7]的狀態(tài)變化;如果MPCON[7]發(fā)生由0變?yōu)?的跳變,則表示發(fā)生主從通信,MPSOC_STROBE為1,并且只維持一個時鐘周期;其它情況下MPSOC_STROBE為0。
      4.根據(jù)權(quán)利要求2所述的多微控制器任務調(diào)用方法,其特征在于所述的步驟b中在從處理器中添加總線接口模塊,實現(xiàn)從處理器與總線連接的具體步驟為a.在從處理器總線接口模塊中設(shè)置從處理器空閑標志READY(a)確定從處理器空閑標志特殊功能寄存器READY的地址位OCCH,從處理器任務完成狀態(tài)由該寄存器標志;READY 地址CCH
      (b)從處理器空閑標志特殊功能寄存器READY在系統(tǒng)復位時為80H,該特殊功能寄存器READY的最高位命名為RHx(x=1~n,n為從處理器的個數(shù)),RHx=1表示相應從處理器當前空閑,等待任務;RHx=0表示相應從處理器當前仍在執(zhí)行上一任務,不接受新任務;RHx由硬件清零,軟件置位;用戶通過MOV READY,#80H的指令將寄存器READY的最高位RHx置1;READY的其它位暫為保留位,默認為0,它可以用于將來的系統(tǒng)擴充,從處理器可以向主處理器反饋更多信息;RHx連接到主處理器的SREADY的各個位,形成從處理器對主處理器的反饋信息;b.設(shè)定數(shù)據(jù)輸入門控信號S_COM_ENTRY及從處理器超級指令碼寄存器S_COM_NUM;當數(shù)據(jù)輸入門控信號S_COM_ENTRY為1有效,允許主從通信的數(shù)據(jù)總線上的超級指令碼進入該從處理器,即把主處理器的輸出S_COM讀入從處理器內(nèi)部,并賦予從處理器內(nèi)的超級指令碼寄存器S_COM_NUM;S_COM_ENTRY在從處理器找到任務調(diào)用程序的入口地址后清零;c.設(shè)定內(nèi)部寄存器RH_tp,它比RH信號延遲2個時鐘周期,目的是將RH信號狀態(tài)延遲,以避免RH信號和其它判斷信號同時變化,產(chǎn)生競爭冒險;d.當同時滿足以下三個條件(1)地址標號與自身匹配;(2)RH_tp為1,即該從處理器空閑;(3)主處理器超級指令碼寫有效信號有效;此時S_COM_ENTRY信號打開允許超級指令碼進入,同時RHx信號被硬件清零;e.設(shè)定從處理器接收狀態(tài)信號RECEPTEDx(x=1~n,n為從處理器的個數(shù))信號,該信號將輸出到主處理器中,表征超級指令碼是否已被指定從處理器獲得;若已獲得超級指令碼,則相應的RECEPTEDx為1,否則為0;RECEPTED[(n-1):0] 每一個從處理器的接收狀態(tài)信號RECEPTEDx(x=1~n)分別輸出送到主處理器的接收狀態(tài)寄存器RECEPTED[(n-1):0]各位。
      5.根據(jù)權(quán)利要求2所述的多微控制器系統(tǒng)任務調(diào)用方法,其特征在于所述的步驟c中對主處理器中程序指針模塊進行改動,實現(xiàn)主處理器在從處理器忙時等待重試功能的具體步驟為a.設(shè)定內(nèi)部標志位NEEDSTAY,在檢測到選擇的從處理器正忙的時候置1,表示此次發(fā)送超級指令任務調(diào)用不成功,主處理器需要重試;b.設(shè)定重試撤銷標志信號DONTSTAY,作為輸出送到主處理器總線接口模塊,控制MPCON是否被賦值;c.當主從通信發(fā)生并且所選擇的從處理器正忙時,需要做三件事(a)設(shè)定的內(nèi)部寄存器PROGRAM_COUNT_LAST存放指針回退前的PROGRAM_COUNT(當前指針位置);(b)PROGRAM_COUNT被減6,使指針回到超級指令任務調(diào)用的起始處;(c)內(nèi)部寄存器NEEDSTAY被置1,表示主處理器需要做好重試的準備工作;d.當NEEDSTAY=1時,表示主處理器可能需要重試。在這種情況下繼續(xù)判斷是否需要重試(a)當由從處理器傳來的接收狀態(tài)寄存器RECEPTED[(n-1):0]中的相應位RECEPTED[x]=1,表示指定從處理器收到了超級指令碼,則 將剛才寄存的回退前的地址PROGRAM_COUNT_LAST重新賦予當前指針PROGRAM_COUNT; NEEDSTAY清零,說明超級指令已接收,無需重試; DONTSTAY置1,輸出到主處理器總線接口模塊,作為判斷條件,當DONTSTAY有效時,說明此次重試已成功,指定從處理器已經(jīng)收到剛才發(fā)出的超級指令,本次無需再給MPCON賦值,直接將MPCON賦為0;(b)當由從處理器傳來的接收狀態(tài)寄存器RECEPTED[(n-1):0]中的相應位RECEPTED[x]=0,則說明指定從處理器正忙,無法接收超級指令碼,則NEEDSTAY繼續(xù)保留3個時鐘脈沖后撤銷,回到狀態(tài)0,以便主處理器進入重試狀態(tài)重新開始發(fā)送超級指令。e.當NEEDSTAY=0時,說明無需進入重試狀態(tài),主處理器正常向下執(zhí)行其它指令。
      6.根據(jù)權(quán)利要求2所述的多微控制器系統(tǒng)任務調(diào)用方法,其特征在于所述的步驟d中實現(xiàn)從處理器區(qū)分當前處于執(zhí)行普通指令期間還是接收超級指令自動尋址期間的方法為對從處理器的操作碼寄存器模塊進行改動,在讀取程序存儲器的內(nèi)容后,判斷從處理器是否剛接到超級指令尚在尋找入口地址期間,即判斷條件RHx(x=1~n)=0(從處理器接到命令)且S_COM_ENTERY=1(從處理器尚在尋找入口地址)是否成立,如果成立,說明讀到的數(shù)據(jù)不是操作碼或立即數(shù),而是任務調(diào)用程序入口地址的一部分,處理器轉(zhuǎn)入特殊狀態(tài),即將操作碼用OOH空操作填充;如果上述條件不成立,則正常執(zhí)行。
      7.根據(jù)權(quán)利要求2所述的多位控制器系統(tǒng)任務調(diào)用方法,其特征在于所述的步驟e中實現(xiàn)從處理器接收到執(zhí)行超級指令時由硬件自動尋址的方法為a.設(shè)置從處理器的程序存儲器的特殊存放結(jié)構(gòu)(a)該從處理器負責的各個獨立的任務調(diào)用程序依次存放在其程序存儲器中,它們之間沒有必然聯(lián)系;(b)在每個從處理器的程序存儲區(qū)各開辟一個屏蔽區(qū),在編譯的時候就將各個任務調(diào)用程序的入口地址依次存放在該屏蔽區(qū)內(nèi),其存放序號編制為8位的超級指令碼;各從處理器根據(jù)超級指令碼自動找到任務調(diào)用程序的入口地址;b.改動從處理器的程序指針模塊,實現(xiàn)從處理器的任務調(diào)用自動尋址功能步驟如下(a)從處理器在空閑等待的狀態(tài)下程序指針停留在0,即程序存儲器起始處;(b)從處理器在剛剛接收到超級指令尚未找到入口地址期間(即RHx=0及S_COM_ENTRY=1時),做如下計算 ADDR_OFFSET(入口地址在屏蔽區(qū)中的位置偏移量)=S_COM_NUM(超級指令碼)×m(其中m為每個入口地址所占的字節(jié)數(shù),例如16M的地址空間需要24位的地址,則需要占用3個字節(jié),m=3) “ADDR_LOCATION(入口地址所在位置)=ADDR_START(屏蔽區(qū)起始地址)+ADDR_OFFSET”;即得到任務調(diào)用程序的入口地址在屏蔽區(qū)中存放的位置地址;(c)將入口地址所在位置地址賦予程序指針寄存器,讓從處理器類似讀取一般程序一樣讀取m個字節(jié)的入口地址;(d)上述入口地址讀取方法雖然和讀取普通程序一樣,但是讀到的內(nèi)容并不如同普通操作碼或者立即數(shù)一樣送去解碼或者計算,因為它讀到的內(nèi)容并不是操作碼或者立即數(shù),而是任務調(diào)用的入口地址;因此,從處理器將讀到的入口地址重新賦予程序指針寄存器,從而轉(zhuǎn)向該入口地址開始如同普通MCU一樣執(zhí)行任務調(diào)用程序;c.在每個任務調(diào)用程序結(jié)尾用戶用一條指令將從處理器的空閑狀態(tài)標志RHx置1,表示該從處理器又重新回到空閑狀態(tài)。程序指針重新回到0。
      8.根據(jù)權(quán)利要求7所述的多微控制器系統(tǒng)任務調(diào)用方法,其特征在于所述的步驟a(b)中從處理器根據(jù)超級指令碼自動找到任務調(diào)用程序入口地址的具體實現(xiàn)方法為a.設(shè)定內(nèi)部寄存器ENTRY_ADDR,用于暫存任務程序的入口地址,其位數(shù)和入口地址位數(shù)相同;b.在從處理器的PC指針模塊中分別設(shè)定4位的內(nèi)部計數(shù)器MP_COUNTERx(x=1-n,n為從處理的個數(shù));在MP_COUNTERx的不同時刻做不同的事情;在從處理器獲得超級指令碼之后,經(jīng)過“屏蔽區(qū)起始地址+超級指令碼×m”的計算得到入口地址所在位置,此時MP_COUNTERx開始計數(shù),從處理器此時開始讀取程序存儲區(qū)中從該位置地址之后m個單元的內(nèi)容;因為正常情況下,每2個時鐘周期讀rom中一個單元,因此本專利中在MP_COUNTERx=2,4,6……的時候分別讀取rom中的內(nèi)容,讀取的次數(shù)等于入口地址所占字節(jié)數(shù);而MP_COUNTERx=5,7,9……的時刻分別將入口地址的各個單元放入入口地址寄存器ENTRY_ADDR的高中低字節(jié)。在全部讀取完入口地址后(例如MP_COUNTERx=10),將ENTRY_ADDR的值賦予PC指針寄存器PROGA;并且,在PROGA被賦予真正的入口地址之后,MP_COUNTERx被重新置零,從處理器轉(zhuǎn)入正常模式執(zhí)行任務程序。
      全文摘要
      本發(fā)明涉及一種微控制器系統(tǒng)任務調(diào)用方法。本方法是基于MCS-51體系,在指令系統(tǒng)不變的前提下,將幾個基于MCS-51體系的微控制器通過片上總線連接成一個多微控制器系統(tǒng),其中一個微控制器作為主處理器直接面向終端用戶,其它作為從處理器。本設(shè)計中的任務調(diào)用方法將應用系統(tǒng)領(lǐng)域的各個任務程序集成在各個從處理器的程序存儲器中,并將這些任務編號為超級指令碼。系統(tǒng)對這些任務的調(diào)用是通過總線機制,由主處理器向相應的從處理器發(fā)送相應的超級指令碼,即由從處理器根據(jù)特定的尋址方法找到任務程序,自動完成該任務,實現(xiàn)任務調(diào)用。本設(shè)計的超級指令任務調(diào)用方法降低了對主處理器存儲能力和處理強度的要求,提高系統(tǒng)的并行處理能力。本基于多MCU體系超級指令任務調(diào)用方法可應用于基于MCS-51指令體系的單片微控制器,亦可應用于其它多微控制器、微處理器等領(lǐng)域。
      文檔編號G06F9/46GK1940860SQ20061003075
      公開日2007年4月4日 申請日期2006年9月1日 優(yōu)先權(quán)日2006年9月1日
      發(fā)明者胡越黎, 冉峰, 丁倩 申請人:上海大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1