《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > TMS320VC5509在線燒寫Flash并自舉啟動方法研究
TMS320VC5509在線燒寫Flash并自舉啟動方法研究
來源:微型機與應用2011年第2期
陳若珠, 胡金平, 李戰明
(蘭州理工大學 電氣工程與信息工程學院, 甘肅 蘭州 730050)
摘要: 為了解決TMS320VC55X系列DSP系統程序代碼的保存問題,設計了一種利用JTAG接口,在線燒寫Flash并實現自舉啟動的方法。這種在線編程的方法利用并行外部存儲器加載(EMIF)接口將TMS320VC5509和Flash芯片相連接,通過搬移程序將應用程序的已初始化段按照C55X系列DSP引導表格式燒寫進外部擴展的Flash存儲器中,從而實現自舉啟動。該方法為DSP系統的軟件維護和升級帶來了方便,具有實際的應用價值。
Abstract:
Key words :

摘  要:為了解決TMS320VC55X系列DSP系統程序代碼的保存問題,設計了一種利用JTAG接口,在線燒寫Flash并實現自舉啟動的方法。這種在線編程的方法利用并行外部存儲器加載(EMIF)接口將TMS320VC5509和Flash芯片相連接,通過搬移程序將應用程序的已初始化段按照C55X系列DSP引導表格式燒寫進外部擴展的Flash存儲器中,從而實現自舉啟動。該方法為DSP系統的軟件維護和升級帶來了方便,具有實際的應用價值。
關鍵詞: TMS320VC5509;自舉啟動;在線編程;Flash

    隨著數字信號處理技術的快速發展,DSP被廣泛應用于各種數字信號處理系統中。最終開發的系統若要脫離仿真器運行,必須將程序代碼存儲在非易失性存儲器中。Flash是一種可在線進行電擦寫而掉電后信息又不丟失的存儲器,它具有功耗低、容量大、擦寫速度快等特點。如何將程序燒寫進Flash,并在上電時加載到DSP內部的RAM中,是Flash在DSP系統應用中的兩個基本問題[1]。本文基于TI公司的TMS320VC5509A和AMD公司的AM29LV800開發系統,詳細闡述了在線燒寫Flash并實現自舉啟動的方法。
1 硬件電路設計
    圖1為TMS320VC5509A與AM29LV800的連接示意圖[2],Flash擴展在CE1空間,起始地址為200000。由于TMS320VC5509A只有14根地址線A0~A13,又因為Flash作為數據存儲空間使用時的地址編碼采用字尋址方式,則DSP的A0信號無效,所以AM29LV800芯片的低13位地址線A0~A12連接TMS320VC5509A的地址線A1~A13,高6位地址線A13~A18由緩沖串口來擴展。AM29LV800是低功耗Flash,工作在2.7 V~3.6 V電壓下,一般存儲數據可以保存100年以上,可以重復編程次數高達10萬次。A18~A0為外部地址管腳,DQ0~DQ15為16條數據線,CE為片選控制管腳,OE為輸出控制管腳,WE為寫入控制管腳。

2 自啟動過程分析及啟動表結構
    DSP系統的bootloader是指在系統上電時將一段存儲在外部非易失性存儲器中的程序搬移到DSP片內或片外擴展的高速RAM中并執行的代碼。Bootloader程序永久性地存儲在DSP以FF8000H開始的ROM中,DSP系統在復位后PC=FF8000H,即從Bootloader程序首地址開始執行。
    TMS320VC5509 DSP的Bootloader有多種加載方式[3],如表1所示,設置DSP的GPIO0-GPIO3,DSP在復位時讀取這4個引腳上的狀態以確定所使用的啟動模式。本文使用16-bit EMIF加載方式,雖然連線復雜,需要考慮并行非易失存儲器Flash與EMIF接口的匹配關系,但是它的優點很多:不需要外部時鐘驅動,非易失存儲器種類多樣,容量較大,除了存儲下載表之外,還可存儲系統需要保存的關鍵數據,以便在掉電時保存信息。
    在這些加載模式下,下載程序之前先要生成一張載入表,即引導表。引導表的結構如圖2所示,引導表攜帶的信息有代碼段和數據段信息,向DSP下載程序的入口點地址、寄存器配置信息和可編程延時信息。

    讀引導表可知以下信息:程序入口地址是引導表加載結束后用戶程序開始執行的地址,也就是用戶程序生成的map文件中顯示的入口地址;需配置寄存器數表明后面有多少個需要配置的寄存器;當延時標志為0xFFFF時,執行延時,延時長度決定了在寄存器配置后延時多少個CPU周期才進行下一個動作;段字節數、段起始地址和數據表示用戶程序中定義的各個段的內容;引導表以32個0為結束標志。
    生成引導表的方法:通過在DOS環境下使用hex55.exe轉換工具。在轉換操作之前, 先把用戶程序生成的
