吳琴 姚善化 杜斌
【摘 要】空間環境下飛行器中的半導體器件容易發生單粒子效應,因而有關空間環境下檢測半導體器件可靠性方法的研究意義重大。本文給出了使用Code Warrior軟件以及USB TAP仿真器檢測MPC8245內部的寄存器以及內存運行狀態的方法。并通過實例給出了Code Warrior軟件中配置文件的設計,同時給出實驗結果。
【關鍵詞】MPC8245;Code Warrior;USB TAP;配置文件
1 MPC8245功能簡介
MPC8245作為PowerPC處理器中主機處理器系列中一員,其具有高性能的603e處理核,具備硬件浮點單元,其默認的主頻為333MHz,比較適合圖像處理以及高速的運算。由于該處理器本身內嵌有橋片,通過該橋片可以管理其外圍設備,主要是用來完成器件內部局部總線、60X總線到PCI總線的轉換,同時管理存儲體,包括SDRAM和Flash。
2 endian模式
Endian]指的是"字節排列順序",它表示一個字或雙字在內存中或傳送過程中的字節順序。在計算機的二進制系統中,字節排列順序分為兩種即:big-endian(大端)和little-endian(小端)。big-endian模式是將最高位的字節放在最前面;而little-endian模式則是將最低位的字節放在最前面。例如:將一個32位的整數0x13245867存放到一個整型變量(int)中,這個整型變量采用大端或小端模式在內存中的存儲位置如表1所示。
表1 大/小端模式的數據存儲
Tab.1 Storage data in big/little endian
通過表1可知,采用不同模式對數據進行存放的主要區別在于存放的字節順序,大端方式是將高位存放在低地址處,而小端方式是將低位存放在低地址處。采用大端模式進行數據的存放符合人類的正常思維,而采用小端模式進行數據的存放則利于計算機處理。因而在軟件開發過程中需要時刻注意大小端模式的轉換。
3 Code Warrior軟件中配置文件
使用Code Warrior仿真器訪問目標板之前,需要在軟件中添加配置文件,在配置文件中由于MPC8245配置寄存器的地址、數據端口均采用大端模式,而軟件需要的配置文件是采用小端模式,因而在書寫配置文件時要注意大小端模式的轉換。
MPC8245處理器為核內配置寄存器提供的地址是0x8000_00nn,其中nn是需要配置的具體寄存器的偏移地址。由于處理器是通過端口來訪問內嵌橋片的配置寄存器,而內嵌的橋片有兩個端口,分別稱為配置地址端口(CONFIG_ADDR)和配置數據端口(CONFIG_DAT)。CONFIG_ADDR的地址為0xFEC0_0000--0xFEDF_FFFF,CONFIG_DAT的地址為0xFEE0_0000--0xFEEF_FFFF。
該配置文件主要是對MPC8245中的寄存器進行初始化。其中最主要的是對存儲器接口的相關配置寄存器進行初始化,存儲器接口配置寄存器控制著存儲器的邊界(起始和結束地址),內存bank使能,內存時序和外部存儲器緩沖區。該配置文件必須設定相應的存儲器接口配置寄存器,并與自己的目標板相匹配。
在CodeWarrior的配置文件中,需要使用writemem這樣的命令對MPC8245器件中的寄存器進行配置。writemem.l命令是用來寫一個長字到一個設置的存儲器地址,而writemem.b命令是用來寫一個字節到一個設置的存儲器地址。
3.1 內存邊界寄存器
內存邊界寄存器包括8個寄存器,分別是內存開始地址寄存器MSAR1和MSAR2,擴展內存開始地址寄存器EMSAR1和EMSAR2內存結束地址寄存器MEAR1和MEAR2,擴展內存結束地址EMEAR1 和EMEAR2。而根據用戶手冊知Bank n 的地址邊界定義如下:
Bank n 的 低 邊 界=0b00||< 擴 展 開 始 地 址 n>||< 開 始 地 址n>||0x0_0000;
Bank n 的 高 邊 界=0b00||< 擴 展 結 束 地 址 n>||< 結 束 地 址n>||0xF_FFFF。
對于128MB的SDRAM 來說,若只使用 bank 0,則令其開始地址為0x0000_0000,結束地址為 0x07FF_FFFF。
3.2 內存bank使能寄存器
根據內存邊界寄存器設置,其中bank 0被使能,使得與目標板的存儲器地址分配相符。
------ memory_bank_enable, page_mode---------
writemem.l 0xFEC00000 0xa0000080
writemem.l 0xFEE00000 0x01000032
3.3 內存控制配置寄存器
內存控制配置寄存器包含MCCR1、MCCR2、MCCR3和MCCR4這四個32位寄存器。每個寄存器在數據手冊上有詳細的規定,根據SDRAM數據手冊中相應的工作時序來設定這4個寄存器的相應值。另外需要注意的是MCCR1中的MEMGO參數,為RAM接口使能參數,設置時首先禁止RAM,即MEMGO為0,等設置完MCCR1-4后,再使能RAM,即將MEMGO置為1。
由于MT48LC32M8A2器件的相關參數為邏輯Bank為4,行數目為13,tRS=60ns,tRC=15ns,tRAS=37ns,tRCD=20ns,133MHz的總線速度時,MCCR3中參數REFREC=60ns*133MHz =7.98,往上取整為8;MCCR4中參數RETOACT=15ns *133MHz=1.99,往上取2;ACTOPRE=37 ns*133 MHz=4.92,往上取整為5;ACTORW=20 ns*133 MHz=2.66,往上取整為3。
3.3 嵌入式公用存儲器基地址寄存器(EUMBBAR)
中斷控制器相關的控制及狀態寄存器的地址區被稱為嵌入式公用存儲塊(embedded utilities memory block,EUMB),該塊大小為256KB,由EUMBBAR指定該塊的基地址。
writemem.l 0xFEC00000 0x78000080
writemem.l 0xFEE00000 0x000000fc
4 實驗結果與總結
通過上述配置文件的設置,在CodeWarrior軟件中添加該文件,點擊編譯、連接、調試按鈕后,出現界面,可見SDRAM相關寄存器設置正確。若配置文件中參數的設置與目標板不匹配,則無法出現界面。調試成功后,查看內存運行狀況。
本文通過分析MPC8245和CodeWarrior軟件的工作特點,簡要介紹大小端模式,設計了使用該軟件所需的配置文件,重點說明了SDRAM工作時序的配置方法,并在實際電路中調試運行成功,對器件內部可靠性的檢測起到很重要的作用。
[責任編輯:薛俊歌]