ブログ - 最新エントリー

アルミの塊

カテゴリ : 
新商品
2010-6-17 3:13

ドアにへばりついて走っていたキットの細部を分解して紹介します。

シャーシの主要パーツはアルミ、シャフト等はステンレスの切削物、ギアはポリアセタールとステンレスの組み合わせ。モータのギアヘッドを除いたギア比は 6.43:1になってます。


F1でのピット作業では タイヤ交換のスピードが命。このシャシでもいざというときのタイヤ交換はドライバ1本でOK。ギアトレイン類も簡単にばらばらに。
ねじがひしゃげる程なにかしでかしたらその限りではございません。


ホイールにはギアがついており、 こんな感じで1モータで2輪を駆動します。ここに指を挟んだら痛いじゃ済みませぬ


オプションの磁石キットを装備すれば磁性体にへばりつくことも可能です。吸着力の微調整は4隅のねじを回すだけ。
ネオジウム磁石なので一度鉄板にはり付いてしまうと外せる気がしませんし、こちらも指なんぞ挟んだらひとたまりもないでしょう。


モーターのマウントスペースはRE35と540K10に対応した広々設計(キットの標準は380K10)。


あとはブレードやカバーを自由にアレンジしてロボット相撲大会に出場したり、練習相手としても十分かと思います。このキットは近日発売しますが高くつきそうです

OLLO

カテゴリ : 
その他
2010-6-16 11:49

組み立ててみた。


組み合わせ次第でいろんな形がつくれるし、構成によっては単三電池1本で動くモータユニットがついてる。
子供の頃を思い出して黄昏てみてはどうだろうか。

USBスピーカ

カテゴリ : 
雑記
2010-6-10 18:30

これなんぞいかがでしょう。その名もOlasonic TW-S7
USBバスパワーで試聴に耐えるものなんぞないと思い込んでましたが、あるところにはあるもんです。

ACアダプタ不要で10Wクラスのパワーを発揮。


ディフューザーも効果ばっちし。


ちなみに、卵形ですけどニワトリじゃなくてダチョウサイズっす。Stereo Soundで購入すれば専用ケース付!

液晶ディスプレイ

カテゴリ : 
その他
2010-5-28 11:09



FREEDOM jr.IIIの胸部に装着することで、モーション作成や歩行パラメータ調整、ホームポジションの調整などがPCレスでリモコン操作のみでできちゃいます。単にSimple Termで表示されているものが液晶画面に表示されるだけですが。
まだまだ現地調整が手放せないロボット君にはコンソールは必要不可欠。思っただけで伝わる様になるのはいつの日になることやら。ま、人間同士の意思疎通ですら難しいんだから無理ですかね。
なお、こちらも近々商品化される予定です。


FDIII-HCスターターキット学習ガイドはいよいよ2軸へ。
写真はFDIII-HCスターターキットAX-12+とタミヤのユニバーサルプレートを使って作った車輪型ロボット。

今後この構成でライントレースや相撲などのサンプルプログラムを紹介する予定です。

そこにドアがあるから

カテゴリ : 
雑記
2010-5-26 16:39



いちよーこのぐらいのコードでえんとちゃう?
なんつー無意味なマルチタスク加減。

以前より「TOPPERSを動かす」というネタを書いてきましたが、諸々の環境を考えるとなかなか敷居が高いのかなと感じるところがあります。
RTOSと言われてもピンとこない方でも、見かけ上複数のプログラムが同時に動く環境が手に入るとなればちょっとは使ってみたくなるかなと思いまして、今月中にリリースする予定のGCC Developer LiteにはAT91SAM7Sシリーズ限定版のTOPPERS/ASPを簡単に利用できるターゲットを含めようと思っています。
TOPPERS/ASPは動的にタスクを生成する事は考慮されていませんので今回提供しようと考えている環境ではタスク数に制限が加わっていますが、割り込みハンドラ等はユーザ側のソースで自由に追加定義できるように手を加えてあります。また、デフォルトで定義されたタスクでは物足りない場合でも、単体でコンフィギュレーションできるよう考慮してみたいとも思っています。
こんなコードだけで3つのタスクが同時並行で動いたら面白いなぁと思われたら、ぜひ試してみてください。

