y_waiwaiの日記: PandaBoard で OpenOCD (ビルド編) #2/3 2
元ネタはここ
http://hp.vector.co.jp/authors/VA000177/html/openocd-build.html
VirtualBox 上のubuntu12.04 環境、ソースの展開は $HOME フォルダ上で行なっている。ここでの解説の都合上、Ubuntuはインストール直後状態、各パッケージはこの時点での最新のものを使っている。
端末上から、以下のコマンドにより必要なパッケージをインストール。
$ sudo apt-get install git-core
$ sudo apt-get install mingw32-binutils
$ sudo apt-get install mingw32
$ sudo apt-get install libconfig8
$ sudo apt-get install libtool
$ sudo apt-get install autoconf
$ sudo apt-get install cmake
$ sudo apt-get install texinfo
参考までに、各パッケージのバージョンを載せておく。
git-core
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/main liberror-perl all 0.17-1 [23.8 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ precise/main git-man all 1:1.7.9.5-1 [630 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ precise/main git i386 1:1.7.9.5-1 [5,963 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ precise/main git-core all 1:1.7.9.5-1 [1,384 B]
取得:5 http://jp.archive.ubuntu.com/ubuntu/ precise/main patch i386 2.6.1-3 [86.0 kB]
mingw32-binutils
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/universe mingw32-binutils i386 2.20-0.2 [12.0 MB]
mingw32
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/universe mingw32-runtime all 3.15.2-0ubuntu1 [2,084 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ precise/universe mingw32 i386 4.2.1.dfsg-2ubuntu1 [20.7 MB]
libconfig8
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/main libconfig8 i386 1.3.2-2ubuntu2 [21.8 kB]
libtool
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/main autotools-dev all 20120210.1ubuntu1 [42.4 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ precise/main libltdl-dev i386 2.4.2-1ubuntu1 [203 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ precise/main libtool i386 2.4.2-1ubuntu1 [302 kB]
autoconf
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/main m4 i386 1.4.16-2ubuntu1 [195 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ precise/main autoconf all 2.68-1ubuntu2 [560 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ precise/main automake all 1:1.11.3-1ubuntu2 [571 kB]
cmake
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/main libxmlrpc-core-c3 i386 1.16.33-3.1ubuntu5 [176 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ precise/main emacsen-common all 1.4.22ubuntu1 [16.9 kB]
取得:3 http://jp.archive.ubuntu.com/ubuntu/ precise/main cmake-data all 2.8.7-0ubuntu4 [710 kB]
取得:4 http://jp.archive.ubuntu.com/ubuntu/ precise/main cmake i386 2.8.7-0ubuntu4 [4,398 kB]
texinfo
取得:1 http://jp.archive.ubuntu.com/ubuntu/ precise/main texinfo i386 4.13a.dfsg.1-8ubuntu2 [447 kB]
openocd のソースを取得
~$ git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
ftdi社のサイトにて D2XX のWindowsドライバ(CDM 2.08.24 WHQL Certified.zip)をダウンロード、それを ftdi-win32 フォルダを作ってそこに展開する。
この時点での各フォルダの内容は以下のようになる。
~$ ls
examples.desktop openocd テンプレート ドキュメント ピクチャ 公開
ftdi-win32 ダウンロード デスクトップ ビデオ ミュージック
~$ ls ftdi-win32
Static ftd2xx.h ftdibus.inf ftdiport.inf
amd64 ftdibus.cat ftdiport.cat i386
~$ ls openocd
AUTHORS HACKING NEWS-0.5.0 common.mk jimtcl
AUTHORS.ChangeLog Makefile.am NEWTAPS config_subdir.m4 src
BUGS NEWS README configure.ac tcl
COPYING NEWS-0.2.0 README.Win32 contrib testing
ChangeLog NEWS-0.3.0 TODO doc tools
Doxyfile.in NEWS-0.4.0 bootstrap guess-rev.sh uncrustify.cfg
これでやっとビルドする環境が整った。これよりビルド開始。
端末上より以下のコマンドでビルドしていく。
$ cd ~/openocd
~/openocd$ ./bootstrap
~/openocd$ ./configure \
--build=i686-pc-linux-gnu \
--host=i586-mingw32msvc \
--enable-maintainer-mode \
--enable-ft2232_ftd2xx \
--with-ftd2xx-win32-zipdir=../ftdi-win32
~/openocd$ make
./bootstrap を実行途中に、openocd/jimtcl や openocd/tools/git2cl のナカミを git clone で取得しているので、インターネットに繋がっていないとここでエラーを起こすので注意。
./bootstrap、./configure はすんなり通るのだが、make でのコンパイル中に、以下のエラーで止まってしまう。
cc1: warnings being treated as errors
cfi.c: In function 'cfi_spansion_write_block':
cfi.c:1821: warning: dereferencing type-punned pointer will break strict-aliasing rules
make[5]: *** [cfi.lo] エラー 1
make[5]: ディレクトリ `/home/yvy/openocd/src/flash/nor' から出ます
make[4]: *** [all-recursive] エラー 1
make[4]: ディレクトリ `/home/yvy/openocd/src/flash' から出ます
make[3]: *** [all-recursive] エラー 1
make[3]: ディレクトリ `/home/yvy/openocd/src' から出ます
make[2]: *** [all] エラー 2
make[2]: ディレクトリ `/home/yvy/openocd/src' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/home/yvy/openocd' から出ます
make: *** [all] エラー 2
ということで、openocd/src/flash/nor/cfi.c の1821行目を見てみる
arm_algo = (struct arm_algorithm *)&armv7m_algo;
ポインタのキャストがおかしい、というワーニングなので、これを
arm_algo = (struct arm_algorithm *)(void*)&armv7m_algo;
と修正して、もいちど make する。
と、これでコンパイルが成功。
#最初から make したい場合は make clean してから make ね。
openocd/src に、openocd.exe ができていればOK
これを、Windowsのコマンドプロンプトで実行してみる。
>openocd
Open On-Chip Debugger 0.6.0-dev-00599-ga21affa-dirty (2012-06-04-12:40)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
Runtime Error: embedded:startup.tcl:47: Can't find openocd.cfg
in procedure 'script'
at file "embedded:startup.tcl", line 47
Error: Debug Adapter has to be specified, see "interface" command
in procedure 'init'
cfgファイルがないというエラーが出てるが、まだ作ってないのでこれでもOK
apt-get install openocd (スコア:1)
Ubuntu 12.04なら、sudo apt-get install openocd で、インストールできるのでは。
というような理由であれば、自分でbuildしてみるのも良いと思いますが。
Re:apt-get install openocd (スコア:1)
コメント有難うございます。
私の欲しかったのはWin32版のOpenOCDなんです。
で、ビルドしようと思う前に、絶対に誰かバイナリイメージを公開してるヤツがいるだろう、とぐぐりまくったんですが、バージョンが古いものやら変なパッチがあたってるものやらしか見つからなくて、しゃーなしにビルドする気になったわけでして。。
もひとつ Pandaboard ES のcfgファイルは、0.6.0になって追加された、という事情もあったりします。
0.5.0 には無印のPandaboardのcfgファイルはあったんですが、これだと微妙にCPUが変わっているのでダメでしたね。
まあ、このあとになって、ftdi有効版のバイナリイメージをこっそり公開してるところを見つけたりしたのはご愛嬌ということで。w