1
3

MacintoshでARM-USB-TINY-HとOpenOCD使ってRaspberry PIのデバッグする。

Last updated at Posted at 2018-02-19

MacintoshでARM-USB-TINY-Hを使ってRaspberry PIのデバッグする。
I will try to debug Raspberry pi using ARM-USB-TINY-H on Macintosh.Error report:

Install libusb

ARM-USB-TINY-HはUSB接続。Host機器側にUSBのライブラリを導入する。

brew install libusb
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (caskroom/cask, homebrew/core).
==> Updated Formulae
angular-cli  clhep        diamond      gdnsd        gomplate     kallisto     ocrmypdf     singular     vdirsyncer

==> Downloading https://homebrew.bintray.com/bottles/libusb-1.0.21.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libusb-1.0.21.sierra.bottle.tar.gz
🍺  /usr/local/Cellar/libusb/1.0.21: 29 files, 510.5KB
bash-3.2$ brew install libtool
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (caskroom/cask, homebrew/core).
==> Updated Formulae
googler          gutenberg        heroku           leptonica        lumo             supervisor       typescript

==> Downloading https://homebrew.bintray.com/bottles/libtool-2.4.6_1.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libtool-2.4.6_1.sierra.bottle.tar.gz
==> Caveats
In order to prevent conflicts with Apple's own libtool we have prepended a "g"
so, you have instead: glibtool and glibtoolize.
==> Summary
🍺  /usr/local/Cellar/libtool/2.4.6_1: 70 files, 3.7MB

$ brew install automake
==> Downloading https://homebrew.bintray.com/bottles/automake-1.15.1.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring automake-1.15.1.sierra.bottle.tar.gz
🍺  /usr/local/Cellar/automake/1.15.1: 131 files, 3.0MB

libusb, automakeのログ

How can I debug Raspberry pi using ARM-USB-TINY-H with Macintosh.
https://researchmap.jp/jo9nl128r-2000107/#_2000107

Openocd-armv8の取得

daniel-k/openocd
https://github.com/daniel-k/openocd

You'll also need:

- make
- libtool
- pkg-config >= 0.23 (or compatible)

Additionally, for building from git:

- autoconf >= 2.64
- automake >= 1.9
- texinfo

まずgit

$ git clone https://github.com/daniel-k/openocd.git openocd-armv8 
$ cd openocd-armv8 
$ git checkout armv8
Branch armv8 set up to track remote branch armv8 from origin.
Switched to a new branch 'armv8'

bootstrapスクリプト

$ ./bootstrap
+ aclocal
./bootstrap: line 27: aclocal: command not found

$ cat ./bootstrap 
#!/bin/sh
# Run the autotools bootstrap sequence to create the configure script

# Abort execution on error
set -e

if which libtoolize > /dev/null; then
    libtoolize="libtoolize"
elif which glibtoolize >/dev/null; then
    libtoolize="glibtoolize"
else
    echo "$0: Error: libtool is required" >&2
    exit 1
fi

if [ "$1" = "nosubmodule" ]; then
    SKIP_SUBMODULE=1
elif [ -n "$1" ]; then
    echo "$0: Illegal argument $1"
    echo "USAGE: $0 [nosubmodule]"
    exit 1
fi

# bootstrap the autotools
(
set -x
aclocal
${libtoolize} --automake --copy
autoconf
autoheader
automake --gnu --add-missing --copy
)

if [ -n "$SKIP_SUBMODULE" ]; then
    echo "Skipping submodule setup"
else
    echo "Setting up submodules"
    git submodule init
    git submodule update
fi

echo "Bootstrap complete. Quick build instructions:"
echo "./configure ...."
$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

bootstrapスクリプトの中身

$ cat ./bootstrap 
#!/bin/sh
# Run the autotools bootstrap sequence to create the configure script

# Abort execution on error
set -e

if which libtoolize > /dev/null; then
    libtoolize="libtoolize"
elif which glibtoolize >/dev/null; then
    libtoolize="glibtoolize"
else
    echo "$0: Error: libtool is required" >&2
    exit 1
fi

if [ "$1" = "nosubmodule" ]; then
    SKIP_SUBMODULE=1
elif [ -n "$1" ]; then
    echo "$0: Illegal argument $1"
    echo "USAGE: $0 [nosubmodule]"
    exit 1
fi

# bootstrap the autotools
(
set -x
aclocal
${libtoolize} --automake --copy
autoconf
autoheader
automake --gnu --add-missing --copy
)

