March 03, 2007

MMC/SDのSPIモードでのbusy信号

以前『SDカードとの闘い』という記事でオシロでSDの様子を見てみたい、ということを書きましたが、実際に計測してみました。前の記事では、データ落ちが発生するのはSDの書込み性能の違いからくるものであり、公称性能が違うSDカードを、書込み時のビジー(busy)が出力される長さをオシロで計測することで評価してみようという趣旨だったと思います。ところが、ELMの『MMCカードの使い方』をよく読んでみると、このようなことが書いてありました。

原則として、ひとつのトランザクションの間はCSをアサートに保たなければなりませんが、カードがビジー状態の間は、CSをデアサートしてSPIバスを解放することができます。次にCSをアサートしたときまだビジー状態ならカードは再びDOをLowに駆動します。そこで、ビジーチェックを先チェック(コマンドおよびデータブロック送信の直前にビジーチェックを入れる)にすると、転送直後にMCUを解放でき、時間を有効に使えます。

今まで実はbusyの間はポーリング、つまりbusyの出力が停止するまでずっとCPUをSDの監視に割り当てていたのですが、ここに書いてあるようにbusyの評価を先送りにできるのなら、その開いた時間でデータを取りこぼしなく確実に取得できることになります。そこで、そのビジーの遅延評価をオシロを利用して詳しく分析してみることにしました。

長いので詳細は続きにてどうぞ。

続きを読む "MMC/SDのSPIモードでのbusy信号"
09:11 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/548

March 04, 2007

JX0122 @ OpenSky 2.0

ポストペットで有名な八谷氏がやっている一人乗り飛行機の展覧会に先日行ってきました。いわゆるメーヴェです。ちゃんと型式取っているみたいですね。

ちょっと見えないですが、翼の捻り下げ美しかったです。
OpenSky_2_0.jpg

行って見てびっくりしたのが、揚抗比(L/D)やらM.A.C.(平均空力翼弦)やら航空用語満載の設計資料が展示されていたこと。航空機に詳しい人はさらに盛り上がれると思います。勿論普通の方が行かれても、実機を見たりシミュレータを体験できて十分楽しめると思います。

初台で3月11日までやっています。詳しくはOpenSky 2.0の広告ページをどうぞ。

P.S.
別コーナーにGainerも展示されていました。電子工作系サイトことぶ記の寿氏がやられているマイコンの浸透を目指したプロジェクトです。こちらもあわせてどうぞ。

19:53 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/549

March 08, 2007

Super Sylphide 進捗状況(2) -- sdcc Maniacs

Super Sylphideの全機能のうち、センサ、C8051F340、SDカードを利用して完璧にセンサのログをとれるようになりました。SDカードのハンドリングは、前の記事『MMC/SDのSPIモードでのbusy信号』にあるように色々と模索した結果解決しました。またログを記録したSDカードをPCでも読めるようにする為のFATですが、これはリファレンスとした純正のUSB-MSD-RDのFATが遅いため、ELMのFatFs-Tinyに置き換えることによって解決できました。

そのうちソースコードを今回しようと考えていますが、今回の記事ではその開発を行うのに利用したフリーのCコンパイラsdccの技をいくつか紹介しようと思います。

続きをどうぞ。

※その後、サーボ用基板が完成しました。

続きを読む "Super Sylphide 進捗状況(2) -- sdcc Maniacs"
00:13 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/550

March 15, 2007

夕焼け

[Photo]

南の島でくつろいできました。

2007sunset.jpg
夕焼け。

u710で撮影。1/250、F9.0、ISO64。

22:25 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/551

March 20, 2007

Doxygenと戯れる日々

現在せっせと某プログラムのドキュメント作りに励んでいます。といっても僕は『ソースを読めば全て書いてあるでしょう、バグも含めて(by まつもとひろゆき氏)』で思考停止してしまっているので、ドキュメントといってもソースに埋め込むコメント程度しか書けません。で、あとはDoxygenで処理してHTMLなりPDFなりにしようという算段です。今回の記事はDoxygenをWindows(+Cygwin)で使うまでに設定したことを、メモ書きで自分用に残しておこうと思いました。

続きをどうぞ。

続きを読む "Doxygenと戯れる日々"
23:21 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (6) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/552

March 24, 2007

Spartan3の3種電源を1つのICで

