UDP hole punchingの実装をしてみる

ラジコンをLTE回線を使って制御できたら面白そうだなと思いいろいろ調べてる。

BeagleBone BlackL-03Dを組み合わせてL-03DにIIJmioIIJ BIC SIMを差せばインターネット経由でBeagleBone Blackを遠隔操作をする事が出来るはずです。あとはBeagleBone Blackをラジコンに載せればラジコンをインターネットを経由で遠隔操作できます。しかしこれには一つ問題があります。その問題とはIIJmioのsimを使用した場合BeagleBone Blackに割り振られるIPv4アドレスがプライベートIPアドレスとなってしまう事です。プライベートIPv4アドレスが割り振られたという事はBeagleBone Blackに割り振られたIPv4アドレスが分かったところでインターネット側からの通信はIIJmioのNATに阻まれてBeagleBone Blackにアクセスする事は通常出来ません。

この場合UDPホールパンチングというテクニックを使用するとプライベートIPアドレスが割り振られたBeagleBone Blackと直接通信する事ができます。UDPホールパンチングについては他のサイトに詳しい解説があるのでここでは省略します。そこでUDPホールパンチングを行うサーバーとクライアント(以下nodeと呼ぶ)を自分で実装しgithub.comに公開しました。

strobo/holepunch · GitHub

holepunchの解説

ビルドコマンド等についてはレポジトリ内のREADMEを参照ください。
このholepunchはlibeventを使用していますのでまずlibeventをインストールしてください。
次にPCを3台用意します。一つはUDPホールパンチングの仕組み上必要となるマッチングサーバーです。このサーバーだけはグローバルIPアドレスが必要です。残りの二つは実際に直接通信するPCとなります。この二つのPCは双方ともプライベートIPでも問題ありません。

このholepunchの実装ではstunを使用せず独自のプロトコルで通信を行います。通信相手の識別には任意で設定可能な文字列keyを使用します。この文字列keyの一致したPC同士で直接通信をする事ができます。

おおまかな通信手順
  1. nodeAがkeyをマッチングサーバーに送信
  2. マッチングサーバーは送られてきたkeyとnodeAのIPアドレスとポート番号を記録します
  3. nodeBがマッチングサーバーにnodeAと同じkeyを送信
  4. マッチングサーバーは今までに記録されたkeyと送信されたkeyが一致するかを確認し一致すれば双方に双方のnodeのIPアドレスとポート番号を通知します。一致しなければ新たなkeyとしてnodeBのIPとポート番号を記録します
  5. nodeA,B双方がマッチングサーバーから通知されたIP:ポートに対して通信を行う
実際に使用する

サーバ上で

$ ./holepunch server

nodeA上で

$ ./holepunch node example.com foo

nodeB上でも同じコマンドを実行

$ ./holepunch node example.com foo

通信が確立したら、各nodeのターミナル上で文字を入力しEnterで入力した文字列を相手に送信する事が出来ます。


MacでSTM32F4-Discoveryの開発環境を構築してChibiOS/RTを動かす

ARM

現在の私のSTM32F4-Discovery開発環境の構築手順とSTM32F4-Discovery上でChibiOS/RTを動作させてGDBデバッグできるようにするまでをまとめてみました。
OSはMountainLion 10.8.4 MacPorts導入済の状態です。
まず以下のSTM32F4-Discoveryの開発に必要なソフトをインストールしていきます。

  • arm-none-eabi-gcc
  • arm-none-eabi-gdb
  • openocd

/opt/localはMacportsが使用しており、 /usr/localはHomebrewが使用しています。これらのディレクトリには余計なファイルを入れたくないので~/localを自前で用意した実行ファイル置き場として、~/local以下にARM開発環境をインストールしていきます。

arm-none-eabi-gccのインストール

arm-none-eabi-gccはlaunchpadから入手します。
GCC ARM Embedded in Launchpad
上のリンクからMac用のarm-none-eabi-gccであるgcc-arm-none-eabi-4_7-2013q2-20130614-mac.tarを落としてきて適当なディレクトリに保存します。
まず ~/localを作成

cd ~
mkdir local

ダウンロードしたgcc-arm-none-eabi-4_7-2013q2-20130614-mac.tar.bz2を~/に展開

tar -xvf ~/Downloads/gcc-arm-none-eabi-4_7-2013q2-20130614-mac.tar.bz2

