《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > P51XA简易开发装置的设计

P51XA简易开发装置的设计

2009-08-06
作者:吕治安

  摘? 要: P51XA單片機的一種簡易開發(fā)裝置的設(shè)計和制作。

  關(guān)鍵詞: P51XA? 開發(fā)裝置

?

  P51XA是Philips公司的16位單片機。它對外的數(shù)據(jù)總線和內(nèi)部的結(jié)構(gòu)均為16位,其尋址空間大,最大可為16MB;它有2種工作模式——系統(tǒng)模式和用戶模式,有2個堆棧空間——系統(tǒng)堆棧和用戶堆棧,特別適用于實時多任務(wù)操作系統(tǒng);其運行速度為標準51單片機的10~100倍,而且它的體系結(jié)構(gòu)和MCS-51兼容,匯編級的指令可以和MCS-51實現(xiàn)轉(zhuǎn)換,很容易學(xué)習(xí)和掌握,使熟悉MCS-51單片機的嵌入式系統(tǒng)的開發(fā)人員能快速向16位微控制器轉(zhuǎn)移,以適應(yīng)復(fù)雜、快速控制的需要。但P51XA單片機的仿真器和開發(fā)裝置種類很少,且價格昂貴。為此我們研制了一種用于P51XA的簡易開發(fā)板。開發(fā)板采用P51XAK37,它是P51XA的一種派生產(chǎn)品,其尋址空間為1MB,內(nèi)部有32KB程序存儲器、512B的RAM、3個功能增強的定時/計數(shù)器和2個串行口。研制的開發(fā)板還配有256KB的Flash存儲器和256KB的RAM,有2種工作模式——調(diào)試模式和用戶模式,2種模式可以通過外部跳線選擇。在調(diào)試模式下開發(fā)板可以:從PC機上下載程序,在應(yīng)用程序中設(shè)置斷點,啟動應(yīng)用程序的運行,從PC機的窗口觀察或設(shè)定P51XA內(nèi)部寄存的值等。在用戶模式下,上電后直接運行應(yīng)用程序。因此它很適合用作程序的開發(fā)、調(diào)試。又由于其體積較小也可以直接嵌入到用戶系統(tǒng)中去。本文即對開發(fā)板的軟、硬件結(jié)構(gòu)作一介紹。

1? 開發(fā)板硬件設(shè)計

  開發(fā)板的硬件設(shè)計主要考慮:(1)能夠提供對P51XA應(yīng)用系統(tǒng)的調(diào)試和排錯。(2)使開發(fā)板本身能夠像一個“大芯片”一樣嵌入到用戶的應(yīng)用系統(tǒng)中去。由于使用P51XA的目的是希望發(fā)揮16位單片機的優(yōu)勢,故開發(fā)板的設(shè)計不考慮8位工作方式,全部按工作在16位的方式下進行設(shè)計,其電路結(jié)構(gòu)如圖1所示。系統(tǒng)中擴展了2片628128以組成256KB的數(shù)據(jù)存儲器,其地址從“0”開始。開發(fā)板擴展了2片存儲器U2、U3,利用邏輯電路的控制,可以分別切換作為程序存儲器或數(shù)據(jù)存儲器使用。U2、U3存儲器可以通過跳線選擇使用RAM(如628128)或Flash(如29EE010)共組成256KB的空間,相應(yīng)地在下載程序時有“下載到RAM”和“下載到Flash”的選項。從PC機中下載程序時,U2、U3作為數(shù)據(jù)存儲器使用,這時其地址安排從80000H開始,并可以將從PC機中下傳的程序?qū)懭肫渲?。當程序下載完后可以將其切換為程序存儲器,作為程序存儲器時其地址安排為從“0”開始。圖1中的譯碼電路產(chǎn)生存儲器所需的3個片選信號:(1)2片RAM的片選,其地址為00000H~3FFFFH。(2)U2、U3的片選除受譯碼電路控制外還受一個D觸發(fā)器輸出的控制,使它們的地址空間可以在00000H~3FFFFH和80000H~BFFFFH之間切換。(3)由地址譯碼信號在內(nèi)部與P51XA的WRH合成后作為一個D觸發(fā)器的時鐘脈沖,可以在程序中對該地址執(zhí)行寫操作,以改變D觸發(fā)器的輸出(其用途后述)。開發(fā)板利用P51XA的串行口0實現(xiàn)與PC機的通信。

?

