簡易JTAG燒寫程序_第1頁
簡易JTAG燒寫程序_第2頁
簡易JTAG燒寫程序_第3頁
簡易JTAG燒寫程序_第4頁
簡易JTAG燒寫程序_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第10章 自制簡易JTAG下載燒寫工具對于普通嵌入式系統(tǒng)愛好者來說,不太可能花太多的錢去買比較高檔的調試仿真工具來調試我們自己的目標板,最經濟的做法就是自己制作一個簡單JTAG線纜用來燒寫flash,先將bootloader固化到flash中,因為bootloader編譯出來都很小,一般幾十KB,最多幾百KB,用簡易JTAG燒寫不需要多少時間,如果順利,bootloader能夠正常工作,那么就可以在bootloader菜單中通過串口或者TFTP下載其他程序到目標板的DRAM中進行運行調試或者燒寫最后定型的軟件,因為通過串口或者TFTP下載的速度比簡易JTAG線纜下載燒寫速度快。當然也可以從網上

2、搜索購買一個簡易JTAG線纜(很便宜,最多不超過50RMB),不管是什么版本都行,然后用我們下面介紹的簡易JTAG燒寫軟件來燒寫目標板的flash,使用燒寫軟件之前只需先根據所購買JTAG線纜的具體連線圖中并口與JTAG口的對應關系適當修改源代碼中的管腳變量定義,然后重新編譯鏈接就可以了。這一章我們就介紹簡易JTAG線纜硬件原理,燒寫軟件流程,并說明使用簡易JTAG線纜燒寫flash的方法。10.1 JTAG簡介JTAG接口的基本工作原理是:在芯片內部定義一個TAP(Test Access Port,測試訪問端口),開發(fā)人員使用連接到芯片的JTAG外部接口上的JTAG調試器,通過訪問芯片內部的

3、TAP端口來掃描芯片內部各個掃描單元以寫入或讀取掃描寄存器的狀態(tài),從而對芯片進行測試和調試。一個掃描單元對應一個外部管腳,每個外部管腳有一個掃描寄存器BSR單元,所有這些管腳的掃描寄存器連在一起就形成了掃描鏈。簡單地說,PC通過JTAG調試器對目標板的調試就是通過TAP端口完成對掃描寄存器BSR和指令寄存器IR的讀寫訪問。要了解關于JTAG 更全面的知識,請參閱 IEEE1149.1標準。 一些基本概念JTAG是Joint Test Action Group(聯合測試行動組)的縮寫,是一種國際標準測試協議,它遵守IEEE 1149.1標準。一個含有JTAG接口的處理器,只要時鐘正常,就可以通過

4、JTAG接口訪問處理器的內部寄存器、掛在處理器總線上的設備以及內置模塊的寄存器。TAP是Test Access Port(測試訪問端口)的縮寫,是芯片內部一個通用的端口,通過TAP可以訪問芯片提供的所有數據寄存器(DR)和指令寄存器(IR),對整個TAP的控制是通過TAP控制器(TAP Controller)完成的。邊界掃描英文叫Boundary Scan,邊界掃描的基本思想是在靠近芯片的輸入輸出管腳(PIN)上設置一個移位寄存器單元,也就是邊界掃描寄存器(Boundary-Scan Register)。當芯片處于調試狀態(tài)時,邊界掃描寄存器可以將芯片和外部輸入輸出管腳隔離開來,通過邊界掃描寄存

5、器單元,可以實現對芯片外部輸入輸出管腳的觀察和控制。對于芯片的輸出管腳可以通過與之相連的邊界掃描寄存器單元把信號(數據)加載到該引腳中去,對于芯片的輸入管腳,也可以通過與之相連的邊界掃描寄存器捕獲該管腳上的輸出信號。在正常的運行狀態(tài)下,邊界掃描寄存器對芯片來說是透明的,所以正常的運行不會受到任何影響,這樣,邊界掃描寄存器提供了一種便捷的途徑用于觀測和控制所需調試的芯片。另外,芯片管腳上的邊界掃描(移位)寄存器單元可以相互連接起來,使芯片的周圍形成一個邊界掃描鏈(Boundary-Scan Chain),邊界掃描鏈可以串行地輸入和輸出,通過相應的時鐘信號和控制信號,就可以方便地觀察和控制處在調試

6、狀態(tài)下的芯片。10.2 簡易JTAG線纜原理簡易JTAG線纜一端連接到PC的并口,另一端連接到目標板的JTAG接口,PC并口中的數據、I/O管腳通過一個74XX244單向驅動芯片與目標板JTAG口的TMS、TCK、TDI、TDO、TRST信號線相連,然后用PC上的軟件來模擬JTAG所遵守的IEEE 1149.1標準協議,從而訪問、控制目標板上處理器的I/O管腳狀態(tài),也就能訪問、控制掛接在處理器總線上的flash芯片的I/O管腳,實現將數據寫入flash芯片中的功能。 PC并口定義PC并口管腳線序如圖10-1所示:圖10-2 PC并口管腳線序PC并口管腳定義如表10-1所示:表10-1 PC并口

