《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM的TMS320C6455 DSP HPI的動態程序加載設計與實現
基于ARM的TMS320C6455 DSP HPI的動態程序加載設計與實現
來源:電子技術應用2013年第6期
趙建波1,胡文若2,習 勇1,陳路輝1
1.國防科技大學 電子科學與工程學院,湖南 長沙410073; 2.江西新余學院 數學與計算機科學學院,江西 新余338004
摘要: 設計了ARM與DSP HPI(Host Port Interface 主機接口)的通信接口,并通過該接口完成了ARM對DSP程序的動態加載。該方法減少了DSP對于外部非易失性存儲器的需求,同時提高了DSP加載方式的靈活性,對于軟件無線電波形組件的動態加載有重要的意義。
中圖分類號: TP399
文獻標識碼: B
文章編號: 0258-7998(2013)06-0014-03
Design and implementation of TMS320C6455 DSP HPI dynamic program loading based on ARM
Zhao Jianbo1,Hu Wenruo2,Xi Yong1,Chen Luhui1
1.School of Electronic Science & Engineering, National University of Defense Technology, Changsha 410073,China; 2.School of Mathematics & Computer Science, Xinyu University,Xinyu 338004,China
Abstract: This article designs the communication interface between ARM and DSP HPI. The ARM processor can dynamically load the DSP program through this interface. This method reduces the requirements of external nonvolatile memory, and improves the flexibility of the DSP boot mode, which is also important for the loading of the software defined radio waveform components.
Key words : ARM;DSP HPI;interface design;dynamic program loading

    軟件無線電的基本思想是通過構造一個通用、標準、模塊化的硬件平臺并加載不同的軟件來實現不同的通信功能,使用不同的通信標準(如工作頻段、調制解調類型、數據格式、加密模式、通信協議等),構成具有高度靈活性的通信設備(如多模手機、多功能基站、多波形電臺等)[1]。

    典型的軟件無線電通信設備包含CPU、DSP和FPGA等波形處理單元。一般來說,CPU完成系統控制與波形的網絡協議功能,而DSP和FPGA完成波形的物理層和部分協議功能。軟件無線電通信設備具有波形可動態加載的特點,這對系統設備的軟硬件設計提出了要求,要求CPU能夠對DSP和FPGA波形組件程序進行動態加載。
    BCNG-SDR-2012是自主研發的軟件無線電通信平臺,由一片Samsung公司的S3C2440 ARM920T CPU、一片TI公司的TMS320C6455 DSP和兩片Xilinx公司的高性能FPGA(VIRTEX-5和SPARTAN-6)以及可配置的寬頻段射頻模塊組成,具有強大的通信信號處理能力。本文利用TMS320C6455 HPI口,在上述平臺上實現了ARM對DSP的程序動態加載功能,從而為軟件無線電的實現提供了有力的支撐。
1 TMS320C6455 HPI啟動流程
1.1 TMS320C6455 DSP簡介

    TMS320C6455是TI公司推出的高性能定點數字信號處理器[2],最高主頻為1.2 GHz,在該主頻下最高性能可達9 600 MIPS(Million Instructions Per Second)。該芯片的外設包括用于處理器間通信的 Serial RapidIO總線、千兆以太網存儲接入控制器(MAC) 、66 MHz外設組件互連(PCI)總線接口、用戶可配置的16 bit或者32 bit的主機接口HPI等。C6455 DSP建立在增強型C64x+DSP內核基礎之上,該內核添加了專用的新指令,與基于TI的高級C64x DSP架構的代碼相比,其代碼尺寸平均縮短了20%~30%,周期效率提高了20%。
    該芯片集成了大量的片上存儲器,這些存儲器被組織為一個兩級存儲系統。其中,第一級(L1)為2個32 KB存儲器,可配置為數據Cache和程序Cache;第二級(L2)為一塊2 MB的存儲器,可作為程序或者數據存儲器。
1.2 TMS320C6455 DSP的HPI特性
    主機接口HPI(Host Port Interface)是一個并行端口,主要用于DSP與其他總線或CPU進行連接,可實現高速、并行的數據通信。HPI使一個外部主機可以通過16 bit或者32 bit的并行接口直接訪問DSP的內部或外部存儲器。HPI有3個寄存器,分別為HPIC控制寄存器、HPIA地址寄存器、HPID數據寄存器,均為32 bit。如圖1顯示了HPI在主機與DSP數據交互中的位置[3],通過HPI DMA邏輯以及資源交換控制邏輯,主機CPU可以訪問DSP的內存、EMIF以及其他設備。

