まずは、AVRマイコンを初めて触るので、どんな命令セットがあるのかを知らないと話になりません。
ATMELサイトのここからPDFをダウンロードしました。
どんなマイコンも最近の開発言語はもっぱらC言語が多いですよね。(C++を使えるのも出てきていますが。)
ところが、Cで書いたコードがアセンブルコードで見てみると、自分の想定していたコードに落ちていないことがたまにあって、これでハマるんですよ、実際。どれだけ泣かされてきたことか・・・。
なので、Cで開発している限り、命令セットのマニュアルは普段はあまり使わないのですが、実際にどんな命令コード(アセンブルコード)に落ちているのかを確認するなど、いざというときにないと困るという訳なんです。
今回のOSもメインはCになると思いますので(やっぱCが便利)、探し出しておきました。
これは、マイコン開発をしたかったら押さえておくべき項目ですよ。
2008年11月16日日曜日
2008年11月14日金曜日
my Arduino OS計画 #1
当面、このハックOSをなんて呼べばよいか?
まぁ、もうしばらく掛かるでしょうから、ちょっと放っておきますか。
で、まずは何はともあれ、開発環境を整えます。
AVRマイコンでは、GCCコンパイラベースのWinAVRというのが一般的なようですので、これをインストールします。AVRStudioというのが統合開発環境ですね。インストールしたのはVer4.14というやつです。
で、デバッグはどうするか?
よくある手は2つです。
1つはUARTからデバッグプリントをひたすら出す方法。これは、あまりたくさん入れると、ROMメモリも食いますし、UART割込みを使うとタイミングにも影響が出る場合もあるので、注意が必要ですが、ある程度デバッグが進んでくると、非常に便利なツールになります。要はこのプログラムを実装しておくと言うことです。
もう1つは、ちゃんとしたデバッガを使用する方法。AVRの場合、JTAGですね。debugWireというRESET端子だけを使った非常に変わった手法を使うんですね。こんなの初めて。
実は、この2番目の方法を使うことにしました。
何故か?
理由は2つ。
1つは、きちんとデバッグが出来るのでとても完成度が上がること。
1つは、なんと$39という超破格値でデバッガが手に入ったので。普通あり得ませんよ、こんな価格。
ネットで調べたら、$45でKee ElectronicsというところからATMELデバッガのクローンが出ていてそれがキャンペーン中らしく、$39ということで。円高だしね、えへへへ。すぐにPaypal払いの通販で購入、アメリカはカリフォルニア州から郵送です。なんと3日で到着。
.jpg)
ちょっと話はそれますが、こういうツールの場合、普通はちゃんとしたパッケージに入って、保証書の1つもあるはずなのですが、そこはさすがクローン。無邪気にパッキン封筒の中に箱にすら入らず、保証書もなく、あとはソフトウェアCD(しかもCD-Rでラベルもなし!)のみ。すごすぎる〜!!なんておおざっぱなんだぁ・・・。驚きのあまり、開いた口がふさがりませんでした。こういう商売を成立させるのが、ネットなんだなぁ、と痛感した次第です。動くのかぁ〜???
話がそれちゃいました。
で、まずはデバッガを動かしてみることにしました。
見事にハマリました。AVRStudioから接続してみるのですが、コマンドエラー多発で繋がらない・・・。
えー、やっぱ安物だったからかぁ?とガッカリしばし。
と、それでもめげずに色々試していたら、わかりましたよ、ISPコネクタの接続が逆でした。トホホ。
人を疑っちゃぁダメですね。反省しています。
.jpg)
まぁ、そんなこんなで、とりあえず動きそうな感じです。まだROMに焼いてデバッガは動かしていませんので、もう少しハマリそうな予感はしますが、こんなのはこの仕事ではいつものことなので、覚悟はしてます。
今回はここまで。保育園に子供を迎えに行かないと。
休日は子供対応で進捗はないので、また来週になっちゃうかも知れませんが、次回は、開発環境(回路構成)第2弾ですかね。
ではまた。
まぁ、もうしばらく掛かるでしょうから、ちょっと放っておきますか。
で、まずは何はともあれ、開発環境を整えます。
AVRマイコンでは、GCCコンパイラベースのWinAVRというのが一般的なようですので、これをインストールします。AVRStudioというのが統合開発環境ですね。インストールしたのはVer4.14というやつです。
で、デバッグはどうするか?
よくある手は2つです。
1つはUARTからデバッグプリントをひたすら出す方法。これは、あまりたくさん入れると、ROMメモリも食いますし、UART割込みを使うとタイミングにも影響が出る場合もあるので、注意が必要ですが、ある程度デバッグが進んでくると、非常に便利なツールになります。要はこのプログラムを実装しておくと言うことです。
もう1つは、ちゃんとしたデバッガを使用する方法。AVRの場合、JTAGですね。debugWireというRESET端子だけを使った非常に変わった手法を使うんですね。こんなの初めて。
実は、この2番目の方法を使うことにしました。
何故か?
理由は2つ。
1つは、きちんとデバッグが出来るのでとても完成度が上がること。
1つは、なんと$39という超破格値でデバッガが手に入ったので。普通あり得ませんよ、こんな価格。
ネットで調べたら、$45でKee ElectronicsというところからATMELデバッガのクローンが出ていてそれがキャンペーン中らしく、$39ということで。円高だしね、えへへへ。すぐにPaypal払いの通販で購入、アメリカはカリフォルニア州から郵送です。なんと3日で到着。
.jpg)
ちょっと話はそれますが、こういうツールの場合、普通はちゃんとしたパッケージに入って、保証書の1つもあるはずなのですが、そこはさすがクローン。無邪気にパッキン封筒の中に箱にすら入らず、保証書もなく、あとはソフトウェアCD(しかもCD-Rでラベルもなし!)のみ。すごすぎる〜!!なんておおざっぱなんだぁ・・・。驚きのあまり、開いた口がふさがりませんでした。こういう商売を成立させるのが、ネットなんだなぁ、と痛感した次第です。動くのかぁ〜???
話がそれちゃいました。
で、まずはデバッガを動かしてみることにしました。
見事にハマリました。AVRStudioから接続してみるのですが、コマンドエラー多発で繋がらない・・・。
えー、やっぱ安物だったからかぁ?とガッカリしばし。
と、それでもめげずに色々試していたら、わかりましたよ、ISPコネクタの接続が逆でした。トホホ。
人を疑っちゃぁダメですね。反省しています。
.jpg)
まぁ、そんなこんなで、とりあえず動きそうな感じです。まだROMに焼いてデバッガは動かしていませんので、もう少しハマリそうな予感はしますが、こんなのはこの仕事ではいつものことなので、覚悟はしてます。
今回はここまで。保育園に子供を迎えに行かないと。
休日は子供対応で進捗はないので、また来週になっちゃうかも知れませんが、次回は、開発環境(回路構成)第2弾ですかね。
ではまた。
2008年11月12日水曜日
まずは得意分野の省電力OSのことから。
私の本業は、今のところ、とあるメーカーで、電池で動かすような端末のソフトウェアを開発することです。
今のところ、というのは、そろそろサラリーマンを止めたいと思っているからなのですが。
優遇退社の時期があと1年ちょっとに迫っていますので、そこを狙っている状態です。
さて、自分の話はそのくらいにして、電池で動かすような端末(携帯電話やPDAなどはその代表ですね。)に必要な要素と言えば、ずばり「省電力」です。
省電力にするにはどうすればいいのかと言えば、とにかくヒマになったら、CPUに演算をさせずに休んでもらい、周辺ハードウェアにも電流を流さない、というのが、基本的なマイコンソフトウェアエンジニアの仕事です。
今、Arduinoに興味があるのですが、このシステムはとにかく全開でCPUをブン回しています。
まぁ、趣味の世界ではそんなことはどうでもいいかもしれませんが。
でも、趣味の世界を超えて、実用の世界に入ってくるとそんな甘いことは言ってられないのが現実です。
別にArduinoを実用に持って行くつもりはないのですが、ちょっとその当たりが気になって、このハードウェアを自分のOSでハックしてみたくなりました。実は省電力だけが狙いではないのですが、そこはまた別途書こうと思います。
でも、電池で長時間動くArduinoもいいもんじゃないですか?
これから何回かに分けて、ArduinoにOSを入れていくブログをアップしていくことになると思います。
ArduinoのCPUはATMELのATmega168です。ROMは16kByte(うちブートローダに2kByte使っちゃっています)、RAMは1kByteという非常にタイトなメモリ環境です。
ちゃんと狙ったOSを入れられるかどうか、やってみなければわからないのですが、とにかくやってみます。
今のところ、というのは、そろそろサラリーマンを止めたいと思っているからなのですが。
優遇退社の時期があと1年ちょっとに迫っていますので、そこを狙っている状態です。
さて、自分の話はそのくらいにして、電池で動かすような端末(携帯電話やPDAなどはその代表ですね。)に必要な要素と言えば、ずばり「省電力」です。
省電力にするにはどうすればいいのかと言えば、とにかくヒマになったら、CPUに演算をさせずに休んでもらい、周辺ハードウェアにも電流を流さない、というのが、基本的なマイコンソフトウェアエンジニアの仕事です。
今、Arduinoに興味があるのですが、このシステムはとにかく全開でCPUをブン回しています。
まぁ、趣味の世界ではそんなことはどうでもいいかもしれませんが。
でも、趣味の世界を超えて、実用の世界に入ってくるとそんな甘いことは言ってられないのが現実です。
別にArduinoを実用に持って行くつもりはないのですが、ちょっとその当たりが気になって、このハードウェアを自分のOSでハックしてみたくなりました。実は省電力だけが狙いではないのですが、そこはまた別途書こうと思います。
でも、電池で長時間動くArduinoもいいもんじゃないですか?
これから何回かに分けて、ArduinoにOSを入れていくブログをアップしていくことになると思います。
ArduinoのCPUはATMELのATmega168です。ROMは16kByte(うちブートローダに2kByte使っちゃっています)、RAMは1kByteという非常にタイトなメモリ環境です。
ちゃんと狙ったOSを入れられるかどうか、やってみなければわからないのですが、とにかくやってみます。
2008年11月11日火曜日
ようこそDigital*Maker = デジタル屋へ。
このサイトは、Digital*Makerすなわちデジタル屋という名前で立ち上げました。
デジタルとメーカーの相乗効果という意味にしてみました。
Ouch!Ouch!Ouch!のブログから、技術的な内容を分岐して書いていこうと思います。
さて今、興味ある技術は、
1.iPhone
2.Arduino、Gainerなどフィジカルコンピューティング系
3.マイコン関連技術
と言った感じです。
色々とアウトプットを載せていく予定です。
お楽しみに。
デジタルとメーカーの相乗効果という意味にしてみました。
Ouch!Ouch!Ouch!のブログから、技術的な内容を分岐して書いていこうと思います。
さて今、興味ある技術は、
1.iPhone
2.Arduino、Gainerなどフィジカルコンピューティング系
3.マイコン関連技術
と言った感じです。
色々とアウトプットを載せていく予定です。
お楽しみに。
登録:
投稿 (Atom)
