一種支持ISP的Flash在嵌入式設(shè)計(jì)中的應(yīng)用
引言
本文引用地址:http://butianyuan.cn/article/149771.htm在基于VxWorks的嵌入式系統(tǒng)開發(fā)過程中,板卡支持包BSP(Board Support Package)的開發(fā)是非常重要而又閑難的一個(gè)環(huán)節(jié)。因?yàn)椴荒艽_定硬件系統(tǒng)是否正常丁作,而后續(xù)應(yīng)用開發(fā)都是以此為基礎(chǔ)。
在實(shí)際開發(fā)中,為了提高開發(fā)效率,大多是采用以一個(gè)與目標(biāo)板硬件相似的BSP為模板,并在此基礎(chǔ)上修改移植。在這個(gè)過程中.除了CPU以外,另一個(gè)重要的器件就是裝有啟動(dòng)程序的Flash器件。
2 系統(tǒng)介紹
采用高性能PowerPC系列器件PPC440EPx為核心設(shè)計(jì)的一款符合CPCI標(biāo)準(zhǔn)的嵌入式單板計(jì)算機(jī)系統(tǒng)。
該系統(tǒng)集成了豐富的外設(shè)接口和調(diào)試接口,可用于設(shè)備控制、設(shè)備管理、通信設(shè)備中的通信控制、協(xié)議處理、路由處理和網(wǎng)關(guān)處理等。其主要是面向航空設(shè)備和軍用車載設(shè)備的應(yīng)用。
在調(diào)試階段,系統(tǒng)的啟動(dòng)是通過執(zhí)行Boot flash中存儲(chǔ)的bootrom映像文件完成的。Boot Flash器件采用ST公司的PSD835,通過EBC總線與PPC440EPx相連。EBC總線是PPC440EPx的并行總線。其可以與8位,16位或32位的外部設(shè)備通信,最多可支持6個(gè)不同時(shí)序要求的設(shè)備。其中,片選0分配給Boot Flash。上電時(shí),PowerPC會(huì)自動(dòng)訪問BootFlash,進(jìn)行系統(tǒng)初始化。操作系統(tǒng)是VxWorks,其映像文件放在NAND Flash中。
3 軟件開發(fā)流程
軟件系統(tǒng)的開發(fā)流程是:首先設(shè)計(jì)bootrom映像文件,并將其燒寫到Flash器件中(該器件稱為Boot ROM)。上電后,bootrom程序進(jìn)行相應(yīng)初始化后與Host主機(jī)通信,將操作系統(tǒng)映像文件下載到嵌入式系統(tǒng)平臺(tái)的RAM中運(yùn)行。如果程序不正確或需更新,則重新通過bootrom程序?qū)⑿碌挠诚裎募螺d到RAM中。
當(dāng)所有程序都調(diào)試成功,整個(gè)系統(tǒng)作為產(chǎn)品發(fā)布。此時(shí),則需將操作系統(tǒng)和應(yīng)用程序映像文件燒寫到在大容量的flash器件中(如NAND Flash),系統(tǒng)自動(dòng)將從Flash中復(fù)制到RAM中執(zhí)行。
4 bootrom設(shè)計(jì)方案的選擇
bootrom應(yīng)是一個(gè)短小精悍的程序,可初始化系統(tǒng)工作和通信接口(通常是串行接口和以太網(wǎng)接口);系統(tǒng)作為產(chǎn)品發(fā)布無(wú)需bootrom程序;調(diào)試 bootrom時(shí),需頻繁地將修改后的映像文件燒寫到Boot ROM中。實(shí)現(xiàn)該Boot ROM電路有多種方案,如表1所示.
方案1是傳統(tǒng)設(shè)計(jì)方案,成本低,可選擇的Flash器件多。但在調(diào)試bootrom時(shí),更新程序非常不方便。需要焊裝Flash器件,很容易導(dǎo)致器件和 PCB板的物理?yè)p壞,而且效率非常低;而方案2從邏輯電路上來(lái)看,與方案1是一樣的。但其由于其使用夾具,器件裝卸簡(jiǎn)單,程序更新比方案1方便。但夾具成本較高,可靠性差,并且一般夾具體積較大,這就增加了PCB的布局、布線難度。上述兩種方案,F(xiàn)lash的編程都需從PCB上取下,用編程器燒寫。顯然,這樣的工作效率較低。方案3則采用支持ISP功能的Flash器件來(lái)實(shí)現(xiàn)Boot ROM,這就使得程序更新變得非常方便,極大提高工作效率。因此,根據(jù)嵌入式開發(fā)實(shí)際情況,為節(jié)約成本、提高工作效率,該系統(tǒng)設(shè)計(jì)選擇方案3。考慮到 bootrom映像文件一般較小,選用ST公司的512 KB的Flash器件PSD835。
5 PSD835在嵌入式系統(tǒng)中的應(yīng)用
5.1 硬件電路設(shè)計(jì)
該系統(tǒng)使用PSD835的主Flash作為Boot ROM。同時(shí),還使用該器件的PLD資源實(shí)現(xiàn)一些控制和初始化配置功能。如圖1所示,PSD835的存儲(chǔ)器通過其CPU接口與PPC440EPx的外部總線接口(EBC)相連。
連接電路比較簡(jiǎn)單,只需將EBC的片選信號(hào)、讀信號(hào)、地址和數(shù)據(jù)信號(hào)分別與PSD835的對(duì)應(yīng)引腳相連即可。其他引腳被該器件的PLD使用,主要完成串口工作模式、PPC440EPx啟動(dòng)方式、片選信號(hào)的設(shè)置,以及網(wǎng)絡(luò)控制信號(hào)的產(chǎn)生等功能。
在設(shè)計(jì)實(shí)際硬件電路時(shí),應(yīng)注意以下幾點(diǎn):
(1)因?yàn)樽罱K產(chǎn)品要通過NAND Flash啟動(dòng),因此片選0可通過撥碼開關(guān)或CPLD分別在PSD835和NAND flash的片選信號(hào)之間切換。PPC440EPx有8個(gè)bootstrap選項(xiàng)(設(shè)置CPU的時(shí)鐘、啟動(dòng)、寄存器的初始值等),可以使用CPLD進(jìn)行改變;
(2)PPC440EPx的EBC總線無(wú)復(fù)用地址和數(shù)據(jù)信號(hào)。因此,數(shù)據(jù)總線與F端口相連。低16位的地址總線與PSD835的ADIO15~AD100相連,高位地址與A端口相連;
(3)PPC440EPx的EBC的數(shù)據(jù)總線的最高位是Data0,地址總線的最高位是Addr2。連接時(shí),注意不要將順序接反;
(4)為了提高編程速度,添加了2個(gè)JTAG信號(hào):teRR和TSTAT。
5.2 PSD835的功能和編程設(shè)計(jì)
PSD835的Flash編程和PLD邏輯功能的實(shí)現(xiàn),需要使用FlashLINK下載線(硬件)和PSDsoft EXPRESS(軟件)。FlashLINK其實(shí)就是一個(gè)JTAG和并口的轉(zhuǎn)換器;PSDsoftEXPRESS是PSD系列器件的設(shè)計(jì)軟件。利用該工具軟件定義器件的引腳功能、映射存儲(chǔ)器、配置PLD等。所有的定義和配置與程序固件一起生成obj文件。該文件通過FlashLINK下載到PSD器件中。另外,利用該工具軟件還可以完成擦除、校驗(yàn)、上載、空白檢查等功能。而整個(gè)設(shè)計(jì)過程也非常簡(jiǎn)單,只需根據(jù)其設(shè)計(jì)流程簡(jiǎn)單點(diǎn)擊鼠標(biāo)即可完成PSD設(shè)計(jì)。圖2 為PSD設(shè)計(jì)流程。
根據(jù)該系統(tǒng)設(shè)計(jì)簡(jiǎn)單描述如下:首先建立一個(gè)丁程文件。然后根據(jù)實(shí)際電路在下拉框中選擇廠家和CPU型號(hào),以及將用到的控制信號(hào),再選擇使用的PSD器件型號(hào)和封裝。最后定義CPU和PSD連接的方式(即8位或16位總線模式,復(fù)用或非復(fù)用總線等等)。
該系統(tǒng)使用AMCC公司的PPC440EPx型CPU,下拉框中無(wú)該選項(xiàng)。這時(shí)可選擇other,控制信號(hào)根據(jù)EBC總線的定義選擇RD和WR。PSD與CPU數(shù)據(jù)總線為8位,地址和數(shù)據(jù)無(wú)復(fù)用,未使用ALE信號(hào)。
在設(shè)計(jì)階段所做的設(shè)置較多,首先,定義電路中所使用的引腳。定義其名字、引腳是CPLD的輸入還是輸出,或是CPU的I/O;同時(shí)還要配置該引腳是組合邏輯還是時(shí)序邏輯;定義頁(yè)寄存器的使用。系統(tǒng)中EBC的地址信號(hào)線足夠多,因此將頁(yè)寄存器作為PLD的輸入信號(hào);定義PSD器件內(nèi)部存儲(chǔ)器、寄存器的地址映射以及片選信號(hào)的邏輯表達(dá)式。因?yàn)楸鞠到y(tǒng)使用512 KB的主Flash存放啟動(dòng)代碼,因此,其地址空間被定義在0xFFF80000~0xFFFFFFFF(BSP中定義)。實(shí)際電路設(shè)計(jì)時(shí),為了簡(jiǎn)化設(shè)計(jì),只使用20根地址信號(hào)線。因此,將主Flash地址定義在0x80000~0xFFFFF。則片選fs0在0x80000~0x8FFFF,則片選 fs1在0x90000~0x9FFFF。以此類推片選fs2~fs7的地址空間。其他的存儲(chǔ)空間可分配在0x00000~0x7FFFF。片選信號(hào)的邏輯表達(dá)式為將EBC總線片選0取反;定義輸出信號(hào)以及內(nèi)部節(jié)點(diǎn)信號(hào)的邏輯。這實(shí)際上就是完成CPLD功能的設(shè)計(jì)。
附加定義中可設(shè)置安全位、用戶代碼、設(shè)置頁(yè)保護(hù)。如果設(shè)置安全位,所有編程工具將不能訪問PSD的內(nèi)容。用戶代碼用于版本管理。對(duì)于具有保護(hù)功能的頁(yè), CPU就只能對(duì)其進(jìn)行讀操作(通過JTAG口或編程器改變其內(nèi)容)。適配是檢查器件是否能滿足上述的各種配置,同時(shí)產(chǎn)生相應(yīng)的報(bào)告文件。啟動(dòng)代碼 bootrom.hex文件和上述的各種配置融合為一個(gè).obj文件。設(shè)計(jì)中需要注意:bootrom映像文件不能太大(不能超過512 KB);主Flash的8個(gè)頁(yè)都要指向同一個(gè)映像文件;映像文件的名字bootrom.hex最好改為不是以hex為后綴(如改為bootrom.a(chǎn)),否則會(huì)出錯(cuò)。將生成的.obj文件燒寫到器件內(nèi)部。正確完成上述流程就可調(diào)試程序。
6 結(jié)論
從PSD835的數(shù)據(jù)手冊(cè)可知,該器件主要是應(yīng)用于16位的單片機(jī)系統(tǒng)。該系統(tǒng)設(shè)計(jì)根據(jù)嵌入式系統(tǒng)中 BSP開發(fā)以及PSD835器件的特點(diǎn),將該器件靈活運(yùn)用于基于32位RISC器件PPC440EPx的嵌入式系統(tǒng)中,降低BSP的開發(fā)難度,提高工作效率。以此為基礎(chǔ)實(shí)現(xiàn)的CPCI單板計(jì)算機(jī)已成功應(yīng)用于某航載數(shù)據(jù)采集分析記錄儀。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論