基于DM642的實(shí)時(shí)多協(xié)議轉(zhuǎn)換器設(shè)計(jì)
3 軟件設(shè)計(jì)
3.1 協(xié)議存儲(chǔ)、加載方法
為了使上電復(fù)位后無需重新加載協(xié)議,將協(xié)議描述表存儲(chǔ)于FLASH中,F(xiàn)LASH的分配方法的存儲(chǔ)空間分配方法如圖5所示。本文引用地址:http://www.ex-cimer.com/article/194140.htm
8 MB存儲(chǔ)空間的前128 KB存儲(chǔ)空間用于存儲(chǔ)DSP程序,剩余的空間劃分為252個(gè)32 KB大小的數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊用于存儲(chǔ)一條協(xié)議的所有信息;每個(gè)32 KB大小數(shù)據(jù)塊在劃分為512個(gè)64 B大小的次級(jí)數(shù)據(jù)塊,第1個(gè)次級(jí)數(shù)據(jù)塊用于存儲(chǔ)數(shù)據(jù)幀描述表,后511個(gè)次級(jí)數(shù)據(jù)塊存儲(chǔ)數(shù)據(jù)元素的相關(guān)信息;64 B存儲(chǔ)空間的前32 B用于存儲(chǔ)數(shù)據(jù)元素描述表,后32 B用于存儲(chǔ)數(shù)據(jù)位描述表,同一個(gè)數(shù)據(jù)元素最多支持8個(gè)數(shù)據(jù)位操作。采用這種協(xié)議存儲(chǔ)方法的好處是,方便了協(xié)議的加載及修改,DM642很容易計(jì)算出每個(gè)數(shù)據(jù)幀、數(shù)據(jù)元素、數(shù)據(jù)位描述表的地址,加快了協(xié)議信息的查找,但對(duì)存儲(chǔ)空間的浪費(fèi)也比較大。
3.2 DSP程序設(shè)計(jì)
軟件程序調(diào)用CCS 2提供實(shí)時(shí)操作系統(tǒng)DSP/BIOS,DSP/BIOS采用搶先式多任務(wù)內(nèi)核,支持硬件中斷、軟件中斷、任務(wù)、后臺(tái)線程等4種線程,并提了同步機(jī)制。在DSP/BIOS下調(diào)用NDK的函數(shù)庫進(jìn)行TCP/IP協(xié)議編程時(shí),需配置EMAC并開啟線程監(jiān)控網(wǎng)絡(luò)接口,參考文獻(xiàn)詳細(xì)介紹了DSP/BIOS下的TCP/IP協(xié)議編程,這里把網(wǎng)絡(luò)總線視為普通接口。
為了保證系統(tǒng)實(shí)時(shí)性,需合理使用DSP/BIOS提供的不同類型線程,并協(xié)調(diào)好各線程間的通信。協(xié)議及各總線的配置數(shù)據(jù)均存儲(chǔ)于FLAS-H,也上電后通過以太網(wǎng)在線動(dòng)態(tài)加載至DM642。在主線程中對(duì)DM642和FPGA進(jìn)行初始化配置。硬件中斷的實(shí)時(shí)性最高,監(jiān)控各總線狀態(tài),并根據(jù)從FPGA讀回的中斷信息,生成相應(yīng)消息并觸發(fā)軟件中斷和線程。硬件中斷的流程如圖6所示,依次掃描各總線中斷信息,根據(jù)中斷信息觸發(fā)總線異常、接收數(shù)據(jù)、幀頭識(shí)別、協(xié)議接收完成、發(fā)送完成等中斷的處理程序。
評(píng)論