본문 바로가기
Embedded System/jtag

WinXP(cygwin)에 OpenOCD를 설치하자 (OpenOCD with ft2232)

by lifeseed 2010. 12. 7.

1. Cygwin설치
2010년 12월 현재 배포되는 버전은 1.7.7이다.
Cygwin설치시 빌드에 필요한 패키지를 설치한다. linux에서 컴파일 할때도 용도 동일하게 설치되어야 하는 Package들이다.
(GIT, autoconf, automake, libtool, texinfo)
- Devel : 기본적으로 모두 설치한다. (Devel 옆에 있는 기호를 누르면 install로 변경된다.
- Text 의 texinfo
그리고 나머지는 알아서 필요한데로 설치한다.

2. OpenOCD (http://openocd.berlios.de/web/) 코드 다운
: Git를 이용하여 최신 코드를 다운 받는다. 아직 TAG에는 등록되지 않았으나 NEWS 파일을 보면 GIT의 최신 코드 버전이 0.5.0 임을 확인할 수 있다.
tag에 등록된 원하는 버전을 사용하는 것을 추천합니다. TAG에 등록된 최신 버전은 0.4.0-rc2 이다.
$git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd openocd
$git checkout -b work v0.4.0

3. 윈도우용 FT2232 드라이버를 다운로드 한다.
아래 사이트에서 다운 가능하다. http://www.ftdichip.com/Drivers/D2XX.htm 
Windows용으로 현재 배포되는 버전중 2.08.08 버전을 이용한다.



4. OpenOD Build
cf) [출처] http://forum.sparkfun.com/viewtopic.php?t=11221 , http://cafe.naver.com/embeddedcrazyboys/2416

1) install FTD2XX Drivers
압축받은 파일을  ftd2xx 라는 폴더 이름으로 압축을 풀고 openocd 폴더의 root path로 복사한다.

2) version.texi 파일 생성
: OpenOCD의 doc 디렉토리에 version.texi 파일을 아래와 같이 생성한다.

$cd ....../OpenOCD
$vi ./doc/version.texi

@set EDITION OpenOCD 0.4.0 wih ftd2xx library in D2XX 0.4.16
@set VERSION 1.0
@set UPDATED 2010/11/30

3) Build
 - i) bootstrap
$ cd ....../OpenOCD
$ ./bootstrap
+ aclocal
configure.in:2: warning: AC_INIT: not a literal: OpenOCD Mailing List <openocd-d
...
doc/Makefile.am:1: installing `doc/texinfo.tex'
src/Makefile.am: installing `./depcomp'
Makefile.am: installing `./INSTALL'
Bootstrap complete; you can './configure --enable-maintainer-mode ....'

$./configure --enable-ft2232_ftd2xx --
$make

cf) 최신 버전 (0.5.x)로 수행시 아래와 같은 메세지가 나온다.

Makefile.am: installing `./INSTALL'
Bootstrap complete. Quick start build instructions:
1. Fetch Jim Tcl
git submodule init
git submodule update
2. Configure
./configure --enable-maintainer-mode ....

./configure를 수행하기 전에 git submodule 명령을 수행하여야 한다. 명령은 위에 보이는 로그대로 수행하면 된다.
그러면 openocd 폴더에 있는 jimtcl 폴더에 코드가 다운로드 된다. 이후 configure 명령을 수행한다.
만약 그냥 configure를 수행할 경우 아래와 같은 에러가 발생한다.

...
checking whether to enable verbose JTAG I/O messages... no
checking whether to enable verbose USB I/O messages... no
checking whether to enable verbose USB communication messages... no
checking whether to enable malloc free space logging... no
checking whether to enable ZY1000 minidriver... no
checking whether to enable dummy minidriver... no
checking whether standard drivers can be built... yes
configure: error: jimtcl not found, run git submodule init and git submodule update.

$

다음과 같이 수행하고 다시 configure 명령을 수행한다.
$ git submodule init
Submodule 'jimtcl' (http://repo.or.cz/r/jimtcl.git) registered for path 'jimtcl'
Submodule 'tools/git2cl' (git://repo.or.cz/git2cl.git) registered for path 'tools/git2cl'

$ git submodule update
Initialized empty Git repository in /home/sooya.joo/openocd/jimtcl/.git/
Submodule path 'jimtcl': checked out '60dfb023c4afa95047e0fa8db49830ccb46446b2'
Initialized empty Git repository in /home/sooya.joo/openocd/tools/git2cl/.git/
...
Resolving deltas: 100% (30/30), done.
Submodule path 'tools/git2cl': checked out '8373c9f74993e218a08819cbcdbab3f3564b
beba'


 - ii) configure
$ ./configure --enable-ft2232_ftd2xx --with-ftd2xx-win32-zipdir=/home/openocd/ftd2xx CFLAGS="-O0 -g -Wall"
...
config.status: creating doc/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

최신버전(0.5.0)의 경우 아래의 로그로 끝이 난다.
...
Jim static extensions: load package readdir array clock exec file posix regexp s
ignal aio eventloop syslog nvp stdlib glob tclcompat
configure: creating ./config.status
config.status: creating Makefile
config.status: creating jim-config.h
config.status: creating jimautoconf.h


- iii) make
$ make

위와 같이 수행했다면 정상적인 Build가 되었으며, src 디렉토리에 openocd라는 실행파일이 생성된다.

4) install
$ make install

/usr/local/bin으로 openocd.exe 가 복사되고,
/usr/local/share/openocd 폴더로 contrib 및 script 들이 복사된다.