新しくサポートしたデバイスはシステムクロックの指定が重要なため、任意に設定できるようにしました。また、このご時世ボーレートが9600bpsの倍数なんてケチ臭いのも間抜けなので、こちらも自由度を上げました。これで場合によっては転送速度を数百kbpsまで上げる事も可能です。
という事でbeta2としてこちらに公開しました。
2010/02/23

久々に新しい(単に作者が使っていなかっただけですが)ルネサステクノロジさんのチップを使ったボードに触れる機会がありました。秋月電子さんのSH7125ベースボードキットAKI-H8/3069Fマイコンボードキットの2種類。
ベステクで扱っているシリーズとは内蔵機能が違うので、ちょっとは楽しめるかなと思い選んだのですが、案の定現状のFlash WriterではこれらのフラッシュROMの書き換えは対応せず。もちろんFDTを使えば難なくイケますが、横着な作者にはやっぱりいろいろ面倒。
という事で、データシート見ると案外簡単そうだったのでFlash Writerをこの2機種のフラッシュROM書き換えに対応させてみました。マイコンのシステムクロックに依存する部分があるので設定上少々物足りないのですが、ひとまずベータ版としてここに置いておきます。現状は上記2機種に使用されているクロックが前提になりますので。

不具合があっても保証の限りではありませんが、絶対おかしい!って時はこちらにメールして下さいね。

それと、少しでもヤル気が出たら、今まで見捨てていたターゲットも復活させてみようかなと思ってたりします。もう用済み!と思われていたとしてもw。
指摘があったので chip_time.c と chip_timer.h をちょっと修正。
タイマのインターバルが10kHzになっていたので、1kHzにしました。これでホントに元のサンプルと同じ速度になったかな?
2010/01/29

 

タスクスイッチ用タイマ

タスクを並列に処理しているように見せかけるための機能を実現するのタスクスイッチ用のタイマらしく、マイコンに内蔵された時計を利用して一定間隔で何かしでかす仕掛けの様です。
という事でまだまだ理解が追いついてない状態で、この部分に手を加えてみようというのが今回のネタです。

Periodic Interval Timer (PIT)への変更

タスクスイッチ用のタイマに関するソースは ~/asp/arch/arm_gcc/at91sam7s/chip_timer.c に書かれている様で、ねちねち読むとTimer Counter Channel 0 (TC0)の初期化や割り込み処理ルーチンしかない感じ。それでもって、単純に時間を刻んでいれば良い筈なんだろうと決めつけると、そこそこ高機能なTC0をインターバルタイマとしてだけ使うのは何だかもったいない気がしてきました。
そこで、あまり触れられる機会が少ない Periodic Interval Timer (PIT)で代替できないだろうかと考えました。chip_timer.c ではTC0の初期化や割り込み処理ルーチンしかないので、改造する範囲はかなり少なくて済みそうだからという憶測も手伝い、改造を英断。

またもやドキュメントを中途半端に読みつつ、何度か試行錯誤しながら処理方法を模索し、ホントに後々問題にならないのかは全く自信が無いまま、とりあえず関係するソースを修正して再度のコンフィギュレーションしなおした asp.bin が#1と同じ動きをしたならば良しと決めました。
まずはTC0を使用するように記述されている ~/asp/arch/arm_gcc/at91sam7s/chip_timer.h と ~/asp/arch/arm_gcc/at91sam7s/chip_timer.c の該当箇所をPIT化し、以下のコマンドを実行してサンプルプログラムをコンパイル。
cd ~/asp/OBJ
make clean
make depend
make asp.bin
おや? make depend をした段階で、何やら定義の重複エラーが発生したと言ってくる。そんなつもりは無いのだが。おまけに手を入れたトコとは関係ないソースとの競合があるらしい
エラーメッセージから INTNO_SIO をgrepしていくと、適当に修正した chip_timer.h の INTNO_TIMER が、INTNO_SIO に設定されている INTNO_SYSIRQ_PID と同じ値だという事らしい。どうやらPITは他のペリフェラルのいくつかと割り込みベクタが共通になっている事が原因っぽいけど、ダメな理屈は分からない状態で難儀する事に。