if [ -n "$SKIP_SUBMODULE" ]; then
    echo "Skipping submodule setup"
else
    echo "Setting up submodules"
    git submodule init
    git submodule update
fi

echo "Bootstrap complete. Quick build instructions:"
echo "./configure ...."

Autotools

Autotoolsの入力ファイルと出力ファイル
http://www.fireproject.jp/feature/automake/basic/autotools.html

###"aclocal": No such file or directoryの対処法
https://qiita.com/DQNEO/items/11d6056547cab0632901
Homebrewではautomakeにaclocalが入っている。

$ brew install automake

configure

$ ./configure --enable-ftdi  

##configureのログ
https://researchmap.jp/jo9jhe69b-2000107/#_2000107
#make

$ make  
... snip ...  

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../../.. -I../../../../src -I../../../../src -I../../../../src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I../../../../jimtcl -I../../../../jimtcl -I../../../../src/jtag/drivers -isystem /usr/local/Cellar/libusb/1.0.21/include/libusb-1.0 -g -O2 -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -MT ublast2_access_libusb.lo -MD -MP -MF .deps/ublast2_access_libusb.Tpo -c ublast2_access_libusb.c -o ublast2_access_libusb.o
ublast2_access_libusb.c:77:6: error: comparison of array 'data' equal to a null pointer is always false [-Werror,-Wtautological-pointer-compare]  
        if (data == NULL)  
            ^~~~    ~~~~  
1 error generated.  

The tools versions are here. libusb 1.0.21, autoconf 2.69, automake 1.15.1, libtool 2.4.6.1, pkg-config 0.29.2, texinfo 6.5, libftdi 1.4, make 3.8.1, gcc 9.0.0,

gcc7.3.0

I change make 3.8.1 to 4.2.2.1 and gcc 9.0.0 to 7.3.0.

$ brew install gcc7
$ brew install make
$ ln -s gcc-7 gcc

gccにシンボリックリンクし、PATHを切る。

$ ./bootstrap

2度目だからlogが短いのかは未調査。

$ ./configure --enable-ftdi  

記録