展開されたgcc-arm-none-eabi-4_7-2013q2内のファイルを~/localに移動

cd gcc-arm-none-eabi-4_7-2013q2
mv * ~/local

これでarm-none-eabi-gccのインストールは完了です。

arm-none-eabi-gdbのインストール

次にarm-none-eabi-gdbのインストールですが、Macportsにarm-none-eabi-gdbがあったのでそれをそのまま使用します。

sudo port install arm-none-eabi-gdb

簡単ですね、はい次

openocdのインストール

openocdのソースをgit cloneする

git clone git://git.code.sf.net/p/openocd/code openocd-code

次にopenocdのビルド。今回はSTM32F4-Discoveryの開発にフォーカスしたconfigureになっています。Versaloon等の他のデバッガハードに対応させる場合はconfigureの変更やopenocdへのパッチが必要になる場合が有ります。

cd openocd-code
./bootstrap
./configure --enable-maintainer-mode --enable-stlink --prefix=~/local/ --datadir=~/local/share/

make -j3でビルドするとMacportsでインストールされているはずのlibusbが見つからないと怒られたのでLDFLAGSを追加して対処した。

make LDFLAGS=-L/opt/local/lib/ -j3
make install

これで~/local/binにopenocdがインストールされる。

最後に$PATHに~/local/binを追加して必要なソフトのインストールは完了です。

ChibiOS/RTのビルド

開発環境の準備ができたのでChibiOS/RTをSTM32F4-Discovery上で動作させてみます。
ChiboOS/RTは軽量で高速な扱いやすいRTOSで。STM32F4だけでなくLCP11xx, LPC13xxのNXP系のARMやAVRにも対応しています。詳細はChibiOS/RTの公式サイトを参照してください。

まずChibiOS/RTのソースコードをダウンロードします。
ChibiOS/RT free embedded RTOS | Free software downloads at SourceForge.net

ダウンロードしたzipを展開し、展開したディレクトリからdemosの中のARMCM4-STM32F407-DISCOVERYに入ります。

unzip ChinoOS_2.6.0.zip
cd ChibiOS_2.6.0/demos/ARMCM4-STM32F407-DISCOVERY

あとはmakeでビルドします

make

makeが完了すると、buildディレクトリが生成されその中にch.elfがあればビルド成功です。

書き込みとデバッグ

いよいよ実機への書き込みです。まずSTM32F4-DiscoveryのSTLink-v2側のmini-BなUSBポートとMacを接続します。
次にopenocdを起動します。

openocd -s ~/local/share/openocd/scripts/ -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg

次に別のターミナルを開いて、そこでGDBを実行します。

cd ChibiOS_2.6.0/demos/ARMCM4-STM32F407-DISCOVERY
arm-none-eabi-gdb build/ch.elf

GDBが起動するとGDBのプロンプトが表示されます。ここでopenocdと接続してch.elfをロードさせます。

target remote localhost:3333
monitor reset halt
load
monitor reset halt

最後にcontinueで実行。ここでSTM32F4-DiscoveryのLEDが点滅すればChibiOS/RTの動作は成功です。

continue

まとめ

STM32F4-Discoveryの開発環境の構築からChibiOS/RTのビルド、書き込み、デバッグまで一気にまとめました。
ブレークポイントの設定などのデバッグ方法はGDBと同じなので、詳しくはGDBのマニュアルを見てください。ここでの説明は省略します。
ChibiOS/RTはサンプルソースコードが分かりやすいので読むだけで基本的な使い方が分かるはずです。

最後に、ChibiOS/RTもっと流行れ

はてなブログに移行したついでにヘッドフォンの話をしてみる

はてなブログに移行したついでにiPod付属のイヤホンからヘッドフォンに移行した話を書きます。ここ数ヶ月非常に落ち込んだりして、文章書いていないのでリハビリも兼ねて

f:id:Strobo:20130319150739j:plain

まず現在私が聞いている音楽についてです。今までVOCALOID中心に聞いていましたが。最近は以下のようにVOCALOIDからEDMに変化しています。

VOCALOID全般 -> kzのVOCALOID曲 -> kzの非VOCALOID曲 -> EDM

そして今一番ハマっている人がZEDDです。最近livetuneともコラボしたようで。まさかのコラボに非常に驚いているところです。

私がZEDDにハマるきっかけとなった曲がこれ


