新聞中心

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

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

作者: 時間:2013-06-15 來源:網(wǎng)絡(luò) 收藏

2.3.2 C6416從機(jī)的啟動模式設(shè)計
編寫一個C6416的程序,該程序完成FLASH到片外SDRAM的數(shù)據(jù)拷貝。而拷貝的數(shù)據(jù)則是C6416具體要完成的業(yè)務(wù)任務(wù)。同時該程序包含了Bootload程序,用來完成上電后的1 KB FLASH數(shù)據(jù)搬移。見圖6。

本文引用地址:http://2s4d.com/article/148014.htm

d.JPG


第一步:當(dāng)C6416上電后,首先自動完成A搬移操作,“Bootload程序”將被搬移到C6416片內(nèi)RAM的0起始地址,后開始運(yùn)行該段代碼,該段代碼是利用匯編語言編寫,其在C語言庫初始化前被執(zhí)行;
第二步:“Bootload程序”的運(yùn)行將會配置C6416的EMIF寄存器,使能片外SDRAM,同時使B搬移操作完成:“程序選擇搬移代碼”將被搬移到C6416片內(nèi)RAM,并從程序入口地址開始執(zhí)行該代碼段;
第三步:“程序選擇搬移代碼”的執(zhí)行將對業(yè)務(wù)代碼進(jìn)行選擇,查看需要加載“業(yè)務(wù)代碼1”還是“業(yè)務(wù)代碼2”,把選擇的業(yè)務(wù)代碼搬移到片外SDRAM中,完成C搬移操作或D搬移操作,然后從程序入口地址開運(yùn)行,從而被選中的業(yè)務(wù)代碼將被執(zhí)行。
其中“程序選擇搬移代碼”是一段由C語言編寫的C6416啟動輔助代碼。該段代碼主要完成了業(yè)務(wù)代碼的選擇和搬移工作。應(yīng)用用戶可以在C6416片外FLASH中存放多個業(yè)務(wù)代碼,通過串口、總線等接口向C6416發(fā)送業(yè)務(wù)代碼選擇命令,在“程序選擇轉(zhuǎn)移代碼”中,對該命令進(jìn)行分析,根據(jù)協(xié)議選擇所指定的業(yè)務(wù)代碼。當(dāng)選擇了所需的業(yè)務(wù)代碼,就需要完成代碼的FLASH到C6416存儲器的搬移。由于業(yè)務(wù)代碼是利用上述的hex6x.exe和hex2aray.exe工具所生成的16進(jìn)制數(shù)據(jù),其包含了業(yè)務(wù)代碼各個段的起始地址、段長和段數(shù)據(jù),因此需要利用“程序選擇搬移代碼”來完成業(yè)務(wù)代碼的解析,并把各個段從FLASH搬移到指定的C6416存儲空間中。最后把程序指針指定到程序的入口地址,即可運(yùn)行業(yè)務(wù)代碼。該啟動方式的設(shè)計有助于在實際應(yīng)用中針對不同的設(shè)備和需求選擇不同的業(yè)務(wù)應(yīng)用代碼,同時也有助于FLASH中的業(yè)務(wù)代碼的更新。
2.3.3 利用總線更新FLASH中的業(yè)務(wù)代碼
當(dāng)成型的設(shè)備需要對固化在DSP外圍FLASH中的業(yè)務(wù)代碼進(jìn)行更新時,應(yīng)該在DSP上運(yùn)行FLASH燒寫程序,把業(yè)務(wù)代碼燒寫到FLASH中。本設(shè)計利用啟動方式,通過上位機(jī)來啟動C6416運(yùn)行FLASH燒寫程序,完成業(yè)務(wù)代碼的FLASH燒寫。利用上述的C6416從機(jī)啟動模式,可以很容易的發(fā)現(xiàn),當(dāng)需要完成FLASH軟件更新時,只需要更新“業(yè)務(wù)代碼”即可,而“Bootload”和“程序選擇搬移代碼”不需要變更。如此業(yè)務(wù)代碼更新就很方便,因為其只需要考慮程序應(yīng)用上的變換,而不需要過多的考慮程序代碼、數(shù)據(jù)段地址分配的問題,更不需要考慮C6416特有的僅1 KB數(shù)據(jù)上電自動搬移所帶來的麻煩。具體步驟如圖7所示。

e.JPG


第一步:根據(jù)C6416外圍所選的FLASH特性,來編寫其代碼燒寫程序。在該程序中把需要更新的業(yè)務(wù)代碼作為常量數(shù)據(jù)包含到工程中的eonst段中。
第二步:利用hex6x.exe和hex2aray.exe工具來將FLASH燒寫程序轉(zhuǎn)換成C語言可以識別的16進(jìn)制數(shù)組數(shù)據(jù);
第三步:選擇C6416為PCI主機(jī)啟動模式,主機(jī)利用PCI總線將轉(zhuǎn)換為16進(jìn)制的燒寫程序數(shù)據(jù)搬移到C6416片內(nèi)存儲器;
第四步:主機(jī)把C6416 I/O空間寄存器HDCR.DSPINT位置1,使C6416退出復(fù)位,開始運(yùn)行。
當(dāng)C6416運(yùn)行了燒寫程序,便把const段中的待更新業(yè)務(wù)軟件數(shù)據(jù)燒寫到FLASH指定的地址上。如此便完成了FLASH的業(yè)務(wù)軟件的更新。

3 結(jié)語
本文介紹的利用PCI總線更新應(yīng)用程序的設(shè)計,完全擺脫了JTAG口的制約,利用具有高速數(shù)據(jù)通信特性的PCI總線,針對包含外圍FLASH和不包含外圍FLASH的,實現(xiàn)了應(yīng)用程序的更新。
特別對于含有外圍FLASH的,本文設(shè)計的DSP啟動方式和FLASH應(yīng)用程序更新流程,能高效地完成應(yīng)用程序的更新,同時實現(xiàn)了DSP啟動時應(yīng)用程序加載的選擇。


上一頁 1 2 3 下一頁

評論


相關(guān)推薦

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

關(guān)閉