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