Debug Board v3/zh tw
From Openmoko
調試板V3是針對neo 1973和neo FreeRunner最新版的調試板。它與手機分開銷售。
這個調試板可以使你擁有一個串口控制台和JTAG口。這個調試板使你: 可以通過串口控制台得到各個時刻事件發生時的內核調試資訊(或是得到內核崩潰時的最後資訊); 使用JTAG口在任何時刻暫停處理器,分析系統狀態(這也可以同gdb調試器同時使用); 可以對NOR快閃記憶體進行些操作。
串口控制台和JTAG口對於內核調試是非常有用的(實際上是必不可少的)。
1 概述
此調試板提供如下主要功能:
USB 集線器
使用 FT2232 的JTAG口
串口
1.1 原理圖
調試板的原理圖可以在此處下載:http://people.openmoko.org/joerg/schematics/debug_board/OpenMoKo_Debug_Board_V3_MP.pdf
1.2 USB 集線器
這個匯流排供電集線器 將上行埠與電腦相連 將1號下行埠與實現JTAG和串口控制台的FT2232D相連 將2號下行埠與空閒的USB-A連接器相連 將3號下行埠與手機相連
使用這個集線器,你可以通過一個USB電纜同時訪問手機、JTAG口和串口。
實際上,你甚至可以使用下行埠對手機進行充電(100mA緩慢充電)。
我們使用TUSB2046B晶片實現USB集線器的功能.
1.3 使用 FT2232 的JTAG口
本質上,我們整合USB-JTAG適配器的方法和Amontec JTAGkey-tiny類似。我們使用的實際參考設計(感謝Joern!)可以在這裡找到:http://www.oocdlink.com (但是這個功能變數名稱已經不存在了)。
它提供大約150倍wiggler的速度、完全的JTAG調試能力。
實際的JTAG口是與手機連接的(通過調試專用扁平線纜)。一個獨立的20針介面使用標準ARM-JTAG引出線,它使使用者可以用這個設備作為別的以ARM設備的JTAG適配器。
1.4 串口
作為再使用一個真實的RS232口的替代方案,我們可以使用一個USB轉串口的轉換晶片,比如FT232或PL2303。
事實上,我們在使用FT2232的JTAG功能的同時,可以使用它的第二個埠。所以無需額外的 FT232 或 PL2303晶片了。
1.4.1 三態串口
GTA01的CPU UART串口需要一個由三態驅動器構成的多工器。因為它同時連接了GSM數據機模組和調試板。我們通過一個反轉的GSM_EN信號(在FPC連接器的7腳)驅動GTA01三態驅動器。而GTA02的控制台串口則不是多工的,而是直接與CPU的UART相連。
2 使用指南
2.1 準備工作 2.1.1 FT2232D EEPROM
你的調試板包含了一個串列EEPROM,它應該在出廠時就被正確地燒寫過。儘管如此,一些板子在出廠時並沒有正確/完全的被程式設計,以至於你需要核實一下。
如果板子在插入電腦後顯示的ID為1457:5118,則調試板已被正確燒寫過。 只有當你的板子顯示的ID為0403:6010時,你必須自己刷一下板子。
2.1.1.1 Linux下燒寫
注意:假設你的板子是受官方的技術支援的,FIC已經幫你做好了這個工作。儘管如此,如果你是早期的使用者之一,配置和USB 經銷商ID/產品ID 可能並沒有被正確設置。
要重新燒寫EEPROM,你可以使用ftdi_eeprom程式,下載位址:http://www.intra2net.com/de/produkte/opensource/ftdi/ 。但是,最新的版本(0.2)還不支持FT2232D,所以你需要以下的補丁:http://people.openmoko.org/laforge/misc/debug_board_v2/ftdi_eeprom/ftdi_eeprom-0.2-moko.patch 。
你可能也需要為libftdi使用以下的補丁:http://people.openmoko.org/werner/libftdi-c56-strings-dirty-hack.patch 。(在http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=321 可獲得更多幫助)
此外,還需要EEPROM設定檔:http://people.openmoko.org/laforge/misc/debug_board_v2/ftdi_eeprom/neo1973_debug_board_v2.ftdi 。
在你編譯好ftdi_eeprom後,就可以運行以下命令: ftdi_eeprom --flash-eeprom neo1973_debug_board_v2.ftdi
警告:在運行ftdi_eeprom 時,請確保你沒有其他包含FTDI FT232 / FT2232的設備連接在USB埠。因為ftdi_eeprom可能會斷開所有除調試板的設備。
如果一切順利,你將會得到以下資訊:
FTDI eeprom generator v0.2 (c) Intra2net AG <opensource@intra2net.com> FTDI init: 0 Unable to find FTDI devices under given vendor/product id: 0x1457/0x5118 Retrying with default FTDI id. Used eeprom space: 102 bytes FTDI write eeprom: 0 Writing to file: neo1973_debug_board_v2.eeprom FTDI close: 0
燒寫完成後,斷開調試板,再重新連接。你將會得到以下資訊:
$ lsusb -v -d 0x1457: Bus 005 Device 009: ID 1457:5118 Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1457 idProduct 0x5118 bcdDevice 5.00 iManufacturer 1 Openmoko iProduct 2 Debug Board for Neo1973 iSerial 0 bNumConfigurations 1 [...]
2.1.1.2 Windows下燒寫
注意:假設你的板子是受官方的技術支援的,FIC已經幫你做好了這個工作。儘管如此,如果你是早期的使用者之一,配置和USB 經銷商ID/產品ID 可能並沒有被正確設置。
要重新燒寫EEPROM,你可以使用ftdi_eeprom程式,下載位址:http://www.ftdichip.com/Resources/Utilities/MProg3.0_Setup.exe 。 你還需要EEPROM的範本檔(設定檔):http://people.openmoko.org/laforge/misc/debug_board_v2/mprog_template/neo1973_debugboard_v2.ept
2.1.2 驅動 2.1.2.1 Linux
請確保你的電腦已安裝了libftdi-0.8或更高版本。已經發現早期的版本會有問題。 此外,需要做以下工作:
2.1.2.1.1 ftdi_sio 模組配置選項
rmmod ftdi_sio modprobe ftdi_sio vendor=0x1457 product=0x5118 或是在modules.conf 裡配置。
2.1.2.1.2 udev 規則
請安裝以下udev規則:http://people.openmoko.org/laforge/misc/debug_board_v2/udev_rules/
注意:某些發行版本只使用 usb 作為他們USB子系統的名字,而不再是usb_device。(比如Ubuntu 8.x)。如果這樣,你就應該相應的改變帶有SUBSYSTEM的行,否則設備並不能被udev規則所識別。
2.1.2.2 Windows
請使用以下驅動程式:http://people.openmoko.org/laforge/misc/debug_board_v2/windows_drivers/
2.2 硬體連接
連接Neo1973與調試板V2(如何使用軟性印刷電路板(Flexible Printed Circuit;FPC)進行連接) 在Debug Board v2#Hardware中建議的連接方法可能對調試板V3和freerunner的連接並不適用。在將調試板的USB電纜插入PC之前,將FreeRunner的USB介面插入電腦可能並不能啟動FreeRunner。在調試板從PC中取得電源後,FreeRunner應該才會啟動。
2.3 建議
User:Cfriedt 20081021 調試板V3在J1(20針ARM JTAG 口)使用3.3V信號電平。許多其他的ARM設備使用1.8V信號電平。我建議在下一版的調試板中使用和FlySwatter一樣的電平轉換方案。FlySwatter使用兩片的SN74AVC4T245來提供從1.2V到3.6V的信號電平範圍。
2.4 實際使用 2.4.1 Linux下 2.4.1.1 串口
你宿主機的Linux內核將會創建一個虛擬的串口設備節點:/dev/ttyUSBx,x是按順序編號的。如果你沒有其他的USB-串口轉換器和你的宿主機相連,那麼設備節點名為 /dev/ttyUSB1 (baud rate 115200 8N1)。 你可以像使用其它真實的串口一樣使用你喜歡的終端模擬器(minicom, cu, zc, ...)。你也可以使用gdb(比如 target remote /dev/ttya)。
2.4.1.2 JTAG口
一旦你安裝的libftdi 版本為0.8 或更高,並用正確的openocd.cfg( 可由此處下載OpenOCD#openocd.cfg) 配置OpenOCD ,則JTAG便可以很好地工作。