Super Sylphide 進捗状況(31) -- TMS320C6745のJTAG

オートパイロットシステムSuper Sylphideですが、Tiny Featherという名前で小型化を進めています。Tiny Featherではメインの計算機としてTexas InstrumentsのTMS320C6745(以下、6745)というDSPを採用しており、オリジナルのSuper Sylphideで採用していたTMS320C6713B(以下、6713)の後継にあたるものなので、開発環境の部分ではさほど変わらないだろうと考えていました。ところが早速、JTAGアダプタを使用してPCに接続する勝手が違う、という壁に突き当たったので、これを記事として記録しておきたいと思います。

まず物理的な接続ですが、これはJTAGなので以前の6713とほとんど変わりがなく、こちらは特に問題がなく済みました。少し変化があるとしても、6745のQFP176パッケージでは6713にあったエミュレーション用の特殊ピンEMU0/1がない程度で、接続しなければいけない本数が2本減りました。同じ6745でもBGAパッケージのものでしたらEMU0/1が存在するため、今回の6745にそれらがないのはおそらくピン数の関係で削減されたものであり、本質的な問題ではありません。結果、6745では以下の写真に示すような7本(電源のVCCとGND、及び標準的なJTAG端子のTCK,TDI,TDO,TMS.-TRST)でJTAGアダプタに接続しています。

tiny_feather_jtag.jpg
左下の虹色ケーブルがJTAGアダプタと繋がる

問題なのはソフトウェアな話です。従前の6713では直接DSPのコアにJTAGが接続されておりInstruction/Data Registerにアクセスするようになっていたため、PC側の開発環境であるCode Composer Studio (CCS)の設定は簡単でした。接続に利用するJTAGアダプタを指定して、その下に6713を配置するのみです。6713のときのCCSのセットアップを以下に示します。

CCS_Setup_6713.png

ところが6745ではこうはいきません。結果を先に書いてしまうと、6745の中にはIcepick_CというJTAG Routerが一段噛んでおり、そこのPort 0x11(17番)からDSPコアに接続するという形にする必要がありました。同じく6745のCCSのセットアップを示します。

CCS_Setup_6745.png

どうやらIcepick_Cが導入された背景として、マルチコアならぬコンプレックスコア化した最近のTIのDSPの状況があるようです。コンプレックスコアとここであえて書いたのは、例えばOMAPといったブランドではARMとDSPという異種の2つのコアが一つのパッケージに統合されています。このような場合においても片方のコアだけデバックしたい、といった複雑な状況を巧妙に処理するためにJTAG Routerが入っているようです。調べてみるとTIからでているsprp603という文章の中にIcepickに関して詳細な記述があり、その役割などが記載されていました。

このJTAG Routerを配置しなければならないということに気づくのに、かなり時間を要しました。しかもDSPだけのシングルコアのチップに対しても、JTAG Routerを仕込んでくるとは思ってもいませんでした。
この問題を解決するきっかけとなったのは、JTAGで6745のIR Registerの長さを調べた際に6bitという非常に短いレジスタしか見えないことを奇妙に感じたことでした。6713は、こんなに短くは無かったぞ、ということで調べてみると、Icepick_CのInstruction Register の長さが6bitだったというわけです。その後は前述のTIの文章を見つけることができ、なんとか類推でCCSから6745を認識させるに至りました。

※次の記事はTiny Featherのセンサ+サーボI/F基板の設計です。

July 15, 2010 00:41 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする