<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于DM642的實(shí)時(shí)多協(xié)議轉(zhuǎn)換器設(shè)計(jì)

          基于DM642的實(shí)時(shí)多協(xié)議轉(zhuǎn)換器設(shè)計(jì)

          作者: 時(shí)間:2012-04-05 來源:網(wǎng)絡(luò) 收藏

          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

          e.JPG


          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é)議的加載及修改,很容易計(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)加載至。在主線程中對(duì)和FPGA進(jìn)行初始化配置。硬件中斷的實(shí)時(shí)性最高,監(jiān)控各總線狀態(tài),并根據(jù)從FPGA讀回的中斷信息,生成相應(yīng)消息并觸發(fā)軟件中斷和線程。硬件中斷的流程如圖6所示,依次掃描各總線中斷信息,根據(jù)中斷信息觸發(fā)總線異常、接收數(shù)據(jù)、幀頭識(shí)別、協(xié)議接收完成、發(fā)送完成等中斷的處理程序。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();