.out文件、包含轉換選項的CMD文件hex5509.cmd和轉換工具hex55.exe放在同一個文件夾里,在DOS方式下先將路徑修改為文件所在的位置,然后在此路徑下運行命令hex55 hex5509.cmd,即可生成想要的.hex文件。
    在轉換時,提供引導表的相關配置信息的CMD文件這里被命名為hex5509.cmd,文中用到的hex5509.cmd的內容為:
    -boot                            /*創建一個引導表*/
    -v5510:2                /*選擇合適的DSP引導表格式*/
    LED.out                                     /*輸入文件*/
    -o FLASH.hex                              /*輸出文件*/
    -a                            /*輸出格式為straight ASCII*/
    -parallel16                  /*16位并行異步加載模式*/
    -memwidth 16
    -romwidth 16
    -e 0x000004d4                     /*程序的入口地址*/
    -map LED.map                     /*輸出map文件*/
    -delay 0xffff                                 /*延時*/
3 Flash燒寫
    Flash的讀操作與傳統EPROM讀操作相同。由于芯片使用軟件保護模式進行操作,用戶編程時,只要向指定的地址寫入指定的序列,就可以啟動Flash芯片內部的寫狀態機,完成指定的操作。表2為Flash的操作命令說明(對芯片的擦除和編程都是按照字進行的),表中所有的數據都是十六進制數。
    Flash的正確操作順序:先復位,再擦除,最后編程。按照表2提供的操作命令時序來實現對AM29LV800的擦除和編程,PA為編程地址,PD為編程數據。Flash擴展在CE1空間,起始地址是200000,所以操作時所有地址必須加上200000。例如燒寫工程中擦除部分命令為:
    deminaddr = (int *)CESECT1;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x00aa;
    addbias = 0x02aa;
    *(deminaddr+addbias) = 0x0055;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x0080;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x00aa;
    addbias = 0x02aa;
    *(deminaddr+addbias) = 0x0055;
    addbias = 0x0555;
    *(deminaddr+addbias) = 0x0010;
    delay(100)
    芯片擦除需要占用6個總線周期,而芯片編程需要4個總線周期,依照表3的數據,在每個總線周期對相應地址寫入命令字就可以了。用戶一般都是對芯片進行寫操作,寫操作只能使‘1’變‘0’,而擦除只能使‘0’變為‘1’。圖3為擦除和編程命令波形圖,清楚地顯示了擦除和編程操作過程。

    判斷編程或擦除的結束是當把編程或擦除的命令字按照其時序寫入Flash 時,在寫編程命令時序或擦除命令時序的最后一個WE上升沿到來之后,AM29LV800會自動運行一個嵌入在Flash內部的算法來判斷編程或擦除操作是否結束。采用觸發位校驗的方法,檢測數據切換位DQ6(Toggle Bit)的狀態,連續讀數據會使DQ6的值在‘0’和‘1’之間來回切換,當編程或擦除結束時,DQ6就停止值的切換[4]。因此,可以通過連續兩次讀DQ6的值來判斷編程或擦除是否結束,當兩次讀得的值相同時,說明編程或擦除結束,否則沒有。觸發位檢測算法流程圖如圖4所示。