7、管腳定義續(xù)表 PC并口的寄存器PC上的程序通過訪問并口的I/O端口寄存器來訪問、控制并口的管腳信號,這些端口包括數據端口、狀態(tài)端口和控制端口,其中每個端口都有自己的端口號,相當于它們的地址。程序通過端口號來訪問端口寄存器。PC并口1的數據端口號為3BCH,狀態(tài)端口號為3BDH,控制端口號為3BEH;PC并口2的數據端口號為378H,狀態(tài)端口號為379H,控制端口號為37AH;PC并口3的數據端口號為278H,狀態(tài)端口號為279H,控制端口號為37AH;1)數據寄存器數據寄存器(D0D7)也叫數據端口,它保存了寫到數據端口管腳的一字節(jié)數據。數據端口可以寫入數據(輸出),也可以讀出數據(輸入)。寫

8、入的數據是從數據端口管腳輸出的數據,讀出來的數據是我們上次寫入數據端口的數據或者原來保留在里面的數據,并不是從端口管腳輸入PC的數據。數據端口對應的管腳是PIN2PIN9,數據寄存器定義如表10-2所示。表10-2 PC并口數據寄存器定義bit對應并口管腳信 號 名信 號 源是否倒相0Pin2D0PC否1Pin3D1PC否2Pin4D2PC否3Pin5D3PC否4Pin6D4PC否5Pin7D5PC否6Pin8D6PC否7Pin9D7PC否2)狀態(tài)寄存器狀態(tài)寄存器(S0S7)又叫狀態(tài)端口,它保存的是5個輸入(S3S7)管腳的邏輯狀態(tài),S0S2位不與管腳對應。除了S0以外,狀態(tài)寄存器是只讀的,讀

9、出數據信息是狀態(tài)端口管腳上的邏輯狀態(tài)。S0是支持EPP傳輸并口的超時標志信息,可以用軟件方法清零。在許多并口中,狀態(tài)輸入接有上拉電阻。狀態(tài)端口對應的管腳是Pin10Pin13、Pin15。狀態(tài)寄存器定義如表10-3所示。表10-3 PC并口狀態(tài)寄存器定義bit對應并口管腳信 號 名信 號 源是否倒相0Time-Out1未使用2未使用3Pin15nError(nFault)外設否4Pin13Select外設否5Pin12PaperEnd外設否6Pin10nAck外設否7Pin11Busy外設是3)控制寄存器控制寄存器(C0C8)又叫控制端口,它保存了C0C3的4位的控制信息,C4C7不與管腳對應

10、,這些位一般被用來輸出;但在大多數SPP并口中,控制位為集電極開路/漏極開路模式,也就是說,它們同樣可以用作輸入。要從控制位上讀取外部邏輯信號,首先將相應的輸出寫入1,然后讀取控制寄存器的值即可。但是,為了提高交換速度,大多數支持EPP和ECP模式的并口,控制位工作在不能用作輸入的推拉模式下。在一些多模式接口中,控制位采用的是改進型的推拉模式,可以用作輸入??刂贫丝趯墓苣_是Pin1、Pin14、Pin16和Pin17??刂萍拇嫫鞫x如表10-4所示。表10-4 PC并口控制寄存器定義bit對應并口管腳信 號 名信 號 源是否倒相0Pin1nStrobePC是1Pin14nAutoLFPC是

11、2Pin16nInitPC否3Pin17nSelectInPC是4IRQ5未使用6未使用7未使用 簡易JTAG線纜原理圖圖10-3及圖10-4分別是我自己制作的簡易JTAG線纜的原理圖和外觀圖。(點擊查看大圖)圖10-3 自制簡易JTAG線纜原理圖圖10-4 自制簡易JTAG線纜外觀圖10.3 簡易JTAG燒寫代碼分析 簡易JTAG燒寫程序(flashp)使用說明1)需要用到的文件說明文 件說 明porttalk.sysPC的I/O端口驅動程序,使用flashp前必須將該文件復制到Windows所安裝硬盤分區(qū)的WINDOWSsystem32drivers目錄下AllowIo.exePC的I/O

12、端口使能程序,在Windows XP和Windows 2000下必須與flashp.exe聯合使用,在Windows 98下無須用此文件flashp.exe簡易JTAG燒寫flash程序已編譯好的可執(zhí)行文件mycpu.bsd目標板上CPU芯片的邊界掃描描述文件,由CPU芯片生產廠家提供myflash.fcd目標板上CPU與flash芯片管腳連接以及flash芯片屬性描述文件myprj.bin要被燒寫到flash中的二進制工程文件erase.bat擦除flash芯片批處理文件read.bat讀flash芯片中數據批處理文件write.bat寫數據到flash芯片批處理文件2)flashp.exe

