新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PCI 總線的DSP 系統應用程序的更新

        基于PCI 總線的DSP 系統應用程序的更新

        作者: 時間:2013-07-31 來源:網絡 收藏

          

          Base1:8 MB的非預取址映射。其訪問起始地址固定,為0×01800000,該存儲空間映射為DSP 片內寄存器。如圖5所示。

          

          Base2:PCI 16 B I/O 寄存器,上已介紹。

          上電后PCI 主機將遍歷整個PCI 總線,建立一棵樹,然后對每個樹上的結點(設備)進行上述3 個基地址的分配。利用這3 個基地址,PCI主機即可以訪問上的從設備的全部存儲空間。

          1.2.3 PCI中斷

          如果設置了PCIIEN 對應的中斷使能位,當對應的中斷源產生,DSP將進入中斷狀態。所有的中斷事件對應于一個CPU中斷:DSPINT.可以通過PCIIS中斷源寄存器來判斷產生中斷的中斷源。

          1.2.4 PCI引導

          PCI接口支持從PCI總線引導DSP啟動。當其他設備從復位狀態喚醒后,CPU被復位。在此期間,PCI主機可以盡可能的通過PCI初始化DSP內存。當PCI主機完成所需要的初始化工作,則向I/O寄存器HDCR.DSPINT位寫1,使DSP 核退出復位。DSP 則從地址0 處開始運行。值得注意是的是,當C6416 使用PCI 引導方式時,需要通過硬件設置來配置DSP 上電邏輯選擇PCI引導模式。

          2 利用PCI 總線來更新系統軟件的設計

          2.1 應用程序的數據格式生成

          通過DSP的開發平臺CCS,可以把編寫的應用程序編譯、鏈接成。out文件。該文件包含了應用程序的各個段的數據,如text段,cinit段,const段,switch段等。這些段是CCS的編譯器把所寫的C語言編譯成匯編語言,然后生成COFF目標文件,再鏈接實時動態庫和靜態庫生成DSP 核可執行的COFF 文件,提供給C6416 使用。

          但是該文件不可直接被FLASH 識別,同時也不可被C語言所識別。

          CCS 提供了一個實用工具hex6x.exe 來完成。out 文件的轉換[7-8].該工具可以把。out文件的COFF數據格式轉換成16 進制的ASCII 碼數據格式文件。hex.然后利用TI 公司提供的hex2aray.exe 工具,把生成的。hex 文件轉換成C語言能夠識別的數據數組格式文件。h.

          hex6x.exe 工具的使用可以直接在Windows 的cmd中調用命令。如下:

          hex6x -a -o firm.hex filename.out

          也可以創建一個命令文件來存放命令行操作和輸入、輸出文件命,以被hex6x.exe所調用。

          filename.out.

          -a

          -o firm.hex

          生成的。hex 文件都是以ASCII 格式所保存。利用hex2aray.exe工具則可以完成ASCII碼到16進制數據的轉換。利用該工具生成的。h文件把所有數據段的數據順次存放在一個數組中,這樣則可以被C語言所訪問。

          本設計中在CCS生成。out的文件夾中,加入了上述兩個工具,然后創建了一個命令文件c6416_test.cmd,來輸入hex6x.exe 所需要的命令行;創建了一個批處理文件c6416_test.bat,來綜合調用兩個工具,代碼如下:

          hex6x c6416_test.cmd

          hex2aray -i c6416_test.hex -o c6416_test.h

          2.2 PCI上電直接加載應用程序到DSP存儲空間

          對于PCI總線上的從DSP設備,如果沒有片內或片外FLASH,則PCI主機在上電時可以直接把從DSP設備的應用程序數據寫到DSP的片內RAM 或片外RAM,然后指定DSP PC指針運行的起始地址。而從DSP設備應用程序的數據應當存放在PCI主機的系統存儲設備中(如片外FLASH,電子盤等)。

          首先通過調試編譯DSP的應用程序,完成所有功能需求,生成C6416 可執行的。out 文件;然后利用上述工具,生成。out 文件所對應的。h 文件,該文件中數組的內容,則是應用程序的二進制代碼數據;接著通過硬件管腳電平控制,來使DSP 處于PCI 引導方式,并利用DSPPCI從寫模式,在系統上電后,主機把。h中的數據傳輸到指定的C6416程序存儲空間;最后向I/O 寄存器HDCR.

          DSPINT位寫1,使DSP核退出復位,C6416則從0地址開始運行。

          上述流程中有一個關鍵問題,就是在進行PCI數據傳輸時,存放數據的地址如何確定。這些地址表示的是應用程序各個數據段、代碼段在C6416中運行時所存放的位置,其由應用程序中的。cmd 文件指明。在應用程序。out生成后,可以查看。map文件來清楚的獲知各個段的存放地址。可以用。map 文件來明確主機PCI數據發送的具體地址,手動輸入各個段存放的起始地址。然而,此方法主要用于程序調試和測試,當應用程序發生變化,主機的PCI傳輸程序也需要變化;此外如果使用了DSP/BIOS,.out文件會包含很多的代碼段、數據段,手動輸入將是一個很繁瑣的工作。hex6x.exe工具有一個命令boot,利用該命令生成的數據包含了系統程序的入口地址c_int00 和各個段的起始地址、段的長度。利用這些信息,可以很方便的使用程序把各個段的數據寫入到指定的C6416存儲空間中,避免了繁瑣的手動輸入操作。由于當DSP退出復位后,PC指針是從0地址開始運行,如果數據段和代碼段是存放在片外RAM時,則需要在0 地址存放一段指針跳轉語句,使PC 指針跳轉到片外RAM,繼續運行。

          2.3 利用PCI總線完成從DSP設備外圍FLASH應用程序的更新

          更多的嵌入式設備中,從DSP 設備都接有外圍的FLASH 等ROM 設備,用來存放DSP 運行的應用程序。

          這樣一方面可以減少PCI主機存儲空間的壓力,同時可以提高從機的啟動速度。

          2.3.1 C6416的FLASH啟動方式

          C6416 的啟動方式是由硬件邏輯來決定,通過EMIFB 地址總線上的BEA[19:18]兩個管腳的上拉、下拉來決定引導配置。[0,1]:主機引導(HPI 或PCI);[1,0]:EMIFB 8bit 寬FLASH引導。

          當選擇FLASH 啟動時,C6416的引導邏輯決定了,從FLASH 的0 地址開始,將會拷貝1 KB 的數據到C6416 片內RAM 的0~1 KB 位置,然后C6416 的PC 指針將從片內RAM的0地址開始運行。那么對于所要啟動的應用程序的大小一般都是大于1 KB,因此可以利用二級引導來完成C6416 的程序加載。所謂二級引導,是指在應用程序的工程中,寫一段bootload程序,該程序主要完成EMIF接口的配置,和應用程序從FLASH向C6416存儲器搬移的工作。程序應當利用。cmd文件,來為bootload代碼分配存儲空間,其空間地址范圍應該是0~1 KB.同時燒寫bootload 到FLASH 時,應當燒寫到0~1 KB的空間范圍內。當系統上電,FLASH 中的0~1 KB數據自動搬移到C6416片內RAM 0~1 KB,然后PC指針從0開始運行,此時EMIFA 和EMIFB將被配置,允許C6416可以訪問片外RAM和片外FLASH;然后完成從FLASH 到存儲器(片內或片外RAM)的代碼段、數據段數據搬移;最后設置PC指針跳轉到應用程序的入口地址c_int00 來初始化C 語言環境,從而開始運行應用程序。Bootload程序應該用匯編來完成,因為它是在C語言環境初始化之前被執行,此時C6416是不識別C語言的語言符號的。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 双城市| 大连市| 永城市| 抚宁县| 金秀| 新田县| 杂多县| 天长市| 大荔县| 海林市| 巫溪县| 习水县| 南皮县| 衡水市| 大庆市| 扎鲁特旗| 仁化县| 聊城市| 寿光市| 稷山县| 宁武县| 昌吉市| 岳普湖县| 静安区| 尉犁县| 淅川县| 五大连池市| 新民市| 林芝县| 临沭县| 漾濞| 金山区| 全州县| 宣化县| 哈尔滨市| 凭祥市| 长宁县| 台东县| 乌苏市| 油尖旺区| 虎林市|