李 慧 周 明
摘 要:在分析Freescale公司32位微控制器MPC5554的FLASH編程特性基礎上,完成了MPC5554外部擴展FLASH存儲器的軟、硬件設計。研究利用Codewarrior編譯器、P&E;調試器與JTAG接口模式組合的軟件開發平臺實現外部FLASH編程的軟件屬性配置及編程設計。重點研究MPC5554相關寄存器配置實現與JTAG模式下對AM29LV160DT進行擦除和寫入的編程原理。該設計成功實現JTAG模式下對MPC5554外部FLASH存儲器編程,為利用MPC5554實現復雜多變量控制系統打下基礎。
關鍵詞:MPC5554;AM29LV160DT;JTAG;FLASH編程
中圖分類號:TP311
0 引 言
隨著信息技術的發展,嵌入式系統越來越廣泛地應用于手機通信、汽車、航空航天、工業控制等領域。在這些電子產品中,大多以嵌入式微處理器為核心,配套相關的外圍輔助設備,對控制對象進行軟硬件的功能剪裁性設計,并將控制程序固化在非易失性存儲器中。FLASH作為一種存儲速度快,容量大,可多次擦寫并且價格便宜的存儲器得到了廣泛的應用。由于有些微處理器內部不包含FLASH或FLASH存儲空間太小、擦寫次數有限,為了提供足夠的程序存儲空間,需要對其進行外部FLASH擴展。JTAG是目前廣泛使用的一種系統在線編程的模式,大大方便了嵌入式系統下載程序至FLASH。該設計使用的微處理器為MPC5554,通過JTAG接口對外擴FLASH進行編程。
1 MPC5554簡介
[JP2]MPC5554是Freescale公司推出的采用PowerPC內核的一款32位微控制器,屬于MPC5500系列第一代產品,可用于航空航天、汽車、工業控制等嵌入式系統中。如圖1所示,MPC5554內部帶有浮點運算單元,集成DSP運算指令,擁有較高的計算能力,可以滿足多任務處理和實時控制的要求。MPC5554包含64 KB內部SRAM,32 KB Cache,2 MB內部FLASH,64路〆DMA,24路猠MIOS,64路猠TPU通道,2路eSCI,4路DSPI,3路FlexCAN,40路12 b A/D(可擴展為64路),中斷控制器,以及JTAG,Nexus調試接口等功能模塊。MPC5554為416腳PBGA封裝,可在-40~+150 ℃的環境下工作,系統時鐘可達132 MHz,中斷延遲小于70 ns(@132 MHz),內部邏輯供電1.5 V,輸入/輸出供電3.3 V,5 V,外部總線接口支持1.62~3.6 V操作。[JP]
MPC5554提供2 MB可編程、非優化內部FLASH,可用于指令存取和數據存儲。然而MPC5554內部的FLASH為CMF型FLASH,這種FLASH的缺陷是擦寫次數有限,以擦寫一次為單位計算,MPC5554的內部FLASH只能進行100次。對于開發人員,這種局限性非常不利于開發階段的程序寫入和功能調試。一種有效方法是擴展外部FLASH,這樣可以在開發階段將程序寫入外部FLASH,待程序定版后,只需做稍微修改再寫入內部FLASH。此外,當控制對象為復雜的多變量系統時,內部FLASH往往無法提供足夠的程序存儲空間,采用外部擴展FLASH就顯得尤為必要。
2 JTAG介紹
JTAG(Joint Test Action Group)成立于1985年,由幾家主要的電子制造商發起制訂的PCB和IC測試標準。JTAG建議于1990年被IEEE批準為IEEE1149.1[CD*2]1990測試訪問端口和邊界掃描結構標準。該標準規定了進行邊界掃描所需要的硬件和軟件。JTAG主要用于:電路的邊界掃描測試和可編程芯片的在系統編程。目前MPC5554中使用的JTAG為IEEE1149.1[CD*2]2001標準。
JTAG是一種嵌入式處理器開發工具的接口,是目前單片機普遍采用的在系統調試和編程方式之一。使用JTAG調試模式,用戶可以發送指令和數據給處理器,同時也可以接收處理器發送過來的數據,這樣就可以在外部實現對處理器的控制并進行一定的操作,譬如讀寫寄存器、擦除FLASH、向RAM、FLASH寫入數據等。標準的JTAG接口是四線:TMS,TCK,TDI,TDO。相關JTAG引腳的定義為:TCK為測試時鐘輸入;TDI為測試數據輸入,數據通過TDI引腳輸入JTAG接口;TDO為測試數據輸出,數據通過TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來設置JTAG接口處于某種特定的測試模式;TRST為測試復位,輸入引腳,低電平有效[2[CD*2]5]。
MPC5554提供JTAG和Nexus兩種調試接口。為了使用方便,Freescale公司開發出了針對JTAG與Nexus共用的專用燒寫器與配套軟件,為14針腳。其主要特點是雙向同步串行通信。同步串行通信時鐘由仿真器提供,并與單片機總線時鐘同步。通過USB Multilink轉換接口(連接到目標板14針JTAG/Nexus接口上),可以在線實現燒寫、校驗、檢查、上載、擦寫等功能。Freescale對14針JTAG/Nexus接口引腳定義,參見表1。
3 硬件設計
該系統的硬件設計為基于MPC5554的最小系統板,包括晶振電路、電源模塊、I/O模塊、A/D轉換模塊、RS 232通信端口,CAN端口,跑馬燈,外擴2片AMD公司的FLASH芯片 AM29LV160DT作為程序存儲器,2片外擴RAM,其功能模塊如圖2所示。
[JP2]AM29LV160DT存儲容量為16 Mb,供電方式為2.7~3.6 V單電壓供電,無需另外提供FLASH擦除和寫入電壓。該芯片有48引腳FBGA,48引腳TSOP和44引腳SO三種封裝形式,該系統中使用SO44封裝形式,圖3所示為其引腳邏輯圖‐[6]。其數據寬度可配置為8位(字節)和16位(字)兩種模式。FLASH內部包含35個扇區,每個扇區大小根據數據寬度的不同而不同[6]。表2列出了AM29LV160DT的扇區地址分配。
為了在嵌入式系統中獲得更高的性能優勢,常需要構建32位存儲系統,可通過以下兩種方式構建:使用2片16位數據寬度的FLASH存儲器芯片并聯或者使用1片32位數據寬度的FLASH存儲芯片。該系統設計要求程序存儲器為4 MB容量,32位數據寬度,故采用2片AM29LV160DT并聯構建存儲系統,其連接參見圖4。將2片FLASH的BYTE引腳接高電平,使芯片工作在16位模式下,每片FLASH傳送兩個字節數據。該系統為32位數據寬度,所以需要兩片FLASH芯片,同時傳送4個字節數據。
由于MPC5554采用是大端數據格式,即高字節位于低地址,而AM29LV160DT卻與此相反,采用的是小端數據格式,所以在進行電路設計時,將MPC5554的地址線A[29:10]依次連接到2片AM29LV160DT的地址線[6]狝[0:19]。芯片的RY/BY引腳接高電平時可提供多種芯片“忙”監測功能,通過查詢數據線檢測芯片是否處于擦除或編程等“忙”狀態,但在SO44封裝芯片中并無該引腳,故在該系統中并沒有出現RY/BY引腳[7[CD*2]10]。
4 軟件實現
該系統軟件開發基于Codewarrior,P&E;(Processor Expert)與JTAG組合開發平臺,圖5是開發平臺示意圖。其中,Codewarrior是Freescale公司針對PowerPC系列微控制器開發的集成開發環境。Codewarrior集編輯器、調試器功能于一體,可進行編碼、編譯、編輯、鏈接和調試等開發過程。Codewarrior中使用C/C++語言進行編程。為了便于開發,Freescale公司開發了供MPC5554配套使用的圖形化開發工具P&E;(Processor Expert),通過它對MPC5554各功能模塊進行設置,生成相應函數和執行代碼,可在Codewarrior開發環境中使用。
MPC5554通過外部總線接口(Extrenal Bus Interface,EBI) 和存儲器控制器提供對外部存儲器的訪問。其中,外部總線接口提供24條地址線和32條數據線與存儲器相連,存儲器控制器提供4條片選信號線CS[0:3],1條輸出使能信號線OE,4條讀寫信號線WE[0:3],用于選擇和讀寫外部存儲器或設備。MPC5554的24條地址線和4條片選信號配合可以訪問64 MB的地址空間。
[JP2]在軟件實現方面,主要是對EBI相關寄存器進行設置,同時在SIU(System Integration Unit)模塊對相關管腳進行功能設置,以及對FLASH自身的程序設計。MPC5554自身劃分了若干功能模塊,并設有相應的寄存器。MPC5554的大部分引腳具有復用功能,每個引腳通過SIU模塊的PCR(Pad Configuration Registers)寄存器進行功能選擇。例如片選信號引腳功能復用為CS[0:3][CD#*2]ADDR[8:11][CD#*2]GPIO[0:3],作為片選信號需要對寄存器進行設置,其他相關引腳同理設置。[JP]
MPC5554的EBI模塊對外部數據總線進行設置,對某片選信號相對應的外擴存儲器進行地址與存儲空間設置。其中,OR寄存器通過掩碼的方式設置片選信號控制的存儲空間大小。例如,CS[3]連接的FLASH起始地址為0x20000000,存儲器空間為2 MB。
該系統的重點是對FLASH進行操作的程序,主要是對AM29LV160DT內部的命令寄存器按一定的時序寫入命令,如表3所示‐[6]。通過這些命令或命令序列可以實現獲得芯片信息、數據讀取、整體擦除、扇區擦除和數據寫入等功能。
5 結 語
在此實現了在JTAG模式下對MPC5554外部FLASH的編程設計,驗證了Codewarrior,P&E;與JTAG組合開發平臺的可用性,為MPC5554微控制器用于復雜多變量系統開發打下了基礎。
參 考 文 獻
[1]Freescale Corp.MPC5553/5554 Microcontroller Reference Manual[Z].2007.
[2]何希順,張躍,何榮森.嵌入式系統中的JTAG接口編程技術[J].電子技術應用,2001(12):9[CD*2]16.
[3]鄧宗明,蔣祺明.基于PowerPC開發板的FLASH編程方法與實現[J].計算機工程,2004(1):168[CD*2]170.
[GK11!]
[4]郭功兵,李學橋.JTAG接口在嵌入式系統中的應用[J].鄭州輕工業學院學報:自然科學版,2004(1):70[CD*2]75.
[5]趙海艦,甘萌.嵌入式系統中的FLASH編程技術研究[J].計算機工程與設計,2005(11):3 006[CD*2]3 009.
[6]AMD.AM29LV160D Data Sheet(Revision B+3)[Z].2000.[HK]