13、命令格式說明/(allowio) flashp cmd options (/a) ;如果在Windows 98系統(tǒng)下使用,則不用allowio和/a命令格式說 明cmd操作命令標識字符,不區(qū)分大小寫R從flash中讀數據到指定文件W將指定二進制文件寫入flashE擦除flash整個芯片V校驗flash中的數據T測試JTAG線纜連接情況,檢查PC哪個并口連接了JTAG線纜options選項標識字符,不區(qū)分大小寫-V指示操作后進行校驗,默認不校驗-D運行過程中打印調試信息-C指定flash連接描述文件,默認為default.fcd-F指定要寫入的二進制文件工程文件名-S指定燒寫flash的起始地址

14、,十進制,默認為0-L指定燒寫flash的數據長度,字節(jié)數,十進制,默認為2563)flashp.exe命令舉例/allowio flashp r -f read.bin -s 0 -l 10000 /a該命令行從flash芯片的0地址開始讀10000個字節(jié)數據保存到read.bin文件中;/allowio flashp e /a該命令將整個flash芯片擦除,擦除后的flash全為0xff;/allowio flashp w -f myprj.bin /a該命令將myprj.bin文件燒寫到flash芯片的0位置;如果上述命令在Windows 98系統(tǒng)中使用,那么對應命令格式如下所示:/fl

15、ashp r -f read.bin -s 0 -l 10000/flashp e/flashp w -f myprj.bin flash與CPU連接及flash屬性描述文件這里以我自己制作的S3C4510開發(fā)板上用的fcd文件來說明:Chain;JTAG掃描鏈區(qū)段Device=s3c4510b.bsd;CPU的邊界掃描文件,由S3C4510處理器的生產商三星公司提供Read;程序中未用BeginByte=0EndByte=0x10000Flash ; SST39VF160;flash芯片描述區(qū)段。SST39VF160是注釋,指明flash芯片的型號WriteCmd=0x5555, 0xaa,

16、 0x2aaa, 0x55, 0x5555, 0xa0 ;寫flash芯片的命令字序列,可查閱flash芯片手冊獲得EraseCmd=0x5555, 0xaa, 0x2aaa, 0x55, 0x5555, 0x80, 0x5555, 0xaa, 0x2aaa, 0x55, 0x0, 0x30 ;擦除flash芯片的命令字序列,可查閱flash芯片手冊獲得EraseDelay=25;擦除芯片所需要的等待時間,單位為msBlock=0x800, 512;flash芯片中一個sector的大小,如果有多種sector,應該設置成最小的sector大小。這里表示flash芯片最小sector的大小為5

17、12字節(jié)AddrWidth=20;flash連到系統(tǒng)中的數據寬度,即數據線位數,這里表示數據線寬為20位;DataWidth=2;flash連到系統(tǒng)中的地址寬度,即地址的字節(jié)數,這里表示地址為2字節(jié)寬度;BigEndian=0;字節(jié)序模式,0表示LittleEndian,小端,一個字中低地址字節(jié)為低位字節(jié);1表示BigEndian,大端,一個字中的低地址字節(jié)為高位字節(jié);A0=110;flash芯片的地址位0管腳A0連到了S3C4510芯片的第110管腳,以下類推A1=111A2=112A3=113A4=114A5=115A6=116A7=117A8=120A9=121A10=122A11=12

18、3A12=124A13=125A14=126A15=127A16=128A17=129A18=132A19=133D0=136 ;flash芯片的數據位0管腳D0連到了S3C4510芯片的第136管腳,以下類推D1=137D2=138D3=139D4=140D5=141D6=144D7=145D8=146D9=147D10=148D11=149D12=150D13=151D14=152D15=153WR=100;flash芯片的寫信號管腳WR連到了S3C4510芯片的第100管腳RD=72;flash芯片的讀信號管腳RD連到了S3C4510芯片的第72管腳CS=75;flash芯片的片選管腳C

19、S連到了S3C4510芯片的第75管腳 ResetCtrl=0x00;flash芯片的復位控制管腳未連接High=Low=SafeMode=1;安全模式設置,程序中未使用 簡易JTAG燒寫程序的執(zhí)行邏輯和流程網上有很多種簡易JTAG燒寫程序,有用標準C寫的,有用VC寫的,有Windows系統(tǒng)下使用的版本,也有Linux系統(tǒng)下使用的版本,讀者可以自行下載后作適當修改重新編譯就可使用了。不管什么版本的程序,其基本原理和執(zhí)行邏輯應該是差不多的,本書附帶光盤中有我所下載、修改、使用的JTAG燒寫程序完整源代碼,讀者可以參考閱讀。如圖10-6所示是該程序的總體流程。燒寫程序維護兩個掃描鏈表緩沖區(qū),一個對應輸入,一個對應輸出。一個掃描鏈緩沖區(qū)就是一個int型整數數組,數組的長度為CPU的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論