2010年7月29日木曜日

Altera DE0 Board発注

Terasic - Altera DE0 BoardをDigikeyで発注しました。
送料込みで$149。


「uClinuxを載せてみたい。」と考えています。
そう言えば某セミナで出会った同世代のエンジニアがそんなことを言っていました。
今まではこちらが至らなかったという感じ。やっと彼とも話ができそうです。
まずは実行してからですね。

2010年7月25日日曜日

Full auto bubbles maker

Full auto bubbles maker is a machine for creating bubbles.
If you love to create bubbles, this is great (and cheap) solution. :)


video

I used just 2 components for it.
  1. 4-SPEED CRANK AXLE (TAMIYA) with 3[V] DC power.
  2. FAN

Enjoy with your kids!

2010年7月23日金曜日

How to use Eagle3D

Sometime we need to check a view of own boards.
We have 2 choices for it.
  1. Use "Eagle meets SketchUp". http://eagleup.wordpress.com/
    • Eagle ULP
    • ImageMagick
    • Google SketchUp
  2. Use "Eagle3D". http://www.matwei.de/doku.php?id=en:eagle3d:eagle3d
    • Eagle ULP
    • POV-Ray
Both are good solution for you.
I tried to use the Eagle3D with EAGLE 5.10.0 and POV-Ray 3.6.
  1. Download POV-Ray from http://www.povray.org/download/
  2. Download Eagle3D from http://www.matwei.de/doku.php?id=en:eagle3d:eagle3d
  3. Install these software.
  4. Open your board on EAGLE.
  5. Choose the Eagle3D ulp named 3d41.ulp. The location is %PROGRAMFILES%\Eagle\ulp\Eagle3D. It's for EAGLE Version 4.1. But it works with current version of it.
  6. Select a few parameters and run it.
  7. Open a destination file with POV-Ray. The extention is ".pov".
  8. Press 'run' button. Some include files for POV-Ray are needed. It's located in %PROGRAMFILES%\Eagle\ulp\Eagle3D\povray.
  9. Check your board image.
Exactly same :)
Enjoy with your board!

2010年7月22日木曜日

TOPPERS/ASPのコンフィギュレータをUbuntu 10.04上でコンパイルする

TOPPERS/ASPのコンフィギュレータをUbuntu 10.04上でコンパイルするには
  1. boostライブラリを予めインストールしておいて下さい。sudo apt-get install 'libboost*-dev'
  2. export LIBBOOST_SUFFIX=-mt; export BOOST_DIR=/usr/include/boostls

ビルドを行うと・・・

g++ -o cfg cfg.o cfg0.o cfg1.o cfg2.o cfg3.o ../toppers/itronx/libitronx.a ../toppers/libtoppers.a -lboost_filesystem-mt -lboost_program_options-mt
/usr/bin/ld: cannot find -lboost_program_options-mt
collect2: ld returned 1 exit status
make: *** [cfg] エラー 1

こんな感じでエラーが出るかもしれません。

ldconfig -p |grep boost_program_optionsでライブラリを確認します。

libboost_program_options-mt.so.1.38.0 (libc6) => /usr/lib/libboost_program_options-mt.so.1.38.0
libboost_program_options-mt-d.so.1.38.0 (libc6) => /usr/lib/libboost_program_options-mt-d.so.1.38.0
libboost_program_options-mt-d.so (libc6) => /usr/lib/libboost_program_options-mt-d.so

/usr/libに行ってsudo ln -s libboost_program_options-mt.so.1.38.0 libboost_program_options-mt.soでlibboost_program_options-mt.soへのシンボリックリンクを作成します。

これでコンフィギュレータのビルドは通ります。

2010年7月21日水曜日

現在のフォーカス

現在のフォーカスはCortex-M3にOSを載せるというところです。
  1. STM32/Cortex-M3でFreeRTOSを稼働させる。
  2. mbed NXP LPC1768でFreeRTOS開発環境を整える。
  3. STM32/Cortex-M3でTOPPERS/ASPを稼働させる。 
