<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C5402 DSP自舉引導(dǎo)方法的分析與研究

          C5402 DSP自舉引導(dǎo)方法的分析與研究

          作者: 時(shí)間:2009-03-26 來(lái)源:網(wǎng)絡(luò) 收藏

          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,執(zhí)行16位并行自舉程序

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

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

            BC chk_data,BNEQ ;若B≠0, 程序跳轉(zhuǎn)至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, 執(zhí)行8位并行自舉程序chk_data STM #0FFFFh,AR1 ;從數(shù)據(jù)存儲(chǔ)器讀取自舉表首地址

            NOP ;避免流水線沖突

            NOP ;避免流水線沖突

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

            STLM A,AR1 ;將A低16位內(nèi)容存入AR1中

            NOP ;避免流水線沖突

            NOP ;避免流水線沖突

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

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

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

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

            NOP ;避免流水線沖突

            NOP ;避免流水線沖突

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

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

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

            BC ser_ini,BNEQ ;若B≠0, 程序跳轉(zhuǎn)至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,執(zhí)行8位并行自舉程序

            ser_ini

            ... ;標(biāo)準(zhǔn)串行口自舉程序

            par08

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

            par16

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

          3 自舉表的建立

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

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

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

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

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

            C:tic5400cgtoolsbin>hex500 example.cmd

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

            以下是命令文件example.cmd的內(nèi)容:

            example.out /*被轉(zhuǎn)換的COFF文件名

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

            -a /*轉(zhuǎn)換為ASCII-hex格式文件

            -o example.hex /*轉(zhuǎn)換后文件名為example.hex

            -memwidth 16 /*外部數(shù)據(jù)存儲(chǔ)器字寬為16位

            -romwidth 16 /*ROM字寬為16位

            -boot /*將COFF文件中各段均轉(zhuǎn)換至自舉表

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

            如果example.asm是一個(gè)簡(jiǎn)單的求乘法累加運(yùn)算,程序內(nèi)容如下[2]:

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

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

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



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();