?

  開發(fā)板設(shè)有3個跳線J1、J2、J3。利用它們可以選擇開發(fā)板工作在調(diào)試模式或用戶模式。選擇調(diào)試模式時,上電后進入開發(fā)板的監(jiān)控程序,以完成程序下載、設(shè)置斷點、控制程序運行等;選擇在用戶模式時,上電后自動開始運行用戶程序,且監(jiān)控程序等對用戶程序完全透明。由于U2、U3可以安裝RAM也可以安裝Flash,故可以用作數(shù)據(jù)存儲器也可以用作程序存儲器,但其地址也要相應(yīng)改變,所以需要有對U2、U3的切換電路(見圖1)。其中J1用于選擇開發(fā)板的工作模式,當J1的1、2觸點短接將EA等拉為高電平時,上電后即運行P51XA的片內(nèi)程序,這時開發(fā)板工作在調(diào)試模式。同時“與門1”的一個輸入端也成為高電平,使“與門1”的另一控制端可以直接控制其輸出;當J1的2、3觸點短接將EA拉為低電平時,上電后運行外部存儲器中的程序,開發(fā)板處于用戶模式,“與門1”的輸出用來控制U2、U3的工作方式。如圖1中所示,“與門1”的一個輸入由J1控制,若將J1拉低使“與門1”的輸出固定為低,此時U2、U3作為程序存儲器使用。在這種情況下,上電后運行U2、U3中的用戶程序。若J1接高電平,則“與門1”受D觸發(fā)器的輸出所控制,從而決定U2、U3的用法。而D觸發(fā)器的D輸入端接數(shù)據(jù)總線D15,其時鐘信號由譯碼器的一個輸出控制。在監(jiān)控程序中對該地址進行1次“寫操作”使觸發(fā)器輸出為高,這時U2、U3作為數(shù)據(jù)存儲器使用,可將PC機下載的程序?qū)懭險2、U3中。程序下載完畢,再對此地址進行1次寫操作使D觸發(fā)器輸出為低,此時U2、U3即用作程序存儲器。J2、J3用于選擇U2、U3的類型,若將J2、J3的跳線1、2,3、4分別短接,則U2、U3使用Flash存儲器;若將J2、J3的2、3,4、5分別短接,則U2、U3使用RAM存儲器。

  開發(fā)板的監(jiān)控程序固化在P51XAG37的內(nèi)部程序存儲器中,其存在問題:(1)工作在調(diào)試模式時,上電后進入位于P51XAG37內(nèi)部的監(jiān)控程序,與之相重疊的外部程序存儲器的最低32KB空間不可訪問,因此可以將用戶程序安排在32KB以上的空間。再考慮到P51XA本身的一些特點,用戶應(yīng)用程序的第1條指令和中斷服務(wù)程序只能定位在32KB以上和64KB以下的32KB空間內(nèi)。但進入用戶程序后可以通過遠轉(zhuǎn)移到任意位置,這樣做的惟一缺陷是浪費了32KB的存儲空間。(2)P51XA的中斷矢量表位于程序存儲器的最低位置,下載時可將其寫入U2、U3中,而本開發(fā)板工作在調(diào)試狀態(tài)時,U2、U3的最低32KB不可訪問。解決的方法:因在下載程序的同時監(jiān)控程序也獲取了中斷矢量的有關(guān)信息,因此可在監(jiān)控程序內(nèi)重定向到真正的中斷服務(wù)程序。但如果下載程序后改變跳線為用戶模式,則復(fù)位后全部使用外部程序存儲器,直接運行固化在U2、U3中的用戶程序即可。

????為方便將開發(fā)板嵌入到目標系統(tǒng)中使用,在開發(fā)板的二側(cè)安裝有標準間距的插針,以引出P51XA的主要信號,利用插針就可直接將開發(fā)板插入應(yīng)用系統(tǒng)中。

2? 開發(fā)板軟件

  開發(fā)板的軟件分為二部分:一是運行于PC機上的開發(fā)環(huán)境,完成編輯、編譯、連接、下載等工作;二是位于P51XA內(nèi)部的監(jiān)控程序,實現(xiàn)將PC機下載的代碼寫入開發(fā)板上的RAM或Flash中、應(yīng)用程序的啟動/停止、斷點的實現(xiàn)和P51XA內(nèi)部的狀態(tài)的觀察等。