1のSTM32/Cortex-M3上でのFreeRTOS動作は完了していますので、残る2つですね。
2は持ち運びに便利なmbedを使ってデモしたいために実現します。
3は何だかんだ言ってもTOPPERS/ASPに興味があるから。

2010年7月20日火曜日

SG12864A with mbed NXP LPC1768

もう随分前に購入して死蔵していた128x64ドットのモノクロLCDのライブラリを書くためにmbedを使用しました。


以下のようなインターフェースを用いて簡単に使えます。
  1. インスタンスを生成する。ピン配置はヘッダファイルを見て下さい。
    • SG12864A lcd(p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18);
  2. リセットする。
    • lcd.reset();
  3. バッファをクリアする。
    • lcd.bufferClear(reverse);
  4. バッファに線を描画する。
    • lcd.bufferDrawLine(0, 0, SG12864A::PIXEL_X - 1, SG12864A::PIXEL_Y - 1);
  5. バッファに文字を描画する。
    • lcd.bufferDrawString(1, 1, "This is a test #1.");
  6. バッファにチェックボックスを描画する。
    • lcd.bufferDrawCheckbox(50, 50, 60, 60, true);
  7. バッファにプログレスバーを描画する。
    • lcd.bufferDrawProgressbar(10, 10, 118, 20, min, max, val, true);
  8. バッファの内容を表示に反映させる。
    • lcd.bufferPush();
上記のように内部バッファに描画を行い、後でbufferPushを呼ぶことでLCDに反映されるという設計にしました。

このバッファがあることで
  1. 重ねて描画したい時にLCDからデータを読みなおさなくて良い。
  2. 描画指令毎にI/Oしなくて済む。
  3. ページ概念の追加などの拡張対応が可能。
などのメリットが生まれます。

ライブラリは Users » shintamainjp » Published programs » SG12864A に置きました。
何かの参考になれば幸いです。
現在のところハードウェアインターフェースの部分は抽象化していませんが、他のプラットフォームで使う際に再考したいと思います。

OpenOCDのバグ(レポートとその対応について)

先日STM32の開発環境をUbuntu上に構築する過程で、OpenOCD開発版のバグを2つほど見つけました。OpenOCDのTracにレポートを出しておきましたが、先ほど2つ目のバグも修正されたようです。
  1. gcc 4.4.xでのビルドのために
  2. Amontec JTAGkey2のインターフェースコンフィギュレーションファイルの誤り
1はgcc 4.4.xでビルドが通らないバグ。別のヘッダファイルで定義したものを使うように修正されています。レポートを出した次の日にさっさと直されていたので「だったらお前が直せよ。」ということでしょうか。
2はJTAGkey2Pのコンフィギュレーションが存在しないというもの。「2P版用の新しいコンフィギュレーションファイルinterface/jtagkey2p.cfg」が追加されました。Amontecのラインナップを見ると確かにこちらの対応のほうが良いでしょう。ちょっと名前が紛らわしいのですが。


JTAGkeyは亜種が各種出回っていますし、純正を使っている方は少ないようです。
こういったコンフィギュレーションファイルは、アプリケーションの導入時に重要な役割を果たします。
ある特定の製品の名を名乗る限り、純正品で正しく動作するのが大前提です。
今回のレポートはそういう意味で出しておいて良かったです。
今後世界中の人が自分のコンフィギュレーションファイルを記述しなくて済みますから。
 今回レポートした2つのバグ?はいずれも些細な事ですが、「使ってみよう」と思うけど「動かなかったら諦める」 という人にとっては致命的です。特にツールの導入時点でのこの手の障壁は何をやっているのかわからなくなります。今後も是非積極的にプロジェクトに寄与したいところです。

Linux上でJTAGkey2Pを使おうと思ってうまく動作しなかった経験のある方は、最新版をgitリポジトリからダウンロードして再度お試し頂ければと思います。