1.3 使用HPI的啟動流程
    TMS320C6455復位和上電時的引導模式[4]主要有NO BOOT模式、HPI引導模式、Flash引導模式等。具體采用哪種引導模式是由復位或上電時管腳BOOTMODE[3:0]的狀態決定的[5]。本文使用的平臺中,BOOTMODE[3:0]管腳可通過撥碼開關來設置。
    如圖2顯示了使用HPI的啟動流程。系統上電復位后,首先采樣管腳BOOTMODE[3:0]的狀態確定啟動方式(即引導模式)。由于本文采用的是HPI引導模式,上電后DSP內核處于掛起狀態;接下來外部主機通過HPI口直接將代碼和數據加載到DSP的內存中,在這期間DSP內核保持掛起狀態不變;當主機完成程序加載后,主機向HPIC中的DSPINT位寫1,向DSP發出中斷;DSP收到中斷后,DSP內核從掛起狀態喚醒,從L2的基地址(0x800000)處開始執行程序。

2 硬件設計與寄存器讀寫驅動
    在本文的硬件平臺設計中,ARM與DSP HPI的接口連線如圖3所示。從ARM端看,由數據線、地址線、讀寫控制線和片選線組成,其中數據線通過162245總線隔離器進行雙向傳輸。

 

 

    本文使用地址線作為HPI的控制信號,各信號對應的地址線如圖3所示。表1顯示了信號線的組合對應的訪問類型。
    需要特別注意的是,由于本文中的數據總線是16 bit的,使得ARM訪問的地址必須是偶數,因此不使用ADDR[0],從而有了表1中的偶數偏移地址。考慮到這一點,結合表1,下面以HPIC為例,給出其在ARM加載程序中的地址定義,其中_F和_S對應HHWIL信號,指明是第1個半字還是第2個半字。
    unsigned long Write_HPIC_F_ADDR=CS3_BASE_ADDR+0x0;
    unsigned long Write_HPIC_S_ADDR=CS3_BASE_ADDR+0x2;
    unsigned long Read_HPIC_F_ADDR=CS3_BASE_ADDR+0x4;
    unsigned long Read_HPIC_S_ADDR=CS3_BASE_ADDR+0x6;
    根據上述定義,從ARM來看,對于每個寄存器都有4個地址,在數據訪問中必須選擇正確的地址來操作。上述定義中,CS3_BASE_ADDR對應著DSP HPI的片選基地址,由于HPI 掛到了ARM的nGCS3片選上,根據S3C2440數據手冊[6]可知其為0x18000000。
    對HPIA和HPID的地址定義類似。定義了寄存器的地址后,再定義如下宏函數[7]來實現對相應寄存器的讀寫操作:
    #define IOWrite(reg, data)   *(unsigned short *)(reg)=data
//寫寄存器宏定義
    #define IORead(reg)         *(unsigned short *)(reg)
//讀寄存器宏定義
3 HPI啟動軟件實現流程
    主機通過HPIC、HPIA、HPID和16 bit數據線與DSP進行數據交換和中斷控制。HPI加載軟件實現流程如圖4所示。

    (1)初始化HPIC
    設置相應比特位,在這里僅僅設置了HPIC的HWOB位,該比特位設置第一個半字是所傳32 bit數據的高16 bit(MSB16)還是低16 bit(LSB16)。在這里需要注意HHWIL信號線與HWOB位所起作用的不同,兩者的共同協作才能確保數據的正確傳輸。操作如下:
      temp1=IORead(Read_HPIC_F_ADDR);
//讀HPIC的第1個半字
      temp2=IORead(Read_HPIC_S_ADDR);
//讀HPIC的第2個半字
      IOWrite(Write_HPIC_F_ADDR,temp1|0x1);
//設置HPIC中的HWOB位
      IOWrite(Write_HPIC_S_ADDR,temp2|0x1);
//設置HPIC中的HWOB位
      需要注意的是,HPIC的高16 bit和低16 bit內容是相同的,所以寫入相同的數據進行設置。
      (2)初始化HPIA
      將操作地址寫到HPIA中,由前所述,DSP要從L2的基地址(0x800000)處開始執行程序。因此需要將程序加載到從L2的基地址開始的內存中。對于TMS320C6455,L2的基地址為0x800000,芯片要求HPIA中寫入32 bit的字地址,因此要將字節地址轉為字地址,即0x200000,所以寫HPIA寄存器代碼如下:
    IOWrite(Write_HPIA_F_ADDR,0x0000);
    for(time_out=0;time_out<HRDY_TIMEOUT;time_out++);
    IOWrite(Write_HPIA_S_ADDR,0x20);
    for(time_out=0;time_out<HRDY_TIMEOUT;time_out++);
    根據TMS320C6455的芯片手冊,HPIA的2個半字的寫操作之間需要增加一定的延時。因此,上面的代碼中設定了延時。具體時間參考TMS320C6455的芯片手冊[2]。
    (3)向HPID中寫入數據
    存取HPID時,通過控制HCNTL[1:0]信號可選擇帶地址自增的讀寫操作或是不帶地址自增的讀寫操作。當訪問連續的DSP存儲空間時,使用帶地址自增的讀寫操作只需要對HPIA寄存器賦值一次即可,能夠給數據存取操作帶來很大的方便。本文操作的是連續地址,因此使用帶地址自增的HPID,這樣僅需要進行一次設置HPIA,之后便不用再對其進行設置。
    (4)向HPIC中的DSPINT位寫入1,向DSP發出中斷
    至此,加載數據全部寫入內存。接下來通知DSP數據加載完畢,這需要通過設置HPIC中的DSPINT位來完成,實現代碼如下:
    temp3=IORead(Read_HPIC_F_ADDR);
    temp4=IORead(Read_HPIC_S_ADDR);
    IOWrite(Write_HPIC_F_ADDR,temp3|0x2);
    IOWrite(Write_HPIC_S_ADDR,temp4|0x2);
    這樣當主機向DSP發送了DSPINT中斷后,DSP會從L2基地址處開始執行。但是對于DSP的C程序來說,是要從_c_int00處開始執行,因此需要在L2基地址處增加跳轉指令,使得程序跳轉到_c_int00處,這樣程序便可以正確運行,從而實現DSP程序的動態加載。
    需要注意的是,由于項目中電路板設計使用HPI16模式,因此對HPI任何一個寄存器的訪問,主機都需在HPI總線上進行2次半字存取,否則可能會引起整個數據的丟失或是其他不可預料的錯誤。