Skrillex & The Doors - Breakn' A Sweat (Zedd Remix)

2:12からの低音がやばいです。この低音を聞くためにiPod付属のイヤホンからヘッドフォンへの移行を決めました。

 

入手したヘッドフォンはHDJ-500というDJ向けのヘッドフォンです。これからこのヘッドフォンを選んだ理由をいくつか書いてみます。

  • 低音が強調されている

DJ中のビートマッチングをしやすくするために低音が強調されています。低音を聞くことが目的なのでこれは外せません。

  • 片耳装着が出来る

これもDJ向けヘッドフォンの機能の一つで、右側のイヤーパッドを前後に60°ほどずらすことができます。これで片耳装着が可能になり左耳でヘッドフォンの音、右耳で周囲の音を聞くことが出来ます。私は周囲の音が完全に聞こえなくなってしまうと不安になってしまうタイプの人なので、DJしなくてもこの機能はありがたいです。

  • ケーブルの着脱が可能

もしケーブルが断線した場合でもケーブルを新品と交換するだけでヘッドフォンが復活します。(このブログを読んでいる方なら自力で修理しちゃうと思いますがw)

新品ケーブルの入手方法がpioneerの製品ページに書いてないのでおそらくpioneerのサポートで取り寄せてもらう形になるのかなと予想してる。

 

そして最後の理由は、私がDJに興味を持っており、もしかするとDJする可能性(音楽の知識なんて全くないので難しいですが)がないわけではないので、それも考慮してこのヘッドフォンを選びました。もちろんDJしなくてもこのヘッドフォンは十分いいヘッドフォンといえるので私は満足しています。

自作モバイルブースター作ったよ

この設計を始めたのが今年の4月ごろ。このときはまだeneloopモバイルブースターの類似製品は少なく、バッテリーの容量もあまり大きな物がなかった。この時発売されている物ではiPadをフル充電できる外付けバッテリーはなかったように記憶している。
そこで、hobbykingで手に入る大容量バッテリーを使ってiPadをフル充電可能なモバイルブースターを作ろうと考えた。
その後、設計中や部品注文後にあんな物こんな物が次々発表されてモチベーションがガクッと落ちたりしたんだけどね
そんな訳で作ったのがこちら

特徴は

  • 大容量のバッテリー
  • バッテリーは交換可能
  • 右下のLEDでバッテリー残量表示
  • 充電回路内蔵 (まだ動かしてない)
  • 3つのUSBポート (まだ1つ実装してない)
  • 最大3Aの出力
  • 3種類の過電流保護

と、こんな感じです。
ソースコード、回路図は公開しますが、まだまだ未完成なのでどんどん変更しています。参考にする場合は自己責任で。
回路も設計ミスがあり現在公開している回路と上の写真の回路は少し違うものになっています。(赤色の配線)
ソフトウェアはChaNさんとmucrobuilderさんのコードをベースにして作成しました。デバッグにはねむいさんのブログ記事やopenocd関連ファイルを使用、参考にさせていただきました。

ソースコード/EAGLE Project file : strobo/u-battery

回路とかハードとか

基盤はFusionPCBに注文。3500円。安い。部品はDigi-Keyでバッテリーはhobbykingから注文しました。

基盤に乗っている主な回路は5V DC-DCコンバータ。バッテリーの監視回路や充電回路、電流計測回路と、あと最後にマイコンです。
バッテリーはの電圧は11.1V容量は5000mAhです。同じ11.1Vのバッテリーなら動作するので、もっとコンパクトにしたいなら1600mAhぐらいの小さなものに交換することも可能なのが便利なところ。
あとリチウムポリマーバッテリーなので取り扱いには十分注意しないとだめです。今は専用の充電器で充電しており、内蔵の充電回路は使っていません。

使っている主なIC

本当ならマイコンはAVRでも性能的には十分ですが、ARMの勉強も兼ねてLPC1114を使いました。

過電流保護は

  1. バッテリー監視IC内 (電流は任意で設定可能)
  2. DC-DCコンバータIC内 (3.5A)
  3. OPアンプとLPC1114を組み合わせた回路

の合計3つですが。2と3はほとんど同じ所を計測しているので3はなかったことになるかもしれない。