FreeRTOS for STM32F103 with gcc 4.4.x. (It don't use any evaluation software. It is based on open source software.)

A few days ago, I was checked with 'LED toggle demo program' on CQ-STARM board.
The board has STM32/Cortex-M3. It's not so good example.
(Hey! It's 32 bits MPU! Why don't you use the power of it!)

So, I decided to port FreeRTOS to the board.
http://www.freertos.org/
The clock is 72M[Hz], It can be pracical application.


The design of FreeRTOS is great.
It is easy to port to another platform.
Many demo projects in FreeRTOS uses evaluation software.
(e.g:Rowley CrossWorks, IAR, Keil, Red Suite)
So many users don't like evaluation software I know.
You can try this port if you don't like use it.

  • The environment is Ubuntu 10.04 with open source software.
    • It don't use any evaluation software. I don't like it :)
  • The demo project oriented from CORTEX_STM32F103_Primer_GCC.

The concept is 'Our environment should be free'.

(Download from here)

I hope to your helps!

2010年7月18日日曜日

CQ-STARMでFreeRTOSを動作させる。(arm-none-eabi-gcc)

先日の時点でCQ-STARMでLEDをチカチカさせることは確認済みです。
せっかくSTM32/Cortex-M3が搭載されている基板なのですから、これだけでは楽しくありません。

そこで調子に乗ってFreeRTOSの最新版をこの基板で動作させることにしました。
http://www.freertos.org/
クロックは72M[Hz]ですから、かなり実用的なアプリケーション開発ができそうです。


FreeRTOSは、その優れた設計思想のおかげでかなり楽にポーティングが可能なOSとなっています。昨夜から始めたポーティング作業が完了したのでファイルにまとめてアップロードしておきます。
何かの参考になれば幸いです。
  • ポーティングはUbuntu 10.04上にオープンソースなソフトウェアのみで行いました。
    • 制限の付いた商用ツールなどは使っていません。(あまり使う気になれない。)
  • DemoはCORTEX_STM32F103_Primer_GCCを元にしています。
皆さん様々なところで取り組まれているわけですが、 今回は商用ツールレスで実現しようというコンセプトでポーティング作業を行いました。

ダウンロードはこちらから(Download from here)

オープンソースソフトウェアを中心に構成した開発環境では情報が分散しがちです。
ダウンロード先にファイルが何らかのヒントになれば幸いです。

2010年7月17日土曜日

B057 : mp3 player kit

先日のSTM32開発環境構築と共に進めていたmp3 player kitについての仕様を詰めてみます。

今考えているのはちょうどB046 : uMP3PLAYERとB051 : WAV MODULEを混ぜたような内容。
B046の液晶表示器は扱いづらかったのでそれを変更し、B051のオーディオ出力を付けたような感じになると思います。
  • mp3ファイルなどをmicroSDカードから再生できる。
  • LCDに再生状況を表示できる。
  • 赤外線リモコンで制御できる。
  • 時計機能が付いていて目覚ましmp3プレイヤーとしても機能する。
  • ステレオスピーカ内蔵でアンプいらず。
  • プラスチックケースに入っていて扱いやすい。
本格的に実運用できるような物にしたいと思います。

2010年7月16日金曜日

STM32/Cortex-M3 HOWTO: Development under Ubuntu.

STM32/Cortex-M3の開発環境は有償無償を問わず様々な環境を用意可能です。

最近の国内雑誌はベンダーと手を組んで有償のツールを紹介するような内容が多く見られます。
それはそれで良いのですが、妙な制限が付いていたり、なんだか気持ちの悪いツールを使うように説明してあったりで、手放しに喜んで使う気にはなれないのが現状です。

そこで今回は STM32/Cortex-M3 HOWTO: Development under Ubuntu. を参考にUbuntu 10.04上で環境を構築してみました。


何かの参考になればということで、環境構築用のスクリプトとOpenOCDの設定ファイル、それにLEDチカチカプログラムをまとめてファイルにして置いておきます。
  • JTAGライタにはJTAGKey2を使っています。
  • OpenOCDはgitからソースコードをとってきてコンパイルして使いました。
    • Open On-Chip Debugger 0.5.0-dev-00403-ge8445c9-dirty (2010-07-11-13:51)
  •  DFUは気持ち悪くて使わないので思いっきり上書きしています。
  • LEDチカチカプログラムはSTM32F103VHB6_RevZ_Demo1を使っています。
ダウンロードはこちらから(Download from here)

ほぼ備忘録ですが、これからちょくちょく環境整備についてもまとめていこうと思います。

オープンソースの場合、バージョンによって大きく動作が変わったり、それに伴って情報が断片的になったりします。こういった時、断片的な情報を集めて整理することで問題を突き止める事ができる場合があります。ダウンロード用のファイルもそういった用途のために設置してあります。完全な動作を保証するためのものではありませんのでご了承ください。

2010年7月12日月曜日

Accessing to a STM32 MPU with OpenOCD and JTAGkey2

I tried to run OpenOCD with my JTAGkey2.
  • Getting and Extracting the libftd2xx
    • http://www.ftdichip.com/Drivers/D2XX.htm
    • tar xvfz libftd2xx0.4.16.tar.gz
  • Getting the OpenOCD latest source codes.
    • git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd
  • ./bootstrap
      • Configuring the option
        • ./configure --enable-ft2232_libftdi --with-ftd2xx-linux-tardir=/path/to/libftd2xx0.4.16
      • Building...
        • make
      • Editing a interface configuration file.
        • -ft2232_device_desc "Amontec JTAGkey-2"
        • +ft2232_device_desc "Amontec JTAGkey-2P A"
      • Running...
      shinta@ubuntu:~/Projects/openocd/openocd/src$ ./openocd -f interface/jtagkey2.cfg -f target/stm32.cfg
      Open On-Chip Debugger 0.5.0-dev-00403-ge8445c9-dirty (2010-07-11-13:51)
      Licensed under GNU GPL v2
      For bug reports, read
          http://openocd.berlios.de/doc/doxygen/bugs.html
      Info : only one transport option; autoselect 'jtag'
      1000 kHz
      adapter_nsrst_delay: 100
      jtag_ntrst_delay: 100
      Info : max TCK change to: 30000 kHz
      Info : clock speed 1000 kHz
      Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
      Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
      Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints

        2010年7月9日金曜日

        Amontec JTAGkey-2P

        随分前に購入したAmontec社のJTAGkey-2P。
        今日になってやっと動作確認しました。

        昨日ドライバを導入して動かずに困って問い合わせたところ。
        「今ウェブサイトをアップデートしています。ちょっとアップデートを間違ってたみたい。」
        ということで間違った方のドライバをインストールしていたみたいです。
        Amontec JTAGkey (Channel A)
        2009/11/10
        2.6.0.0
        正しいのはこっちだと送っていただいたリンク先にあるドライバで更新したところAmontec JTAGkey Demo 060307で認識しました。
        http://www.amontec.com/download/amontec-jtagkey-driver-d2xx-20091124.zip


        ちなみに動かなかったバージョンは
        JTAGkey ( Channel A )
        2005/12/01
        3.1.2.0
        です。

        2010年7月8日木曜日

        ARM開発環境の構築(Ubuntu 9.10)

        Windows上で環境構築を始めましたが、なんだかんだ面倒なのでLinux上に構築することに。


        以下をリポジトリリストに追加する。
        deb http://www.emdebian.org/debian/ lenny main


        以下で認証キーを追加する。
        wget -O- http://www.emdebian.org/0x97BB3B58.txt | sudo apt-key add -

        ツールチェインのインストール。
        EABIを入れれば良いでしょう。
        sudo apt-get install gcc-4.3-arm-linux-gnu g++-4.3-arm-linux-gnu (OABI)
        sudo apt-get install gcc-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi (EABI)

        binutilsをインストール。
        sudo apt-get install binutils-multiarch

        環境を構築したらmebd上でFreeRTOSを動作させることに挑戦します。
        あ、その前にCQ-STARMでLEDピコピコかな。