Monthly Archives: 5月 2010

STM32の書き込み環境

Mac OSX でSTM32の開発環境を構築してきましたが、どうしてもDFUを使った書き込みだけができません…

Macでコンパイルして生成したelfバイナリをWindowsに持って行き、STMicroのツールでDFUに転送するとちゃんと実行されるのでコンパイル環境は正常に構築できたようです。

また、前回最後に触れたdfu-utilも導入できたのですが、それをつかって書き込む方法がさっぱり分かりません。


sudo dfu-util -d 0110:1001 -a 0 -R -D $(TARGET).bin

というコマンドをLeaf LabsのMakefileに見つけたので以下のようにやってみたのですがダメでした…


sudo dfu-util -d 0483:df11 -a 0 -R -D main.bin

どなたかdfu-utilを使ってSTM32に書き込みをする方法を教えてください!

NHK大学ロボコン2010 出場要項

本日クラブにNHKから当日の確認事項が載った出場要項が届きました。

NHKロボコン2010「出場要項」

NHKロボコン2010「出場要項」


大会当日まであと少しという感じがしてきましたが、できるだけ良い結果が残せるようにがんばります。

と、Robohanのブログに書きました。

あとは個人的な話を。
STM32を入手したので明日の昼休みは図書館で今まで構築してきた開発環境の動作確認ができそうです。

アルバに開発を頼まれているいくつかのセンサー情報をSDカードへの記録するロガーの方もすこしずつ実験をしていかないとなぁと。

こっちは以前に試作したGPSロガーを元にすればそんなに大変ではないと予想しています。

では。

部室にインターネット

本日Robohanの部室にネットワークが敷設されました。

大学の職員の方に協力してもらい、隣の建物の屋上を超えて35mのLANケーブルを敷設しました。

これでいままではPHSしか無かったネットワークへの接続も高速になります。現在クラブのHPのサーバーは有料のレンタルサーバーで、せっかくドメインを持っているのにブログは外部のブログサービスという状態であったので、明日と明後日の2日間でうちのサーバーに全てを引越ししようと思います。

なぜそれがネットワーク敷設と関係があるのかというと、家に帰るとそんな作業をする気力は無いし、かと言って部室でPHSの回線ではそんな作業は到底無理で…大学の無線LANでやろうと思ってもHTTPポート等しかあいておらず、FTPすらブロックされている状態でなかなか作業をする気になれませんでした。が、部室にポートブロックされていないネットワークが来たので部室でなら作業する気になれるかなと….

あと、いままでHPはHTMLとCSSを用いた静的なページだったので更新しようと思っても実行に移すのが億劫な状態になっていました。そこで、これを機にHPの方をConcrete5というオープンソースのサイト管理システムを導入しようと思います。

問題はメールサービスなのですが、さすがにメールサービスを非固定IPのうちのサーバーで稼働させるのは不安なのでこちらはGoogleAppsを使おうと思います。

SnowLeopardにSTM32(Cortex-M3)の開発環境を構築

図書館で二時間時間を潰さないといけない状況になったので、なにかしようと思います。

そこで、最近無性にSTM32が使いたかったのでとりあえず開発環境でもを用意してみようかということで進めていきます。

今回は以下の二段構えになっています。

  • コンパイル環境の構築
  • 書き込み環境の構築

まず、前者についてはCortex M3開発環境 on Mac OS Xというページを参考にしました。

  • ARM用gccのインストール (Targetがarm-eabiのgcc)

ARM用のgccはSHやH8の時とはちがい、コンパイル済みのdevkitARMを利用します。このページからdevkitARMのOSXバージョンの最新版をダウンロードし、インストールします。

こいつはインストーラが無いので解凍してできたdevkitARMディレクトリを /usr/local/ ディレクトリにコピーしておきます。

そして、PATHを通すために~/.bash_profileファイルに(無ければ新規作成)

export PATH=$PATH:/usr/local/devkitARM/bin

という一行を加えておきます。
  • プロジェクトテンプレートの構築
次にSTM32のプログラムをコンパイルするためのプロジェクトのテンプレート(雛形)を作成します。
このディレクトリにSTMicroが用意してくれているSTM32のためのライブラリファイルや、リンカースクリプト、Makefile等を用意しておきます。新しくプログラムを作るときにはこのディレクトリのコピーを作成し、main.c等のユーザープログラムを書くだけでmakeコマンド一発でコンパイルできるようになります。
たぶんこれは二次配布可能だと思うので、圧縮したファイルを添付しておきます。問題があればコメントください。
このディレクトリはこのファイルでなくても、Strawberry LinuxのSTM32ボードであるSTBeeのサンプルプログラムでも構いません。
ただし、この場合には付属のMakefileの“arm-none-eabi”となっている所を全て”arm-eabi”に変更する必要があります。
以上でコンパイルまではできるようになりました。
次はDFUを使ってUSB経由で書き込みをするツールを用意します。dfu-utilというのを見つけたのでインストールしたいのですが、何故かコンパイルエラー。
ここで時間が来てしまったのでまた出来次第追記します。

SnowLeopardにH8とSHのクロスコンパイル環境の準備

Mac OSX 10.6 SnowLeopardでSHとH8のためのプログラムをコンパイルするためのGCCをコンパイルしました。

なかなか最初はうまくいきませんでしたが、いくつかオプションを指定することでうまくいきました。

基本的にクロスコンパイル環境はbinutilsをコンパイルし、その後にGCCをnewlibといっしょにコンパイルすることになります。

その前に、GCCのコンパイルにはGMPとMPFR及び、MPCをインストールしておく必要があります。