気になること

  • DC-DCコンバータ内(BD9876)の過電流保護はデータシートによると、過電流検出電流 min 3.5A typ 6Aとなっているんだけど、「6Aまで流れないと保護回路が動かないこともある」なのか「3.5A - 6Aの範囲なら保護回路が動く」という意味なのかどっちだろう。普通なら後者かな
  • バッテリー監視ICを使ってバッテリーの電圧を計測しているんだけど、データシート11ページの「Calibration of Cell Voltage Monitor Amplifier Gain」ってところの計算がうまくいかない。ちゃんと理解できてないだけかもしれないけど。これができないとバッテリーの正確な電圧が分からないのでバッテリー残量の計算に問題がでるかもしれない。

今は「Cell Voltage」のところの計算式でバッテリーの電圧を計算している、これでもテスターで直接計った値とだいたいあっているので今のところ大丈夫みたい

iOS端末の充電に関してはiPhoneやiPadの充電器の自作について - ELECTLOGICを参照。ただD+/D-に電圧がかかっていると充電してくれない物もあるので1ポートだけ、D+/D-に電圧をかけていない5Vのみのポートにしました。

おまけ

iPhoneのストップウォッチと組み合わせると爆弾のように見えてしまうの図

Android+ポケモンキーボードでモバイルLinux環境を作る


Android+ポケモンキーボードでモバイルLinux環境を構築する話です。当然root化とbusyboxのインストールが必要です。
今回はGalaxy Nexusにインストールした。他のAndroid端末でも同じようにインストールできると思うけど、手順どうりにやってもうまく動かないことがあるのでその時はググるなりしてください。

chroot環境の構築

まずArch Linux ARMフォーラムを参考にchroot環境を構築します。

Arch Linux ARM • View topic - Installation in an Android Chroot

私はArchLinux派なので、ArchLinuxをインストールしていますがDebianなど他のディストリビューションがいい。もうすでにインストールしてるよって人は、他のディストリのインストール方法をググるなり読み飛ばすなりしてください。


まずAndroid上で以下のコマンドを実行してArchLinuxをインストールします。
途中ddコマンドで750MBのイメージファイルを作成していますが、容量は各自で適当に決めてください。私はいろんなパッケージをインストールするつもりなので2GBの容量で作成しました。

su
cd /sdcard
mkdir arch
dd if=/dev/zero of=alarm.img seek=749999999 bs=1 count=1
mke2fs -F alarm.img
mknod /dev/loop1 b 7 0
losetup /dev/loop1 alarm.img
mount -t ext2 /dev/loop1 arch/
cd arch
wget http://archlinuxarm.org/os/ArchLinuxARM-armv5te-latest.tar.gz
tar xzf ArchLinuxARM-armv5te-*.tar.gz
rm ArchLinuxARM-armv5te-*.tar.gz
cd ..
umount /sdcard/arch
losetup -d /dev/loop1

これでArchLinuxARMのインストールは完了。

次に起動スクリプトを/sdcard/startarch.shとして配置します。
この起動スクリプトはarchlinuxarmのフォーラムの書き込みを参考に作成しました。

startarch.sh
perm=$(id|cut -b 5)
if [ "$perm" != "0" ]; then 
 echo "This script requires root! Type: su"; exit;
fi

echo "Starting up ArchLinux"

if [ ! -b /dev/loop1 ]; then
 mknod /dev/loop1 b 7 0
fi

losetup /dev/loop1 alarm.img
mount -t ext2 /dev/loop1 arch/
cd arch
mount -o bind /dev/ /sdcard/arch/dev
mount -t devpts devpts /sdcard/arch/dev/pts
mount -t proc proc /sdcard/arch/proc
mount -t sysfs sysfs /sdcard/arch/sys
mount -o bind /mnt/sdcard /sdcard/arch/media/sdcard

busybox sysctl -w net.ipv4.ip_forward=1
echo "nameserver 8.8.8.8" > /sdcard/arch/etc/resolv.conf
echo "nameserver 8.8.4.4" >> /sdcard/arch/etc/resolv.conf
echo "127.0.0.1 localhost" > /sdcard/arch/etc/hosts
echo "Arch is configured that can be accessed from the IP:"
ifconfig wlan0
echo " "

PATH_=$PATH
export PATH=$bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin:/bin:/usr/local/sbin
export TERM=xterm
export USER=root
export HOME=/root
export SHELL=/bin/bash

