<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種支持ISP的Flash在嵌入式設(shè)計(jì)中的應(yīng)用

          一種支持ISP的Flash在嵌入式設(shè)計(jì)中的應(yīng)用

          作者: 時(shí)間:2012-02-07 來(lái)源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/149771.htm

          在基于VxWorks的系統(tǒng)開(kāi)發(fā)過(guò)程中,板卡包BSP(Board Support Package)的開(kāi)發(fā)是非常重要而又閑難的一個(gè)環(huán)節(jié)。因?yàn)椴荒艽_定硬件系統(tǒng)是否正常丁作,而后續(xù)開(kāi)發(fā)都是以此為基礎(chǔ)。

          在實(shí)際開(kāi)發(fā)中,為了提高開(kāi)發(fā)效率,大多是采用以一個(gè)與目標(biāo)板硬件相似的BSP為模板,并在此基礎(chǔ)上修改移植。在這個(gè)過(guò)程中.除了CPU以外,另一個(gè)重要的器件就是裝有啟動(dòng)程序的器件。

          2 系統(tǒng)介紹

          采用高性能PowerPC系列器件PPC440EPx為核心的一款符合CPCI標(biāo)準(zhǔn)的單板計(jì)算機(jī)系統(tǒng)。

          該系統(tǒng)集成了豐富的外設(shè)接口和調(diào)試接口,可用于設(shè)備控制、設(shè)備管理、通信設(shè)備中的通信控制、協(xié)議處理、路由處理和網(wǎng)關(guān)處理等。其主要是面向航空設(shè)備和軍用車(chē)載設(shè)備的

          在調(diào)試階段,系統(tǒng)的啟動(dòng)是通過(guò)執(zhí)行Boot flash中存儲(chǔ)的bootrom映像文件完成的。Boot 器件采用ST公司的PSD835,通過(guò)EBC總線(xiàn)與PPC440EPx相連。EBC總線(xiàn)是PPC440EPx的并行總線(xiàn)。其可以與8位,16位或32位的外部設(shè)備通信,最多可6個(gè)不同時(shí)序要求的設(shè)備。其中,片選0分配給Boot 。上電時(shí),PowerPC會(huì)自動(dòng)訪(fǎng)問(wèn)BootFlash,進(jìn)行系統(tǒng)初始化。操作系統(tǒng)是VxWorks,其映像文件放在NAND Flash中。

          3 軟件開(kāi)發(fā)流程

          軟件系統(tǒng)的開(kāi)發(fā)流程是:首先bootrom映像文件,并將其燒寫(xiě)到Flash器件中(該器件稱(chēng)為Boot ROM)。上電后,bootrom程序進(jìn)行相應(yīng)初始化后與Host主機(jī)通信,將操作系統(tǒng)映像文件下載到系統(tǒng)平臺(tái)的RAM中運(yùn)行。如果程序不正確或需更新,則重新通過(guò)bootrom程序?qū)⑿碌挠诚裎募螺d到RAM中。

          當(dāng)所有程序都調(diào)試成功,整個(gè)系統(tǒng)作為產(chǎn)品發(fā)布。此時(shí),則需將操作系統(tǒng)和程序映像文件燒寫(xiě)到在大容量的flash器件中(如NAND Flash),系統(tǒng)自動(dòng)將從Flash中復(fù)制到RAM中執(zhí)行。

          4 bootrom方案的選擇

          bootrom應(yīng)是一個(gè)短小精悍的程序,可初始化系統(tǒng)工作和通信接口(通常是串行接口和以太網(wǎng)接口);系統(tǒng)作為產(chǎn)品發(fā)布無(wú)需bootrom程序;調(diào)試 bootrom時(shí),需頻繁地將修改后的映像文件燒寫(xiě)到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的布局、布線(xiàn)難度。上述兩種方案,F(xiàn)lash的編程都需從PCB上取下,用編程器燒寫(xiě)。顯然,這樣的工作效率較低。方案3則采用功能的Flash器件來(lái)實(shí)現(xiàn)Boot ROM,這就使得程序更新變得非常方便,極大提高工作效率。因此,根據(jù)嵌入式開(kāi)發(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ǔ)器通過(guò)其CPU接口與PPC440EPx的外部總線(xiàn)接口(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)品要通過(guò)NAND Flash啟動(dòng),因此片選0可通過(guò)撥碼開(kāi)關(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總線(xiàn)無(wú)復(fù)用地址和數(shù)據(jù)信號(hào)。因此,數(shù)據(jù)總線(xiàn)與F端口相連。低16位的地址總線(xiàn)與PSD835的ADIO15~AD100相連,高位地址與A端口相連;

            (3)PPC440EPx的EBC的數(shù)據(jù)總線(xiàn)的最高位是Data0,地址總線(xiàn)的最高位是Addr2。連接時(shí),注意不要將順序接反;

            (4)為了提高編程速度,添加了2個(gè)JTAG信號(hào):teRR和TSTAT。

          5.2 PSD835的功能和編程設(shè)計(jì)

          PSD835的Flash編程和PLD邏輯功能的實(shí)現(xiàn),需要使用FlashLINK下載線(xiàn)(硬件)和PSDsoft EXPRESS(軟件)。FlashLINK其實(shí)就是一個(gè)JTAG和并口的轉(zhuǎn)換器;PSDsoftEXPRESS是PSD系列器件的設(shè)計(jì)軟件。利用該工具軟件定義器件的引腳功能、映射存儲(chǔ)器、配置PLD等。所有的定義和配置與程序固件一起生成obj文件。該文件通過(guò)FlashLINK下載到PSD器件中。另外,利用該工具軟件還可以完成擦除、校驗(yàn)、上載、空白檢查等功能。而整個(gè)設(shè)計(jì)過(guò)程也非常簡(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í)際電路在下拉框中選擇廠(chǎng)家和CPU型號(hào),以及將用到的控制信號(hào),再選擇使用的PSD器件型號(hào)和封裝。最后定義CPU和PSD連接的方式(即8位或16位總線(xiàn)模式,復(fù)用或非復(fù)用總線(xiàn)等等)。

          該系統(tǒng)使用AMCC公司的PPC440EPx型CPU,下拉框中無(wú)該選項(xiàng)。這時(shí)可選擇other,控制信號(hào)根據(jù)EBC總線(xiàn)的定義選擇RD和WR。PSD與CPU數(shù)據(jù)總線(xiàn)為8位,地址和數(shù)據(jù)無(wú)復(fù)用,未使用ALE信號(hào)。

          在設(shè)計(jì)階段所做的設(shè)置較多,首先,定義電路中所使用的引腳。定義其名字、引腳是CPLD的輸入還是輸出,或是CPU的I/O;同時(shí)還要配置該引腳是組合邏輯還是時(shí)序邏輯;定義頁(yè)寄存器的使用。系統(tǒng)中EBC的地址信號(hào)線(xiàn)足夠多,因此將頁(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)線(xiàn)。因此,將主Flash地址定義在0x80000~0xFFFFF。則片選fs0在0x80000~0x8FFFF,則片選 fs1在0x90000~0x9FFFF。以此類(lèi)推片選fs2~fs7的地址空間。其他的存儲(chǔ)空間可分配在0x00000~0x7FFFF。片選信號(hào)的邏輯表達(dá)式為將EBC總線(xiàn)片選0取反;定義輸出信號(hào)以及內(nèi)部節(jié)點(diǎn)信號(hào)的邏輯。這實(shí)際上就是完成CPLD功能的設(shè)計(jì)。

          附加定義中可設(shè)置安全位、用戶(hù)代碼、設(shè)置頁(yè)保護(hù)。如果設(shè)置安全位,所有編程工具將不能訪(fǎng)問(wèn)PSD的內(nèi)容。用戶(hù)代碼用于版本管理。對(duì)于具有保護(hù)功能的頁(yè), CPU就只能對(duì)其進(jìn)行讀操作(通過(guò)JTAG口或編程器改變其內(nèi)容)。適配是檢查器件是否能滿(mǎn)足上述的各種配置,同時(shí)產(chǎn)生相應(yīng)的報(bào)告文件。啟動(dòng)代碼 bootrom.hex文件和上述的各種配置融合為一個(gè).obj文件。設(shè)計(jì)中需要注意:bootrom映像文件不能太大(不能超過(guò)512 KB);主Flash的8個(gè)頁(yè)都要指向同一個(gè)映像文件;映像文件的名字bootrom.hex最好改為不是以hex為后綴(如改為bootrom.a(chǎn)),否則會(huì)出錯(cuò)。將生成的.obj文件燒寫(xiě)到器件內(nèi)部。正確完成上述流程就可調(diào)試程序。

          6 結(jié)論

          從PSD835的數(shù)據(jù)手冊(cè)可知,該器件主要是應(yīng)用于16位的單片機(jī)系統(tǒng)。該系統(tǒng)設(shè)計(jì)根據(jù)嵌入式系統(tǒng)中 BSP開(kāi)發(fā)以及PSD835器件的特點(diǎn),將該器件靈活運(yùn)用于基于32位RISC器件PPC440EPx的嵌入式系統(tǒng)中,降低BSP的開(kāi)發(fā)難度,提高工作效率。以此為基礎(chǔ)實(shí)現(xiàn)的CPCI單板計(jì)算機(jī)已成功應(yīng)用于某航載數(shù)據(jù)采集分析記錄儀。

          linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();