今回使ったバージョンは以下の通りです。

  • GMP 5.0.1
  • MPFR 2.4.2
  • MPC 0.8.1
  • binutils 2.20
  • newlib 1.18.0
  • gcc 4.5.0

これらが~/src/以下に展開されている状態である場合のコンパイル例が以下の通りです。SHとH8の違いはTargetがsh-elfかh8300-elfかの違いだけです。

また~/.bash_profileに以下の二行を追加しておきます。

export PATH=$PATH:/usr/local/sh/bin
export PATH=$PATH:/usr/local/h8/bin
以下はコンパイルしたときに実行したコマンドです。-disable-werrorを追加しないとコンパイルできませんでした。
これで/usr/local/h8以下と/usr/local/sh以下にそれぞれgcc等がインストールされるはずです。
2010年5月14日追記:newlibのコンパイルが抜けていたのを追加
$ cd ~/src
$ cd ./gmp-5.0.1
$ ./configure
$ make
$ sudo install
$ cd ../mpfr-2.4.2
$ ./configure
$ make
$ sudo install
$ cd ../mpc-0.8.1
$ ./configure
$ make
$ sudo install
$ cd ../gcc-4.5.0
$ ln -s ~/src/newlib-1.18.0/newlib ./
$ cd ../
$ mkdir h8-binutils
$ cd ./h8-binutils
$ ../binutils-2.20/configure –prefix=/usr/local/h8 –program-prefix=h8300-elf- –target=h8300-elf –disable-nls –disable-werror
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir h8-gcc
$ cd ./h8-gcc
$ ../gcc-4.5.0/configure –prefix=/usr/local/h8 –program-prefix=h8300-elf- –target=h8300-elf –with-newlib –enable-languages=c
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir h8-newlib
$ cd ./h8-newlib
$ ../newlib-1.18.0/configure –prefix=/usr/local/h8 –program-prefix=h8300-elf- –target=h8300-elf
$ make
$ sudo make install
$ cd ../
$ mkdir sh-binutils
$ cd ./sh-binutils
$ ../binutils-2.20/configure –prefix=/usr/local/sh –program-prefix=sh-elf- –target=sh-elf –disable-werror
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir sh-gcc
$ cd ./sh-gcc
$ ../gcc-4.5.0/configure –prefix=/usr/local/sh –program-prefix=sh-elf- –target=sh-elf –with-newlib –enable-languages=c
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir sh-newlib
$ cd ./sh-newlib
$ ../newlib-1.18.0/configure –prefix=/usr/local/sh –program-prefix=sh-elf- –target=sh-elf
$ make
$ sudo make install

PHP 5.2.12 + GD + gettext

Mac OSX Leopard Serverのセキュリティーアップデートを実行するとまたPHPが置き換えられてしまった。

ので、GD付きで再コンパイル。と、gettextも有効にしたかったのでついでにいっしょにコンパイルします。

基本的に前回の記事にgettextを追加した内容になります。

  • libpng 1.4.1
  • libjpeg jpeg-8a
  • gd 2.0.35
  • gettext 0.17
  • php 5.2.12

バグの修正については前回の記事と同様に適用します。

$ cd ~/Downloads/src/libpng-1.4.1
$ CFLAGS="-arch x86_64" CCFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" ./configure
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ CFLAGS="-arch x86_64" ./configure
$ cp libtool ../jpeg-8a/
$ cd ../jpeg-8a/
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --enable-shared
$ make
$ sudo make install

$ cd ~/Downloads/src/gd-2.0.35
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --with-zlib-dir=/usr --with-jpeg-dir=/usr/local/lib --with-png-dir=/usr/X11R6 --with-freetype-dir=/usr/X11R6 --with-xpm-dir=/usr/X11R6
$ make
$ sudo make install

$ cd ~/Downloads/src/gettext-0.17
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64" CCFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64" LDFLAGS="-arch x86_64" ./configure --prefix=/usr
$ make
$ sudo make install

$ cd ~/Downloads/src/php-5.2.12
$ MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch x86_64 -g -Os -pipe" CXXFLAGS="-arch x86_64 -g -Os -pipe" LDFLAGS="-arch x86_64 -bind_at_load" ./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --with-apxs2=/usr/sbin/apxs --with-ldap=/usr --with-kerberos=/usr --enable-cli --with-zlib-dir=/usr --enable-trans-sid --with-xml --enable-exif --enable-ftp --enable-mbstring --enable-mbregex --enable-dbx --enable-sockets --with-iodbc=/usr --with-curl=/usr --with-config-file-path=/etc --sysconfdir=/private/etc --with-mysql-sock=/var/mysql --with-mysqli=/usr/bin/mysql_config --with-mysql=/usr --with-openssl --with-xmlrpc --with-xsl=/usr --without-pear --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/X11R6 --with-gd=/usr/local -with-gettext=/usr
$ make
$ make test
$ sudo make install

phpinfoを確認すると無事GDとgettextが有効になっていました。

ロボカップジャパンオープン2010

今日は後輩たちの日本大会決勝トーナメントでした。

結果は残念ながら7位で世界大会には進めませんでしたが、いろいろあったのにリーグ戦から決勝トーナメントに進出できたり、最終的には3勝4負とまぁまぁの成績だったので良かったかなと。

技術力で負けたのではないのがせめてもの救いかな、来年は1年間しっかり開発に使えるはずなので大丈夫かな。

P.S.

隣のクラブ(大阪大学鳥人間チーム)のサーバーがハッキングされたみたいです….うちもセキュリティーの確認しないと。