4 程序的燒寫實現
    本系統在CCS仿真環境下對Flash進行在線編程。先建立一個Flash的燒寫工程,并在工程中將要燒寫進Flash的引導表文件通過CCS的LOAD DATA功能直接加載進DSP的內存,根據加載的首地址和數據長度,在仿真環境下燒寫進Flash中。值得注意的是,程序加載的內存空間不能與Flash的燒寫程序重疊,否則燒寫失敗。燒寫完成以后,關掉電源,拔掉仿真器電纜,讓仿真器和計算機脫開:重新打開電源,實驗板上指示燈閃爍,表明燒寫進Flash程序正在運行,自啟動成功。
    需要補充的是,經過hex55.exe文件轉化后的hex文件的引導表文件不能直接導入CCS中,CCS只支持將特別規定的DAT格式文件通過LOAD DATA導入內存,所以在導入之前必須先將引導表轉化成DAT格式文件,這個工作可以由VC編寫一個簡單的C語言轉化程序實現。
    本文闡述了一種針對TMS320VC5509A DSP簡單有效的Flash燒寫方法,并提出了程序自舉引導的實現方法。可以有效地解決程序代碼存儲問題和DSP脫機自舉問題,不僅提高了調試效率,也增加了系統的靈活性。本文討論的引導方法包括硬件設計及相關程序,已經在筆者的實際開發語音項目中使用并成功運行。