ドキュメントを読もう!

悩むこと数年、試行錯誤で修正しても何ら解決しそうになかったので、マジメに資料を読むしかない!という事に行き着きました。

割り込みベクタを共有したい場合の方法については、~/asp/doc/configurator.txt の「(5-2-1) 割込みハンドラの生成」に共有になっている場合に使用できそうな内容が記述されています。これを参照しながら  chip_timer.cfg と、関係がある事すら意識していなかった競合相手 dbgu_serial.cfg を修正。
「割り込みハンドラの生成」はGCC Developer Liteのsam7sターゲットでSYSIRQの分岐処理として提供されている sys.c みたいなコードを使ってるとダメらしく、割り込みハンドラ側でフラグをちゃんと見ないといけない事も判明 (chip_timer.c の target_timer_handler と、dbgu_serial.c の sio_isr)。

動作確認

再度 make depend を実行し、文句は言ってこなくなった様なのでひとまず改造はOKといった所でしょうか。make asp.bin を実行。completeの文字が表示されて ~asp/OBJ/asp.bin が作成されていればコンパイルは成功。さっそく書き込んで動作を見てみましょう。
#1と同じ動きをしましたかね? dbgu_serial.c もいじくったので大丈夫か不安だったのですが、sample1.c の中身は別として同じ動きをしている気がしますがいかがでしょう。

※元のソースからの差分はこちらからダウンロードできます。最終段階の動くであろうと思われるソースになっていますので、~/aspフォルダに上書きして使ってください。

 

TOPPERSについて

TOPPERSはRTOSの1つでITRON仕様のオープンソースソフトウェアとして公開されているOSです。TOPPERSの詳細は http://www.toppers.jp/project.html を参照してください。

マイコン上でプログラムを作成する場合でも、OSがタスク制御とかをやってくれるのでマルチタスクのプログラムが作成し易い?はずです。数回に分けてTOPPERSをAT91SAM7Sに搭載させてマルチタスクOSによるプログラミングに挑戦してみます。

今回は公開されている情報をトレースし、今現在でも同様の手順で再現できるかを試してみたいと思います。動作を保証するものでもサポートされるものでもありませんが。

用意するもの


環境の構築

1.Cygwinのインストール
CygwinのWEBサイトからsetup.exeをダウンロードし実行します。

インストール中に要求されるダウンロードサイトを適宜選択し、パッケージの選択でDevelカテゴリのmakeをインストールする様にする以外はデフォルトのまま進んで構わないでしょう。

しばらくしてインストールが完了したら、ちょっとだけ修正作業をしておきます。windowsのコマンドプロンプトを起動し、以下の通り打ち込みます。
cd c:\cygwin\bin
ash rebaseall -v
この措置を講じておかないと、後々perlの処理に支障をきたします。


2.ARM用gccの準備
こちらのWEBサイトから yagarto-bu-2.20_gcc-4.4.2-c-c++_nl-1.18.0_gdb-7.0.1_20091223.exe をダウンロードおよびインストールします。
デフォルトの設定でインストールを進めて構いません。

3.TOPPERS/ASPカーネルの準備
TOPPERS/ASPカーネルTOPPERS/ASPカーネル簡易パッケージから 「BTC090(ベストテクノロジ)簡易パッケージ」を使用します。
ダウンロードしたファイルをc:\cygwin\home\ユーザー名\ (ユーザー名はWindowsにログインしているユーザ名)に解凍します。
解凍した後のフォルダイメージはこのような感じになっていれば良いはずです。


