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