<del id="dhfrq"></del>

    1. <tr id="dhfrq"></tr>
      成人午夜激情在线观看,国产精品一线天粉嫩av,99精品国产综合久久久久五月天 ,一卡2卡三卡4卡免费网站,国产高清在线男人的天堂,五月天国产成人AV免费观看,67194熟妇在线观看线路,成人无码潮喷在线观看
      現在位置:范文先生網>理工論文>電子通信論文>TMS320C5410燒寫Flash實現并行自舉引導

      TMS320C5410燒寫Flash實現并行自舉引導

      時間:2023-02-21 00:14:01 電子通信論文 我要投稿
      • 相關推薦

      TMS320C5410燒寫Flash實現并行自舉引導

        摘要:介紹在TMS320C5410環境下對Am29LV200BFlash存儲器進行程序燒寫,并且實現了TMS320C5410上電后用戶程序并行自舉引導。
        關鍵詞:Am29LV200BFlashDSP并行自舉引導自舉表
        
        Flash是一種可在線進行電擦寫,掉電后信息不丟失的存儲器。它具有低功耗、大容量、擦寫速度快等特點,并且內部嵌入算法完成對芯片的操作,因而在數字信號處理系統中得到了廣泛的應用。本文通過一個完整的實例,介紹Am29LV200BFlash存儲器的燒寫方法,實現TMS320C5410(以下簡稱C5410)上電后用戶程序的并行自舉引導。
        
        1Am29LV200BFlash存儲器
        
        1.1Flash存儲器簡介
        
        Am29LV200B是AMD公司生產的Flash存儲器,其主要特點有:3V單電源供電,可使內部產生高電壓進行編程和擦除操作;支持JEDEC單電源Flash存儲器標準;只需向其命令寄存器寫入標準的微處理器指令,具體編程、擦除操作由內部嵌入的算法實現,并且可以通過查詢特定的引腳或數據線監控操作是否完成;可以對任一扇區進行讀、寫或擦除操作,而不影響其它部分的數據。本文中128K×16位Am29LV200BFlash映射為C5410的片外數據存儲空間,地址為:0x8000~0xFFFF,數據總線16位,用于16位方式的并行引導裝載。128K的FlashROM用32K地址分四頁進行訪問,上電加載程序時使用FlashROM的第3頁。
        
        1.2Flash存儲器的操作命令
        
        向Flash存儲器的特定寄存器寫入地址和數據命令,就可對Flash存儲器編程,但要按一定的順序操作,否則就會導致Flash存儲器復位。由于編程指令不能使"0"寫為"1",只能使"1"變為"0",而擦除命令可使"0"變為"1",所以正確順序是先擦除,后編程。下面就介紹幾個常用的操作命令:編程命令、擦除命令、讀數據命令、復位命令。
        
        ①編程命令。該命令向Flash的指定地址中寫入數據,需要四個總線周期,前兩個是解鎖周期,第三個是建立編程命令,最后一個周期完成向編程地址中寫入編程數據,如表1所列。
        
        表1編程命令
        
        周期1(解鎖)2(解鎖)3(建立)4(編程)地址0x5550x2AA0x555pa(編程地址)數據0xAA0x550xA0pa(編程數據)
        由于向每個編程地址寫入數據都需要四個周期,所以在循環寫Flash時使用宏比較簡單。FlashROM的首地址為0x8000,故偏移地址0x555對應物理地址就為0x8555。編程程序如下:
        
        _WRITECOMMAND.macropa,pd;單一周期編程的寫命
        
        ;令宏,pa是編程地址,pd是編程數據
        
        PSHMAR1
        
        STMpa,AR1;AR1指向編程地址
        
        LDpd,A
        
        STLA,*AR1;把編程數據放入AR1的編程地址中
        
        RPT#12
        
        NOP
        
        POPMAR1
        
        .endm
        
        _WRITEFlash.macropar,pdr;編程宏,par是編程地址寄存
        
        ;器,pdr是存放編程數據的寄存器
        
        _WRITECOMMAND#8555H,#0AAH;周期1(解鎖)
        
        _WRITECOMMAND#82AAH,#055H;周期2(解鎖)
        
        _WRITECOMMAND#8555H,#0A0H;周期3(建立)
        
        LDpdr,A;周期4(編程)
        
        STLA,par;把pdr寄存器中數據放入par
        
        ;寄存器的地址中
        
        RPT#12
        
        NOP
        
        _JUDGEpar,pdr;檢測編程是否正確,見Flash
        
        ;的操作檢測
        
        .endm
        
        _WRITECOMMAND是實現一個周期編程的寫命令宏,而_WRITEFlash是完成對指定地址編程的四個完整周期。
        
        表2擦除命令
        
        周期1(解鎖)2(解鎖)3(建立)4(解鎖)5(解鎖)6(片擦除)6(扇區擦除)地址0x5550x2AA0x5550x5550x2AA0x555SA(扇區地址)數據0xAA0x550x800xAA0x550x100x30
        ②擦除命令。該命令有片擦除和扇區擦除兩種,都需要6個總線周期,前兩個解鎖周期,第三個建立周期,四、五兩個解鎖周期,最后是片擦除或扇區擦除周期,如表2所列。一旦執行編程或擦除命令后,就啟動Flash的內部編程或擦除算法,自動完成編程或擦除操作。擦除程序如下:
        
        _ERASEFlash.macro;擦除宏
        
        _WRITECOMMAND#8555H,#0AAH;周期1(解鎖)
        
        _WRITECOMMAND#82AAH,#055H;周期2(解鎖)
        
        _WRITECOMMAND#8555H,#080H;周期3(建立)
        
        _WRITECOMMAND#8555H,#0AAH;周期4(解鎖)
        
        _WRITECOMMAND#82AAH,#055H;周期5(解鎖)
        
        _WRITECOMMAND#8555H,#010H;周期6(片擦除)
        
        STM#8555H,AR3
        
        LD#010H,A
        
        STLA,*AR5
        
        _JUDGE*AR3,*AR5;檢測是擦除結束,見Flash的
        
        ;操作檢測
        
        .endm
        
        ③讀數據命令。上電或內部編程、擦除操作結束后就進入讀數據狀態,寫入要讀取的地址即可讀出該地址的數據。
        
        ④復位命令。它使存儲器復位,進入讀數據狀態,向任何一個地址寫入數據0xF0就能使Flash存儲器復位。在進行編程、擦除之前,都應先復位,在編程或擦除等正常操作中出現錯誤時也要復位。復位程序如下:
        
        _RESETFlash.macro
        
        _WRITECOMMAND#8001H,#0F0H
        
        ;向8001H寫入0F0H使Flash復位
        
        RPT#12
        
        NOP
        
        .endm
        
        1.3Flash的操作檢測
        
        Flash內部的編程或擦除算法可自動完成編程或擦除操作,但我們必須了解其內部的操作檢測機制,以便知道操作是否完成或正確。常用檢測的狀態位有:跳變位(DQ6)、超時標志位(DQ5)、數據查詢位(DQ7)和Ready/Busy引腳(RY/)。檢測的方法有三種。第一種是判斷引腳RY/的狀態,在編程、擦除或擦除掛起操作過程中,RY/引腳一直為"0",操作完成后變為"1"。第二種是檢測跳變位DQ6,在編程或擦除時對任何地址進行連續的讀均引起DQ6連續跳變,直至操作結束才停止跳變。最后一種是使用數據線的DQ7、DQ5:DQ7位在編程或擦除過程中輸出的數是寫入該位數據的反碼,當操作完成時輸出才變為寫入該位的數據;DQ5的狀態為"1"時表示操作超時,此時應再讀一次DQ7的狀態,若DQ7輸出仍不是寫入的數據,則操作失敗,復位Flash,其流程如圖1所示。
        
        檢測程序如下:
        
        _JUDGE.macropar,pdr;檢測宏程序。par是編程地址寄存
        
        ;器,pdr是存放編程數據的寄存器
        
        _JUDGEBEGIN?:PSHMAR1
        
        LDpdr,B;獲取寫入的數據
        
        AND#00FFh,B;取被寫入數據的DQ7~DQ0
        
        LDpar,A;讀被燒寫地址的數據
        
        AND#00FFh,A;取DQ7~DQ0
        
        STLA,TEMP;保存
        
        LDA,-7,A;讀DQ7狀態
        
        XORB,-7,A;是否是反碼?
        
        BC_JUDGESUCCESS?,AEQ
        
        ;DQ7不是反碼而是寫入數據表示操作成功
        
        BITFTEMP,#20h
        
        BC_JUDGEBEGIN?,ntc
        
        ;DQ5=1表示操作超時
        
        LDpar,A;再讀被燒寫地址的數據
        
        AND#00FFh,A
        
        LDA,-7,A
        
        XORB,-7,A
        
        BC_JUDGESUCCESS?,AEQ
        
        ;DQ7不是寫入數據,表示操作失敗
        
        _JUDGEERRO?
        
        _RESETFlash;復位Flash
        
        _JUDGESUCCESS?
        
        POPMAR1
        
        .endm
        
        2C5410的自舉引導
        
        脫離仿真器獨立運行程序一般有兩種方式:一種是上電后用戶程序直接在Flash存儲器中運行,這種運行速度比較慢;另一種是上電或復位后將用戶程序從Flash存儲器引導到高速數據存儲器中運行,此方法最常用,可以較低的成本實現高速的運行。為了實現這個過程就必須運用DSP自舉引導功能。
        
        (1)自舉引導
        
        C5410上電復位后,首先檢查MP/MC狀態:如果為高電平,說明DSP處于微處理器工作方式,即從外部程序存儲器0FF80H地址開始執行用戶程序;若為低電平,說明DSP被設置為微計算機工作方式,從片內ROM的0FF80H地址開始執行程序。0FF80H地址存放的是中斷向量表,它實為一條分支轉移指令(BD0F800H),使程序跳轉至0F800H執行自舉引導程序(Bootloader)。Bootloader是固化在DSP芯片內ROM中的一段程序代碼,其功能是將用戶程序從外部加載至片內RAM或擴展的RAM中,使其高速運行。在搬運程序之前,Bootloader首先完成初始化工作:使中斷無效,內部RAM映射到程序/數據區(OVLY=1),對程序和數據區均設置7個等待狀態等。C5410有以下幾種自舉引導方式:主機接口HPI、并行口(8/16位)、標準串行口(MCBSP0是16位引導模式,MCBSP2是8位引導模式)以及I/O口(8/16位)自舉引導方式。
        
        (2)并行自舉引導
        
        這種方式是比較常用的一種,外部存儲器的字寬為8位或16位。在自舉引導時,通過外部并行接口總線將這些代碼從數據存儲空間傳送到程序存儲空間,而且可以重新設置SWWSR及BSCR寄存器的內容。并行自舉引導方式首先從地址為0FFFFH的I/O口讀取自舉表首地址的內容,如果此內容不符合8位或16位的引導方式,就從地址為0FFFFH的數據存儲器讀取,進行8位或16位并行自舉引導。所以,在燒寫Flash數據的同時,也要在0FFFFH燒入自舉表的首地址。引導流程如圖2所示。
        
        (3)建立自舉表
        
        自舉表內容不僅包括欲加載的各段代碼,而且包括各段代碼長度、各代碼段存放的目標地址、程序入口地址等信息。若要完成自舉引導功能,必須建立正確的自舉表。自舉表可以由hex500格式轉換器自動生成;也可以手動建立自舉表,就是把被燒寫的程序直接放在燒寫程序中,根據被燒寫程序的相關信息手動建立自舉表。
        
        3C5410燒寫Flash和并行自舉引導
        
        下面通過一個Flash燒寫實例,介紹怎樣將用戶程序燒寫進Flash,以及怎樣手動建立自舉表,并且脫離仿真器以并行自舉引導方式使用戶程序獨立運行。被燒寫和燒寫程序如下:
        
        .title"FLASH"
        
        .mmregs
        
        SWCR.set002BH
        
        TEMP.set0060H
        
        .data
        
        .sect".BOOT"
        
        .labelBOOTTABLE;自舉表開始
        
        .word10AAH;16位自舉標記
        
        .word7FFFH;7個等待周期(SWWSR)
        
        .word0F000H;塊轉換寄存器(BSCR)
        
        .word0000h;程序入口XPC
        
        .word0200h;程序入口地址(MAIN_START)
        
        .wordLOADEND-LOADSTART
        
        ;程序塊長度(0116H)
        
        .word0000h;存放目標XPC
        
        .word0100h;存放目標地址
        
        LOADSTART:;中斷向量表開始地址
        
        .copy"vector.asm";復位處跳轉MAIN_START
        
        MAIN_START:;被燒寫的主程序
        
        STM#0F7h,SP
        
        STM#012Ch,PMST
        
        ;IPTR=01(中斷向量指針為100,指向目標地址),MP/MC=0,OVLY=1,AVIS=0,DROM=1,CLKOFF=1
        
        LOOPF:RSBXXF;XF置低
        
        CALLDELAY;延時
        
        SSBXXF;XF置高
        
        CALLDELAY
        
        BLOOPF
        
        DELAY:PSHMAR6
        
        STM#0090H,AR6
        
        DELAY_LOOP:
        
        RPT#0FF0h
        
        NOP
        
        BANZDELAY_LOOP,*AR6-
        
        POPMAR6
        
        RET
        
        LOADEND;被燒寫的程序結束
        
        .space20h
        
        .mmregs
        
        .labelFINDTABLE
        
        .word8000h
        
        .text
        
        ERASE_WRITE_Flash:;燒寫程序開始
        
        STM#0FFA0H,PMST
        
        STM#07FFFH,SWWSR
        
        STM#0FFFFH,SWCR
        
        _RESETFlash;Flash復位
        
        _ERASEFlash;擦除Flash
        
        WRIFlashSTART:;開始編程Flash
        
        SSBXSXM
        
        RSBXOVM
        
        _RESETFLASH;Flash復位
        
        STM#8000H,AR0;Flash起始地址8000H
        
        STMBOOTTABLE,AR5;被燒寫的源地址(自舉
        
        ;表首地址)
        
        STM#(LOADEND-BOOTTABLE),AR4
        
        ;寫入011E個字
        
        WRI_RPT
        
        _WRITEFlash*AR0,*AR5;調入編程宏
        
        LD*AR0+,A
        
        LD*AR5+,A;完成AR0和AR5地址自動加1
        
        BANZWRI_RPT,*AR4-
        
        STM#0FFFFH,AR0;AR0指向數據空間的FFFF
        
        ;地址
        
        STMFINDTABLE,AR5
        
        _WRITEFlash*AR0,*AR5;向數據空間的FFFF
        
        ;地址寫入自舉表的首地址8000H
        
        ENDD:NOP
        
        BENDD
        
        .end
        
        被燒寫的主程序是從MAIN_START開始,一直到LOADEND。程序的主要功能是不斷改變XF引腳的狀態。LOADSTART是中斷向量文件(vector.asm)的開始,在中斷復位(RESET)處放入一條跳轉到MAIN_START指令(BDMAIN_START)。ERASE_WRITE_FLASH是燒寫程序的開始,只要程序指針(PC)指向ERASE_WRITE_FLASH,開始運行就可以完成對Flash的燒寫操作。從自舉表首地址BOOTTABLE(0F8H)到LOADEND(0216H)存放的數據就是要寫入Flash的內容,從LOADSTART到LOADEND的數據是DSP自舉程序從Flash搬運到片內RAM的程序,具體如下:
        
        00F8H:BOOTTABLE;自舉表開始
        
        0100H:LOADSTART;中斷向量表首地址
        
        0100H:RESET:BDMAIN_START
        
        ...;中斷向量表的內容
        
        0178H:RESERVED
        
        0200H:MAIN_START
        
        ...;主程序
        
        0216H:LOADEND
        
        被燒寫的程序只需一個段,根據以上信息就可以完成自舉表的內容,如表3所列。
        
        表1自舉表
        
        數據區地址內容含義8000H10AA16位自舉標記8001H7FFFSWWSR8002HF000BSCR8003H0000程序入口XPC8004H0200程序入口地址8005H0123程序段長度8006H0000存放目標XPC8007H0100存放目標地址8008HF273程序代碼18009H0200程序代碼2………………811DHFC00程序代碼811EH0000結束………………FFFFH8000自舉表存放首地址
        整個并行自舉引導過程為:C5410上電復位后,判斷MP/MC=0處于微計算機工作方式,從片內ROM的0FF80H處執行中斷向量表的分支轉移指令(BD0F800H),使程序跳轉至0F800H處執行自舉引導程序。自舉引導程序完成初始化后,讀取數據空間的0FFFFH地址的內容,找到自舉表首地址8000H,從8000H處開始讀取內容。首先,是16位自舉標記(10AA)。然后分別是寄存器SWWSR及BSCR的內容,程序入口地址、代碼段長度、存放代碼段的目標地址等信息。最后,根據這些信息把Flash的8008H到811EH的程序搬運到片內RAM的100H開始的地址中,跳轉至片內RAM100H、即PC為100H、XPC為0,開始執行用戶程序,完成用戶程序的并行自舉過程。
        
        結語
        
        把程序燒寫入Flash后,復位C5410,使其處于微計算機工作方式;使用示波器測試XF引腳,觀察程序運行正確與否。通過上述方法可完成C5410對Am29LV200BFlash的燒寫,很好地實現了C5410上電后的用戶程序自舉引導功能。
        
        
        
        

      【TMS320C5410燒寫Flash實現并行自舉引導】相關文章:

      TMS320VC5416并行自舉的巧妙實現08-06

      DSP外掛Flash在系統編程及并行引導裝載方法08-06

      DSP+FLASH引導裝載系統的設計與實現08-06

      TMS320C6x DSP的FLASH引導方法研究與實現08-06

      HPI自舉在TMS320VC5402芯片上的實現08-06

      在DSP處理器上并行實現ATR算法08-06

      利用Flash實現DSP對多個程序有選擇的加載08-06

      TMS320VC5402外部并行引導裝載方法的研究08-06

      TMS320VC5402的并行引導裝載方案的研究與設計08-06

      主站蜘蛛池模板: 日韩av爽爽爽久久久久久| 性色欲情网站iwww九文堂| 亚洲国产精品一区二区第一页| 亚洲春色在线视频| 欧美日韩v| 亚洲国产免费图区在线视频| 亚洲成色精品一二三区| 综合色一色综合久久网| 91精品乱码一区二区三区| 色九月亚洲综合网| AV免费播放一区二区三区| 国产成人精品2021欧美日韩| 久热这里有精彩视频免费| 国产成人一区二区三区免费| 最新亚洲人成网站在线观看| 最近中文字幕国产精品| 国产极品粉嫩福利姬萌白酱| 国产av日韩精品一区二区| 日本精品不卡一二三区| 最近中文字幕完整版hd| 国产天美传媒性色av高清| 国产永久免费高清在线| 国产精品老熟女露脸视频| 欧美野外伦姧在线观看| 日韩AV高清在线看片| 99久久久无码国产麻豆| 免费无码一区无码东京热| 日本熟妇色xxxxx日本免费看 | 国产微拍一区二区三区四区| 国产精品播放一区二区三区| 国产成人精彩在线视频| 亚洲日韩成人无码不卡网站| a级黑人大硬长爽猛出猛进| 女人喷水高潮时的视频网站| 日韩精品一区二区三免费| 邻居少妇张开腿让我爽了一夜| 天堂在线精品亚洲综合网| 亚洲成色精品一二三区| 一个色综合国产色综合| 婷婷五月综合丁香在线| 女同另类激情在线三区|