XilinxのFPGA、Spartan3を使用する予定があり、最近その電源を考えています。しかしながら3種類の電源を必要とするので、なかなか大変です。3種類というのはI/O電源の+3V3、アクセサリ電源の+2V5、そしてコア電源の+1V2。大元の電源が+3V3なら供給電源が2種類で済むのですが、残念ながら+5Vなので3種類が必要です。いちいちレギュレータを用意するにしてもその占有面積はかなりの物になります。そこで、この3種の電源が1つでまかなえるような素晴らしいICがないか調べてみました。

TIのXilinx FPGA/CPLD向け電源設計ページを見てみると、求めてみるものがありました。TPS75003という電源ICで1つで3種の電源が供給できるようです。

早速リファレンスデザインに倣って設計をしてみました。まだ作業中なので、スクリーンショットですが、こんな感じになりました。

TPS75003_sch.png
回路図

TPS75003_brd.png
レイアウト

電源は是非コンパクトにまとめたいです。

※この電源ICを使ってFPGAボードを設計してみました。

23:44 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/553

March 27, 2007

ApacheのMultiViewsで拡張子が有るリクエストでもgzが働くようにする

タイトルが呪文のようになっていますが、これ以上わかりやすいタイトルは思いつきませんでした。結局何の話かというと、Apacheのコンテントネゴシエーション(Content Negotiaion)機能、つまりHTTPサーバが持つコンテンツの中でクライアントに対して最適なコンテンツを自動的に選択して応答する機能についてです。

ことの発端は、prototype.jsでAjaxでも利用して少しサイトを華やかしようかと思った時でした。しかしこのprototyp.js、JavaScriptのくせに70KByteもサイズがあります(Ver.1.5.0)。これは少し嫌だなと思い調べてみたところ、gzip圧縮をかけてサイズを減らす方法があることを知りました。

この過程においてApacheのコンテントネゴシエーションの機能を知りました。つまり具体的にはMultiViewsというOptionを設定しておくことによって、prototype.jsを要求された際、クライアントがgzip圧縮をサポートしている場合はgzip圧縮されたprototype.js.gzを、そうでない場合は非圧縮のprototype.jsを返すということが可能なようです。しかしながらこれを実現するためには、デフォルトの設定では要求されるファイル、すなわちここではprototype.jsが存在しないことが必須条件(Apacheのマニュアルのコンテントネゴシエーション::MultiViews)であり、そのために多くの方は以下のどちらかの方法をとっていることがわかりました。

  • 要求するファイルはprototype.jsのままで、mod_rewriteの機能を利用してprototype.jsが存在していてもなんとかする
  • 要求するファイルを拡張子無しのprototypeにして、あとはサーバにまかせる

しかし残念ながらApacheのコンパイルでmod_rewriteを有効にしていなかったので、1番目の方法はできれば避けたいです。かといって、2番目の方法を採用しても、今までリンクは拡張子ありで記述していることがほとんどであったので、別のファイルにこの方法を適用する際に拡張子を削る作業に追われるのは目に見えています。そこで今回の本題である、なんとか拡張子が付いている状態であってもコンテンツネゴシエーションが働くようにしたい、という要望がでてきました。

解決策はとても単純でした。prototype.jsというファイル名をやめてprototype.js.jsにリネームします。こうすることで、prototype.jsに対する要求は、クライアントが圧縮に対応している場合はgzip圧縮のprototype.js.gzが、対応していない場合は非圧縮のprototype.js.jsが返るようになりました。
実はこれはApacheの1.3系のマニュアルに書いてありました。コンテントネゴシエーション::言語属性のない variantの部分で.html.htmlという例が紹介されています。

01:14 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (0) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/554

March 29, 2007

Ajaxでdocument.writeするJavaScriptへの対策

最近サイトをAjax化、つまり非同期通信をすることによってアクセス時の体感速度を向上させようとしています。JavaScriptライブラリのサイズを小さくするという内容の記事にも書いたとおり、Ajaxの非同期通信は有名ライブラリであるprototype.jsを利用して実現しようと考えていましたが、ここでJavaScript、特にdocument.writeをしてくるJavaScriptを非同期で扱う際にサイトが壊れるという現象に遭遇しました。そこで今回はその対策についておこうと思います。

少し長くなりそうなので、サイトをご覧の方は『続き』からどうぞ。

続きを読む "Ajaxでdocument.writeするJavaScriptへの対策"
14:02 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク | コメント (2) | トラックバック
このエントリーのトラックバックURL: https://fenrir.naruoka.org/mt/mt-tb.cgi/555