<td id="n3ws3"></td>
          <th id="n3ws3"></th>
            <b id="n3ws3"><menuitem id="n3ws3"></menuitem></b>
            <del id="n3ws3"><form id="n3ws3"></form></del>
            <b id="n3ws3"><menuitem id="n3ws3"></menuitem></b>
          1. <dd id="n3ws3"><dl id="n3ws3"></dl></dd>
            射頻IC卡讀卡器,RFID讀寫器,讀寫模塊產(chǎn)品研發(fā)定制和銷售,軟件定制服務(wù)。我們的目標(biāo):一流的產(chǎn)品,五星級服務(wù)!對客戶的需求做出快速響應(yīng)。
            企業(yè)使用員工卡登錄計(jì)算機(jī)配置
            Windows智能卡登錄系統(tǒng)
            WEB與發(fā)卡器
            WEB瀏覽器與UHF超高頻讀卡器
            WEB讀卡器 IC卡(NFC)發(fā)卡器
            PLC讀卡器 IC卡模塊
            安卓讀卡器 UHF讀卡器
            PCSC讀卡器 智能卡登錄
            新聞搜索
             
            最新新聞
            1  如何給IC卡寫自定義
            2  如何配置刷卡登錄電腦
            3  插卡登錄拔卡鎖屏
            4  在web頁面實(shí)現(xiàn)智能
            5  關(guān)于IC卡密鑰理解和
            6  BS架構(gòu)下NFC讀寫
            7  關(guān)于IC卡密鑰理解和
            8  如何配置NFC讀卡器
            9  企業(yè)使用員工卡登錄計(jì)
            10  Java JNI調(diào)用
            熱門新聞 點(diǎn)擊
             友我科技推出新一代農(nóng) 182022
             友我科技RFID讀寫 178513
             友我科技發(fā)布PC/S 178418
             友我科技RFID產(chǎn)品 115168
             射頻IC卡和IC卡讀 77865
             射頻卡讀寫模塊選購指 61047
             友我科技PCSC雙界 51430
             ISO14443 I 26482
             射頻卡讀寫器發(fā)卡器介 23816
             接觸式IC卡接口原理 18984
            產(chǎn)品推薦
               
              射頻綜合開發(fā)板(RC632)  
             
               
              RFID開發(fā)板(RC632)  
             
               
              射頻卡開發(fā)板(FM1702)  
             
               
              射頻卡開發(fā)板(RC530)  
             
               
              FM1725開發(fā)板  
             
               
              125K開發(fā)板(2270B)  
             
                 新 聞 中 心

            用C語言開發(fā)DSP嵌入式系統(tǒng)

            雙擊自動(dòng)滾屏 發(fā)布者:YOWO RFID 發(fā)布時(shí)間: 閱讀:7167

            用C語言開發(fā)DSP嵌入式系統(tǒng)

            摘 要:目前很多嵌入式系統(tǒng)以DSP為核心構(gòu)建,但是采用匯編語言開發(fā)DSP系統(tǒng)存在開發(fā)難度大、開發(fā)周期長、維護(hù)性差等缺點(diǎn),應(yīng)用C語言開發(fā)DSP系統(tǒng)是廣大嵌入式開發(fā)者的迫切要求。有關(guān)單片機(jī)的C語言開發(fā)有相當(dāng)多的資料可以參考,而DSP系統(tǒng)的C語言開發(fā)卻很少見,本文以TI公司的DSP器件TMS320F24X系列為例講述怎樣用C語言開發(fā)一個(gè)完整的DSP嵌入式系統(tǒng)。

            關(guān)鍵詞:嵌入式系統(tǒng)、DSP系統(tǒng)、C語言開發(fā)、TMS320F24X系列

            引言

            大家在開發(fā)嵌入式產(chǎn)品時(shí)首先會(huì)想到用控制器的匯編語言編寫監(jiān)控程序,主要原因是:一、匯編語言生成的程序?qū)?yīng)的二進(jìn)制代碼少,程序執(zhí)行要比高級語言生成的程序快。二、控制器剛問世時(shí),沒有相應(yīng)的高級語言可供使用。三、存儲(chǔ)器的價(jià)格問題和尋址空間的限制。
            以上所述問題目前都基本上解決了,在這就不闡述了。實(shí)際情況是:在單片機(jī)的應(yīng)用領(lǐng)域,開發(fā)者開始使用C語言進(jìn)行開發(fā)了。大家發(fā)現(xiàn)用高級語言開發(fā)嵌入式產(chǎn)品是如此輕松,并且C語言程序編譯后的二進(jìn)制代碼也非常短小精練。
            目前使用多的數(shù)字信號(hào)處理器(DSP)是美國TI公司的TMS320家族,而工業(yè)控制上用的多的又是TMS320F2XX系列,TI公司為每一個(gè)DSP芯片提供了匯編語言和C語言供開發(fā)者選用,本人一直使用C語言進(jìn)行產(chǎn)品開發(fā),而目前很少見到這方面的介紹,所以特撰此文以TMS320F240為例,向各位同行推薦用C語言開發(fā)DSP嵌入式系統(tǒng)。

            DSP的C語言的特殊性
            大家在使用51系列C語言時(shí)已經(jīng)注意到,控制器的C語言和PC機(jī)上使用的C有一個(gè)顯著的特點(diǎn):經(jīng)常要對硬件操作,程序中有大量針對控制器內(nèi)部資源進(jìn)行操作的語句。所以,開發(fā)者要明白怎樣用C語言來操縱控制器的內(nèi)部資源,既怎樣用C語句操作寄存器和內(nèi)部存儲(chǔ)器等。
            舉個(gè)例子,在51匯編中我們寫 MOV A,#20H,匯編程序能夠識(shí)別A是指累加器,而在51 C程序中我們寫 ACC=32;,編譯器能夠識(shí)別ACC是指累加器而不是一般的變量。即每一個(gè)寄存器都有一個(gè)專有名字供開發(fā)者使用,它們定義在一個(gè)頭文件reg51.h中,程序員只需在程序的開始部分用#include“reg51.h”語句將該文件包含進(jìn)來即可。注意:這些寄存器的名字不能用做變量名。
            同樣,在TMS320F240的C語言中也有一個(gè)頭文件C240.H定義各個(gè)寄存器的名稱,這里摘錄幾條語句進(jìn)行介紹。
            比如:#define IMR ((PORT)0x0004)
            #define XINT1_CR ((PORT)0x07070)
            IMR 、XINT1_CR就對應(yīng)兩個(gè)寄存器,實(shí)際是寄存器的地址,用高級語言的說法是指針。我們也在程序的開始部分用#include“c240.h”語句將該文件包含進(jìn)來。這樣,在DSP的C語言中使用它們只需在前面加一個(gè)星號(hào)(*),例如,
            *IMR=0X1010;/* 將16進(jìn)制數(shù)1010H賦給IMR寄存器 */
            *XINT1_CR=0X0A0B0;/*將16進(jìn)制數(shù)A0B0H賦給XINT1_CR寄存器 */

            開發(fā)者好將c240.h這個(gè)文件打印出來,弄清楚各個(gè)寄存器的定義名稱。至于不涉及硬件的語法和ANSI 語法一樣,需要注意的是,有些ANSI標(biāo)準(zhǔn)中的函數(shù)在DSP的編譯器中不提供,讀者可以參考DSP編譯器的C語言手冊。搞清楚了這些特殊性,由匯編語言轉(zhuǎn)到C語言開發(fā)是很容易的事,當(dāng)然,沒有匯編語言編程基礎(chǔ)的人同樣可以用C語言開發(fā)DSP應(yīng)用系統(tǒng)。
            有關(guān)嵌入式系統(tǒng)的C語言編程可參考《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》2001年1到6期上馬忠梅的“嵌入式C編程技術(shù)”,本文不做討論。下面只針對以TMS320F240芯片為處理器的嵌入式C語言編程進(jìn)行闡述,希望能夠指導(dǎo)讀者進(jìn)行具體操作。

            TMS320F240芯片的C語言開發(fā)過程
            簡單地說,整個(gè)過程包括以下五個(gè)步驟:
            1、編輯C語言源程序
            2、編譯源程序(注意編譯參數(shù))
            3、鏈接目標(biāo)文件(注意用CMD文件)
            4、在線仿真
            5、固化程序


            下面分別進(jìn)行闡述。
            一 源程序的編輯
            可以用任何一個(gè)編輯器書寫源程序,如EDIT、NOTEPAD等,后以.C為后綴存盤。源代碼可以寫在一個(gè)C文件中,也可寫在多個(gè)C文件中,有些預(yù)定義變量和函數(shù)原型聲明可以集中放在一個(gè)頭文件中。
            注意事項(xiàng):不要忘記在C程序的前面用 #include “c240.h”將寄存器定義文件包括進(jìn)來。
            二 源程序的編譯
            源程序編輯好后可以用DSPCL編譯程序進(jìn)行編譯,生成OBJ文件。
            使用格式: DSPCL 源文件名 參數(shù)
            例如:DSPCL EX1.C –V2XX –GK –MN
            常用參數(shù)的意義:
            V2XX:表示C編譯器選擇處理器2XX系列
            GK:保留編譯生成的匯編文件(.ASM文件)
            MN:進(jìn)行正常優(yōu)化
            其他參數(shù)請參考DSP編譯器的手冊。如果有多個(gè)源文件,分別編譯。每一個(gè)源文件經(jīng)編譯后產(chǎn)生一個(gè)OBJ文件和ASM文件。
            三 目標(biāo)文件的鏈接
            (一) TI公司的COFF文件格式
            TI公司新的匯編器和編譯器創(chuàng)建的目標(biāo)文件采用COFF的目標(biāo)文件格式(Common Object File Format)采用COFF格式有利于模塊化編程,為管理代碼段和目標(biāo)系統(tǒng)存儲(chǔ)器提供更加強(qiáng)有力和靈活的方法�;贑OFF格式編寫匯編程序或C語言程序時(shí),不必為程序代碼和變量指定目標(biāo)地址,為程序編寫和程序移植提供了極大的方便。
            COFF格式的基本思想是:鼓勵(lì)程序員在用匯編語言或C語言編程時(shí)運(yùn)用代碼塊和數(shù)據(jù)塊的概念。這種塊稱為SECTION,是目標(biāo)文件中的小單位。
            所有的塊分為兩大類:已初始化塊和未初始化塊,已初始化塊包含程序代碼和數(shù)據(jù),未初始化塊是為未初始化的數(shù)據(jù)在存儲(chǔ)器中的保留塊。C編譯器對C程序編譯后產(chǎn)生已初始化塊和未初始化塊,已初始化塊如 .text 塊、 .const 塊、.cinit塊 ;未初始化塊如.bss 塊。
            舉個(gè)例子,當(dāng)程序員用C語句 float data[100];定義一個(gè)數(shù)組時(shí)不需要指定這100個(gè)數(shù)組元素的具體位置,編譯器會(huì)在數(shù)據(jù)區(qū)預(yù)留所需空間,到鏈接時(shí)鏈接器會(huì)具體定位。

            (二) 鏈接器對塊的處理

            鏈接器對塊的處理有兩個(gè)功能:其一,將COFF目標(biāo)文件中的塊用來建立程序塊和數(shù)據(jù)塊,并將這些塊組合成可以被DSP芯片執(zhí)行的COFF輸出模塊;其二,鏈接器為輸出塊指定存儲(chǔ)位置。
            鏈接器提供兩個(gè)命令實(shí)現(xiàn)上述功能:MEMORY和SECTIONS。MEMORY命令定義目標(biāo)系統(tǒng)的存儲(chǔ)器,程序員可以定義每一塊存儲(chǔ)器并指定起始地址和長度;SECTIONS命令用來定義輸入塊的組合和輸出塊在存儲(chǔ)器中的存放位置。若不用MEMORY和SECTIONS命令,鏈接器采用缺省的分配算法;推薦使用這兩個(gè)命令,但要注意這兩個(gè)命令在CMD文件(鏈接器命令文件)中使用。
            下面分析一個(gè)TMS320F240芯片的典型CMD 文件。(假設(shè)文件名EX1.CMD)
            1、 CMD文件的構(gòu)成及其詳細(xì)解釋
            BOOT.OBJ /* F240的中斷矢量表,參見后面的說明 */
            EX1.OBJ /* 源程序編譯后對應(yīng)的目標(biāo)文件 */
            /* 若程序有多個(gè)目標(biāo)文件,一塊寫在這里 */
            -STACK 0X400 /* 設(shè)定系統(tǒng)堆棧 */
            -C /* ROM初始化 */
            -O EX1.OUT /* 輸出的文件名 */
            -M EX1.MAP /* 輸出映像文件名 */
            -L RTS2XX.LIB /* 鏈入RTS2XX.LIB庫 */
            MEMORY /*MEMORY命令規(guī)定系統(tǒng)的存儲(chǔ)器配置 */
            {
            PAGE 0:ROM0: origin=0000h,length=003fh /* FLASH ROM */
            PAGE 0:ROM1: origin=0040h,length=0200h /*FLASH ROM */
            PAGE 0:ROM2: origin=0240h,length=3000h /* FLASH ROM */
            PAGE 1:RAM_B2:origin=0060h,length=0020h /* 內(nèi)部RAM B2 */
            PAGE 1:RAM_B1:origin=0300h,length=0100h /* 內(nèi)部RAM B1 */
            PAGE 1:RAM_B0:origin=0100h,length=0100h /* 內(nèi)部 RAM B0 */
            PAGE 1:RAM_EX:origin=0d000h,length=2800h /* 外部擴(kuò)展RAM */
            }
            SECTIONS /* SECTIONS 命令規(guī)定了程序中塊的具體分配方法 */
            {
            .vectors:load=ROM0 /* 規(guī)定矢量表的存放位置 */
            .cinit: load=ROM1 /* C初始化表的存放位置 */
            .text: load=ROM2 /* 系統(tǒng)程序的存放位置 */
            .bss load=RAM_B0 /*未初始化數(shù)據(jù)的存放位置 */
            .const load=RAM_B1 /* 已初始化數(shù)據(jù)的存放位置 */
            }


            2、TMS320F240鏈接時(shí)所需的中斷矢量表文件
            TMS320F240的目標(biāo)文件在鏈接時(shí)要用到中斷矢量表,中斷矢量表用匯編語言編寫,和具體的DSP芯片有關(guān),假設(shè)TMS320F240的中斷矢量表對應(yīng)的匯編程序?yàn)锽OOT.ASM,匯編后的文件名為BOOT.OBJ。
            下面是一個(gè)典型的矢量表文件(假設(shè)程序名為BOOT.ASM)。
            .port /* 定義中斷函數(shù)的名字 */
            .globl _c_int0 /* 中斷0對應(yīng)的函數(shù)名 */
            .globl _c_int1 /* 中斷1對應(yīng)的函數(shù)名 ,以下語句的意義相同*/
            .globl _c_int2 /* 可以將中斷函數(shù)名看作中斷入口地址 */
            .globl _c_int3 /* 矢量表的存放不需程序員干預(yù) */
            .globl _c_int4
            .globl _c_int5
            .globl _c_int6
            .globl _c_int7
            .globl _c_int8
            .sect “.vectors”/*用.sect命令自定義一個(gè)塊,用于存放中斷矢量表 */
            RSVECT B _c_int0 /* 中斷0發(fā)生后,程序的跳轉(zhuǎn)目的地址 */
            INT1 B _c_int1 /* 中斷1發(fā)生后,則跳到c_int1()函數(shù)處 */
            INT2 B _c_int2 /* 意義同上,下同 */
            INT3 B _c_int3
            INT4 B _c_int4
            INT5 B _c_int5
            INT6 B _c_int6

            用匯編器匯編該程序,命令形式:DSPA BOOT.ASM –V2XX 生成BOOT.OBJ文件供鏈接器使用。這樣,我們就可以按如下形式在C源程序中編寫中斷函數(shù):
            void c_intx() /* x為1—8中之一 */
            {
            中斷程序的C語句系列;
            }
            注意事項(xiàng):c_int0()是系統(tǒng)入口函數(shù),用戶不能編寫。
            經(jīng)過上面對命令文件(CMD文件)和中斷矢量表的介紹,接下來可以鏈接命令文件來生成所需要的OUT文件供DSP芯片執(zhí)行或進(jìn)行軟仿真。
            命令形式:DSPLNK CMD文件名 例如:DSPLNK EX1.CMD

            另一種情況是,不使用CMD文件,使用缺省配置,簡單介紹如下:
            命令形式:DSPLNK OBJ文件名 參數(shù)
            例如 DSPLNK EX1.OBJ BOOT.OBJ –O XX1.OUT –M XX1.MAP

            以上三步可以用下圖描述:

             

            四 程序的仿真
            EMURST 仿真器復(fù)位命令
            EMU2XXW EX1.OUT 載入COFF格式的二進(jìn)制代碼仿真運(yùn)行,有關(guān)調(diào)試器的使用限于篇幅在此就不做討論了。
            五 程序的固化
            程序仿真運(yùn)行正確后,需要固化到FLASH ROM中,TMS320F240內(nèi)部有16K字的FLASH ROM可以用來固化程序,而不需要外擴(kuò)EPROM(程序不大于16K字的情況下)。
            TI公司提供有固化程序的軟件,可以通過仿真器經(jīng)JTAG口將程序?qū)懭胄酒瑑?nèi)。目前發(fā)展了一種新的固化技術(shù),可以通過串口寫入DSP芯片,特別適合于現(xiàn)場調(diào)試。下面介紹通過JTAG口的固化方法。
            首先用EMURST命令復(fù)位調(diào)試器,然后執(zhí)行下面三個(gè)批處理文件。
            第一步,執(zhí)行BC0.BAT 批處理文件,將FLASH ROM 清除(CLEAR),使全為0。
            第二步,執(zhí)行 BE0.BAT 批處理文件,將FLASH ROM 擦除(ERASE),使全為1。
            以上兩步不需要修改軟件包中自帶的這兩個(gè)BAT文件。
            第三步,執(zhí)行BP16K.BAT 批處理文件,將自己的OUT文件寫入到DSP內(nèi)部的FROM中。
            執(zhí)行這一步之前,要先修改BP16K.BAT,將待寫入的OUT文件替換成自己的OUT文件,下面看一下這個(gè)批處理文件。假設(shè)軟件包的安裝目錄為C:\DSP,該目錄下有一個(gè)子目錄SRC。
            prg2xx -p 240 -m 0x0006 -w 6 src\c2xx_bpx.out 要寫入的OUT文件
            如果要將EX1。OUT寫入到DSP的FLASH中,則執(zhí)行下面的命令:
            prg2xx -p 240 -m 0x0006 -w 6 src\c2xx_bpX.out c:\dsp\EX1.out
            經(jīng)過以上步驟既完成了程序固化,可以將系統(tǒng)放到現(xiàn)場實(shí)驗(yàn)了。

            注意:固化程序時(shí),CPU的一定要工作在20MHz的頻率下。在SRC子目錄下有一個(gè)配置文件C240_CFG.I文件,讀者可以根據(jù)程序說明并結(jié)合自己系統(tǒng)的外部晶振頻率將CPU的工作頻率設(shè)為20MHz(寫入時(shí)的頻率)。
            結(jié) 論
            本文以TMS320F240的開發(fā)為例,介紹了怎樣用C語言開發(fā)DSP系統(tǒng)的全過程,希望對讀者會(huì)有所啟發(fā)和幫助。有關(guān)怎樣用C語言編程使用TMS320F240內(nèi)部其他資源(如:定時(shí)/比較器、ADC、SCI、SPI、中斷器)和怎樣擴(kuò)展DSP的外圍電路等編程技術(shù)見后面的敘述。
                      

            新版RFID讀寫器產(chǎn)品手冊下載


            相關(guān)產(chǎn)品

            最新RFID讀寫器產(chǎn)品手冊
            RFID讀寫器SDK開發(fā)包

            打印本頁 || 關(guān)閉窗口
            企業(yè)簡介||付款方式||網(wǎng)站地圖||友情連接||聯(lián)系我們

            RFID讀寫器,IC卡讀卡器, 智能卡讀卡器,RFID讀卡器, 電子標(biāo)簽,CPU卡讀寫器,讀卡模塊
            北京友我科技有限公司 版權(quán)所有 (C)2008-2020
            客戶服務(wù)中心信箱:coodor#126.com(將#改為@)
            熱線直撥: 010-57049038 18910685939 電話微信:13691531038,13671114914
            京ICP備14016005號(hào)
            微信掃一掃聯(lián)系我們

            微信掃一掃聯(lián)系我們

            友我科技

              <td id="n3ws3"></td>
                    <th id="n3ws3"></th>
                      <b id="n3ws3"><menuitem id="n3ws3"></menuitem></b>
                      <del id="n3ws3"><form id="n3ws3"></form></del>
                      <b id="n3ws3"><menuitem id="n3ws3"></menuitem></b>
                    1. <dd id="n3ws3"><dl id="n3ws3"></dl></dd>
                      91人人人人人 | 久夜午爱免费视频 | 国产激情在线观看 | 男人的天堂在线视频 | 免费在线观看一级片 |

                      1
                      RFID讀寫器產(chǎn)品手冊下載
                      2
                      讀寫器開發(fā)SDK下載
                      3
                      點(diǎn)擊聯(lián)系友我科技
                      4
                      點(diǎn)擊聯(lián)系友我科技
                      5
                      WEB讀卡器開發(fā)指南
                      6
                      Windows讀卡器開發(fā)指南
                      7
                      Android讀卡器開發(fā)指南
                      8
                      Wince讀卡器開發(fā)指南
                      9
                      PLC讀卡器開發(fā)指南
                      10
                      Linux讀卡器開發(fā)指南
                      11
                      單片機(jī)讀卡器開發(fā)指南
                      12
                      PCSC讀卡器開發(fā)指南