電子工学部のブログ

京都教育大学附属高校、電子工学部のブログです。 電子工学部では、ロボカップジュニア サッカーBやWROなどの、ロボットの大会に出場しています。
ホームページはこちら

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

STbee Mini、Macでの開発環境の構築(Xcode,DFU)

Macでの、開発環境の構築は大変なものです。構築方法についても、ネット上での情報も少なかったり、古かったりと、これだ!みたいなものが無いのが現状です。僕も、この方法に到達するまでに、何週間もかかってやっと出来ました。(これだけで、かなりMacやXcodeの内部構造について知れたような気がします。)
なお、この方法がうまくいくことは、僕自身が成功したことで証明しますが、バージョンなどの 環境や、その他の原因でうまくいかない場合もあると思います。また、僕の日本語や用語、具体的な方法が分からない場合もあると思いますので、全く遠慮なくコメント欄で質問や異議の申し立てをして下さい。出来る限り対応したいと思います。
ちなみに、この開発環境はOS X Lionのときに作成して正常に動き、Mountain Lionでも正常に動いています。


STbee Mini、Macでの開発環境の構築(Xcode,DFU)

*STbeeでも、おそらく同じ手順でいけます。(未確認)(ダウンロードするStrawberry-Linuxからのサンプルプロジェクト(mini-demo)は、STbee用のもの(http://strawberry-linux.com/pub/stb-led.zip)に置き換えた方が良いかも知れません。その場合、ファイル名が変わるので注意!)
*たぶん、STM32単体の場合でも似たような手順でいけると思います。(未確認)(コンパイラーはARM用のものを使用しているので、ARMのコアを使用していれば、STM32に限らずコンパイルはできるはずです。ただし、Makefileは使用できるかも知れませんが、おそらくライブラリとかは別のものが必要だと思います。)(DFUやDFUSEなど、dfu-utilが対応しているプログラムのダウンロードの方式なら、書き込みコマンドを変えれば書き込めるはずです。)
*つまり、ある程度は応用が効く開発環境だと思います。(未確認)


前提条件
・Xcodeがインストールされている
・MacPortsがインストールされている
*この条件に満たない場合は、Xcode、MacPorts(PATHの通し忘れの無いように注意して下さい)をインストールして下さい。(開発をターミナルで行うとしても必要です。




Xcodeでのコンパイル

1、yagartoをダウンロード(http://sourceforge.net/projects/yagarto/files/latest/download?source=files

2、ダウンロードされたzipファイルを展開して、その中にあるアプリケーションを、デスクトップに移動して、実行する。

3、デスクトップ上に現れるyagarto-4.7.1を/usr/localに移動する。(バージョンによって微妙に名前が違うかも)

4、mini-demoをダウンロード(http://strawberry-linux.com/pub/mini-demo.zip)

5、XcodeでExternal Build toolプロジェクトを作って、その中に、mini-demoの中身を全部プロジェクトに追加する。(必要でないものも有りますが・・・)

6、Makefileの
CC = arm-none-eabi-gcc
LD = arm-none-eabi-ld
AS = arm-none-eabi-as
OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
SIZE = arm-none-eabi-size
NM = arm-none-eabi-nm
  を
CC = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-gcc
LD = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-ld
AS = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-as
OBJCOPY = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-objcopy
OBJDUMP = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-objdump
SIZE = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-size
NM = /usr/local/yagarto-4.7.1/bin/arm-none-eabi-nm

  に書き換える

(環境の構築完了)

A、main.cの中身を好きなように書き換える。

B、Xcodeでビルドする。

完成!



Xcodeからの書き込み

1、ターミナルで
  sudo port install libusb libusb-compat git-core
  cd /Users/(ユーザー名)/Desktop
  git clone git://git.openezx.org/dfu-util.git
  cd dfu-util
  ./autogen.sh
  ./configure --libdir=/opt/local/lib --includedir=/opt/local/include
  make
  を一文ずつ実行する

2、デスクトップに生成される、dfuse-dfu-utilを/usr/localに移動する

3、Xcodeでのコンパイル が終わった状態までにはしておく。

4、Makefileの313行目くらいに
   program:
$(OBJCOPY) -O binary $(TARGET).elf $(TARGET).bin
/usr/local/dfuse-dfu-util/src/dfu-util -a 0 -d 0x0483:0xdf11 --dfuse 0x08003000 -D $(TARGET).bin
  と書き加える。

7、XcodeのBuild Toolの、Argumentsのパラメーターを$(ACTION)からall programに変更する。



(環境の構築完了)

A、main.cの中身を好きなように書き換える。

B、STbee MiniをDFUモードにする。

C、Xcodeで、ビルドを実行する。

*プログラムのビルドと書き込みが両方行われる。
*次のようなエラーが出て、実行に失敗した場合は、ほとんどの確率でMac側でSTbeeを認識していない場合に起こります。何回か接続のやり直しをすると直ることがほとんどです。それでも直らない場合は、何か別の問題があります。
 /usr/local/yagarto-4.7.1/bin/arm-none-eabi-objcopy -O binary mini-demo.elf mini-demo.bin
 /usr/local/dfuse-dfu-util/src/dfu-util -a 0 -d 0x0483:0xdf11 --dfuse 0x08003000 -D mini-demo.bin
 No DFU capable USB device found
 dfu-util - (C) 2005-2008 by Weston Schmidt, Harald Welte and OpenMoko Inc.
  (C) 2010 Tormod Volden (experimental DfuSe support)
 This program is Free Software and has ABSOLUTELY NO WARRANTY

 dfu-util does currently only support DFU version 1.0

 make: *** [program] Error 1
 Command /usr/bin/make failed with exit code 2


*全てが成功した場合、次のような画面を表示させることが出来ます。



D、STbee Miniをリセットする。

完成!


これが、僕がうまくいったXcodeプロジェクトです。
STbee_Mini_Xcode_Test

最後に。
これらの設定を毎回やり直すのはめんどくさいので、一発で全てが設定できる(ソフトのインストールなどは終わった状態から)Xcodeテンプレートを作成しようとしましたが、あと一歩というところまでは行ったのですが、なぜかlibフォルダの追加がうまくいかず、それだけは手動でやらなければならない、というようなものしか出来ませんでした。誰か解決策を見つけた人はコメント欄にて教えてくださると嬉しいです。
ちなみに、僕が作ったテンプレートはこれです。STbee_Mini_Xcode_Template。/Users/ユーザー名/Library/Developer/Xcode/Templatesに置いて使用します。α版なので、よく分からない人は使用しないで下さい。
追記(2012 9/10)

tormodさんが、僕が古いバージョンのdfu-utilを使用していたことを指摘して下さいました。
すでに、記事は新しいバージョンのものに変更してあります。
古いバージョンの記事で環境の構築が完了している方は、あえて新しいバージョンにする必要はありません。
  1. 2012/08/07(火) 01:19:10|
  2. STM32
  3. | トラックバック:0
  4. | コメント:2
<<新しいIRセンサー | ホーム | 初めまして、こんにちは。>>

コメント

newer dfu-util version

Dear Takuji,
You are using a very old version of dfu-util in your example. Please use the latest version of the official dfu-util from http://dfu-util.gnumonks.org/
There is no longer any need to change the code as you did in your post. Also the --dfuse option is now called --dfuse-address.
Best regards,
Tormod
  1. 2012/08/27(月) 22:42:18 |
  2. URL |
  3. Tormod #30l4T0iA
  4. [ 編集 ]

Re

新しいバージョンのdfu-utilがあることを教えて下さりありがとうございました。
いくつか、確認中に問題はありましたが、新しいバージョンでの動作の確認は完了しました。しかし、ほとんど手つかずの夏休みの宿題の山を片付ける必要があるため、記事に修正を加えるのが遅れると思いますが、すいません。
おそらくそれは外国人によるコメントの書き込みを規制するためだと思います。キャプチャがひらがななのもそのためだと思われます。僕は外国人でもコメントの書き込みは大歓迎なので、別にそのようなことをして欲しいとは思いませんが、FC2が勝手にやったようです。
ちなみに、Tormodさんはどこの国の誰ですか?僕は京都の高校生です。
おそらく、僕の英語は間違えだらけだと思います。お時間がありましたら、間違えの箇所と正しい英文だけでも教えて下さると助かります。
Thank you for telling me that there is newer dfu-util version.
Though there was several problems in the process of verifying the new version of dfu-util, I was able to verify that new version's dfu-util can use. But adding correction to the article will be late Because it is necessary for me to finish summer vacation's homework.
By the way who are you? And where are you live? I'm a high school student in Kyoto.
I may make a lot of mistake with my English. If there is a time, when place of making a mistake with also just correct English teaching, it is saved.
  1. 2012/08/28(火) 20:06:26 |
  2. URL |
  3. Takuji Matsumoto #ElJgphU6
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://zeroalpha0.blog.fc2.com/tb.php/2-6d24800c
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Takuji Matsumoto

Author:Takuji Matsumoto
FC2ブログへようこそ!

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

未分類 (10)
PSoC (1)
STM32 (1)
ロボット (4)
ロボット センサー (2)
本日の活動内容 (3)
電子工学部 (3)
Mac (1)
Arduino (1)
ロボカップジュニア (0)
ブログ (3)
大学 (2)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。