2.1 開發(fā)環(huán)境

  為便于開發(fā)板的使用,需要有在PC機上的開發(fā)環(huán)境。目前僅實現(xiàn)了在DOS下工作的、簡單的窗口系統(tǒng),利用簡單的菜單可以完成以下工作:將編輯、編譯好的源代碼調(diào)入一個窗口,直接通過窗口在C源代碼中設(shè)置斷點,將程序下載到開發(fā)板中的RAM或Flash存儲器中,可以控制開發(fā)板中程序開始執(zhí)行等。當開發(fā)板中的程序執(zhí)行到斷點時,可以在另一個窗口中觀察到P51XA內(nèi)部的寄存器和一些變量。源程序的編輯可以使用一些常用的編輯軟件,如DOS下的EDIT。編譯軟件使用HT—TECH的C編譯工具。這是一套工作在DOS下的P51XA編譯和連接軟件。

2.2 程序下載

  源程序經(jīng)編譯、連接后生成HEX文件,將該文件通過串行口傳送給開發(fā)板,并寫入U2、U3存儲器中。代碼下載完成后再將有關(guān)設(shè)置斷點的信息(斷點表)下傳給開發(fā)板。用戶程序下傳完畢后,監(jiān)控程序再將U2、U3切換為程序存儲器。

2.3 設(shè)定斷點并觀察P51XA內(nèi)部狀態(tài)

  為便于程序調(diào)試,P51XA設(shè)有1條斷點指令BKPT,該指令只有1個字節(jié),其值為二進制的FF。執(zhí)行這條指令將會產(chǎn)生1個斷點陷阱,它類似一個不可屏蔽的立即中斷。因此只需將設(shè)置斷點處指令的第1個字節(jié)修改為FF即可。源代碼在編譯、連接的過程中可以產(chǎn)生一個包含有調(diào)試信息的文件。從該文件中可以得到C源代碼中的變量的安排及C語言程序的每行相對應(yīng)的可執(zhí)行程序的物理地址等。根據(jù)這些信息可以找到在C語言程序中設(shè)置的斷點所對應(yīng)的物理地址。當開發(fā)板的監(jiān)控程序接到命令開始執(zhí)行用戶程序時,它首先查閱斷點表,并將U2、U3中相應(yīng)位置的值改為FF,然后開始執(zhí)行用戶程序。執(zhí)行到斷點處后由于斷點陷阱,進入相應(yīng)的服務(wù)程序,將P51XA內(nèi)部寄存器的狀態(tài)傳送給PC機,在窗口中顯示出來。這時可以在窗口中修改有關(guān)寄存器的值。當從斷點處繼續(xù)運行時,首先將窗口中各寄存器的值恢復(fù)到P51XA內(nèi)部狀態(tài),然后將斷點處被修改的值恢復(fù)為原來的代碼,從斷點處繼續(xù)運行。對每一個斷點均按此方式處理。

2.4 啟動應(yīng)用程序和中斷服務(wù)程序

  將用戶應(yīng)用程序從PC機中下載到開發(fā)板后,通過分析中斷矢量表,得到用戶主程序和中斷服務(wù)程序的入口地址和PSW值。因此在監(jiān)控程序中直接使用轉(zhuǎn)移指令即可開始運行用戶程序。而中斷的處理是:在開發(fā)板內(nèi)部的監(jiān)控程序中為每個中斷都安排了一個簡單的服務(wù)程序,但它只有PUSH和RET2條指令。PUSH指令將真正的中斷服務(wù)程序的入口地址壓入堆棧中,而執(zhí)行RET指令即進入真正的中斷服務(wù)程序。不過這樣做的結(jié)果會使進入中斷服務(wù)程序的時間要延遲若干個時鐘周期。

  開發(fā)板的使用方法如下:在DOS下利用常用的編輯程序書寫用戶的應(yīng)用程序,需要注意的是應(yīng)將用戶的主程序和中斷服務(wù)程序定位在32K~64KB之間。將開發(fā)板的J2、J3跳線選擇為RAM,編譯后利用開發(fā)板的調(diào)試軟件將其HEX文件下載到開發(fā)板中,進行調(diào)試。調(diào)試通過后,將U2、U3改為Flash,再將用戶程序下載到開發(fā)板中,J1跳線選為用戶模式,上電后即可運行用戶程序。

3? 結(jié)束語

  本開發(fā)板只具備一些簡單的程序下載、設(shè)置斷點、控制用戶程序運行、觀察P51XA的內(nèi)部狀態(tài)等功能,并且監(jiān)控程序占用了P51XA內(nèi)部的一些資源,相對于一些商業(yè)仿真器來說功能簡單了許多,在有些方面還不太成熟,需要進一步完善。但它成本很低,在一般場合已夠用,為我們提供了一種簡易的P51XA的開發(fā)環(huán)境。

?

參考文獻

1? 梁合慶.從C到嵌入式C編程語言——入門、深入、實用.北京:北京航空航天大學(xué)出版社,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容