マイコンの最近のブログ記事

水魚堂の回路図エディタ を Mac OSX 10.5.8 でビルドしたときに少しハマったので手順をメモしておきます。

  1. Xcode のインストール。
  2. Qt フレームワークのインストール。Qt のダウンロードページから Mac版Qtライブラリ(フレームワークのみ)をダウンロードして、インストール。今日時点でのバージョンは 4.6 でした。
  3. 水魚堂の回路図エディタ のページの Qt-BSch3V の項目にあるソースファイルをダウンロード。今回は Qt-BSch3V、Qt-LCoV、Qt-Nlist、Qt-Nut をダウンロード。適当なフォルダに展開。
  4. ターミナルでソースファイルのあるディレクトリ(Q-tBsch3V だと qbsv047/qtbsch3v) へ移動し qmake を実行。
  5. xcodeproj ファイルができるので Finder から xcodeproj ファイルをダブルクリックし、 Xcode を起動。
  6. Xcode が起動したらウィンドウ左上のプルダウンから構成を Release にしてビルド。

これで Qt-BSch3V以外のアプリケーションは build/release ディレクトリにアプリケーションがビルドされましたので、これを アプリケーションフォルダに移動して完了です。

しかし、Qt-BSch3V だけはなぜか「シンボル _AEGETParamDesc が未解決」的なリンクエラーが出てビルドできませんでした。調べてみたところこれは Cocoa フレームワークがリンクされないとないということのようだったので、Xcode のメニューを「プロジェクト→プロジェクトに追加」から /System/Library/Frameworks/Cocoa.framework を選択し、再度ビルド。これで QtBSch3V も無事ビルドできるようになりました。

QtBSch3V はこのような回路図 を気軽に無料で作成するのには最適のアプリケーションだと思います。Windows 版はバイナリをダウンロードして使っていたのですが、Mac OSX 版はビルドの必要があるということでしたので、今回ビルドして Mac でも使える環境を整えることができました。

第 3 回は リセット後のマイコンの動作です。

今回の場合、リセットベクタから jmp 命令で飛んできた 0x68 番地は次のような命令から始まっています。

昨日から始まった マイコン向けバイナリの動作を見ていこうシリーズ第 2 回は「割り込みベクタ」です。

まず始めに割り込みベクタと割り込みが何かを簡単に説明しておきます。一般にコンピュータは 演算装置と入力装置、出力装置、そしてそれらを制御する制御装置からなっていますが、割込とは CPU の命令とは非同期に発生する入出力の完了などを制御装置に知らせる仕組みです。例えばユーザがスイッチを押したのを伝えたり、A/D 変換が完了したことを伝えたり、タイマがタイムアウトしたことを伝えたりするのが主な用途ですが、一方でゼロ割りが行われたり、メモリの R/W に失敗したときなどエラー系の通知にも使われます。パソコンだと CPU の割り込みは OS で管理されているため我々にはあまり馴染みがないかもしれませんが、分かりやすいアナロジーをあげると、イベントドリブンプログラムにおけるリスナー登録でしょうか。

先日 Atmel 社のワンチップマイコン Atmega168 で Tumblr 新着件数表示ボードを作りソースを公開しましたが、このために統合開発環境 WinAVR で私が書いたコードは PC で作成するプログラムと同様に main 以降の関数と割込関数だけでした。

通常の PC や UNIX サーバでユーザプログラムをリンクすると通常は書いたプログラムにスタートアッププログラムがリンクされて実行バイナリができあがりますが、WinAVR で使っている AVR-gcc コンパイラでは自分が書いていないプログラムがどういうふうに組まれてマイコン上で動くバイナリが作成されているのかを調べてみました。

Schematic of Tumblr Unread Msgs Display

@ryo_katsuma が tumblr に post した結果、 50 近くの reblog に達したTumblr 新着件数表示ボードですが、PC 側の air アプリとマイコン側のソース一式を github で公開しました。

回路図エディタ BSch3V で作った回路図も元ファイルはテキストファイルなので github に up しています

開発環境は AVR Studio というチップメーカである Atmel 純正の IDE を使っているのですが、ビルド時にリンクされているはずのスタートアップルーチンがどうなっているのか、スタックや割り込みベクタがどう初期化されて、どういうデータがどういう感じでアドレス空間に配置されているのかなどなど余裕があれば説明していきたいと思っています。

Board showing new arrival Items of Tumblr dashborad

ブラウザで Tumblr のダッシュボードを見ていると、新着件数がタイトルに表示されて1 分ごとに数字が更新されてますが、その部分だけを抜き出して LCD に表示するボードを作ってみました。ブラウザで見る場合と同じく一分ごとに更新されますし、ボード左側のスイッチを押すと、新着件数がリセットされます。これを使えば、PC の前にいなくてもどこでも Tumblr の新着件数を知ることができます、トイレの中に、台所のカウンターに、テレビの横に、玄関脇に置いておけばいつでも どこでも Tumblr と一緒です。

ボードの構成ですが、ストロベリーリナックスで購入した AVR の評価ボードと秋月電子で購入したシリアル USB 変換ボード FT232RL による構成です。評価ボードの構成は、マイコンが Atmel 社の Atmega196 で、LCD ユニットが SC1602BS です。 2列*16文字表示のよくあるヤツですね。

ケーブルが繋がった先の PC 側のアプリケーションは AIR アプリで Tumblr のダッシュボードを表示し新着件数を取得、ボードとの通信は XMLSocket とシリアル通信の proxy ソフト&ライブラリである Flash Net Comport Connector を利用しています。

もっとくわしい開発環境とかソースコードとかの話しはまたおいおい時間を見つけてやっていきたいと思います。1 つ言えることはマイコン開発、楽しいですね。

最近の画像

Zero History - ギブスンの新作が 9 月に発売 -
虐殺器官
ドミニオンのランダマイザアプリ、dominion minion が日本語対応!
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオン - 長大な叙事詩 SF のスタート -
ハイペリオン - 長大な叙事詩 SF のスタート -
「都市と星」 - 10億年と言われてもよく分からない -
「星を継ぐもの」 - 良い Sci-Fi -
トールサイズのニューロマンサーを買った
虎よ、虎よ! - 主人公フォイルの執念の物語 -

私の本棚

 

自転車走行距離

自転車走行距離

Flickr Photos

FlickrPhotos

なかのひと

Y!ログール

このサイトについて

2015年2月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

アーカイブ

My Update

  • Loading...

その他

あわせて読みたいブログパーツ