新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于閃存TMS320VC5409DSP并行引導裝載方法

        基于閃存TMS320VC5409DSP并行引導裝載方法

        作者: 時間:2010-08-13 來源:網(wǎng)絡 收藏

          TMS320VC5409是TI公司推出的新一代的高性能、低價位、低功耗數(shù)字信號(DSP)。與現(xiàn)在流行的TMS320C5409相比,性能提高了60%,功耗效率提高了50%。它的應用對象大多是要求能脫機運行的內(nèi)嵌式系統(tǒng),如機頂盒(STB)、個人數(shù)字助理(PDA)和數(shù)字無線通信等。閃爍存儲器(FLASH MEMORY)是可以在線電擦寫、掉電后信息不丟失的存儲器。FLASH與EPROM相比,具有更高的性能價格比,而且體積小、功耗低、擦寫速度快、使用比較方便。因此,采用FLASH存儲程序和固定數(shù)據(jù)是一種比較好的選擇。AMD公司的Am29LV400B FLASH可以直接與DSP相接。

          1 Am29LV400B的主要特點及編程方法

          Am29LV400B是AMD公司新推出的256K×16位產(chǎn)品,具有以下主要特點:

          (1)支持單電源操作,可分為滿負荷電壓供電(2.7V~3.6V)和電壓范圍可調(diào)節(jié)(3.0V~3.6V)供電兩種方式。滿幅度電壓供電方式主要用于電池供電的應用中,而電壓范圍可調(diào)節(jié)供電方式直接與3.3V的高性能DSP接口,簡化了系統(tǒng)的電源要求。

          (2)最快的存取速度高達55ns,CMOS工藝,具有100000次寫入/擦寫壽命。

          (3)低功耗(200nA的自動休眠電流,200nA的待命電流,7mA的讀電流,15mA的編程/擦除電流)。

          (4)靈活的塊結(jié)構(gòu)支持整片擦除、塊擦除。整片分為11個塊(1塊8K字、2塊4K字、1塊16K字、7塊32K字)。

          (5)塊保護功能,具有防止對任何區(qū)段進行編程或擦除的硬件保護機制。

          (6)與JEDEC標準兼容,引腳分布和命令集與單電源FLASH相兼容,具有優(yōu)越的防止意外編程的保護功能。

          (7)數(shù)據(jù)查詢位和數(shù)據(jù)切換位,可以通過軟件方法檢測編程/擦除操作的狀態(tài)。

          (8)Ready/Busy#管腳,可以通過硬件方法檢測編程/擦除操作的狀態(tài)。

          (9)具有擦除暫停/擦除恢復功能。在暫停擦除操作過程中,支持讀寫不處于擦除狀態(tài)的塊。

          (10)內(nèi)嵌的擦除/編程算法能自動對整個芯片或某幾個塊進行擦除編程操作。

          Am29LV400B編程和擦除算法的命令定義如表1所示。

        表1 Am29LV400B命令定義

        Am29LV400B命令定義

          表中,RA為要讀的存儲器地址;RD為從存儲器地址RA處讀出的數(shù)據(jù);SA為要擦除的段地址;PA為要寫入數(shù)據(jù)的存儲器地址;PD為要在地址PA處寫入的數(shù)據(jù)。根據(jù)表中的命令定義可編制FLASH的"燒寫"和"擦除"程序(用C語言和匯編語言混合編程實現(xiàn))。根據(jù)需要,我們編制了 "燒寫"單字和"燒寫"多字的程序。

          2 硬件電路組成

          DSP存儲區(qū)硬件接口電路如圖1所示。主要由5部分組成:DSP-TMS320VC5409、系統(tǒng)邏輯控制電路(采用CPLD-EPM7128實現(xiàn))、FLASH-Am29LV400B (256K字的FLASH用來存儲應用程序和初始化數(shù)據(jù))、程序存儲器SRAM1-IDT71V416S12PH(容量為256K字)、數(shù)據(jù)存儲器SRAM2-IDT71V016S12PH(容量為64K字)。邏輯控制電路主要由3個模塊組成:FLASH頁選控制模塊、讀/寫控制模塊、程序空間/數(shù)據(jù)空間/FLASH切換控制模塊。圖中,CPLD的輸出FMSEL為FLASH的片選腳;PMSEL為程序空間的片選腳;DMSEL為數(shù)據(jù)空間的片選腳。

        DSP存儲區(qū)硬件接口電路

          FLASH分為8頁,每頁32K,通過CPLD中的FLASH頁選控制模塊(Page0~Page2)實現(xiàn)FLASH翻頁功能。為實現(xiàn)FLASH引導裝載,F(xiàn)LASH物理空間的前32K映射到TMS320VC5409的數(shù)據(jù)空間0x8000h~0xFFFFh上,即TMS320VC5409的數(shù)據(jù)空間0x8000h~0xFFFFh為FLASH的前32K空間。為了重點說明FLASH的引導裝載過程,本文只談及DSP片內(nèi)程序存儲空間以及FLASH前32K字的使用情況。

          3 TMS320VC5409 DSP的引導裝載方式

          TMS320VC5409芯片具有兩種引導方式:片內(nèi)引導方式和片外執(zhí)行方式。片內(nèi)引導方式就是利用片內(nèi)ROM中的引導程序?qū)⒊绦驈耐獠考虞d到程序存儲器中運行。由于FLASH的速度較低,難以與DSP相匹配,因此本文采用片內(nèi)引導方式。

          TMS320VC5409片內(nèi)掩模ROM中固化的引導裝載(Bootloader)程序用于在上電復位時把用戶程序從外部引導到高速RAM中,以保證其全速運行。TMS320VC5409提供的片內(nèi)引導方法有:主機口HPI方法、8位或16位并行EPROM方法、8位或16位并行I/O方法和8位或16位串行口方法等。TMS320VC5409片內(nèi)引導裝載源程序可以在TI網(wǎng)站下載得到,讀者可以自行分析。下面通過圖2所示的引導過程框圖,闡述一下本文選用的并行引導方式過程。

        引導過程框圖

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

        詳細引導過程

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

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

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

        表2 并行自舉表的代碼結(jié)構(gòu)

        并行自舉表的代碼結(jié)構(gòu)

          下面結(jié)合一個實例,說明利用hex500命令生成二進制數(shù)據(jù)自舉表的方法。

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

        程序

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

        程序

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

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

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



        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 青川县| 随州市| 天津市| 潞西市| 香格里拉县| 达尔| 安远县| 浮山县| 五大连池市| 巫山县| 秦安县| 怀宁县| 新龙县| 贡山| 新巴尔虎左旗| 巫山县| 开阳县| 钟山县| 信宜市| 舒城县| 承德市| 沾益县| 廉江市| 忻州市| 甘肃省| 永康市| 永靖县| 从化市| 乐都县| 定远县| 石泉县| 湖口县| 灵川县| 都安| 舒兰市| 泉州市| 老河口市| 福泉市| 宁乡县| 佛山市| 汤阴县|