新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320C672x系列浮點DSP的EMIF研究與應用

        TMS320C672x系列浮點DSP的EMIF研究與應用

        作者: 時間:2011-03-16 來源:網絡 收藏


        Flash在讀操作中類似于普通的ROM,在寫操作中需要使用一些特殊命令字,按一定的順序編程,且可隨時編程,編程命令根據器件參考資料。對Flash的讀/寫流程如圖7所示。


        由表1知,對Flash進行16位數據寫操作時每次偏移地址需要左移1位,即:*(short int*)(0x90000000+i*2)=shortint i://對Flash的i地址寫入16位數據i由于此Flash高位地址線為擴展的地址線,必然導致訪問Flash時地址不連續。每次只能連續訪問Flash內部4 Kx16 Bit空間,即0x9000_0000~0x9000_1FFE。需要訪問高地址空間時,首先通過設置相應的GPIO引腳或者通過數據線利用CPLD設置Flash的相應高地址線;然后再分別操作低位地址線進行讀寫,便可完成對高地址空間的讀寫。

        4 并行Flash自啟動
        4.1 Flash自啟動過程

        在實際中通常把代碼和數據表存放在外部的非易失性存儲器Flash中。TMS320C672X片上的Bootloader工具只能將1KB的代碼搬移到內部RAM。但是在通常情況下,用戶程序的大小都會超過1 KB,所以需要在外部Flash的前1 KB范圍內預先存放一小段程序,待片上Bootloader工具把此段代碼搬移入內部并開始執行后,由此段代碼將Flash中剩余的用戶程序搬移入內部RAM中。Flash中前1 KB代碼為二級Bootloader。系統上電或復位時,內部固化的啟動代碼會自動將位于Flash地址空間(0x90000000~0x9FFFFFFF)開頭的1 KB代碼傳輸到RAM存儲空間,這就是一次引導。很明顯,一次引導的代碼并不能滿足絕大多數編程者對代碼長度的要求,因此就需要二次引導過程。二次引導是將一次引導的1 KB代碼編寫成一個搬移程序,搬移程序將用戶的主程序搬移到高速RAM中,并且搬移完成后自動跳轉至主程序入口處運行主程序。由于硬件設計中Flash的地址不連續,因此對高位地址線的控制需要在搬移程序中實現。圖8為使用二級Bootloader的流程圖。


        二級Bootloader代碼的編寫必須使用匯編語言,因為在執行二級Bootloader時C的運行環境還未建立起來。
        4.2 Flash的燒寫方法
        應用程序和二次Boot編寫和編譯完成之后,便可使用TI公司提供的FlashBurn工具完成Flash燒寫,燒寫完成后需要重新上電或復位,便可實現自啟動。此FlashBurn工具雖然燒寫方法較為直觀,但是過程復雜,首先需要下載一個.out文件(FBTC)至DSP系統中,實現對Flash的操作;其次FlashBurn工具不能識別.out文件,只能接收.hex的十六進制文件,必須將.out文件轉換為.hex文件。
        因此,用戶可以自己根據Flash器件的操作方法編寫燒寫程序,避免文件格式轉換的繁瑣。首先把用戶應用程序(包括二級Bootloader)編譯生成的.out文件轉載到DSP的RAM中,然后根據要求編寫Flash燒寫程序,把燒寫程序的.out文件裝載到DSP的另一塊區域(注意修改cmd文件中地址范圍,避免兩次裝載可能產生的地址覆蓋),執行程序完成Flash的燒寫。注意:燒寫到Flash中的應用程序前面12個字節用于存放_c _int00地址、應用程序字節數、應用程序在RAM中的起始地址,這12個字節需要在燒寫過程中添加。

        5 結束語
        本文主要DSP 接口的功能和使用方法,并針對SDRAM和Flash器件討論了的具體硬件接口設計和軟件配置;同時分析了的自啟動過程,提出了兩種燒寫Flash的方法。該應用方法經實驗驗證,確實可行并易于實現。

        存儲器相關文章:存儲器原理



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 堆龙德庆县| 阿拉善右旗| 甘谷县| 诸城市| 米泉市| 辽阳市| 湘乡市| 泰兴市| 永和县| 青海省| 沅陵县| 乌海市| 苗栗县| 平湖市| 报价| 古田县| 五原县| 沁阳市| 仁寿县| 东辽县| 上林县| 柞水县| 东台市| 长葛市| 乐陵市| 巴青县| 温泉县| 邢台县| 和平区| 博野县| 永济市| 凉城县| 怀柔区| 普兰县| 波密县| 阳江市| 福清市| 翁牛特旗| 温泉县| 保靖县| 顺义区|