摘 要:為了解決單片機程序下載線的通用性問題,利用PDIUSBD12、AT89S52和74HC244設計單片機與計算機USB口連接的下載線硬件電路,并為下載線系統(tǒng)設計和安裝系統(tǒng)程序,使下載線和目標單片機成為計算機USB口的虛擬存儲器,計算機通過對虛擬存儲器的文件讀寫操作實現(xiàn)單片機的程序下載。
關鍵詞:虛擬存儲器; 下載線; USB; 單片機
中圖分類號:TN710-34文獻標識碼:A
文章編號:1004-373X(2010)17-0208-03
Design of USB Download Cable Based on Virtual Memory
ZHU Yong-jin, CHENG You-cai
(Sichuan Vocational and Technical College, Sichuan 629000, China)
Abstract: In order to solve the compatibility issue of the MCU program download cable, the PDIUSBD12, AT89S52 and 74HC244 are used to design the hardware circuit of the cable which connects MCU and USB port on computer, the download cable system program is designed to turn the cable and target MCU into a virtual memory of USB port. Via reading and writing files in virtual memory, computer can achieve the MCU program download.
Keywords: virtual memory; download cable; USB; single chip microcomputer
0 引 言
隨著單片機技術的不斷發(fā)展,支持ISP(In-System Programming)或IAP(In-Application Programming)的單片機芯片日益增加,這類單片機芯片的應用程序寫入采用了在線下載的方式。單片機與計算機的連接端口也從串口或并口逐步過渡到USB(Universal Serial Bus)口。由于USB口具有高速、使用靈活方便等特點,單片機程序下載連接口也更加廣泛地應用USB口。但是,USB口與單片機連接的下載線在設計和應用上還是與串、并口連接一樣,不同的單片機采用不同的下載線,也對應有不同的下載軟件和硬件驅動程序。這些軟件和程序隨著功能的完善和操作改進等原因具有不同的版本。這就造成下載線的使用者需要不斷更新軟件,也讓使用者在更換單片機時不僅更換下載線,還要熟悉新的下載軟件及使用方法。為此,如果能設計一種不需要下載軟件的下載線或統(tǒng)一操作的下載軟件,則能大大提高單片機程序下載線的通用性及操作效率。設計一種通用而不需下載軟件的USB接口的單片機的下載線就顯得尤其必要。
1 硬件設計
1.1 設計分析
單片機USB接口下載線對于計算機而言,就是一個USB外部設備。為了實現(xiàn)在計算機中不需要安裝額外的下載線驅動程序和操作軟件,盡可能使用操作系統(tǒng)已有的USB設備的驅動程序、操作系統(tǒng)命令或軟件作為下載線的驅動程序及操作軟件。在對計算機操作系統(tǒng)進行分析和比較下,目前計算機操作系統(tǒng)中都帶有U盤的驅動程序,資源管理器就是一個現(xiàn)有的磁盤操作軟件。若將下載線虛擬為一個U盤,即從計算機角度將下載線和目標單片機視為一個虛擬磁盤,計算機對目標單片機的程序下載變?yōu)橛嬎銠C對磁盤的寫操作。
當下載線系統(tǒng)接收到計算機寫入該磁盤的文件時,通過下載線系統(tǒng)程序對數(shù)據(jù)進行處理后把數(shù)據(jù)寫入目標單片機,實現(xiàn)單片機程序下載。下載線系統(tǒng)完成對計算機的磁盤響應和程序的控制和傳輸,這樣既能保證在所有計算機上都可以通用,又實現(xiàn)了在計算機中不需要專用的下載程序,只需要如磁盤操作一樣進行復制、粘貼或其他文件復制操作即可將程序寫入單片機。
下載線硬件系統(tǒng)如圖1所示。
圖1 下載線硬件電路框圖
1.2 硬件設計
在分析各種USB接口芯片后,選用Philips公司的PDIUSBD12作為系統(tǒng)的USB接口芯片,實現(xiàn)與微控制器進行通信的高速通用并行接口。該芯片采用了USB 1.1標準,現(xiàn)有的計算機采用USB 1.1及USB 2.0接口標準,采用PDIUSBD12作為下載線與計算機的接口芯片能夠滿足設計需要。
為了實現(xiàn)可靠的程序下載,對目標單片機的接口電路選用原Altra的并口驅動芯片74HC244作為下載線與目標單片機的接口驅動芯片。該芯片是三態(tài)的總線驅動芯片,在寫入和讀出目標單片機數(shù)據(jù)時有足夠的驅動能力和較小的延時,能夠實現(xiàn)正常的程序下載,在程序下載完成后,該芯片工作于高阻態(tài),使下載線不影響目標單片機的正常工作。系統(tǒng)電路原理如圖2所示。
圖2 下載線原理電路圖
在圖2中,PDIUSBD12的數(shù)據(jù)端口連接到單片機的P0端口,實現(xiàn)單片機與PDIUSBD12的數(shù)據(jù)交換通道。將PDIUSBD12的讀寫控制分別接到P3.6和P3.7引腳,實現(xiàn)單片機寫入和讀出PDIUSBD12的數(shù)據(jù)。地址端A0接到P2.0引腳上,用于實現(xiàn)對PDIUSBD12的數(shù)據(jù)和地址選擇。PDIUSBD12從CLKOUT輸出時鐘信號,連接到單片機AT89S52的XTAL1上,作為單片機的時鐘信號。
下載線接口驅動電路74HC244采用P2的部分引腳進行控制。其中,P2.1接74HC244的門控端,輸出低電平時電路工作,在平時輸出高電平時使74HC244工作在高阻狀態(tài),使下載線與目標單片機脫離連接。P2.2接2Y4通過下載線接口作為SCK,實現(xiàn)ISP接口的同步脈沖。P2.3通過74HC244后接到下載線接口作為MOSI,實現(xiàn)對目標芯片的串行數(shù)據(jù)讀出。下載線接口的MISO通過74HC244驅動后接到P2.5,實現(xiàn)對目標芯片的串行數(shù)據(jù)的讀出。P2.5通過74HC244控制目標芯片的RESET引腳,使其進入和退出串行程序下載模式。
另外,在系統(tǒng)中保留了P3.0和P3.1作為異步串行通信端口,作為系統(tǒng)調試端口。P1.5,P1.6,P1.7和RESET與VCC,GND連接到系統(tǒng)控制芯片,作為系統(tǒng)控制芯片自身的程序寫入接口。
2 軟件系統(tǒng)設計
2.1 系統(tǒng)架構
基于虛擬內存的USB下載線,就是從計算機角度看,下載線與目標單片機是計算機的一個通用的USB存儲器,在對目標單片機程序進行寫操作時,就像對磁盤(U盤)進行寫操作一樣。
在PC機端主要完成的任務是USB設備驅動程序,即將USB設備(下載線)識別為U盤,實現(xiàn)文件的寫入和讀出操作。在Windows 2000及以后的操作系統(tǒng)中,將USB磁盤驅動作為標準驅動程序,直接利用操作系統(tǒng)磁盤驅動程序。文件的寫入和讀出,由操作系統(tǒng)完成相關功能,在本系統(tǒng)中不需要編寫程序。
下載線與計算機連接采用PDIUSBD12作為接口芯片,要與計算機交換數(shù)據(jù),就需要對PDIUSBD12芯片進行操作,下載線系統(tǒng)需要PDIUSBD12驅動程序。要向計算機說明下載線是一個U盤,下載線系統(tǒng)需要在計算機硬件詢問時要按USB Disk應答,下載線系統(tǒng)還需要構建一個文件系統(tǒng),由于下載線系統(tǒng)是面向單片機的程序下載,數(shù)據(jù)量小,采用FAT12作為下載線的文件系統(tǒng)。
當下載線接收到計算機傳送過來的一個程序文件時,需要將程序文件中的內容分離出來。設計本系統(tǒng)主要支持bin和HEX兩種格式,其中bin文件就是機器指令的數(shù)據(jù),直接寫入單片機的程序存儲器中即可完成程序下載;Hex文件的INTEL格式是Intel公司提出的按地址排列的數(shù)據(jù)信息,并不是直接的機器指令代碼,因此還需要將HEX格式轉換為bin格式。
在對目標單片機進行程序下載時,需要按照目標單片機的程序下載時序,逐次將數(shù)據(jù)寫入目標單片機的程序存儲器中,下載系統(tǒng)需要控制下載接口電路實現(xiàn)程序時序。整個硬件電路結構與軟件關系如圖3所示。
2.2 程序設計
下載線是連接計算機與目標單片機的中間設備,僅在計算機發(fā)出操作要求時才產(chǎn)生對應的操作響應,因而下載線系統(tǒng)程序設計過程中以處理計算機端數(shù)據(jù)為主要目標,根據(jù)計算機的數(shù)據(jù)對單片機進行相應的操作。為了程序編寫簡潔和易于調試,設計系統(tǒng)主程序采用查詢方式對USB接口數(shù)據(jù)進行處理。對目標單片機的程序下載寫入時,將其設為整個程序的一個功能模塊,僅當需要下載寫入時調用該功能模塊,在程序編寫中將其定義為一個系統(tǒng)函數(shù)。
與PC的接口芯片采用了PDIUSBD12作為USB接口芯片,下載線為了處理來自USB接口的數(shù)據(jù),必須完成對PDIUSBD12的處理。在設計中利用Philips提供的PDIUSBD12驅動程序進行修改加以實現(xiàn)。
圖3 硬件與軟件結構框圖
數(shù)據(jù)處理過程的系統(tǒng)主函數(shù)如下:
void main(void)
{
disconnect_usb(); //斷開USB系統(tǒng)與主機的連接
system_initial(); //系統(tǒng)初始化
init_usb();//PDIUSBD12初始化
connect_usb();//連接USB主機
while(1)
{
if(!USB_INT) //判斷是否有PDIUSBD12的中斷
{
read_interrupt_register();//得到中斷寄存器的值,分情況處理程序
if(Interrupt_bus_reset){usb_bus_reset();continue;}
if(Interrupt_suspend_change){usb_bus_suspend();continue;}
if(Interrupt_control_out_port){endp0_out();continue;}
if(Interrupt_control_in_portUSB_usb_endp0_in){endp0_in();continue;}
if(Interrupt_main_out_port){endp2_out();continue;}
if(Interrupt_main_in_portUSB_usb_endp2_in){endp2_in();continue;}
}
}
}
3 系統(tǒng)調試
首先對下載線系統(tǒng)進行程序寫入和程序調試,然后再進行綜合調試。按下面步驟進行。
3.1 調試下載線系統(tǒng)
首先將下載系統(tǒng)控制程序寫入系統(tǒng)單片機,然后進行ISP下載調試。
將BIN文件代碼寫進下載線控制單片機程序內部,采用程序直接將二進制代碼寫進目標單片機,觀察目標單片機的運行情況來判斷程序是否寫入。
將HEX文件內的數(shù)據(jù)寫在下載線控制單片機的源程序內部,通過單片機程序對HEX格式進行解釋并寫入目標單片機,觀察目標單片機的運行情況來判斷程序是否解釋并寫入正確。
3.2 硬件識別調試
通過將下載線插入PC,在PC上發(fā)現(xiàn)USB設備,驗證下載線硬件是否工作。通過對USB器件的應答,能夠在計算機中出現(xiàn)一個USB盤符。
通過對下載線內部的磁盤啟動扇區(qū)、FAT表和根目錄等信息的寫入,在PC上出現(xiàn)一個具體的磁盤,并能在磁盤上創(chuàng)建文件。
3.3 綜合調試
在下載線所對應的磁盤上寫入HEX文件,由下載線系統(tǒng)單片機對HEX文件進行解釋,并寫入目標單片機,在目標單片機實驗板上觀察結果以判斷下載線是否完成功能。
4 結 語
通過下載系統(tǒng)的硬件和軟件設計,在計算機中不需要安裝驅動程序,利用計算機系統(tǒng)中自帶的USB磁盤的驅動程序,只需要復制、粘貼或其他文件復制操作即可將單片機應用程序寫入單片機,實現(xiàn)計算機通用的USB下載線的設計。
參考文獻
[1]Atmel Corporation. AT89S51 datasheet (revision C, updated 6/08)[DB/OL]. [2010-06-09]. http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf.
[2]周立功.PDIUSBD12 USB固件編程與驅動開發(fā)[M].北京:北京航空航天大學出版社,2003.
[3]Philips Semiconductors. PDIUSBD12 product data[DB/OL]. [2001-12-20]. http://www.zlgmcu.com/philips/usb/PDIUSBD12/PDIUSBD12-08_en.pdf.
[4]張宏.USB接口設計[M].西安:西安電子科技大學出版社,2002.
[5]鄧劍,楊曉非,廖俊卿.FAT文件系統(tǒng)原理與實現(xiàn)[J].計算機與數(shù)字工程,2005(9):105-108.
[6]周濤,張輝.采用PDIUSBD12的USB系統(tǒng)固件程序設計[J].電子技術應用,2003,29(5):70-72.
[7]魏魯原,崔霞.基于PDIUSBD12的USB控制器的設計[J].徐州工程學院學報,2007,22(10):19-22.
[8]陳軍波,劉海華,陳亞光.基于PDIUSBD12芯片的USB接口設計[J].現(xiàn)代電子技術,2003,26(7):45-47,49.
[9]熊玉朋,陳興欣,龐俊銳.一種新型移動保密存儲設備[J].現(xiàn)代電子技術,2010,33(5):89-91.