新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于閃爍存儲器的TMS320VC5409 DSP并行引導裝載方法

        基于閃爍存儲器的TMS320VC5409 DSP并行引導裝載方法

        作者: 時間:2009-10-29 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/152305.htm

        上電復位后,檢測其MP/MC引腳,如果MP/MC=0,從0xFF80h處開始執行片內程序。進入程序后,如有INT2請求中斷,則進入HPI 方式;如有INT3請求中斷,則進入EEPROM串行口引導方式;否則就進入引導方式。其詳細引導過程如圖3所示。

        片內引導方式前半部件是I/O空間引導方式,我們不采用此方式,程序繼續運行直到從數據空間0xFFFFh地址讀入一個地址數據,此數據為用戶自舉表的入口地址。這時片內引導程序就開始執行FLASH中的用戶自舉表,若自舉表的第一個字是0x10AA,則表示是16位并行引導模式。

        4 FLASH中自舉表(Boottable)的存儲格式

        為了實現加電自舉,FLASH的數據必須按照自舉表的格式“燒寫”。自舉表的作用是:運行此表時,首先根據自舉表中前部分用戶起始地址把后面的用戶程序代碼加載到DSP片內程序空間中相應的用戶地址區域(由于FLASH與DSP時間不匹配,要設置好SWWR和BSCR寄存器),然后根據自舉表中的程序入口址,在程序空間相應的地址開始運行程序。表2為16位并行自舉的代碼結構(自舉表在空間允許的情況下可以放幾個程序代碼段,為便于說明,在此只說明一個程序代碼段的情況)。

        表2 并行自舉表的代碼結構

        10AA(并行尋址格式)
        SWWSR寄存器的初始值
        BSCR寄存器的初始值
        用戶程序入口的XPC
        用戶程序入口的地址PC
        用戶程序的長度
        用戶程序起始地址XPC
        用戶程序起始地址PC
        用戶程序代碼…
        0000(表示自舉表結束)

        下面結合一個實例,說明利用hex500命令生成二進制數據自舉表的。

        (1)所編寫的一個用戶程序名為myblink.C,在編譯鏈接成功后生成的輸出文件名為myblink.out;程序空間的開始地址為0x1400h,程序執行的入口地址為0x144Fh。利用hex500工具,生成文件名為myblink.hex的二進制數據,hex500命令后添加如下條件:

        mybilink.out ;要轉換的.out文件

        -a ;生成ASCII碼的形式

        -e 0x144Fh ;程序空間中程序運行的開始

        地址

        -boot ;轉換成自舉表的形式

        -bootorg PARALLEL ;并行格式

        -byte ;按字節分配地址

        -memwidth 16 ;系統字寬度為16位

        -romwidth 16 ;ROM物理寬度為16位

        -swwsr 0x7FFFh ;SWWSR設置軟件等待周期

        -bscr 0xF800h ;BSCR設置段開關控制寄存器值0xF800

        -o myblink.hex ;輸出的二進制數據文件名

        (2)生成的進制數據文件myblink.hex的數據為:

        0x10AA 0x7FFF 0xF800 0x0000 0x144F 0x00D1 0x0000 0x1400 …(用戶程序代碼)… 0x0000;

        前8個數據解釋分別為:

        0x10AAh:16位并行尋址格式;

        0x7FFFh:SWWSR初始值為0x7FFFh,因為FLASH的運行速度比DSP慢,等待7個周期;

        0xF8000h:BSCR初始值為0xF800h;

        0x0000h:自舉表程序入口的XPC=0;

        0x144Fh:自舉表程序入口的地址=0x144Fh;

        0x00D1h:自舉表程序的長度=0xD1h;

        0x0000h:自舉表起始地址XPC=0;

        0x1400h:自舉表的起始地址=0x1400h。

        (3)編寫一個數據轉換程序,把二進制數據文件myblink.hex轉換為數組頭文件myblink.h。在CCS環境下,FLASH的“燒寫”主程序包含此頭文件,編譯鏈接后通過仿真器下載到DSP中,運行DSP,用戶程序就被“燒入”FLASH中了。

        實際應用是:在數據空間地址0xFFFFh(也就是FLASH的空間0xFFFFh)中“燒寫”數據0x9000h(FLASH中存放的自舉表起始地址),在FLASH的地址0x9000h開始“燒入”用戶自舉表數據即myblink.h中的數組數據。

        DSP 運行情況是:依據第3節所述的引導過程,經過一系列的設置,使DSP尋址到數據空間地址0xFFFFh,得到自舉表的起始地址0x9000h,PC指針指向0x9000h,執行自舉表的數據,根據自舉表寫入信息,把后面的程序入程序空間起始地址0x1400h(XPC=0)(這時通過仿真器查看程序空間0x1400h開始的數據,與仿真器下載的myblink.out文件數據是一致的)。然后,DSP的PC指針指向程序入口地址0x144Fh (XPC=0)開始執行用戶程序,從而完成了DSP利用FLASH實現16位并行引導裝載的過程。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 赞皇县| 庆元县| 承德县| 察雅县| 昌黎县| 威远县| 肇东市| 麻江县| 东阳市| 九寨沟县| 五常市| 丰城市| 贺州市| 陕西省| 嫩江县| 寿宁县| 清新县| 宾阳县| 绥阳县| 宝兴县| 栾川县| 禹州市| 扬州市| 江山市| 凌海市| 府谷县| 勐海县| 宜丰县| 阿巴嘎旗| 定州市| 隆昌县| 莲花县| 津南区| 沐川县| 舒兰市| 开阳县| 南汇区| 烟台市| 汉中市| 达日县| 余江县|