/system/xbin/busybox chroot . /bin/bash
export PATH=$PATH_
cd ..
umount /sdcard/arch/media/sdcard
umount /sdcard/arch/dev/pts
umount /sdcard/arch/dev
umount /sdcard/arch/proc
umount /sdcard/arch/sys
umount /sdcard/arch
losetup -d /dev/loop1

echo "Shutting down ArchLinux"

準備が終わったのでいよいよArchLinuxを起動してみます
ArchLinuxを起動するには

su
cd /sdcard
sh startarch.sh

で起動できます。

あとは普通のArchLinuxとして操作できます。pacman -S vim などで好きなパッケージを入れてください。ArchLinuxのパッケージマネージャはpacmanです、pacmanの詳細はArchLinuxのwikiを読んでください。
何度も言いますが、端末によってはうまく動かないので、そのときは各自で起動スクリプトを書き換えるなどしてください。

ポケモンキーボードと接続

さて、これでLinuxのインストールはできたので。スクリーンキーボードでコマンドを打って操作することはできるようにはなった。ただ使いづらくて仕方ないのでキーボードを接続します。

今回はDSのゲーム、ポケモンタイピングに付属するキーボードを使った。このキーボードはBluetooth接続でiPhone, PCなどにも普通に接続でき、スタンドまで付属していてamazonで2000円程度。他のbluetoothキーボードと比べても安い方だ。接続方法はFnキーを押したまま電源スイッチをオンにして、AndroidiPhone, PCからBluetooth機器を検索すればNintendo Wireless Keyboardとして認識されるのでそのまま接続。次に画面に出る数字をキーボードに入力してEnterを押せば接続が完了する。

Androidポケモンキーボードを接続すると。USキーボードとして認識されるのでJISキーボードとして認識してもらうためにキーアサインを変更しないといけない。
Androidのキーアサインについては以下のサイトを参照してください。

.klと.kcmファイルを用意すれば未知のキーボードにも対応できそうだ。


ポケモンキーボードでの注意点はESCキーだ。ESCキーは全角/半角キーと一緒になっていてESCを入力するときはFn+全角/半角を押さないといけない。これはvimを使用するときには不便なので、全角/半角キーの機能を殺して全角/半角キー = ESCキーとして動作するようにキーアサインを変更した。
というわけでキーアサインを変更する以下の2つのファイルを@hiromo6さんの作成されたファイルをベースに作成しました。

それぞれのファイルを

  • /system/usr/keylayout/Nintendo_Wireless_Keyboard.kl
  • /system/usr/kaychars/Nintendo_Wireless_Keyboard.kcm

となるようにコピーする。このとき/systemはデフォルトでは書き込みできないので。/systemを書き込み許可にして再マウントしなきゃいけない。Galaxy Nexusの場合は以下のコマンドで/systemを再マウントできる。

mount -o remount,rw /dev/block/platform/omap/omap_hsmmc.0/by-name/system /system

他のandroid端末の場合は別のコマンドになるので各自調べて下さい。

ターミナルエミュレータ

ターミナルエミュレータにはConnectBotの強化版であるVX ConnectBotを使った。が、ctrlキーの挙動が変(ConnectBotの仕様?)なのでソースコードを一部書き換えた。もちろんソースコードを変更するのでandroidの開発環境が必要です。
まずvx / connectbotからソースコードを落としてきてsrc/sk/vx/connectbot/service/TerminalKeyListener.javaの133行目付近のhardKeyboardHiddenをtrueに変更する。

