Neo1973 OpenOCD/zh tw
From Openmoko
(→OpenOCD and Debug Board) |
(→libftdi-0.8) |
||
Line 72: | Line 72: | ||
=== libftdi-0.8 === | === libftdi-0.8 === | ||
− | 如果你想要使用OpenOCD搭配Debug Board v2一起使用,並且想在OpenOCD下同時使用串列埠,你 '''需使用libftdi-0.8 或之後的版本''' | + | 如果你想要使用OpenOCD搭配Debug Board v2一起使用,並且想在OpenOCD下同時使用串列埠,你 '''需使用libftdi-0.8 或之後的版本'''。你的套件仍是使用之前的libftdi版本的機率很高,因此,你可以自下面的位址 http://www.intra2net.com/de/produkte/opensource/ftdi/ 下載,並且自行建置。 |
=== openocd.cfg === | === openocd.cfg === |
Revision as of 06:10, 27 May 2008
Contents |
關於 OpenOCD
OpenOCD 是100% free software On-chip-debugger for commonly-found ARM JTAG probes such as wiggler, chamaeleon, jtag-key and others, like the Debug Board.
它提供human-readable telnet 界面做為手動halting/resuming目的地裝置。讀取/寫入registers 及記憶體。
除此之外,它在TCP埠提供RDI (remote debugger interface)。這個界面可以被 gdb (the GNU Debugger)使用。
GTA01開發團隊在最剛開始的時侯,使用與wiggler相容的 OpenOCD probe 做為他們的ICE solution,直到被設計為他們 Debug Board︱除錯板 。
取得 OpenOCD
MokoMakefile
MokoMakefile "make openmoko-devel-tools" target will build statically-linked openocd and dfu-util binaries. The "bitbake openocd-native" command may also be used.
Debian套件
我們現在擁有了Debian OpenOCD二進位檔套件,可以至 http://people.openmoko.org/laforge/dpkg取得。 安裝這個套件是將OpenOCD安裝到你開發軟體的裝置的優先好方法。
dpkg --install openocd_82-1_i386.deb
Debian/Unstable也包含了OpenOCD build。
Gentoo Ebuild
在gentoo bugzilla有給Openocd使用的實驗性ebuild。
原始碼
OpenOCD Revision 82 及之後的版本已經證實可以在QT2410及Neo1973 裝置及wiggler及Amontect JTAGkey , JTAGkey tiny上良好的運作。你可以透過下面的方法在OpenOCD子版本外查看rev. 130 。
svn co -r 130 http://svn.berlios.de/svnroot/repos/openocd/trunk
Windows Binaries
YAGARTO 專案針對OpenOCD提供Win32安裝。你可以在這個網址http://www.yagarto.de/howto/openocd/index.html查看到詳情及下載。YAGAPTO接著會與從這個位址http://people.openmoko.org/laforge/misc/debug_board_v2/windows_drivers/ 下載的FDTI一起運作。 drivers available from
設定
User:HaraldWelte 提供了 openocd.cfg 設定檔 做為利用OpenOCD及QT2410做為wiggler之用。
使用OpenOCD
我們無法提供OpenOCD的完整使用手冊,但你可以參考Bootloader#Using_JTAG_to_boot_from_RAM及NAND bad blocks#JTAG_.2F_OpenOCD_.2F_u-boot_RAM_based及Neo1973 OpenOCD#Using OpenOCD telnet interface這些內容。
已知的臭蟲及問題排除
CP15 register 讀取/寫入 ARM920T core 無法作用
這個為已知的臭蟲,但除錯工作目前為停滯狀態。
Did you turn it on ?
An easily made but devastating mistake is to forget to actually activate the CPU. Just connecting power is not enough ! Press and hold the power button until the boot loader does its count-down, or, in case there is no runnable boot loader, the CPU keeps itself busy.
number of discovered devices in JTAG chain doesn't match configuration
You get something like:
Error: jtag.c:1224 jtag_examine_chain(): number of discovered devices in JTAG chain (51) doesn't match configuration (1)
This seems like a libftdi initialization bug. Sometimes the FT2232 doesn't get completely reset into a sane state at startup of OpenOCD. Please unplug the USB cable from the Amontec JTAGkey / Debug Board and re-plug. It should immediately work the next time. Bugfix would be appreciated a lot!
JTAG communication failure
Another common error is this one:
JTAG communication failure, check connection, JTAG interface, target power etc.
Also this one is fixed by unplugging and re-plugging USB.
OpenOCD及除錯版
libftdi-0.8
如果你想要使用OpenOCD搭配Debug Board v2一起使用,並且想在OpenOCD下同時使用串列埠,你 需使用libftdi-0.8 或之後的版本。你的套件仍是使用之前的libftdi版本的機率很高,因此,你可以自下面的位址 http://www.intra2net.com/de/produkte/opensource/ftdi/ 下載,並且自行建置。
openocd.cfg
This is an openocd.cfg that is known to work with Debug Board (v2/v3), Neo1973 Hardware#GTA01Bv3 and OpenOCD 130:
telnet_port 4444 gdb_port 3333 interface ft2232 jtag_speed 0 ft2232_vid_pid 0x1457 0x5118 ft2232_layout "jtagkey" reset_config trst_and_srst jtag_device 4 0x1 0xf 0xe daemon_startup attach target arm920t little reset_run 0 arm920t working_area 0 0x200000 0x4000 backup run_and_halt_time 0 5000
For later versions of OpenOCD you may need to specify the device description. For the v2 Debug board add this line to your openocd.cfg:
ft2232_device_desc "Debug Board for Neo1973 A"
If you are using the libftdi version on Linux, and if you see this iProduct string in your lsusb output "Debug Board for Neo1973", please add this line instead.
ft2232_device_desc "Debug Board for Neo1973"
Using OpenOCD telnet interface
The telnet interface can be accessed using
telnet localhost 4444
it provides a plethora of functions for debugging. You might be interested in
reset reset halt resume poll reg load_binary mdw mww
Using OpenOCD and gdb for remote debugging
First, you will need a suitable cross-gdb (a gdb that runs on your host architecture, e.g. i386, but works with code for arm). In OpenEmbedded, you can build such a cross-gdb by using
bitbake gdb-cross
If you want to debug the kernel, you can then start this gdb with
$ arm-linux-gdb vmlinux
which will give you something like
GNU gdb 6.6 Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "--host=i686-linux --target=arm-linux"... (gdb)
We now need to connect to the OpenOCD daemon, which is done using the target remote command. In this particular example, we did already halt the target by issuing halt on the telnet command line
(gdb) target remote localhost:3333 Remote debugging using localhost:3333 warning: shared library handler failed to enable breakpoint 0xc0129b8c in memmove () at include/asm/current.h:9 9 { (gdb)
For breakpoints to work, you have to enable software breakpoints in OpenOCD, by issuing
> arm7_9 sw_bkpts enable
on the telnet command line, and use hbreak to set breakpoints in gdb.
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |