新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于TMS320DM642的

        基于TMS320DM642的

        ——
        作者:胡嘉凱 蔣建國 齊美彬 時間:2006-06-03 來源:電子產品世界 收藏

        摘  要:DSP系統在獨立運行時需要把用戶代碼從外部Flash中加載到系統RAM運行,包括了Flash的編程及上電加載兩項技術,是DSP系統開發中的重點和難點。本文采用一種在系統編程方法對Flash編程,巧妙地利用JTAG仿真器實現系統在線調試及編程,無需進行COFF到HEX的數據格式轉換。

        關鍵詞:在系統編程;DSP;加載器

        引言
         
          一個完整的系統必須要有一個合適的存儲器存放用戶代碼。Flash是一種非易失性存儲器,而且具有電可擦寫、容量大、價格便宜等特點,通常可用于在DSP系統中存放用戶代碼。
        Flash在正常使用前要進行編程,即將用戶代碼寫入Flash。在系統編程方法不需要其它編程設備和編程電源,只借助于仿真器,可直接通過DSP燒寫程序對Flash進行編程。本文所使用的編程方法就屬于在系統編程。
        本文首先介紹常見的Flash編程方法,然后詳細介紹本文方法的原理,以及DSP系統上電加載原理,最后給出整個實現過程并分析了Flash編程時需要注意的一些問題。

                
        圖1 系統上電的工作步驟           

        圖2  程序流程

        Flash編程方法

        常見的Flash編程方式

          Flash在正常使用前必須寫入用戶程序,傳統上有3種編程方法:由供應商出貨前把程序代碼寫入Flash、編程器編程和在系統編程。

          第1種方法不能滿足用戶更改代碼的需求,所以在開發階段不宜采用。當使用編程器編程時,要求Flash固定在PCB板前必須把用戶程序寫入片內。因此,現在一般都優先考慮在系統編程方法,首先應確定所選的DSP是否直持在系統編程。現行的在系統編程的方法一般是先把待加載程序(用戶程序)的.out文件(COFF格式)轉成HEX格式,然后去掉HEX格式文件的文件頭,再通過燒寫程序寫到Flash里去。也可以不進行COFF格式到HEX格式的轉換這一步,把COFF文件作為源文件,去除文件頭信息后將其寫入Flash。

        本文方法的編程原理

          本文的實現方法比較簡單,首先把用戶程序映射到系統RAM,再把用戶程序作為數據直接從RAM搬入Flash中。

          首先在CCS上完成用戶程序,生成可執行的.out文件,將該文件設為文件1進行加載;然后加載燒寫程序的.out文件,將其設為文件2;最后運行文件2,通過它把文件1燒入Flash。

          操作步驟非常簡單,這里要說明幾點。首先,2個.out文件各自獨立,文件2加載后,文件1成為數據,CCS在運行時,運行的是最新加載的程序,也即文件2。其次,文件2與文件1映射到RAM中的物理空間各自獨立,也就是文件2不能映射到文件1已映射的地方,如果發生重疊,文件2的內容就會覆蓋原先文件1映射到該地址空間的內容,寫入Flash的內容就會發生錯誤。再次,用戶程序里包括了二次加載程序,以在自舉時把用戶程序從Flash還原到RAM中。

         

         

         

         

         

         

        總線周期

         

         

         

         

         

        命令

        1

         

        2

         

        3

         

        4

         

        5

         

        6

         

        序列

         地址

         數據

         地址

         數據

         地址

         數據

         地址

         數據

         地址

         數據

         地址

         數據

        軟件復位

         XXX

         F0

         

         

         

         

         

         

         

         

         

         

        芯片擦除

         XXX

         AA

         XXX

         55

         XXX

         80

         XXX

         AA

         XXX

         55

         XXX

         10

        扇區擦除

         XXX

         AA

         XXX

         55

         XXX

         80

         XXX

         AA

         XXX

         55

         SA

         30

        字節寫

         XXX

         AA

         XXX

         55

         XXX

         A0

         PA

         PD

         

         

         

         

        表1  Am29LV033C內存指令表

        二次加載和Bootloader

          要保證用戶程序的正確運行,僅把程序寫入Flash是不夠的,必須保證上電后,程序能夠從Flash中正確恢復到RAM。系統上電工作步驟如圖1所示。
        DSP首先自檢,得到程序的加載模式。在C6000中主要有2種模式,一種是主機加載模式,也即DSP從0x0000 0000開始執行程序;另一種是ROM加載模式,該模式又有8位、16位、32位幾種,不同的DSP略有不同,這里選用8位ROM模式。工作時,DSP先從地址0x9000 0000開始,把0x9000 0000~0x9000 0400這1K(在C62xx中是64K)的數據搬到0x0000 0000~0x0000 0400,然后再從0x0000 0000開始執行程序。這一次加載由DSP自行完成,但是1K的程序作為用戶程序顯然不夠,因此,這1K的程序要做成加載器,也就是手工寫的Bootloader,利用它把用戶程序從Flash搬入RAM。加載器搬運用戶程序又是一次加載,因此把這個過程統稱為二次加載。

          Bootloader要完成兩項功能,第一,把其它程序搬到指定的地址;第二,跳轉到用戶程序入口,這里要先修改ISP,再跳轉到復位中斷,因此在Bootloader的最后總是一條跳轉指令。由于Bootloader在Flash中的位置是0x9000 0000~0x9000 0400,而Bootloader又是放在用戶程序里的,因此,為了方便燒寫程序把Bootloader寫到該位置,這里在用戶程序的.cmd文件中把bootloader定位在程序段的起始位置。

        編程方法實現

        系統配置和參數設置

          TMS320DM642是TI公司的一款視頻圖像DSP,工作時鐘最高可達到600MHz。程序存儲器最大可調至272M



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄冈市| 怀柔区| 凤凰县| 新疆| 赤壁市| 青河县| 偃师市| 兴安县| 邛崃市| 娄烦县| 青冈县| 东丰县| 长海县| 临海市| 南宫市| 文化| 昭苏县| 汉阴县| 冷水江市| 浦江县| 如东县| 房山区| 德庆县| 清丰县| 屯门区| 嘉祥县| 天镇县| 灵川县| 搜索| 梁山县| 松潘县| 台北市| 莲花县| 望城县| 嘉峪关市| 肥乡县| 乌审旗| 静安区| 临颍县| 天长市| 奉新县|