September 07, 2007GPSチップアンテナ 実装済みsparkfunで購入したGPSチップアンテナを基板に載せてみました。試験はこれからです。
このアンテナはLow Noise Amplifier (LNA)がないパッシブアンテナ(Passive Antenna)というタイプで、あまり受信機から放して使うのは好ましくないようです。ケーブルでどこまで放して使えるか興味があるところですが、あまり性能がよくない場合はLNAを組合わせたActive Antennaバージョンも作成する予定です。 ※その後、LNA付きバージョンが作成されました、が…。 September 10, 2007USB Composite DeviceでCDCが動作しない少し前にWindowsでUSBのMSD+CDCのComposite Deviceが認識されて良かったです、という記事を書きましたが、実は後日談としてタイトルのような現象にやられています。認識されたくらいでうまくいったと早合点していた自分が情けないです。 肝心の現象ですが、USBデバイスを接続直後(開始後1秒未満)はCDCでデータのやり取りが正常にできるのですが、それ以降はまったく反応がなくなります。USBソフトウェアアナライザのSnoopyProで調べてみたところ、CDCのCommunication InterfaceのInterrupt IN Endpoint 0x81とData InterfaceのBulk IN Endpoint 0x82が0xc000005(メモリ関連のエラー)で落ちてしまっているようです。なお、SnoopyProの機能を利用してCDCの部分だけリセットをかけると以後CDCによる通信が正常に行えました。 おそらくCDCの機能を提供しているusbser.sys、あるいはその親ドライバusbccgp.sysが怪しいのではないかと疑っていますが、なかなか情報が出てこず困っております。関連するHotfixもあたってみましたが、最新のusbser.sysを提供するHotfix 918365(2007/08/29)も効果なしでした。 ※自分のコードには多少バグがあることがわかりましたが、状況は改善しておりません。『Super Sylphide 進捗状況(16) -- Windows XPでMSD+CDCのUSB compositeが相変わらず動かない』をどうぞ。 September 14, 2007Super Sylphide 進捗状況(9) -- McBSPでmulti-words SPIオートパイロットシステム Super Sylphideの前回の記事『DSP/BIOSを利用した割込みMcBSP(SPI Slave)』で、DSPはMcBSPモジュールによるSPI通信(Slave)でマイコン(Master)からのデータをやり取りしています、ということを書きました。今回の記事は前回記事の拡張で、複数の塊で意味を持つデータ通信をどのように行えばいいかというお話です。 ※今回のお話は長いので、トップページから来られた方は続きをどうぞ。 続きを読む "Super Sylphide 進捗状況(9) -- McBSPでmulti-words SPI"September 21, 2007September 29, 2007Super Sylphide 進捗状況(10) -- C6700用行列ライブラリ 再びオートパイロットシステム Super Sylphideの開発をしている過程で、以前、TIのDSP TMS320C6713用のC++行列ライブラリを作ったよ、という記事を書きました。しかし最近になって検証をまじめにしたところ、メモリが漏れていたり(汗)、条件によっては無限ループにハマってしまったり(汗)、と大変な状況であることが判明したので、バグフィックスをしました。 現時点での最新版をここにおいておきます。(更新履歴は記事の一番後ろにあります) 修正点は以下2つです。 まず一点は、メモリが漏れていました。すいません。参照カウンタという仕組みを利用して行列成分を保存する領域の管理をしているのですが、行列成分(ソース内:Array2D_Dense::m_Values)自体は管理ができていたものの、それのお目付け役である参照カウンタ(ソース内:Array2D_Dense::ref)のdeleteをし忘れていました。 もう一点は行列積を高速化するためにTI純正のライブラリ TMS320C67x DSP Library (dsp67x.lib)のDSPF_dp_mat_mul / DSPF_sp_mat_mul 関数を使っていたのですが、行数あるいは列数が奇数のときに無限ループに落ち込んで呼び出し元に復帰しない現象が確認されました。 今後のこのライブラリの予定ですが、ある行列と転置行列の積が若干オーバヘッド気味なことをしている(転置行列の成分をディープコピーして並べ替えたあと、積算)なので、アセンブラでDSPF_dp_mat_mul / DSPF_sp_mat_mul 関数に似た専用関数を作ろうかと考えています。また参照カウンタ自体のメモリをnewで確保する(アロケータの性質にもよるが、小さい領域をヒープから取るのはあまり得策でないよう)のが微妙なので、placement newあたりでDSP/BIOSのBUFモジュールと組み合わせたカスタムアロケータから、メモリを確保するようにしようかと考えています。 ※その後、GPSが使用不能の場合でも時刻を保持するためのTime Keeperモジュールを作成しました。 ※※2009/05/30 コードを更新しました。転置行列との積などが高速化されるようにしました。 |
かれんだ~
スポンサード リンク
|