4 格式轉換
    使用DSP集成開發環境CCS生成的文件一般為.out文件,該文件是通用目標文件格式(COFF)的目標文件,COFF文件中包含一些定位符號以及一些頭信息等,而本文加載到內存中的數據是CPU能夠直接運行的代碼,不能包含任何的其他冗余信息,因此不能直接將COFF文件加載到內存中。本文使用TI公司提供的工具hex6x.exe和hex2aray.exe進行格式的轉換,其中hex6x.exe將COFF文件轉換為hex文件,hex2aray.exe將hex文件轉換為一個數組,這樣,直接讀取數組中的數據并將其加載到內存中即可。
    本文在介紹DSP主機接口并通過HPI接口啟動流程的基礎上,詳細介紹了在項目平臺上ARM通過DSP的HPI口動態加載DSP的硬件設計與軟件實現,同時詳細描述了設計的注意事項、啟動跳轉以及格式轉換等問題。實際的測試表明,加載1 MB的內存數據僅需要0.28 s,可見該加載方法加載速度快,靈活性好,很好地解決了軟件無線電設備對DSP波形組件可重構的要求。
參考文獻
[1] MITOLA J.The software radio architecture[J].IEEE Communications Magazine,1995,15(5):26-38.
[2] Texas Instruments.TMS320C6455 fixed-point digital signal  processor[EB/OL].[2012-10-10].http://www.ti.com.
[3] Texas Instruments.TMS320C645x DSP host port interface (HPI) user&prime;s guide[EB/OL].[2012-10-10].http://www.ti.com.
[4] 吳海洲,劉恒甫,黃克武.基于TMS320C6455的DSP加載模式研究[J].電子測量技術,2008,31(6):155-162.
[5] Texas Instruments.TMS320C645x/C647x DSP bootloader user&prime;s guide[EB/OL].[2012-10-10].http://www.ti.com.
[6] Texas Instruments.S3C2440A 32-BIT CMOS Microcontroller user&prime;s manual[EB/OL].[2012-10-10].http://www.samsungsemi.com.
[7] Texas Instruments.TMS320C6000 programmer&prime;s guide[EB/OL].[2012-10-10].http://www.ti.com.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 黄色免费在线网址 | 五月婷婷爱| 日本高清一本二本三本如色坊 | videos18欧美另类极品 | 亚洲欧美精品伊人久久 | 高清一级做a爱过程不卡视频 | 欧美日韩无 | 日韩在线播放全免费 | 亚洲欧美一区二区三区在线播放 | 拔擦拔擦8x华人免费久久 | 久月婷婷 | 免费特黄视频 | 成年视频在线播放 | 久草新免费| 在线免费视频一区 | 日本人的色道免费网站 | 最近免费字幕中文大全在线观看 | 国产精品久久久久久久久免费观看 | 特级夫妻大片免费在线播放 | 九九国产精品视频 | 欧美成人看片 | 三级福利 | 4455vw亚洲毛片 | 18岁免费网站| 日韩三级影视 | 成人ab片 | 天天做天天爱天天爽 | 丝袜美腿中文字幕 | 丁香天五香天堂园 | 欧美成人精品一区二区三区 | 国内最真实的xxxx人伦 | 亚洲午夜高清 | 欧美视频在线免费播放 | 日韩欧美亚洲香蕉七次郎 | 精品一区在线 | 国产免费a视频 | 日韩一本| 亚洲专区在线 | 欧美午夜一艳片欧美精品 | 成人叼嘿视频免费网站 | 亚洲无线一二三四区手机 |