$ make

 libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../../src -I../../../src -I../../../src/helper -DPKGDATADIR=\"/usr/local/share/openocd\" -DBINDIR=\"/usr/local/bin\" -I../../../jimtcl -I../../../jimtcl -isystem  /usr/local/Cellar/libusb/1.0.21/include/libusb-1.0 -g -O2 -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls -Werror -MT libocdjtagdrivers_la-ftdi.lo -MD -MP -MF .deps/libocdjtagdrivers_la-ftdi.Tpo -c ftdi.c -o libocdjtagdrivers_la-ftdi.o
 ftdi.c: In function 'ftdi_handle_set_signal_command':
 ftdi.c:791:6:error: this statement may fall through [-Werror=implicit-fallthrough=]
    if (CMD_ARGV[1][1] == '\0') {
       ^
 ftdi.c:795:2:note: here
   default:
   ^~~~~~~
 cc1: all warnings being treated as errors

gcc6

$ brew install gcc6
$ ln -s gcc-6 gcc

gccにシンボリックリンクし、PATHを切る。

$ ./bootstrap
+ aclocal
+ glibtoolize --automake --copy
+ autoconf
+ autoheader
+ automake --gnu --add-missing --copy
Makefile.am:23: warning: wildcard $(srcdir: non-POSIX variable name
Makefile.am:23: (probably a GNU make extension)
Setting up submodules
Bootstrap complete. Quick build instructions:
./configure ....

2度目だからだと思うけど、なんでこんなに短いのかは未調査。

$ ./configure --enable-ftdi  

記録
https://researchmap.jp/joj34fkr0-2000107/#_2000107

$make

最後の仕上げ。

sudo make install
Password:
Making install in jimtcl
make[1]: Entering directory '/Users/administrator/work/openocd-armv8/jimtcl'
* snip *

付録 dockerで作業

$ sudo apt-get install automake
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  autoconf autotools-dev libsigsegv2 m4
提案パッケージ:
  autoconf-archive gnu-standards autoconf-doc libtool gettext
以下のパッケージが新たにインストールされます:
  autoconf automake autotools-dev libsigsegv2 m4
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
1,079 kB のアーカイブを取得する必要があります。
この操作後に追加で 3,998 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsigsegv2 amd64 2.10-4 [14.1 kB]
取得:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 m4 amd64 1.4.17-5 [195 kB]
取得:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 autoconf all 2.69-9 [321 kB]
取得:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 autotools-dev all 20150820.1 [39.8 kB]
取得:5 http://archive.ubuntu.com/ubuntu xenial/main amd64 automake all 1:1.15-4ubuntu1 [510 kB]
1,079 kB を 6秒 で取得しました (162 kB)  
debconf: delaying package configuration, since apt-utils is not installed
以前に未選択のパッケージ libsigsegv2:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 35685 個のファイルとディレクトリがインストールされています。)
.../libsigsegv2_2.10-4_amd64.deb を展開する準備をしています ...
libsigsegv2:amd64 (2.10-4) を展開しています...
以前に未選択のパッケージ m4 を選択しています。
.../archives/m4_1.4.17-5_amd64.deb を展開する準備をしています ...
m4 (1.4.17-5) を展開しています...
以前に未選択のパッケージ autoconf を選択しています。
.../autoconf_2.69-9_all.deb を展開する準備をしています ...
autoconf (2.69-9) を展開しています...
以前に未選択のパッケージ autotools-dev を選択しています。
.../autotools-dev_20150820.1_all.deb を展開する準備をしています ...
autotools-dev (20150820.1) を展開しています...
以前に未選択のパッケージ automake を選択しています。
.../automake_1%3a1.15-4ubuntu1_all.deb を展開する準備をしています ...
automake (1:1.15-4ubuntu1) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libsigsegv2:amd64 (2.10-4) を設定しています ...
m4 (1.4.17-5) を設定しています ...
autoconf (2.69-9) を設定しています ...
autotools-dev (20150820.1) を設定しています ...
automake (1:1.15-4ubuntu1) を設定しています ...
update-alternatives: /usr/bin/automake (automake) を提供するために自動モードで /usr/bin/automake-1.15 を使います
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...

$ git clone https://github.com/daniel-k/openocd.git openocd-armv8 
Cloning into 'openocd-armv8'...
remote: Counting objects: 51261, done.
Receiving objects: 100% (51261/51261), 11.44 MiB | 41.00 KiB/s, done.
remote: Total 51261 (delta 0), reused 0 (delta 0), pack-reused 51261
Resolving deltas: 100% (42162/42162), done.
Checking connectivity... done.

$ sudo apt-get install libusb-dev
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  libusb-dev
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
29.9 kB のアーカイブを取得する必要があります。
この操作後に追加で 231 kB のディスク容量が消費されます。
取得:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libusb-dev amd64 2:0.1.12-28 [29.9 kB]
29.9 kB を 0秒 で取得しました (35.1 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
以前に未選択のパッケージ libusb-dev を選択しています。
(データベースを読み込んでいます ... 現在 35978 個のファイルとディレクトリがインストールされています。)
.../libusb-dev_2%3a0.1.12-28_amd64.deb を展開する準備をしています ...
libusb-dev (2:0.1.12-28) を展開しています...
man-db (2.7.5-1) のトリガを処理しています ...
libusb-dev (2:0.1.12-28) を設定しています ...

詳細の履歴は
https://researchmap.jp/jokwx728e-2000107/#_2000107

$ ./bootstrap 
* snip *
$ ./configure --enable-ftdi
* snip *

bootstrap, configureの記録
https://researchmap.jp/jodhbzwom-2000107/#_2000107

$ make

$ sudo make install

makeの記録
https://researchmap.jp/joq6udnvg-2000107/#_2000107
make installの記録
https://researchmap.jp/joc3pfsdn-2000107/#_2000107

#参考文献/URL
AVR/ARM Cross Toolchain for OS X
http://www.ethernut.de/en/documents/cross-toolchain-osx.html

OpenOCD and Ethernut 3
http://www.ethernut.de/en/hardware/enut3/openocd.html

[OpenOCD-user] Problems with openocd-0.6.1 on darwin.
https://sourceforge.net/p/openocd/mailman/message/30392592/

openocd-mingw-w64-build-scripts/build-openocd-osx.sh
https://github.com/artynet/openocd-mingw-w64-build-scripts/blob/master/build-openocd-osx.sh

How can I debug Raspberry pi using ARM-USB-TINY-H on Macintosh
https://stackoverflow.com/questions/48822464/how-can-i-debug-raspberry-pi-using-arm-usb-tiny-h-on-macintosh

UbuntuでUSBリブラリー(libusb-1.0.21)
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14171566049

Re: [OpenOCD-user] Ubuntu and libusb
https://sourceforge.net/p/openocd/mailman/message/34727364/

最後までおよみいただきありがとうございました。

いいね、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon and follow me for your happy life.

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3