2010年07月18日

OpenOCD:雑多なメモ

OpenOCD:雑多なメモ
はじめに-1
はじめに0
はじめに1

OpenOCDのコンパイル編
  *cygwinをインストール
  *OpenOCDの開発版(最新版)(非正式版)ソースを取得
  *OpenOCDのリリース版(正式版)ソースに変更
  *FTDIのDLLを入手する
  *OpenOCDのコンパイル

コンフィグファイル編
  *はじめに
  *コンフィグファイルはTcl言語
  *PDFマニュアルを生成する

*I/Oビュー画面の代替?


はじめに-1
(マイナス1?
自分がOpenOCDを使ってみようとした理由は付録LPC2388基板で
ハードウェア・デバッグができるからだ。

基本的にgdb+Eclipse環境で使うことを前提にしている。
グローバル/ローカル変数の参照、
C言語/アセンブラソースでブレーク、ステップ実行。
レジスタ/メモリ参照などが容易に可能になる。

(注OpenOCDは多くのCPUに対応している
(注I/Oビュー(Peripheral View)機能はないが後述)

はじめに0
2010年7月現在、FT2232のFTDIドライバを使うと
OpenOCDは自分でコンパイルすることになる。
詳しくは以前のブログに書いた。

有名な解説ページがFTDIドライバを採用したしため
LibUSB-Win32のVista問題が偶然回避されてきたと想像する。

たぶん、半年〜1年以内にこの状況は改善されるだろう。
LibUSB-Win32のドライバがようやく改善されたようなのでコンパイル済みの
インストーラがWindows Vista以降で使える可能性が出てきた。
そうなれば自分でコンパイルする必要もなくなるし、

ワンクリック・インストーラ一発でお気楽極楽インストールが出来るだろう。

(今でもWindowsXPならできるが成功した情報を見つけられない)
(そうなるとSeggerJ-LINKのクローン品も視野に入ってくる)
(注2010年7月現在公(おおやけ)の場所から入手できるインストーラは
Vista問題ありのやつです。(たぶん))

まぁ、結局は出てみないとアレだけど。(オイ

今はちょうど過渡期と言っていいだろう。

そうこうしているうちにLPCXpressoが
簡単でかなりいい感じなのでそっちが大盛況になると思います。
LPCXpressoは「インストーラ、一発で設定終了」ですから、
その次はもうプロジェクト作ってコンパイル&デバッグ・ゴーなので。

特にLPCxpresso/LPC1768版が2800円で秋月から発売されたら
思わず買っていいと思います。(爆爆

はじめに1
メモメモ。

基本的に以下の2人の方(かた)のページを参考、
及び「ほぼそのまま(^^;」だったり、
独自の調査に基づく内容だったりいろいろになっています。

OpenOCDビルド方法(win32版)

ねむいさんのぶろぐ


OpenOCDのコンパイル編
*cygwinをインストール
今回、別の理由で最初からCygwinを再インストールしたので
その時の記憶。

cygwinをあまり好きじゃないと言いつつ使うのは、
某IF誌が提供する各種コンパイラ記事がCygwin用だったり、
MinGW/MsysがCygwinほど追加インストールが楽じゃなかったり。
使いにくいとはいえCygwinは、
「ワンクリック・インストーラ」が使えたりパッケージ・マネージャが
あったりするのだ。

cygwinに追加インストールしたもの
libtool
make
gcc3
git

など。

*OpenOCDの開発版(最新版)(非正式版)ソースを取得
cygwinのユーザフォルダを「/home/mi」とする。
以下はCygwinコンソール上で実行する。

$ pwd
/home/mi

$ mkdir ocd
$ cd ocd

$ git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
これで /home/mi/ocd/openocd に開発版(今ならVer0.5-dev)のソースが取得される。 *OpenOCDのリリース版(正式版)ソースに変更 上で取得したのは最新版だけど、開発中の物(非正式版)なので正式版(v0.4.0)に変更する。 「開発版」というのは「途中のバージョン」なので、動作があやしい可能性もある。 さらに、「自分が取得した時点の最新版」なので 正確なバージョンの特定が難しいといえる。(まぁ、特定する方法はあると思うが) 最新版は、最新版なりに意味がある場合もあって微妙とも言える。(オイ 自分の場合は最初、最新版を使用して、後から正式版(v0.4.0)に戻した。 理由は、結構大変だったというのもある。(結果は変わらずだったが) 正式版(v0.4.0)と開発版(今ならVer0.5-dev)には、 「*.cfgファイル」に互換がないようなので注意が必要。 マニュアルもバージョンに合った物を読むこと。
$ cd openocd
以降の「git コマンド」は「openocdフォルダ」で実行する。 「branch」コマンドで
$ git branch
*master
上のようにマスターブランチ(印付き)(最新版)にいることを確認。
$ git tag
v0.1.0
v0.2.0
v0.3.0
v0.3.0-rc0
v0.3.1
v0.4.0
v0.4.0-rc1
v0.4.0-rc2
上でバージョンタグを確認する。 次に「checkout」コマンドでソースコードをごっそり 正式版(v0.4.0)に変更する。
$ git checkout v0.4.0
ブランチコマンドで確認
$ git branch
* (no branch)
master
上の「*印」がある方が「v0.4.0」のブランチになる. 変更はこれでOK. ソースコードを最新版(開発版)に戻したいなら
$ git checkout master
とする。 これで、「任意のバージョンにいつでも変えられる」ようになった。 このワザを十分活用してほしい。 *FTDIのDLLを入手する 取得したドライバ群を解凍して「openocd直下」のftd2xxフォルダに必要なファイルを置く。 下は解凍した物全部を置いた。
$ ls -1 ftd2xx/
CDM 2 06 00 Release Info.rtf
LogoVerificationReport.pdf
amd64
ftd2xx.h
ftdibus.cat
ftdibus.inf
ftdiport.cat
ftdiport.inf
*OpenOCDのコンパイル
$ pwd 
~/ocd/openocd
以下の順で実行する。
$ ./bootstrap
次に、
$ ./configure \
--enable-maintainer-mode \
--disable-werror \
--disable-shared \
--enable-ft2232_ftd2xx \
--with-ftd2xx-win32-zipdir=/home/mi/ocd/openocd/ftd2xx \
CC="gcc -mno-cygwin" \CFLAGS="-O0 -g -Wall"
を実行する。終わるまで待つ。 次に、
$ make
を実行。終わるまで待つ。 これで「srcフォルダ」に「openocd.exe」が出来ているので、 バージョンを確認する。
$ src/openocd.exe -v
Open On-Chip Debugger 0.4.0 (2010-07-18-xx:xx)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.berlios.de/doc/doxygen/bugs.html
と表示されればOKだ。 コンフィグファイル編 *はじめに (マタカyo *コンフィグファイルはTcl言語 OpenOCDのコンフィグファイル群(*.cfg)は、全部くまなくまるっと 「Tcl言語」のスクリプトなのだ。(サブセット+α) Tcl言語といえば化石。 じゃなくて。 超レガシーな言語だ。(爆 Tcl言語の基本文法は以下の方(かた)のページが非常に分かり易い。
Tcl文法とコマンドTcl基礎文法最速マスター
OpenOCDマニュアルにある「Tcl速習コース」は残念ながら読む意味はほとんどない。 あるとすれば、
lpc1768.cpu configure  -event  reset-init  { 
    myboard_reinit  
}
という、記述方法を知るくらい。 「コンフィグファイル」とは起動時にOpenOCDの引数に指定するファイル群のこと。 たとえば、
$ openocd.exe -f openocd.cfg -f conf2.cfg
等とする。 *PDFマニュアルを生成する 上記のようにOpenOCDのバージョンに合ったマニュアルが必須になる。 ここでは「PDFマニュアル」を生成する方法を記述する。 まず、 Cygwinに「tetex」関係のパッケージを追加する。 cygwin-tetex.gif 上が必要なtetexパッケージ 単独でマニュアルだけ生成したい時、 configureの最初のオプション「--enable-maintainer-mode」は、なにげに省略したくなりますが、 これを省略すると「PDFマニュアル」がエラーで生成できなくてハマりました。 orz 従って、OpenOCD本体のコンパイル後すぐにPDFマニュアルを生成するのが良い。 生成方法は
$ pwd 
~/ocd/openocd
docフォルダに移動して
$ cd doc
$ make pdf
で生成する。 が、しかし。 ただじゃ出来なくて (^^; RE: 'Fatal format file error; I'm stymied' 上のリンクの通りに「etex.fmt」を消去して
$ cd ~/.texmf/var/web2c
$ etex -ini -jobname=etex -progname=etex -translate-file=cp227.tcx *etex.ini
を実行した後にようやく
$ make pdf
でPDFが生成される。という、「かなりの高難度だった」。orz 多分月面。 じゃなくて。 「E難度」くらいか。 ちなみに、 Linuxでやってみたら素直にPDFが出来たので、cygwin側の設定ミスだろう。orz *I/Oビュー画面の代替? これはTOPPERSプロジェクトで代替案が導入されていて 「な〜る」って思いました。これから実験してみよっと。 OpenOCDのメーリングリストでもようやくこの件に「強くツッコミ」 を入れる人が登場しました。 この人はやり方教えてくれれば自分でやるゆーてます。 開発者サイドは、あまりやる気ない風で、「そっちより本体の方が先」みたいなぁ。 xmlファイルをいじるみたいですが難しそうなのと、こういう作業は 結構「なえ萎え」な感じ。 単純で量が多くて内容もコマくて。でも間違っちゃだめみたいなぁ。(オイ [Openocd-development] Requesting Help: How to add memory mapped I/O registers? まぁ、そういう作業をビシッとやってくれてるのがLPCXpressoなわけで。 これが「お金払ってる」。との違いでしょうか。 ちなみに、 STM32用のST−LINKアダプタを買うと無料で使えるatollic社の 「 TrueSTUDIO という開発環境」には「I/Oビュー 画面」はないです。 (有料版なら使える) こっちは逆に、 「お金払ったのに"I/Oビュー画面"はないのかよっ!」って。(注1) 「んな、こと言ったらLPCXpressoなんて128Kバイトの制限あるやろっ!」 「バキっ!」 「ボコっ!」 「...」 人生いろいろです。 (注1):TrueSTUDIOに、お金払った訳じゃないけど。 参考: Gitを使いこなすための20 のコマンド OpenOCDバイナリ Welcome on Chopin's homepage! http://www.freddiechopin.info/
posted by Copyright (C) avrin All Rights Reserved. at 19:53| Comment(0) | OpenOCD | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。