基于信號(hào)名的嵌入式多cpu板間信號(hào)自動(dòng)交換的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于嵌入式系統(tǒng)領(lǐng)域,特別涉及一種多CPU板通過(guò)數(shù)據(jù)總線實(shí)現(xiàn)板間信號(hào)自動(dòng)交換的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]對(duì)于由兩個(gè)或多個(gè)CPU板組成的嵌入式系統(tǒng),各CPU板完成不同的功能,CPU板之間通過(guò)數(shù)據(jù)總線交換信號(hào),從而實(shí)現(xiàn)分布式計(jì)算和協(xié)同工作,如圖1所示。為了實(shí)現(xiàn)CPU板間信號(hào)交換,常規(guī)做法是在軟件編程階段,預(yù)先為各CPU板需要交換的輸出信號(hào)、輸入信號(hào)分配相同的數(shù)據(jù)總線地址,并將分配的地址寫入各個(gè)CPU板程序。只有輸出方和輸入方的數(shù)據(jù)總線地址相同,才能實(shí)現(xiàn)正確的信號(hào)交換。如圖2所示,板I輸出信號(hào)Sigl、板2輸入信號(hào)Sig2都使用了數(shù)據(jù)總線地址X進(jìn)行信號(hào)交換。在嵌入式系統(tǒng)開發(fā)過(guò)程中,通常多次調(diào)整信號(hào)和信號(hào)交換(如增加、減少、改變順序),需要信號(hào)收發(fā)雙方同步修改數(shù)據(jù)總線地址,重新編譯CPU板程序。在一個(gè)復(fù)雜系統(tǒng)中,板間信號(hào)交換可能有幾萬(wàn)個(gè),手工調(diào)整數(shù)據(jù)總線地址很容易出現(xiàn)錯(cuò)誤。因此,對(duì)于一個(gè)多CPU板構(gòu)成的嵌入式系統(tǒng),如何方便、靈活地使用數(shù)據(jù)總線進(jìn)行CPU板間信號(hào)自動(dòng)交換是一個(gè)挑戰(zhàn)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的,在于提供一種基于信號(hào)名的嵌入式多CPU板間信號(hào)自動(dòng)交換的方法,其可直觀簡(jiǎn)單地調(diào)整CPU板間信號(hào)交換,并保證信號(hào)交換的正確性。
[0004]為了達(dá)成上述目的,本發(fā)明的解決方案是:
[0005]一種基于信號(hào)名的嵌入式多CPU板間信號(hào)自動(dòng)交換的方法,包括如下步驟:
[0006](I)將嵌入式多CPU板分布式系統(tǒng)中的CPU板劃分為主板和從板,將一個(gè)具備信號(hào)管理功能的CPU板作為主板,其余CPU板均作為從板;在初始化階段,所有從板依次向主板發(fā)送包含信號(hào)名、信號(hào)內(nèi)存地址和信號(hào)數(shù)據(jù)類型的信號(hào)注冊(cè)信息;
[0007](2)主板匯總所有從板的信號(hào)注冊(cè)信息后,從配置文件中讀取用信號(hào)名連線表示的輸出、輸入信號(hào)交換關(guān)系,計(jì)算分配輸出、輸入信號(hào)映射的數(shù)據(jù)總線地址,依次將各個(gè)信號(hào)的內(nèi)存地址、數(shù)據(jù)類型和總線地址發(fā)給各從板;
[0008](3)從板收到主板的信號(hào)的內(nèi)存地址、數(shù)據(jù)類型和總線地址后,保存為輸出信號(hào)表和輸入信號(hào)表;
[0009](4)在運(yùn)行階段,信號(hào)發(fā)送方按照輸出信號(hào)表,將輸出信號(hào)值填入所分配的相應(yīng)總線地址中,接收方按照輸入信號(hào)表,從相應(yīng)總線地址讀取輸入信號(hào)值。
[0010]上述步驟(I)中,從板通過(guò)CAN、RS-485或Ethernet向主板發(fā)送信號(hào)注冊(cè)信息。[0011 ] 上述步驟(I)中,在初始化階段,主板輪流向各個(gè)從板發(fā)送開始注冊(cè)命令,接收到該開始注冊(cè)命令的從板向主板發(fā)送信號(hào)注冊(cè)信息。
[0012]上述步驟(2)中,主板獲取所有從板的信號(hào)注冊(cè)信息后,按照輸出、輸入類型存儲(chǔ)成輸出信號(hào)注冊(cè)表和輸入信號(hào)注冊(cè)表,所述注冊(cè)表以數(shù)組存儲(chǔ),每個(gè)數(shù)組項(xiàng)表示一個(gè)信號(hào)信息,包括信號(hào)名字符串、信號(hào)所屬板卡編號(hào)、信號(hào)數(shù)據(jù)類型和信號(hào)內(nèi)存地址;所有信號(hào)注冊(cè)結(jié)束后,信號(hào)信息表按信號(hào)名排序。
[0013]上述步驟(2)中,主板從配置文件中讀取用信號(hào)名連線表示的輸出、輸入信號(hào)交換關(guān)系,具體內(nèi)容是:主板讀取配置文件,逐條提取信號(hào)名連線,存儲(chǔ)為信號(hào)交換關(guān)系表數(shù)組,其中每個(gè)數(shù)組項(xiàng)代表一個(gè)信號(hào)連線;主板根據(jù)信號(hào)交換關(guān)系表中的輸出信號(hào)名,從輸出信號(hào)注冊(cè)表中檢索到信號(hào)信息,再按輸出信號(hào)的板卡地址、數(shù)據(jù)類型和內(nèi)存地址順序,對(duì)信號(hào)交換關(guān)系表的表項(xiàng)進(jìn)行重新排序,具體排序規(guī)則是:不同板卡編號(hào)的信號(hào)按板卡編號(hào)從小到大,相同板卡的按信號(hào)數(shù)據(jù)類型寬度從小到大,相同板卡且相同數(shù)據(jù)類型的按內(nèi)存地址從小到大。
[0014]上述數(shù)據(jù)類型寬度的順序從小到大是:布爾量、單字節(jié)整型、雙字節(jié)整型、四字節(jié)整型和浮點(diǎn)型。
[0015]采用上述方案后,本發(fā)明通過(guò)在初始化階段從板向主板發(fā)送信號(hào)注冊(cè)信息;用信號(hào)名連線表示輸出、輸入信號(hào)交換關(guān)系;用配置文件存儲(chǔ)信號(hào)名連線;主板解析配置文件中的信號(hào)交換關(guān)系,計(jì)算分配輸出、輸入信號(hào)的總線地址,將各個(gè)信號(hào)的內(nèi)存地址、數(shù)據(jù)類型和總線地址發(fā)給各從板;從板將輸出、輸入信號(hào)內(nèi)存地址、數(shù)據(jù)類型和總線地址保存為輸出信號(hào)表和輸入信號(hào)表;在運(yùn)行時(shí),信號(hào)發(fā)送方按照輸出信號(hào)表,將信號(hào)值填入總線所分配的地址中,接收方按照輸入信號(hào)表,從數(shù)據(jù)總線特定地址讀取輸入信號(hào)值,能夠降低手工調(diào)整信號(hào)交換的難度,避免人工出錯(cuò)的風(fēng)險(xiǎn),從機(jī)制上保證了多CPU板間信號(hào)交換的正確性;另外,根據(jù)信號(hào)名來(lái)調(diào)整CPU板間信號(hào)交換,可以通過(guò)編輯配置文本來(lái)實(shí)現(xiàn),既直觀又簡(jiǎn)單,無(wú)需修改CPU板卡程序,簡(jiǎn)化了嵌入式系統(tǒng)開發(fā)設(shè)計(jì)。
【附圖說(shuō)明】
[0016]圖1是本發(fā)明所針對(duì)的嵌入式多CPU板分布式系統(tǒng)的結(jié)構(gòu)結(jié)構(gòu)圖;
[0017]圖2是現(xiàn)有基于固定分配數(shù)據(jù)總線地址的多CPU板間信號(hào)交換實(shí)現(xiàn)方法示意圖;
[0018]圖3是本發(fā)明中基于信號(hào)名多CPU板間信號(hào)自動(dòng)交換實(shí)現(xiàn)方法示意圖;
[0019]圖4是本發(fā)明初始化階段的信號(hào)注冊(cè)及計(jì)算分配數(shù)據(jù)總線地址的示意圖;
[0020]圖5是本發(fā)明運(yùn)行階段更新輸出、輸入信號(hào)示意圖。
【具體實(shí)施方式】
[0021]以下將結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
[0022]如圖3所示,本發(fā)明提供一種基于信號(hào)名的嵌入式多CPU板間信號(hào)自動(dòng)交換的方法,包括如下步驟:
[0023](I)將嵌入式多CPU板分布式系統(tǒng)(其架構(gòu)如圖1所示)中的CPU板劃分為主板和從板,將其中一個(gè)CPU板劃分為主板,其余均作為從板,形成“主從”系統(tǒng)架構(gòu);
[0024]所述嵌入式多CPU板分布式系統(tǒng)上電后,各CPU板首先初始化硬件,然后進(jìn)行信號(hào)注冊(cè),即將該從板需要與外部交換的信號(hào)信息用通信總線發(fā)送給主板,具體可采用CAN、RS-485、Ethernet等;所述信號(hào)信息包含信號(hào)名、信號(hào)內(nèi)存地址和信號(hào)數(shù)據(jù)類型;為了避免多個(gè)從板同時(shí)向主板發(fā)送,超出主板接收能力,可以采取主板輪流向各個(gè)從板發(fā)送開始注冊(cè)命令,讓各從板依次注冊(cè)的方法,如圖4所示。
[0025](2)主板匯總所有從板的信號(hào)注冊(cè)信息后,按照輸出、輸入類型存儲(chǔ)成輸出信號(hào)注冊(cè)表和輸入信號(hào)注冊(cè)表,所述注冊(cè)表以數(shù)組存儲(chǔ),每個(gè)數(shù)組項(xiàng)表示一個(gè)信號(hào)信息,包括信號(hào)名字符串、板卡編號(hào)、數(shù)據(jù)類型和內(nèi)存地址。所有信號(hào)注冊(cè)結(jié)束后,信號(hào)信息表將按信號(hào)名排序。
[0026]主板讀取如下述結(jié)構(gòu)的配置文件:
[0027]B01.Sigl->B02.Sig2
[0028]B01.Sigl->B03.SigO
[0029]B02.Sigl->B01.Sig4
[0030]…
[0031]主板讀取配置文件,逐條提取信號(hào)名連線,存儲(chǔ)為信號(hào)交換關(guān)系表數(shù)組,其中每個(gè)數(shù)組項(xiàng)代表一個(gè)信號(hào)連線(輸出信號(hào)名字符串、輸入信號(hào)名字符串)。
[