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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PCI 總線(xiàn)的DSP 系統(tǒng)應(yīng)用程序的更新

          基于PCI 總線(xiàn)的DSP 系統(tǒng)應(yīng)用程序的更新

          作者: 時(shí)間:2013-07-31 來(lái)源:網(wǎng)絡(luò) 收藏

            2.3.2 C6416從機(jī)的啟動(dòng)模式設(shè)計(jì)

            編寫(xiě)一個(gè)C6416的程序,該程序完成FLASH到片外SDRAM的數(shù)據(jù)拷貝。而拷貝的數(shù)據(jù)則是C6416具體要完成的業(yè)務(wù)任務(wù)。同時(shí)該程序包含了Bootload程序,用來(lái)完成上電后的1 KB FLASH數(shù)據(jù)搬移。見(jiàn)圖6.

            

            第一步:當(dāng)C6416 上電后,首先自動(dòng)完成A 搬移操作,“Bootload程序”將被搬移到C6416片內(nèi)RAM 的0起始地址,后開(kāi)始運(yùn)行該段代碼,該段代碼是利用匯編語(yǔ)言編寫(xiě),其在C語(yǔ)言庫(kù)初始化前被執(zhí)行;第二步:“Bootload 程序”的運(yùn)行將會(huì)配置C6416 的EMIF 寄存器,使能片外SDRAM,同時(shí)使B 搬移操作完成:“程序選擇搬移代碼”將被搬移到C6416片內(nèi)RAM,并從程序入口地址開(kāi)始執(zhí)行該代碼段;第三步:“程序選擇搬移代碼”的執(zhí)行將對(duì)業(yè)務(wù)代碼進(jìn)行選擇,查看需要加載“ 業(yè)務(wù)代碼1”還是“ 業(yè)務(wù)代碼2”,把選擇的業(yè)務(wù)代碼搬移到片外SDRAM中,完成C搬移操作或D搬移操作,然后從程序入口地址開(kāi)運(yùn)行,從而被選中的業(yè)務(wù)代碼將被執(zhí)行。

            其中“程序選擇搬移代碼”是一段由C 語(yǔ)言編寫(xiě)的C6416 啟動(dòng)輔助代碼。該段代碼主要完成了業(yè)務(wù)代碼的選擇和搬移工作。應(yīng)用用戶(hù)可以在C6416 片外FLASH 中存放多個(gè)業(yè)務(wù)代碼,通過(guò)串口、等接口向C6416發(fā)送業(yè)務(wù)代碼選擇命令,在“程序選擇轉(zhuǎn)移代碼”中,對(duì)該命令進(jìn)行分析,根據(jù)協(xié)議選擇所指定的業(yè)務(wù)代碼。當(dāng)選擇了所需的業(yè)務(wù)代碼,就需要完成代碼的FLASH 到C6416存儲(chǔ)器的搬移。由于業(yè)務(wù)代碼是利用上述的hex6x.exe 和hex2aray.exe 工具所生成的16 進(jìn)制數(shù)據(jù),其包含了業(yè)務(wù)代碼各個(gè)段的起始地址、段長(zhǎng)和段數(shù)據(jù),因此需要利用“程序選擇搬移代碼”來(lái)完成業(yè)務(wù)代碼的解析,并把各個(gè)段從FLASH 搬移到指定的C6416存儲(chǔ)空間中。最后把程序指針指定到程序的入口地址,即可運(yùn)行業(yè)務(wù)代碼。該啟動(dòng)方式的設(shè)計(jì)有助于在實(shí)際應(yīng)用中針對(duì)不同的設(shè)備和需求選擇不同的業(yè)務(wù)應(yīng)用代碼,同時(shí)也有助于FLASH中的業(yè)務(wù)代碼的更新。

            2.3.3 利用更新FLASH中的業(yè)務(wù)代碼

            當(dāng)成型的設(shè)備需要對(duì)固化在DSP外圍FLASH中的業(yè)務(wù)代碼進(jìn)行更新時(shí),應(yīng)該在DSP 上運(yùn)行FLASH 燒寫(xiě)程序,把業(yè)務(wù)代碼燒寫(xiě)到FLASH中。本設(shè)計(jì)利用PCI啟動(dòng)方式,通過(guò)上位機(jī)來(lái)啟動(dòng)C6416 運(yùn)行FLASH 燒寫(xiě)程序,完成業(yè)務(wù)代碼的FLASH 燒寫(xiě)。利用上述的C6416從機(jī)啟動(dòng)模式,可以很容易的發(fā)現(xiàn),當(dāng)需要完成FLASH軟件更新時(shí),只需要更新“業(yè)務(wù)代碼”即可,而“Bootload”

            和“程序選擇搬移代碼”不需要變更。如此業(yè)務(wù)代碼更新就很方便,因?yàn)槠渲恍枰紤]程序應(yīng)用上的變換,而不需要過(guò)多的考慮程序代碼、數(shù)據(jù)段地址分配的問(wèn)題,更不需要考慮C6416特有的僅1 KB數(shù)據(jù)上電自動(dòng)搬移所帶來(lái)的麻煩。具體步驟如圖7所示。

            @7

            第一步:根據(jù)C6416外圍所選的FLASH 特性,來(lái)編寫(xiě)其代碼燒寫(xiě)程序。在該程序中把需要更新的業(yè)務(wù)代碼作為常量數(shù)據(jù)包含到工程中的const段中。

            第二步:利用hex6x.exe 和hex2aray.exe 工具來(lái)將FLASH燒寫(xiě)程序轉(zhuǎn)換成C語(yǔ)言可以識(shí)別的16進(jìn)制數(shù)組數(shù)據(jù);第三步:選擇C6416 為PCI 主機(jī)啟動(dòng)模式,主機(jī)利用PCI 總線(xiàn)將轉(zhuǎn)換為16 進(jìn)制的燒寫(xiě)程序數(shù)據(jù)搬移到C6416片內(nèi)存儲(chǔ)器;第四步:主機(jī)把C6416 I/O空間寄存器HDCR.DSPINT位置1,使C6416退出復(fù)位,開(kāi)始運(yùn)行。

            當(dāng)C6416 運(yùn)行了燒寫(xiě)程序,便把const 段中的待更新業(yè)務(wù)軟件數(shù)據(jù)燒寫(xiě)到FLASH指定的地址上。如此便完成了FLASH的業(yè)務(wù)軟件的更新。

            3 結(jié)語(yǔ)

            本文介紹的利用PCI 總線(xiàn)更新DSP 業(yè)務(wù)系統(tǒng)應(yīng)用程序的設(shè)計(jì),完全擺脫了JTAG口的制約,利用具有高速數(shù)據(jù)通信特性的,針對(duì)包含外圍FLASH和不包含外圍FLASH 的DSP 業(yè)務(wù)系統(tǒng),實(shí)現(xiàn)了應(yīng)用程序的更新。

            特別對(duì)于含有外圍FLASH 的DSP 業(yè)務(wù)系統(tǒng),本文設(shè)計(jì)的DSP 啟動(dòng)方式和FLASH 應(yīng)用流程,能高效地完成應(yīng)用程序的更新,同時(shí)實(shí)現(xiàn)了DSP啟動(dòng)時(shí)應(yīng)用程序加載的選擇。


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();