來源:壹芯微 發布日期
2021-12-11 瀏覽:-基于DSP芯片的Flash程序自舉引導設計知識介紹
隨著數字信號處理技術的快速發展,DSP芯片被廣泛應用于各種數字信號處理系統中。而Flash是一種可在線進行電擦寫而掉電后信息又不丟失的存儲器,它具有功耗低、容量大、擦寫速度快等特點。如何將程序燒寫進Flash,并在上電時加載到DSP內部的RAM中,是Flash在DSP系統應用中的兩個基本問題。因此本文基于TI公司的TMS320VC5509A和AMD公司的AM29LV800開發系統,介紹了在線燒寫Flash并實現自舉啟動的方法。
1.硬件電路設計
圖1為TMS320VC5509A與AM29LV800的連接示意圖,Flash擴展在CE1空間,起始地址為200000。由于TMS320VC5509A只有14根地址線A0~A13,又因為Flash作為數據存儲空間使用時的地址編碼采用字尋址方式,則DSP的A0信號無效,所以AM29LV800芯片的低13位地址線A0~A12連接TMS320VC5509A的地址線A1~A13,高6位地址線A13~A18由緩沖串口來擴展。

圖1 TMS320VC5509A與AM29LV800的連接圖
AM29LV800是低功耗Flash,工作在2.7V~3.6V電壓下,一般存儲數據可以保存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有多種加載方式,如表1所示,設置DSP的GPIO0-GPIO3,DSP在復位時讀取這4個引腳上的狀態以確定所使用的啟動模式。本文使用16-bitEMIF加載方式,雖然連線復雜,需要考慮并行非易失存儲器Flash與EMIF接口的匹配關系,但是它的優點很多:不需要外部時鐘驅動,非易失存儲器種類多樣,容量較大,除了存儲表之外,還可存儲系統需要保存的關鍵數據,以便在掉電時保存信息。
表1 TMS320VC5509A的加載方式

在這些加載模式下,程序之前先要生成一張載入表,即引導表。引導表的結構如圖2所示,引導表攜帶的信息有代碼段和數據段信息,向DSP程序的入口點地址、寄存器配置信息和可編程延時信息。

圖2 引導表結構
讀引導表可知以下信息:程序入口地址是引導表加載結束后用戶程序開始執行的地址,也就是用戶程序生成的map文件中顯示的入口地址;需配置寄存器數表明后面有多少個需要配置的寄存器;當延時標志為0xFFFF時,執行延時,延時長度決定了在寄存器配置后延時多少個CPU周期才進行下一個動作;段字節數、段起始地址和數據表示用戶程序中定義的各個段的內容;引導表以32個0為結束標志。
生成引導表的方法:通過在DOS環境下使用hex55.exe轉換工具。在轉換操作之前,先把用戶程序生成的。out文件、包含轉換選項的CMD文件hex5509.cmd和轉換工具hex55.exe放在同一個文件夾里,在DOS方式下先將路徑修改為文件所在的位置,然后在此路徑下運行命令hex55hex5509.cmd,即可生成想要的。hex文件。
在轉換時,提供引導表的相關配置信息的CMD文件這里被命名為hex5509.cmd,文中用到的hex5509.cmd的內容為:

3.Flash燒寫
Flash的讀操作與傳統EPROM讀操作相同。由于芯片使用軟件保護模式進行操作,用戶編程時,只要向指定的地址寫入指定的序列,就可以啟動Flash芯片內部的寫狀態機,完成指定的操作。表2為Flash的操作命令說明(對芯片的擦除和編程都是按照字進行的),表中所有的數據都是十六進制數。
Flash的正確操作順序:先復位,再擦除,編程。
按照表2提供的操作命令時序來實現對AM29LV800的擦除和編程,PA為編程地址,PD為編程數據。Flash擴展在CE1空間,起始地址是200000,所以操作時所有地址必須加上200000。例如燒寫工程中擦除部分命令為:

表2 AM29LV800B的操作命令說明

芯片擦除需要占用6個總線周期,而芯片編程需要4個總線周期,依照表3的數據,在每個總線周期對相應地址寫入命令字就可以了。用戶一般都是對芯片進行寫操作,寫操作只能使‘1’變‘0’,而擦除只能使‘0’變為‘1’。圖3為擦除和編程命令波形圖,清楚地顯示了擦除和編程操作過程。

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

圖4 觸發位檢測算法流程圖
4.程序的燒寫實現
本系統在CCS仿真環境下對Flash進行在線編程。
先建立一個Flash的燒寫工程,并在工程中將要燒寫進Flash的引導表文件通過CCS的LOADDATA功能直接加載進DSP的內存,根據加載的首地址和數據長度,在仿真環境下燒寫進Flash中。值得注意的是,程序加載的內存空間不能與Flash的燒寫程序重疊,否則燒寫失敗。
燒寫完成以后,關掉電源,拔掉仿真器電纜,讓仿真器和計算機脫開:重新打開電源,實驗板上指示燈閃爍,表明燒寫進Flash程序正在運行,自啟動成功。
需要補充的是,經過hex55.exe文件轉化后的hex文件的引導表文件不能直接導入CCS中,CCS只支持將特別規定的DAT格式文件通過LOADDATA導入內存,所以在導入之前必須先將引導表轉化成DAT格式文件,這個工作可以由VC編寫一個簡單的C語言轉化程序實現。
小結
以上就是基于DSP芯片的Flash程序自舉引導設計介紹了。此設計可以有效地解決程序代碼存儲問題和DSP脫機自舉問題,不僅提高了調試效率,也增加了系統的靈活性。
壹芯微(二,三極管,MOS管專業生產商)主要生產與銷售:肖特基二極管,整流/高效整流二極管,快恢復/超快恢復二極管,TVS二極管,場效應管,三極管,可控硅,三端穩壓管,整流橋,IC集成電路;工廠直銷價,品質保障,提供售前選型,送樣測試,技術支持,售后FEA,如需了解產品詳情或最新報價,歡迎咨詢官網在線客服。
手機號/微信:13534146615
QQ:2881579535(點擊可咨詢)
工廠地址:安徽省六安市金寨產業園區
深圳辦事處地址:深圳市福田區寶華大廈A1428
中山辦事處地址:中山市古鎮長安燈飾配件城C棟11卡
杭州辦事處:杭州市西湖區文三西路118號杭州電子商務大廈6層B座
電話:13534146615
企業QQ:2881579535

深圳市壹芯微科技有限公司 版權所有 | 備案號:粵ICP備2020121154號