參考文獻
[1] 薛金輝,王忠勇. TMS320VC5501在線燒寫Flash并自舉啟動方法研究[J]. 通訊技術,2009,42(09):193-195.
[2] Texas Instruments. TMS320VC5509 DSP external memory interface (EMIF) reference guide[S]. Literature Number: SPRU670,2003(10).
[3] Texas Instruments. Using the TMS320VC5509A bootloader [S]. SPRA375F, 2008(9).
[4] Advanced Micro Devices. am29lv800b [R].AMD Technical specification, publication #21490, 2000(8).

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
免费观看成人鲁鲁鲁鲁鲁视频| 欧美国产先锋| 亚洲国产欧美日韩精品| 99riav久久精品riav| 国产午夜精品福利| 蘑菇福利视频一区播放| 欧美一区日本一区韩国一区| 99re热这里只有精品免费视频| 午夜精品福利一区二区三区av | 亚洲大片在线| 亚洲欧美一级二级三级| 在线观看av不卡| 国产精品wwwwww| 欧美激情一区二区三级高清视频| 欧美中文字幕不卡| 亚洲精品一区二区三区樱花| 久久激情中文| 欧美夜福利tv在线| 亚洲免费观看在线视频| 亚洲国产免费看| 狠狠色丁香婷婷综合影院| 国产欧美va欧美va香蕉在| 欧美激情一区二区三区蜜桃视频| 久久精品国产亚洲一区二区三区 | 亚洲国产日韩欧美在线图片| 亚洲午夜黄色| 9色porny自拍视频一区二区| 亚洲精品视频免费在线观看| 国产日韩一区二区| 国产欧美一区二区精品性| 国产精品久久久久永久免费观看 | 亚洲一区二区三区精品视频| 99一区二区| 日韩视频永久免费观看| 最新日韩在线| 亚洲乱码精品一二三四区日韩在线 | 先锋影音久久| 亚洲欧美精品中文字幕在线| 亚洲一区二区影院| 亚洲在线观看视频网站| 99亚洲伊人久久精品影院红桃| 日韩午夜电影在线观看| 亚洲免费电影在线观看| 一区二区高清| 99综合视频| 亚洲香蕉成视频在线观看| 亚洲一区国产| 亚洲午夜久久久久久久久电影网| 一区二区日韩精品| 一区二区三区四区五区精品| 亚洲高清在线精品| 亚洲伦伦在线| 亚洲视频精品在线| 午夜免费日韩视频| 亚洲第一狼人社区| 亚洲精品久久久一区二区三区| 亚洲免费精彩视频| 亚洲自拍偷拍色片视频| 亚洲在线视频| 欧美在线看片| 久久亚裔精品欧美| 欧美福利电影网| 欧美日韩精品在线| 国产精品视频精品| 国语自产偷拍精品视频偷| 国产午夜精品久久久| 尤物九九久久国产精品的特点| 亚洲人成人一区二区三区| 99精品国产福利在线观看免费| 亚洲一区网站| 亚洲国产精品第一区二区| 99re热这里只有精品视频| 亚洲一区二区三区涩| 欧美在线一二三区| 麻豆精品一区二区av白丝在线| 欧美日本视频在线| 国产精品一区二区视频| 怡红院精品视频在线观看极品| 亚洲国产精品精华液网站| 亚洲女女做受ⅹxx高潮| 亚洲精品一区二区三区四区高清| 亚洲欧美偷拍卡通变态| 男人的天堂成人在线| 国产精品一区二区久久久| 亚洲国产精品一区| 欧美在线3区| 亚洲欧美国产一区二区三区| 欧美另类videos死尸| 韩国亚洲精品| 亚洲在线视频免费观看| 制服丝袜亚洲播放| 欧美成人一区二区三区片免费| 国产日韩在线看片| 亚洲婷婷国产精品电影人久久| 日韩午夜一区| 欧美成人国产| 激情亚洲成人| 性欧美xxxx大乳国产app| 亚洲综合视频网| 欧美日韩精品一区二区三区| 亚洲风情在线资源站| 久久精品视频一| 久久精品视频一| 国产欧亚日韩视频| 亚洲影院免费观看| 亚洲一区二区黄色| 欧美日韩国产精品自在自线| 亚洲国产影院| 91久久精品美女| 久久全球大尺度高清视频| 国产午夜精品视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲——在线| 国产精品成人观看视频免费| 99re成人精品视频| 一区二区三区回区在观看免费视频| 免费国产自线拍一欧美视频| 激情综合在线| 亚洲国产岛国毛片在线| 久久深夜福利| 国产在线视频欧美一区二区三区| 午夜在线一区二区| 欧美主播一区二区三区美女 久久精品人 | 狠狠色狠狠色综合日日tαg | 亚洲免费视频中文字幕| 国产精品久久久久99| 亚洲深夜激情| 欧美影院午夜播放| 国产一区二区三区在线播放免费观看 | 亚洲二区免费| 欧美高清在线视频观看不卡| 最新中文字幕亚洲| 一本久久综合亚洲鲁鲁| 欧美色区777第一页| 一区二区三区日韩欧美| 亚洲综合久久久久| 国产欧美一区二区视频| 久久gogo国模裸体人体| 免费一级欧美片在线观看| 91久久精品日日躁夜夜躁欧美| 日韩亚洲欧美成人一区| 欧美日韩精品免费在线观看视频| 一区二区三区欧美日韩| 欧美伊人久久久久久久久影院| 国产亚洲网站| 亚洲国内精品| 欧美日韩精品免费观看视一区二区| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 亚洲一区观看| 久久久久在线| 亚洲黑丝在线| 亚洲视频在线观看| 国产精品一区在线观看你懂的| 欧美中文日韩| 欧美高清在线播放| 亚洲高清在线观看| 午夜电影亚洲| 免费成人黄色片| 亚洲美女视频在线观看| 亚洲一区综合| 国产一区二区三区久久悠悠色av| 亚洲欧洲午夜| 国产精品久久久久久久午夜片| 欧美一区二区在线| 欧美精品高清视频| 亚洲欧美日韩一区二区三区在线观看| 久久久久久久999| 亚洲精品久久久久久久久久久| 亚洲欧美国产制服动漫| 好吊日精品视频| 一区二区三区免费网站| 国产女精品视频网站免费| 91久久极品少妇xxxxⅹ软件| 欧美性猛交视频| 久久精品卡一| 欧美视频日韩视频| 久久精品系列| 欧美日韩一区在线视频| 久久国产精品99精品国产| 欧美日韩卡一卡二| 久久成人精品| 欧美亚日韩国产aⅴ精品中极品| 欧美综合激情网| 欧美性猛交xxxx免费看久久久| 亚洲丁香婷深爱综合| 国产精品久久99| 亚洲免费播放| 国产专区精品视频| 亚洲女同精品视频| 亚洲国产精品电影| 久久久久久久网站| 夜夜爽www精品| 欧美成人一区二区三区在线观看| 亚洲欧美日韩国产中文在线| 欧美电影免费观看网站| 午夜在线精品| 欧美性大战久久久久久久| 亚洲人成人一区二区在线观看| 国产区精品在线观看| 亚洲丝袜av一区|