新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C5402 DSP自舉引導方法的分析與研究

        C5402 DSP自舉引導方法的分析與研究

        作者: 時間:2009-03-26 來源:網絡 收藏

        0000:F831

          STM #0h, @xentry ;初始化程序入口地址

          STM #boot, @entry ;

          PORTR #0FFFFh,@src ;從I/O口讀取自舉表的首地址

        MVDK @src,AR1 ;將自舉表的首地址送至AR1中

        LD *AR1+,A ;(AR1)→A, AR1=AR1+1

          SUB #010AAh,A,B ;B=A-10AAh

          BC par16,BEQ ;若B=0,執行16位并行自舉程序

        AND #0FFh,A ;屏蔽A高16位

          SUB #08h,A,B ;B=A-08h

          BC chk_data,BNEQ ;若B≠0, 程序跳轉至chk_data

          LD *AR1+,A ; (AR1)→A, AR1=AR1+1

          AND #0FFh,A ;屏蔽A高16位

          SUB #0AAh,A ;A=A-0AAh

          BC par08,AEQ ;若A=0, 執行8位并行自舉程序chk_data STM #0FFFFh,AR1 ;從數據存儲器讀取自舉表首地址

          NOP ;避免流水線沖突

          NOP ;避免流水線沖突

          LD *AR1+,A ;(AR1)→A, AR1=AR1+1

          STLM A,AR1 ;將A低16位內容存入AR1中

          NOP ;避免流水線沖突

          NOP ;避免流水線沖突

          LD *AR1+,A ;(AR1)→A, AR1=AR1+1

          SUB #010AAh,A,B ;B=A-10AAh

          BC par16,BEQ ;若B=0,執行16位并行自舉程序

          STM #0FFFFh,AR1 ;(0FFFFh)→AR1

          NOP ;避免流水線沖突

          NOP ;避免流水線沖突

          LDU *AR1-,A ;(AR1)→A,AR1=AR1-1,符號位置0

          AND #0FFh,A ;屏蔽A高16位

          SUB #08h,A,B ;B=A-08h

          BC ser_ini,BNEQ ;若B≠0, 程序跳轉至ser_ini

          LD *AR1+,A ;(AR1)→A, AR1=AR1+1

          AND #0FFh,A ;屏蔽A高16位

          SUB #0AAh,A ;A=A-0AAh

          BC par08,AEQ ;若A=0,執行8位并行自舉程序

          ser_ini

          ... ;標準串行口自舉程序

          par08

          ... ;8位并行自舉搬移程序

          par16

          ... ;16位并行自舉搬移程序

        3 自舉表的建立

          自舉表的內容不僅包括了欲加載的各段代碼,而且包括各段代碼長度、各代碼段存放的目標地址、程序入口地址等信息。因此若想利用自舉功能,首先必須正確建立自舉表。自舉表可由hex500格式轉換器自動生成。hex500實際為一通用程序,它將公共目標文件格式――COFF文件轉換成各種EPROM或FLASH的編程格式。因此,在使用hex500工具之前,首先必須對的匯編語言、C語言或兩者的混合編程語言進行匯編、編譯、鏈接,生成COFF格式的.out文件,然后再通過設置適當的選項生成用戶所要求的自舉表。

          為了書寫及修改方便,可將hex500的所有選項及輸入輸出文件名以.cmd 批處理命令文件的形式保存。下面以一個匯編語言程序example.asm為例,說明建立’自舉表的具體步驟。

          第一步:對example.asm進行編譯,生成example.obj文件。不論是用Windows 環境下的CCS(Code Composer Studio),還是用DOS環境下的asm500命令文件,編譯時必須加選項―v548,且DOS的asm500版本必須在1.2以上,否則無法生成正確的’自舉表。

          第二步:鏈接,生成example.out文件。

          第三步:使用hex500格式轉換工具,將example.out文件轉換成example.hex文件,命令格式如下:

          C:tic5400cgtoolsbin>hex500 example.cmd

          注:在上面的命令行中,example的擴展名cmd一定要加上。

          以下是命令文件example.cmd的內容:

          example.out /*被轉換的COFF文件名

          -e 200h /*程序入口地址被定義為200h

          -a /*轉換為ASCII-hex格式文件

          -o example.hex /*轉換后文件名為example.hex

          -memwidth 16 /*外部數據存儲器字寬為16位

          -romwidth 16 /*ROM字寬為16位

          -boot /*將COFF文件中各段均轉換至自舉表

          -bootorg 8000h /*存放自舉表的首地址為8000h

          如果example.asm是一個簡單的求乘法累加運算,程序內容如下[2]:

          *****************************************

          * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 *

          *****************************************



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平凉市| 屯昌县| 涿鹿县| 瑞昌市| 江西省| 泰顺县| 思茅市| 郸城县| 新宾| 黑山县| 巩义市| 肃宁县| 呼玛县| 通山县| 筠连县| 台前县| 获嘉县| 慈溪市| 凌源市| 游戏| 洪泽县| 太原市| 革吉县| 东兴市| 北票市| 赫章县| 高邮市| 泾阳县| 毕节市| 万荣县| 永川市| 青田县| 丹巴县| 闸北区| 揭西县| 彭阳县| 苏州市| 胶南市| 田林县| 错那县| 囊谦县|