4.カーネル用コンフィギュレータの準備
TOPPERSカーネルコンフィギュレータよりコンフィギュレータ Release 1.5.0(Windows用バイナリ)をダウンロードし、c:\cyginw\home\ユーザー名\asp\cfg\cfg (ユーザー名はWindowsにログインしているユーザ名)へ解凍します。
同名のファイルがあれば上書きして構いません。

5.書き込みツールとシリアルターミナルの準備
マイコンへのプログラム書き込み用ソフトウェアとしてGCC Developer Liteに付属するFlash WriterとopenOCDを使用します。
その他、プログラムの動作確認をするために汎用のシリアルターミナルプログラムを用意しておきます。GCC Developer Liteに付属のSIMPLE TERMでひとまず事足りるでしょう。

ひとまず必要なファイルの類の準備が終わりました。

TOPPERS/ASPをコンパイルしてみる

1.ユーザーズマニュアル
~/asp/doc/user.txt  がユーザーズマニュアルになっています。必要な情報の大半が記述されているのですが、windowsのメモ帳で開くと文字化けして読めないので、ms wordやもうちょっとインテリジェンスなテキストエディタで参照しましょう。
ここまでの作業は、「3.クイックスタートガイド」の3.1~3.2に記載された内容と同等です。

2.サンプルプログラムのコンパイル
user.txt の「3.3 サンプルプログラムの構築と実行」に記載された手順を追えばコンパイルできる様ですので、順に作業してみます。
Cygwinのコンソールを起動し、以下のコマンドを順に実行します。
cd ~/asp
mkdir OBJ
cd OBJ
perl ../configure -T btc090_gcc
実際の画面はこのような結果になるはずです。

この操作によりコンフィギュレーションが行われます。

特に問題がなければ、最終段階のサンプルプログラムのコンパイルを行います。引き続きCygwinのコンソール上で以下のコマンドを順に実行します。
make depend
make
しかしながら、使用したコンパイラのせいなのか、提供されているファイルがイマイチよろしくないのか、make depend を実行した時点でerrorが発生したと言ってくると思います。


とりあえず動けばOKという事で、~/asp/arch/arm_gcc/at91sam7s/at91sam7s.ldファイルをこちらのもので置き換えて、再度 make depend を実行します。文句は言ってこなくなったので、処理が完了した様です。


それでは最後に make を実行してコンパイルを行います。ずらずらと処理中の状況が表示された後に complete の文字が表示され、~asp/OBJ/asp.exe が作成されていればコンパイルは成功です。


続きCygwinのコンソール上で以下のコマンドを順に実行します。
cd ~/asp/OBJ
arm-elf-objcopy -O binary -S asp.exe asp.bin
これにより ~/asp/OBJ/asp.bin ファイルが作成され、マイコンボードに書き込むためのファイルができあがりました。

マイコンボードで動かす

マイコンボードへの書き込み手段は複数ありますが、ここではJTAGを介して書き込んでみます。
また、サンプルプログラムはDBGUポートを使用してシリアル通信でメッセージを送受信するように作られていますので、SIMPLE TERMを使用して動作を確認してみます。

1.openOCDの起動
GCC Developer LiteはSAM7Sのターゲットを前提としてインストールしてあるものとします。
  • TINY JTAG-ICE2をPCのUSBポートに装着(デバイスドライバのインストール要)
  • BTE077のI/OボードのCN3とTINY JTAG-ICE2のJTAGコネクタをフラットケーブルで接続
  • AT91SAM7S256マイコンボードのCN3とTINY-ICE2のRS232Cコネクタをシリアルケーブルで接続
  • AT91SAM7S256マイコンボードのSW1をSAM-BAとは反対側に切り替え
  • BTE077のI/Oボードに外部電源を接続し、I/OボードのSW1をONにして電源を供給

GCC Developer Liteを起動し、ツールバーから openOCD(SAM7S) をクリックしてopenOCDを起動します(最小化されたコマンドプロンプトがタスクバーに収まっているはず)。もし起動しないようであれば、ケーブルの接続や電源、ドライバのインストール等をチェックしましょう。また、外部からマイコンボードのFLASH書き換えやJTAG接続を使用不能にする設定になっている場合もありますので、その場合はこちらを参照して対処してください。

2.Flash Writerで書き込み
Flash Writerは先ほど出来上がったasp.bin ファイルを openOCD を介してマイコンボードへ書き込みを行うツールです。
GCC Developer LiteのツールバーからFlash Writerを起動します。

起動したFlash Writerのタイトルバー左端にあるアイコンをクリックし、表示されるメニューから「FlashWriter Property」をクリックすると、Flash Writerのウィンドウが拡大します。

ウィンドウが拡大したら、以下の様に設定します。
  • CPU TYPE: openOCD
  • PORT: openOCD
  • Write Script File: at91sam7_bin_flash.script

ちなみにopenOCDが起動していないとPORTのドロップダウンリストにはopenOCDが列挙されません。起動しているにもかかわらず列挙されない場合は「Rescan」とある部分をクリックしてみてください。
また、Write Script Fileのドロップダウンリストには似たような名称のものがいくつも列挙されますが、間違いなく「at91sam7_bin_flash.script」を選択しましょう。
最後にファイルを開くアイコンをクリックして先ほど作成した asp.bin を一番上のテキストボックスに設定します。

これでおそらく書き込む準備が完了したはずなので、「Execute」をクリックして書き込み処理を開始させます。書き込み中はそれにかかる処理の状況を逐一ログウィンドウで表示し、滞りなく成功すればFlash Writerのステータスバーに青色で Successful と表示されます。


3.SIMPLE TERMで動作確認
書き込み処理が成功してさえいれば、書き込み処理終了と同時にマイコン上でプログラムがスタートしているはずですが、マイコンボードの外観からは何らその様子をうかがい知る事ができないのが残念なところです。
~asp/OBJ/sample1.c を眺めると syslog 関数でテキストを吐いているだけで、LEDやブザーの類までを扱っている様には見受けられません。入力は serial_rea_dat でDBGUからシリアルデータを取得してswitch文でなにやら分岐しています。ということで、シリアルターミナルの出番です。
GCC Developer LiteのツールバーからSIMPLE TERMを起動し、SIMPLE TERMのファイルメニューのプロパティをクリックし、表示されるダイアログボックスを以下の様に設定します。
  • Connect to: COM??? (???はTINY JTAG-ICE2のRS232Cで増設されるCOMポート番号)
  • Baudrate: 38400 bps
  • Databits: 8 bit
  • Stopbits: 1 bit
  • Parity: Non
  • Flow Control: Non


ではSIMPLE TERMのツールバーから「指定ポートを開く」ボタン(電話のアイコン)をクリックしてみましょう。「task1 is running (????).」の表示が延々と表示され続けていれば間違いなく書き込まれたプログラムが動いている証拠です。

マイコンボードのリセットボタンを押してプログラムを再起動してみると、実行を開始したことを意味するメッセージの後に、再度「task1 is running (????).」が表示され続けます。sample1.c のソースを眺めながらswitch文で列挙されているキャラクタをSIMPLE TERMのターミナルウィンドウ上で入力してみて、何かしら表示が変化すればなおOKってところでしょうか。


ここでは sample1.c がどういった挙動をするものかまでは説明しませんので、よく眺めた上で遊んでみてくださいね。

それと、今回使用したマイコンボードはAT91SAM7S256という事で、デフォルトで想定しているAT91SAM7S128とは異なっています。両者の違いは内蔵されるメモリのサイズ程度と思えば、メモリの小さいAT91SAM7S128として構築したものをメモリの大きいAT91SAM7S256に書き込んだ所で何ら支障はありません。