diff --git a/src/sk/vx/connectbot/service/TerminalKeyListener.java b/src/sk/vx/connectbot/service/TerminalKeyListener.java
index a5a7af9..555d42c 100644
--- a/src/sk/vx/connectbot/service/TerminalKeyListener.java
+++ b/src/sk/vx/connectbot/service/TerminalKeyListener.java
@@ -130,7 +130,7 @@ public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceCha
         */
        public boolean onKey(View v, int keyCode, KeyEvent event) {
                try {
-                       final boolean hardKeyboardHidden = manager.hardKeyboardHidden;
+                       final boolean hardKeyboardHidden = true;
 
                        // Ignore all key-up events except for the special keys
                        if (event.getAction() == KeyEvent.ACTION_UP) {

正直に言うとなぜtrueにするとうまく動くのかわかってないです。詳しく書くと、hardKeyboardHiddenがctrlキーの挙動に関わっているようで、これがtrueだとctrlキーは正しく動く。Android起動直後にVX ConnectBotを起動した時はtrueなのですが、一旦HOMEに戻ってもう一度VX ConnectBotを起動するとfalseになっているという謎挙動をするので、強制trueにしています。これで今のところ大きな問題は出てないので大丈夫だと思います。


これで持ち運びできるLinux環境の完成です。Galaxy NexusはUSBホストも持っているのでUSB変換コネクタを接続すれば、Androidに対応していないUSB機器でもArchLinux側が対応していればArchLinux側から操作できます。たとえばAndroid上で動作しているArchLinuxからUSBメモリにアクセスするには

mount /dev/block/sda /mnt

USBメモリの中のファイルにアクセスできます。

ポケモンキーボードを使うことでほぼPCと同等のLinux環境をAndroidで実現することができました。これならRaspberry piにも負けない小型PCとして使えるのではないでしょうか。





iPhoneやiPadの充電器の自作について

普通に5V供給してやるだけでは、充電してくれないようなので。充電モードにするのにどんな細工が必要かちょっと調べてみた。
軽くググったら以下のサイトがUSB端子の各電圧について書いてある。

各サイトの示すUSB端子電圧には多少ばらつきがあるけど、だいたいD-は2.75V D+は2.0Vで良さそうだ。

D+ D-
2.0V 2.75V

まだ実際にテストしてないので試すときは自己責任で

追記

英語版wikipediaのUSBのページiPod/iPhoneの充電電流について書かれていた。
(D-)=(D+)=2.0Vの時500mA
(D-)=2.8V (D+)=2.0Vの時1000mAになるようだ。

LPC1343のデバッグ環境の構築

ねむいさんのブログにSTM32VL-DiscoveryVersaloon化する記事があったので、Versaloon化したSTM32VL-DiscoveryでLPC1343のデバッグをしてみようとした。まあ結局記事に書いてある方法と同じように試したけど、うまく行かなかったので自己流で最新のVersaloonファームウェアの用意からopenocdのビルド、インストールまでやりました。ちなみにUbuntu11.10上で行なっています

まずSTM32VL-Discoveryの改造

やってることはねむいさんのブログの記事と同じです

UARTブートローダを有効にするためのジャンパーの配線とUARTの配線
ファームウェアの書き込みが終わったらジャンパーは外します

firmwareの準備と書き込み

ここからやり方が変わります

STM32VL-DiscoveryのST-Linkに書き込むファイルの準備
svn checkout -r 1054 http://vsprog.googlecode.com/svn/trunk/ vsprog-read-only

バージョンによってうまく動かないことがあります。私はrev1054を使いました。とりあえずうまく動いてます

makefile を書き換え

vsprog/dongle/firmware/Projects/Versaloon/GCC/makefile 18行目 HW_BOARDの値を変更

HW_BOARD = STM32VL_Discovery
ブートローダーを使わないのでリンカスクリプトを書き換える

vsprog/dongle/firmware/Projects/st-discovery.ld 17行目 0x8002000 から 0x8000000 に変更

FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 56K

makeでVersaloon_GCC-STM32VL_Discovery-0x0000.binが生成される
あとは生成されたファイルをFlashLoaderDemonstratorを使って書き込みます。書き込み方法はねむいさんのぶろぐ | SWD専用Versaloonクックブックを参照

openocdのインストール

insightを使うためのarmv7mx.patchを用意

ねむいさんのぶろぐ | ARMマイコンをInsightとOpenOCDを使ってデバッグする環境を整える(2013年度前半版)からopenocd_misc.zipをダウンロードする
展開すると3つファイルがありますが使うファイルはarmv7mx.patchのみです

openocdインストールスクリプトとパッチの用意

Versaloonの旧フォーラムからoocd-16-aug-2011.tar.gzをダウンロードして展開
armv7mx.patchを展開したフォルダoocd-16-aug-2011に移動

openocd_update_0.5.0の書き換え

openocd_update_0.5.0の56と57行目の間に追加
patch -p1 < ../armv7mx.patch;
openocd_update_0.5.0を実行
sudo sh openocd_update_0.5.0
うまくいけばopenocdのインストールまで勝手にやってくれます。 openocdのcfgファイルもねむいさんの(ryからダウンロード insightのダウンロードと設定もねむ(ry insightでデバッグ 最後に、ねむいさんのブログがものすごく役に立ちました。ねむいさんありがとう