摘要:詳細介紹DSP與Flash存儲器的兩種硬件接口方式及在線編程,分析了兩種硬件接口方式下在線編程的區別,給出了相應的在線編程核心代碼并在實際電路上測試通過,可作為DSP嵌入式系統設計的參考。
關鍵詞:在線編程;Flash存儲器;硬件握手;軟件握手
引言
隨著嵌入式系統向體積更小、性能更高的方向發展,傳統的DIP(雙列直插)集成電路因體積龐大、元器件I/O引腳數量受封裝限制等缺陷,已逐漸淡出人們的視線。在嵌入式產品設計中,大量采用SMT貼片元器件,既提高了性能,又節省了寶貴的空間。由于采用貼片元器件,無法將Flash存儲器等元器件從電路板上取下來單獨進行編程。專用編程器的方式已經很少采用,取而代之的是采用基于仿真器連接的JTAG接口的在線編程方式。這種在系統帶電編程的方式不受時間和空間的限制,隨時隨地都可進行,且產品軟件版本升級容易。
在嵌入式系統中,為了實現程序的脫機自動運行,程序往往固化在電可擦除的Flash存儲器中。要實現一個嵌入式系統的帶電脫機運行,在線編程就成為嵌入式系統開發過程的必經塑封電感器之路。由于在線編程涉及到硬件和軟件方面的內容,因此要從頂層設計和系統的角度來考慮在線編程。硬件設計要為軟件設計作鋪墊,盡可能簡化軟件設計。
本文以TI公司的DSP芯片TMS320C6711D和AMD公司的4 Mb Flash存儲器AM29L貼片電感V400B為例來介紹兩種在線編程方式。
1 DSP與Flash存儲器的兩種硬件連接關系
1.1 以Ready信號作為硬件握手
帶有Ready信號的TMS320C6711D的EMIF(Exterhal Memory Interface)接口與Flash存儲器AM29LV400B的硬件連接如圖1所示。由于AM29LV-400B輸出的就緒信號/忙信號()為OD(漏極開路)輸出,需要在該信號上加上拉電阻差模電感并連接到VCC。
1.2 采用無Ready硬件連接的軟件握手
不帶Ready信號的TMS3差模電感20C6711D與Flash存儲器AM29LV400B的硬件連接如圖2所示。
2 軟件設計
2.1 帶有硬件握手的軟件設貼片電感計
帶有Ready信號連接的Flash存儲器編程時序如圖3所示。Flash的就緒信號/忙信號()輸出為低電平時,表明Flash正忙,處于編程或擦除狀態。由于DSP與Flash存儲器采用Ready/Busy信號作為硬件握手信號,當Ready/Busy信號為低電平時,CPU在總線時序上插入等待周期,直到Ready/Busy信號解除(為高電平)。在Ready信號為低電平期間,由于CPU處于等待狀態,程序被暫停執行,因此不需要通過軟件來判斷Flash存儲器的編程或擦除狀態。
2.2 帶有軟件握手的軟件設計
Flash的就緒信號/忙信號()輸出為低電平時,表明Flash正忙,處于編程或擦除狀態,此時寫入或讀出的數據是無效的,不是程序員需要的數據;當該信號輸出為高電平時,表明Flash已處于就緒狀態,可對其進行寫入或讀出數據的操作。
由于DSP與Flash存儲器的接口采用軟件握手,在對Flash存儲器進行編程或擦除時,DSP的總線周期中不會由硬件自動插入等待周期,如果此時仍采用2.1節的Flash編程函數對Flash存儲器進行編程,則會得到錯誤的編程結果。編程結束后會發現Flash存儲器中有一部分內容仍然是0xFFFF,處于編程前的狀態。雖然對Flash存儲器進行了編程操作,但由于Flash存儲器上一次編程操作還未完成,本次的編程操作無效,數據根本寫不進Flash存儲器。在CCS3.1中用“View/Memery”功能查看Flash存儲器,就會發現Flash存儲器中的數據等間隔地出現編程正確和編程不正確的現象。筆者在自己設計的TMS320C6711D-250嵌入式模塊(帶有AM29LV400B Flash存儲器)上,通過斷開DSP與Flash存儲器的硬件Ready信號進行編程測試,無等待狀態的測試結果見表1,有等待狀態的測試結果見表2。
可見,在沒有硬件握手的情況下,需要通過軟件來判斷當前Flash存儲器編程或擦除的狀態來進行編程操作。如果Flash存儲器正處于編程或擦除過程中,則無法繼續對Flash存儲器進行編程,需等到Flash存儲器上一次數據編程(寫入)完成時才能進行下一次數據編程(寫入)。否則,會得到錯誤的編程結果,造成編程后數據校驗失敗。 大功率電感廠家 |大電流電感工廠