マルチ DSP システム( システム(MDS64 MDS64) 開発ツール 開発ツール( ツール(Development Tools) Tools) 資料番号 MDS64009 2011 年(平成 23 年)10 月 10 日 はじめに マルチ DSP システム(MDS64)はテキサス・インスツルメンツ社(以下 TI 社)製 DSP スタータ・ キット(C6000 系 DSK)の多重接続を行うことにより高速演算を可能にした、計算量の多い アルゴリズムを評価するディジタル信号処理システムです。 MDS64 を使用するためには、下記の資料が用意されています。これらの資料は製品と同 梱されていますので参照してください。また資料の改変が行われた場合には、登録ユー ザー宛に通知されます。 z 技術資料:MDS64 に使われている基本技術・機能等の説明 資料番号 MDS64001 z ユーザーズ・マニアル:MDS64 のプログラム開発方法を説明 資料番号 MDS64003 z ソフトウエア・マニアル:MDLOS ライブラリーの説明、 資料番号 MDS64005 z エラー・コメントリスト:MDS64 動作中に表示される各種エラー、対処方法の説明 資料番号 z MDS64007 MDS64 システム開発ツール:ツールの使用方法 (本資料) 資料番号 MDS64009 現時点で発売されている MDS64 のファミリーには以下の製品群が含まれます。 z MDS64_twin (V1.2) TMS320C6416T DSK を2層含む z MDS64_four (V1.2) TMS320C6416T DSK を4層含む z MDS64_six (V1.2) TMS320C6416T DSK を6層含む z MDS64_eight (V1.2) TMS320C6416T DSK を8層含む z MDS64_Plugin (V1.2) TMS320C6416T DSK を2層含む すべての商標および登録商標はそれぞれの所有者に帰属します。 内容 1. MDS64 システム開発ツールの概略 1.1 特徴 1.2 ツール機能の概略 1.3 開発ツールの動作について 1.4 開発システムの組み込み 1.5 開発システムの動作 1.6 LOG 2. 開発ツール 2.1 DEBUG 2.1.1 MDLHALT 2.1.2 MDLstatus 2.1.3 BreakPoint 2.1.4 MDLwatch 2.1.4.1 MDLwatch_List 2.1.4.2 MDLwatch_GO 2.1.5 OpenMemory 2.1.5.1 OpenMemory ツールの出力 2.1.5.2 OpenMemory ツールのほかの表示方法 2.1.6 RESET_MDL_Debug 2.2 Registers 2.2.1 Core_Register 2.2.2 SirialPort 2.2.3 Timer_Register 2.2.4 Interrupt_Register 2.2.5 EDMA_Register 2.2.6 QDMA_Register 2.2.7 EMIF_Register 2.3 MDLOS KEY Control 2.3.1 MDLQUE 2.3.2 MDLQUE_DUMP 2.3.3 MSGQUE_DUMP 2.4 MDLOS KEY Registers 2.4.1 MDLOS_reg0 2.4.2 MDLOS_reg1 2.4.3 MDLOS_reg2 2.4.4 PassCount 2.4.5 PQSRCount 2.5 MDLOS Memory files 2.5.1 tmpbuf1 および tmpbuf2 2.5.2 DBFS_bufmstr および DBFS_bufslav 3. エラー・メッセージ 3.1 Tool LOG ウインドウに表示されるエラーメッセージ 3.2 Output ウインドウに表示されるエラーメッセージ 1. MDS64 開発ツールの概略 1.1 特徴 MDS64 システムは複数のテキサス・インスツルメンツ社製開発ボード(6416DSK)より 構成されています。単一の DSK を用いた場合の開発ツールはテキサス・インスツルメン ツ社より Code Composer Studio(CCS)が提供されますので、プログラムを開発するた めに支障はありませんが、MDS64 システムでは、Code Composer Studio(CCS)が Super Visor DSK に直接接続され、Super Visor DSK に関してのデバッグは可能ですが、ほか のボードに関しては使用できません。そのために、本開発ツールは直接接続されていな いボードのレジスター、 MEMORY の現在値を Super Visor DSK まで転送して Code Composer Studio(CCS)上で表示するための機能を提供しています。この機能によりユーザーは MDS64 システムの動作状況を把握して、問題点を解決することができます。 この目的 のために MDLOS にはツール用の処理モジュールが組み込まれています、またツール実行 のための GEL コマンド・ファイルも用意されています。 GEL コマンドでは実行に必要な変数をプログラム本体に書き込み、本体内に実装されて いるツール(C64MDL_DEBUG など)を起動して処理を行い、目的の結果が得られた後に、 Code Composer Studio(CCS)内のウインドウに表示します。 表示される内容は、MDS64 システム内のメモリー、レジスターに関する情報です。Code Composer Studio(CCS)のようにユーザーが直接書き込むことはできません。 下図は GEL メニューの一部を表示したものです。 この GEL コマンドを組み込むためには、 “boards¥MDS64¥gel“ホルダーの下記 GEL FILE をローディングする必要があります。 GEL FILE(MDS64 開発ツール) :MDS64.gel 1.2 ツール機能 MDS64 システムに組み込まれている開発ツールには、以下のような機能があります。 GEL MENU SUB MENU 説明 DEBUG MDLHALT MDLstatus BreakPoint MDLwatch_List MDLwatch_GO OpenMemory RESET_MDL_Debug Core_Register SirialPort Timer_Register Interrupt_Register EDMA_Register QDMA_Register EMIF_Register MDLQUE(転送制御) MDLQUE_DUMP MSGQUE_DUMP MDLOS_reg0 MDLOS_reg1 MDLOS_reg2 PassCount PQSRCount tmpbuf1 tmpbuf2 DBFS_bufmstr DBFS_bufslav MDS64 システムの停止 システム状態の表示 Breaking Point 設定、解除 Watch List の作成 Watch の実行、表示 Memory Window の表示 RESET CCS 準拠レジスターの表示 CCS 準拠レジスターの表示 CCS 準拠レジスターの表示 CCS 準拠レジスターの表示 CCS 準拠レジスターの表示 CCS 準拠レジスターの表示 CCS 準拠レジスターの表示 MDLQUE の表示 MDLQUE の DUMP MSGQUE の DUMP MDLOS register0 の表示 MDLOS register1 の表示 MDLOS register2 の表示 Pass Count の表示 PQSR register の表示 MDLOS 標準ファイルの表示 MDLOS 標準ファイルの表示 MDLOS 標準ファイルの表示 MDLOS 標準ファイルの表示 Registers MDLOS KEY Control MDLOS KEY Register MDLOS Memory files 1.3 開発ツールの動作について MDS64 システムでは MDLOS が DSK 間のデータ通信を制御していますが、同時に DSK の動 作状態もモニターしています。下図に示されているように、開発ツールにかかわってい る主なファンクションは以下の 3 モジュールです。 z メッセージ出力(MDL_MSG) z C64_debug_Break z C64MDL_DEBUG メッセージ出力は通常メッセージの出力機能を使って DEBUG を行うものであり、詳細は 技術資料(資料番号 MDS64001)に記載されていますので、本項では説明をしていませ ん。C64_debug_Break ファンクションは MDS64 システム内で任意の DSK に対して Breaking Point を設定するためのものです。 C64MDL_DEBUG ファンクションは SuperVisor 以外の DSK から、レジスター、MEMORY の内容を SuperVisor DSK まで転送 をして表示する機能があります。 これらの機能を実現するために各種の Register が MDLOS に組み込まれています。 GEL コマンドは目的の機能ごとに Register の内容を設定するためです。 1.4 開発システムの組み込み 開発ツールで中心的役割を担っているプログラム・モジュールは C64MDL_DEBUG ファン クションです。システムがいろいろな動作状況に置かれても、開発ツールが機能するよ うに、MDLOS 内に組み込まれていますが、ユーザーの処理ルーチンの中にループの可能 性があるところには、ユーザー自身が組み込む必要がありますので、サンプル・プログ ラムの例示のように、下記命令行を挿入してください。 //debug routine C64MDL_DEBUG(); MDLOS 内では; z エラーの発生によりエラートラップ内でループしているとき( (C64_HPI_ERROR C64_HPI_ERROR) _HPI_ERROR) z Breaking Point でループをしているとき( (C64_debug_Break) C64_debug_Break) z およびすべての DSK の接続をおこなっているとき( (TEST_MDS_CONNECT) EST_MDS_CONNECT) に上記ファンクションが組み込まれていますので、開発システムは機能します。 1.5 開発システムの動作 開発システムは所定のレジスターに必要とされるデータを、GEL コマンドを用いて書き 込み、プログラム本体の実行モジュールを駆動させることにより実現します。基本的に は目標 DSK 内の要求されたデータを Super Visor DSK まで逆方向転送を用いて転送し ます。使用されるレジスターは以下のとおりです。(ツールに使用されるレジスター類 のみを記載してあります。)機能は目的のツールにより変わります。下表は一般的機能 を示しています。 DEBUG 管理レジスター 機能 0 以外で DEBUG 開始、目的によりコードが異なる。 目的 DSK の DSKADRS(0x11,0x21,--0x71),0xF1 はツールによる 目的とする DSK の転送開始実アドレス 転送数をワード単位で指定します。最小:9、最大:65534 ワ ード 5 DEBUG_Buffer 最終データが格納されます。途中の DSK にも同じ場所に最終デ ータが格納されます。 6 DEBUG_BreakCNT Breaking Point の指定 1 2 3 4 名称 DEBUG_SW DEBUG_ADRS DEBUG_BGN DEBUG_SIZE ツールを選択して DEBUG が開始されると、各々の DSK に逆転送(Slave から MSTR へ の転送)のための特有の Process ID が割り振られます。(DSKADRS の 4-7 ビットの値、 1-F) したがってユーザープロセス内で 1 から 0x0F の Process ID を使用しないで ください。 DEBUG 処理は Super Visor DSK から順次下方の DSK に向かって行われます。 DEBUG の処理を開始した DSK の次段の DSK が対象 DSK(DEBUG_ADRS)でない場合には、同 じ内容の DEBUG 管理レジスターが次段の DSK にコピーされます。コピーされるのは: DEBUG_SW、DEBUG_ADRS、DEBUG_BGN、DEBUG_SIZE、および DEBUG_Buffer です。 本処 理を開始したときは、DEBUG_SW が“0”以外になっていますので、次の DSK が目標 DSK になるまで同じ処理が繰り返されます。次段の DSK が目標 DSK(DEBUG_ADRS)の場合には その DSK の Process ID が活性化され、目標 DSK からデータ転送を開始します。管理レ ジスターのコピー作業の途中で、Super Visor (DSK_ADRS=0xF1)を検知した場合は、DEBUG は動作しません,あるいは、実装されている DSK 以外のアドレスを指定すると発生する エラーになりメッセージを出力して処理を停止します。 DEBUG でのデータ転送は、すべて Slave から Master への逆転送で行われます。そのた めに 本 DEBUG 処 理 を 利 用 す る ユ ー ザ ー は メ イ ン プ ロ グ ラ ム の な か で C64MDL_SYSQUE_SET ファンクションを組み込まなければなりません。逆転送のための転 送管理ブロックを予約して戻された QUE ポインターが SYS_BackwrdQUEpt レジスタ ー に 格 納 さ れ ま す 。 DEBUG 中 で は DEBUG 変 数 で 指 定 さ れ た 値 を 使 っ て “C64MDL_BACK_GO”ファンクションが実行されます。DEBUG 開始時に実行待ちの転送 QUE があるばあいは、DEBUG の転送が優先されます。そのためにユーザーは変更できません が、通常転送、および DEBUG 転送の優先順位はそれぞれ 2、および 1 に指定されて おり、DEBUG 転送が先に実行されます。 DEBUG により目標 DSK 内のメモリー内容を Super Visor に表示するために同じ内容が途 中のすべての DSK の DEBUG_Buffer にコピーされます。そのために DEBUG_Buffer 領域の 内容は破壊されますので、Main ルーチンのプログラム内で使用しないでください。 強制解除、あるいは使用を一時停止されるレジスター 以下のレジスターが指定されているときはシステムがループ状態から抜け出せない可 能性があり、DEBUG を実行できませんので、強制的に解除されます。また実行中の転送 がある場合には、転送が完了するまで DEBUG の実行を開始しません。 # レジスター名称 1 MDL_SEQUENCETST 2 FIXQUEKEY 3 MDLREADY コメント 処理順序管理レジスター;DEBUG 開始時に一時保存 して、0 に設定、DEBUG 終了後元に戻す。 転送 QUE 制御;DEBUG 開始時に一時保存して、0 に 設定、DEBUG 終了後元に戻す。 転送チャンネル管理レジスター、ほかの処理による 占有が解除されるまで待つが、1 万回のループでも 解除されない場合は強制解除を行う。この状態が発 生するのはすでにエラー状態になっている可能性 があります。警告メッセージが出ます。 重要:DEBUG_Buffer には転送途中および転送結果が格納されます。Super Visor DSK を 重要 含めてすべての DSK は Break Point の指定で停止しない限りは無限ループを続けます ので、ループ中のプログラム内で DEBUG_Buffer と同じメモリー領域を使用しないでく ださい。 1.6 LOG ツールの起動開始および処理の終了は下図のように”Tool LOG”に書き出されます。左端 の数値は連続番号です。表示文“Start”の左側に表記されているのは実行されている コマンド名です。終了時は end のみが表示されます。一度に処理できる GEL コマンド はひとつだけです。コマンドの終了前に別のコマンド要求があった場合には、赤字で Tool Busy の表示で警告され、警告されたコマンドは処理されません。コマンドは end を確認してから次を実行してください。 Tool LOG のクリア・リセットは RESET_MDL_Debug コマンドを使用してください。 その他注意事項: z ハングアップしている DSK がある場合には、ハングアップしている DSK を含みそれ より遠くにある DSK では開発ツールは動作しません。 z 開発ツールによるレジスター等情報の取得は、対象 DSK の直前の DSK から HPI ポー トを介して読み込んでいます。そのために対象 DSK がハングアップしていても,HPI ポートが破壊されていなければ開発ツールは機能します。(例外:Core_Register、 および breakingpoint は HPI ポートを使用しないでアクセスしているために読み 出し不可) z ハングアップしている DSK があるかどうかの確認は、MDLstatus を実行する。それ 以外のコマンドではハングアップしている DSK を含めるアクセスを行わないと警 告メッセージは出力されません。 z ハングアップしている DSK がある場合に MDLHALT を起動させると、コールドスター トが必要との警告メッセージが出力されます。 z ハングアップしている DSK がある場合にはコールドスタートによる再起動が必要 です。ERROR の場合はその箇所を修正して、MDLHALT による停止をしたあとにリコ ンパイルを行い継続します。 z 開発ツールの処理中にエラーが発生した場合には、エラー・メッセージは警告とし て出力され、エラーの取り扱いがされません。したがってエラー・トラップには入 りません。 z Super Visor DSK がハングアップしている場合には、TIME OUT エラーで終了しま す。 2 開発ツール 2.1 DEBUG 2.1.1 MDLHALT MDLHALT を実行すると DEBUG 処理ルーチィンから HALT トラップに入ります。HALT トラ ップもほかのトラップと同様に DSP が完全に停止する HALT モードになるのではなく、 特定の MEMORY 領域内でのループを実行して、ほかの DSK へのアクセスが発生しないよ うにしているだけです。下図のようなウインドウを表示します。 表示ウインドウの第 一列は表示番号です。二列目に LAYER 番号を表示しています。 MDS64 システムが HALT トラップに入るとほかのコマンドは受け付けません。MDLHALT が正常終了したかどうか は、本体パネルの CONNECT LED が全て消えていることによっても確認できます。 MDS64 システム内の DSK がハングアップしている場合に,MDLHALT を実行すると下図のよ う に 、二 行目 に ”COLD START REQUIRED” と表 示さ れ 、同 時に DSK Address (0x51 : Layer=0x05)がハングアップしていることがわかりますので、問題を解決してシステム の再起動をかけます。この場合ハングアップしている DSK より遠くにある DSK の状態は 不明です。 2.1.2 MDLstatus MDLstatus はシステムの状態を理解するために有効です。このコマンドを実行すると下 図のようなウインドウが表示されます。STATUS ウインドウは 3 種の情報を提供します。 z ERROR 状態 z Breaking Point 設定状態 z システムの初期化レベルです。 および 下の出力例では、Layer=4 で ERROR が発生しています。ERROR の MSG#,および VAL#はそ れぞれ、21 および 5 です。ERROR の内容は Output ウインドウにも出力されますが、 Output には各種のメッセージが出力されますので、気がつかない場合があります。 ERROR の内容、および対処方法は マニアル(エラー・コメントリスト:資料番号 MDS64007)を参照します。 STATUS ウインドウの第二項目は Breaking Point に関するものです。Breaking Point が 活性化されている場合に、BP at ##(##は Breaking Point#,詳細は Breaking Point の 項を参照)のように表示されます。もしその場所で Breaking Point トラップが発生して いる場合は下図の出力例のように ’& LOOPing’と赤字で表示されます。 STATUS ウインドウの第三項目は初期化レベルです。ここには MDLOS の LOAD2SLAVE レジ スタの値が表示されます。このレジスターはシステムの初期化状態により下表のような 値を保持しますので、初期化がどこまで完了したかを知ることができます。 下の STATUS 出力例では、LAYER 0 から 4 までが “1”なのに対して、LAYER 5 から 7 までが “3”になっています。これは最終段までの処理は、LAYER 5 から 7 までしか 完了しておらず、LAYER 0 から 4 まではなんらかの理由により最終処理が完了してい ないことを示しています。 LOAD2SLAVE の値 説明 0 1 2 3 4 対応するファンク ション 初期化開始 init_MSTR 次段へのコピー完了(ループ・モード) load_SLAVE_END 次段へのコピー完了(ストレート・モード) load_SLAVE_END 最終段までのコピー完了(ループ・モード) TEST_MDS_CONNECT 最終段までのコピー完了(ストレート・モード) TEST_MDS_CONNECT STATUS コマンドはシステムのハングアップ状態を知る一番よい方法です。システム内 にハングアップの発生している DSK が検知された場合は、該当する LAYER 場所で “SYSTEM ERROR:PLS COLD START”と赤字表示されます。ほかの GEL コマンドツールを使 用して、レジスター等の内容をしらべます。 2.1.3 BreakPoint Breaking Point は C64_debug_Break ファンクションを挿入することにより実現します。 void C64_debug_Break( C64_debug_Break unsigned short mdladdress, mdladdress unsigned int breakcnt) breakcnt (引数) mdladdress :停止させたい DSK アドレス、該当しなければ停止しません。 breakcnt :ポイント・レジスターと同値で停止します。 z 停止条件は、カウンター(MDL_Repeat)が 0 で且つ、DSK アドレス(DSK_ADRS)と ポイント・レジスター(DEBUG_BreakCNT)の双方が合致した場合です。 z アイドリング・モードに入ると、下記のようなメッセージを出力します。VALUE は指定されたポイントです。 (REF)( 0:SEC: 0:milSEC )(#13)=MSG= Origin: 11 *msg(67): Begin IDLE *VALUE Number= 37 , *VALUE(HEX)= 3 z メッセージ、DEBUG、MDLHALT,および 割り込み処理は実行されますが、他の 処理は行われません。転送チャンネルが占有されているばあいには、解除され るまで待ちますが、解除されない場合はエラーで停止します。 z アイドリング・モード LED(#2)が点滅します。 z ポイント・レジスターの内容が書き換えられたときは、ループから抜けて次の ステップから実行を再開します。新しいポイント・レジスターと条件が合致す る場所があればそこでアイドリング・モードになります。0 に書き換えて Breaking Point をリセットします。 メッセージ処理中にエラーが発生した場合はエラーループが優先され、エラーのアイド リング・モードに変わります。この場合ポイント・レジスターの内容を書き換えてもエ ラーのアイドリングから抜け出せません。 GEL メニューから BreakPoint を選択すると下図のようなダイアログが表示されます。 必要な入力を行った後に(例は, DSK ADDRESS=0x31,Breaking Point=8)Execute ボタ ンをクリックします。 GEL メニューから STATUS を実行して Breaking Point の設定状況を確認します。(下 図は部分) また出力ファイルには下のようなメッセージも表示されます。 (REF)(1936:SEC: 38:milSEC )(#16)**WARN** Origin: 31 *msg(111): No matching Break Point Found *VALUE Number= 10 , *VALUE(HEX)= 8 (注意) z Status では DEBUG_BreakCNT レジスターの値を表示します。プログラム本体で DEBUG_BreakCNT を設定している場合は、その命令行が実行されない限り、STATUS には表示されません。 z おおくの GEL コマンドは Super Visor DSK(0xF1)を対象 DSK として処理をするこ とができません。例外として本“BreakPoint” および 後述の“MDLQUE “コマン ドだけが Super Visor DSK に対してアクセス可能です。 (GEL コマンド実行時 に、Code Composer Studio(CCS)に設定されている Breaking Point は解除されます ので使用できません。CCS の Breaking Point を使用する必要がある場合は、gel File から GEL_BreakPtReset();行をコメントアウトしてから再読み込みをしてください。 z ハングアップが発生している DSK に対してHPIポートが破壊されていなければ、 大部分の GEL コマンドはアクセスできますが、Core_Register の読み出しと Breaking Point の設定はできません。 2.1.4 MDLwatch MDLwatch は MDS64 システムの任意の DSK の変数の値を Super Visor DSK まで転送して Code Composer Studio(CCS)のウインドウに表示する機能があります。この機能は MDS64 システムに含まれるすべての DSK 上の変数に同じアドレスが割り振られているために 可能となります。したがって同じアドレスになるように MDLwatch の対象になる変数は 固定アドレスをもつグローバル変数として定義されなければなりません。MDLwatch は 単一ワードの変数のみ取り扱えます。配列の場合には OpenMemory コマンドを使用して く だ さ い 。 MDS64 シ ス テ ム に 使 用 さ れ て い る DBFS 構 造 体 に は 専 用 の コ マ ン ド DBFS_bufmstr などを使用してください。 また MDLwatch の管理は変数名(Symbol)を用いて行いますが、実際のデータの転送はア ドレスにもとづき行っておりますので、Symbol と Address の両方の情報を保持した管 理用ファイルが用意されています。MDLwatch を使用するためにいくつかの下準備、お よび注意事項がありますので、下記のマニアルの指示に従ってください。 z MDLwatch を使用するために下記の準備をしておく必要があります。 1. Map File および watch File の格納場所、および file 名を確定しておくこと 2. Code Composer Studio(CCS)の Build Optons の Linker タグで Map File name を上 記格納場所、および File 名と合致させること。 Map File は Symbol Table の代わりに必要です。MDLwatch で表示要求があった場合に対 応するアドレスを抽出します。またプログラムを再コンパイルした場合に変更になった Symbol のアドレスも抽出します。watch File は MDLwatch に含まれる、Symbol および アドレスを保持します。Main プログラムに以下の二つの変数を初期化して定義してく ださい。ファイル名(Voice_eight128pt_16kHz)は任意です。 //required below two files for DEBUG_WATCH char mapfile[40]="C:¥¥MDS64¥¥Voice_eight128pt_16kHz.map"; char watchfile[]="C:¥¥MDS64¥¥Voice_eight128pt_16kHz.wat"; Build Optons の Linker タグで Map File name を上記 mapfile と同じ名前を指定します。 Mapfile を定義しない場合は、LINK 時にエラーが、また違う名前を指定した場合は MDLwatch_List の実行時に File Open Error の警告が出力され,DEBUG Tool は停止しま す。 Watchfile は Super Visor の初期化のときにすでにあれば読み込まれ、新しいアドレス で更新されます。 変数名が削除、あるいは変更された場合にはリストに not found の 表示がされます。Watchfile が書き込まれるのは、MDLwatch_GO コマンドを実行したと きです。MDLwatch_List で変数リストの変更をしただけでは反映されません。 z MDLwatch は二つのコマンドを使用して実行します。 MDLwatch_List は Watch の対象になる変数を登録するためです。 MDLwatch_GO は MDLwatch_List に登録された変数の実際の値を読み出すためです。 2.1.4.1 MDLwatch_List MDLwatch_List コマンドを選択すると下記のダイアログが表示されます。 このダイアログは、Watch List の; z 表示 z 追加 z 削除 を行います。 1. 一行目には、追加(0:ディフォルト)、削除(1)、あるいは、全削除(9)の いずれかの数値を記入します。これ以外の数値はエラーになります。 2. 二行目には変数番号を入力します。Watch List は全部で 20 個までの変数を処 理することができますが、このフィールドで入力された変数番号により処理さ れます。これ以外の数値はエラーになります。 3. 三行目で変数を指定しますが、アドレスを指定しますので、かならず“&”を 変数名の前につけてください。変数名だけの場合には、Super Visor 上で現在、 その変数が持つ値が入力値になります。システムでは MDS64 で許容される変数 に割り振られているアドレス(0x6c0)以下の値が入力されたときにはエラー で終了しますが、それ以上の場合には、正常入力とみなされて、MAP ファイル を検索します。Map ファイルに該当アドレスが無い場合には、”Not Found”の警 告によりその入力行は無視されます。しかし偶然、該当 Symbol がある場合に は、その Symbol 名が Watch List に記載されます。この場合には入力変数名と 違っていても、エラー表示がされません。 (注記)変数には配列の要素番号を使用できません。&testVar[2]はこの Address に対応する Symbol 名が MAP file にありませんので、不可です。このような場 合は OpenMemory を使って配列全体を読み込みます。 4. 四行目は表示桁数を指定します。1 の場合には 16 ビット表示ですが、それ以外 の場合はすべて、32 ビット表示になります。16 ビット表示が指定されている 変数でも、データの読み込みは32ビット単位です。表示はこの二種類だけで す。これ以外のグラフ等を含む表示形式で表示させる場合は、OpenMemory を使 用してください。 表示された MDLwatch_List ダイアログをブランクのまま Execute ボタンをクリックす ると Watch List の再表示が行われ、現 watchfile の内容が表示されます。プログラム の変更等により watchfile 上の変数(Symbol 名)が現 MAP ファイルに含まれていない 場合は, Not Found の表示で警告されます。 MDLwatch_List ダイアログにより変数の追加・削除を行います。このリストは変数のア ドレスと名称を含むだけで、実際の値を得るためには、次の MDLwatch_GO を使用します。 2.1.4.2 MDLwatch_GO MDLwatch_GO コマンドを選択すると下記のダイアログが表示されます。このダイアログ は DSK ADDRESS のみを入力します。アドレスを指定(本例では 0x51)あるいはディフ ォルト値(設定方法は RESET_MDL_Debug 参照)を設定して Execute ボタンをクリックし ます。 下図は最終的に得られた Watch List です。 2.1.5 OpenMemory OpenMemory を選択すると下のダイアログが表示されます。 z DSK ADDRESS : 目的 DSK のアドレス(0x11,0x21,0x31 など)を入力します。DEBUG する DSK がディフォルト DSK の場合は,ディフォルト値を使用します。ディフォル ト値は Gel File の中でグローバル変数として定義されていますので、変更する際 には下記の宣言での初期値を変更して、GEL ファイルの再ロードをしてください。 このディフォルト値はすべてのツール・コマンドに適用されます。 int z defdskaddress = 0x11; File Address(&Symbol): 配列などのアドレスを入力します。変数名の先頭に“&” をつけて明確にアドレスであることを示します。配列の場合には“&”が無くても アドレスが入力されますが、出力表に表示されるアドレス値に注意をしてください。 アドレスをヘキサ数値で直接入力できます。ディフォルト値はありません。無入力 の場合は アドレス 0 からの値が読み取られます。 (注意 1)アドレスおよび DEBUG_SIZE の入力には注意が必要です。アドレスはワ ード境界である必要があります。SIZE はワード単位で入力しますので最終アドレ スは、入力がワード境界でしたら、問題ありません。ワード境界で無い場合は警告 が表示されツール動作が停止します。この制限は OpenMemory 以外の全ツールに適 用されます。 (注意 2)アドレス値および SIZE から計算される MEMORY 領域が C6416DSK で定義 されている MEMORY 領域に連続して含まれている必要があります。領域から外れる 場合は警告が表示されツール動作が停止します。この領域はDSPシステムの全ア クセス可能領域をカバーしていますので、MDS64 システムの DSK 間転送で制約され ている MEMORY 領域より拡張されています。また使用されている C6416 DSK で定義 さ れ て い る 外 部 拡 張 MEMORY 領 域 ( 0xA0000000 、 お よ び 0xB0000000 、 LENGTH :0x10000000)は実際の MEMORY が実装されていなくても読み込み処理を行 います。表示結果は不定です。) z SIZE_word (10<xxx<0xFFFF):読み出すデータ量をワード単位で入力します。表示さ れている (10<xxx<0xFFFF)はデータ転送に用いられている逆方向転送ファンクシ ョンの最大値です。実際に転送できるデータ量は使用されているバッファーの大き さにより決まります。DEBUG_Buffer にディフォルトで定義されている配列(tmpdbg) を使用する場合には、そのサイズにより決定されます。tmpdbg 配列のサイズは "C64_emif2hpi.h"に含まれている下記 define 行により定義されます。 //DEBUG buffer size #define defBUFFERSIZE nFFT*2 サイズの入力値が上記 defBUFFERSIZE で定義されている値を超える場合は、警告 が表示されツール動作が停止します。DEBUG_Buffer に任意の Memory 領域(アドレ ス、配列)を指定した場合は、システムはサイズのチェックを行いません。ユーザ ーの責任になります。 z DEBUG_Buffer(def:tmpdbg): デ ー タ 転 送 を 一 時 格 納 す る バ ッ フ ァ ー で す 。 DEBUG_Buffer 領域はすべての DSK 内で書き換えられますので、注意して場所、お よびサイズを指定してください。 2.1.5.1 OpenMemory ツールの出力 本例では、DSK_ADRS(0x51)での演算結果を表示するケースを想定しています。 z プログラム中で DSK_ADRS(0x51)内の演算終了点に Breaking Point を設定します。 (下例では#12、この時点ではまだ演算を終了していません。) z 次に現在ループ状態にある DSK_ADRS(0x11)の Breaking Point をクリア(BreakPoint ツールで“0“を入力)して処理をすすめ、下図のように DSK_ADRS(0x51)の Breaking Point #12 でループ状態にあることを確認します。DSK_ADRS(0x11)がループして いるのは、次のデータを受け取ったからです。(設定方法は技術資料 MDS64001 参 照) z 演算が終了して処理が停止していますので、OpenMemory ダイアログに下例のよう に入力して Execute ボタンをクリックします。データは 128 ポイント複素数FFT の演算結果で、データは既知の格納場所に実数、虚数部が交互に配列され、32 ビ ット浮動小数点で計算されています。ツールが使用する転送 BUFFER はディフォル トを使いますので、最終的に読み込まれたデータは, Super Visor DSK の tmpdbg ファイルに格納されます。 z Execute ボタンのクリックにより下図のような MDLOS Memory ウインドウが表示さ れます。一行目左端の数値はダイアログで入力された目標 DSK の ADDRESS です。 その右側は同じく読み出し領域の先頭の Memory ADDRESS です。一行目右端の ADDRESS は転送 BUFFER として指定した tmpdbg ファイルの ADDRESS です。変更した 場合には異なります。この ADDRESS は表示方法を変更する際に重要になります。以 下の例では, tmpdbg として説明されています。二行目には、“Ref to copied,First 50 data HERE”と表示されていますが、このウインドウには最大で 50(ワード) が表示されます。それ以上のデータはバッファーにコピーされますという注意書き です。このウインドウの3行目以降最左端には目標 DSK 内のデータの ADDRESS が順 番に表示されています。ADDRESS の右側の数値が読み込まれたデータです。データ は一行に 2 ワードずつ表示されています。下の例では読み込まれたデータは赤色表 示されていますが、この赤色表示は現在の表示 Buffer(転送 Buffer と違います。) の値と読み込まれたデータが異なる場合に赤色表示されます。ほかのツールを使用 しないでこのまま OpenMemory ツールを再度実行すれば、表示は黒色に変わります が、表示 Buffer はすべてのツールで共通ですので、ほかのツールを実行後に同じ OpenMemory ツールを実行したときには同じデータにもかかわらず赤色表示されま す。 2.1.5.2 OpenMemory ツールのほかの表示方法 前項で説明したように OpenMemory ツールの出力は 50 ワードに制限されています。また 出力形態も 32 ビットのヘキサ表示のみです。表示方法を変更したい場合には、目的の データはすべて転送 Bufer に格納されていますので、ユーザーはこの Buffer を使用し て、TI 社の Code Composer Studio(CCS)の表示機能を使うことができます。本例では 読み込まれたデータのグラフ表示を行っています。 z CCS のメニューから ViewÆGraphÆTime/Frequency…を選択します。 表示されたダイアログに例示のように入力します。Start Address の&tmpdbg[1]は、 交互に配置された複素数値の虚数部の先頭 Address です。Index Increment は 2 で ひとつおきに読み込まれます。データ数は 128 ポイントで、データは 32 ビットの 浮動小数点数です。この例では既知のサンプル波形の FFT を計算していますので、 ほかのダイアログの設定はディフォルトのままです。 z OK ボタンをクリックすると下のようなグラフが表示されます。 2.1.6 RESET_MDL_Debug 本ツールは、“Tool LOG”ウインドウの初期化を行います。 そのほかに下記レジスターの初期化を行います。 DEBUG_SW レジスターをクリー GEL_RTNKEY の強制終了 “ToolLOG”ウインドウはツールの JOBLOG です。初期化エラー、タイムアウトなども本ウ インドウに表示されます。 2.2 Registers 本ツールグループは TI 社の Code Composer Studio(CCS)メニューの ViewÆRegisters に準じた Register の表示を実行します。 これらの Register 類の説明は TI 社のマニアルを参照してください。 2.2.1 Core_Register 本ツールを選択すると下図のようなダイアログが表示されますので、目標 DSK の ADDRESS を入力して Execute ボタンをクリックします。 結果は下記のウインドウに表示されます。本表内には general-purpose register files (A and B)、および PC(Program Counter)が含まれていません。MDS64 システムでは DSP を完全に停止することができませんので、これらの Register は除外してあります。 (注記)ほかのツールは目標DSKがハングアップ状態であってもHPIポートが機能 していればツールを実行して目的データを取得できますが、Core_Register は目標 DSK 内に入ってデータを取得していますので、ハングアップ状態のときは警告メッセージを 表示して停止します。 2.2.2 SirialPort 表示された SirialPort ダイアログに目標 DSK_ADRS を入力して、Execute ボタンをクリ ックすれば Sirial Port レジスターの値が表示されます。MDS64 システムでは Port#2 のみを使用していますので、得られた数値は Port#2 に関するものです。他の Port に変 更するのは GEL ファイルを修正してください。 2.2.3 Timer_Register Timer_Register は目標 DSK および Timer 番号を入力します。 C6416T DSP には3個の Timer が組み込まれています。MDS64 システムで使用している Timer は#1 です。 2.2.4 Interrupt_Register Interrupt_Register の入力、および出力例を下に示します。 2.2.5 EDMA_Register EDMA_Register の入力、および出力例を下に示します。 2.2.6 QDMA_Register QDMA_Register の入力、および出力例を下に示します。 2.2.7 EMIF_Register EMIF_Register ダイアログの入力、および出力例を下に示します。 2.3 MDLOS KEY Control 本ツールは MDLOS で用いられている二つの重要な制御ブロックの内容を検査するため に使用します。 2.3.1 MDLQUE 本ツールは MDS64 システムで DSK 間のデータ転送に用いられている MDLQUE の制御ブロ ックの情報を表示します。ツールを選択すると下図のダイアログが表示されますので、 目的 DSK および QUE Point を入力します。MDLQUE はアドレス 0x00000200 から 32 ブロ ックが予約されており、1 ブロックは4ワード構成です。QUE Point は 0 から開始し ます。ほかのツールと異なり、本ツールに限っては、Super Visor DSK(0xF1)の情報も 表示することができます。 ダイアログの Execute ボタンをクリックすると下のようなテーブルが表示されます。 z Owner には This DSK Parent DSK z This DSK 、 および Parent DSK の二種類があります。 : 本 DSK が転送の起動を開始することができます。 : 起動は Parent DSK が行い、本 DSK は従属的処理を実行します。 Counter Part は従属 DSK 内の対応する MDLQUE Point#です。すべての MDLQUE 制御 ブロックは従属的処理のあるなしを問わず、従属 DSK と対になっています。 z Priority Level は DSP 内の EDMA 処理に使用される優先順位です。通常転送は Level 2 で処理されますが、ツールなどに使用される逆方向転送では、優先順位が 高くなります。そのために通常転送が待ち状態でも、ツールが優先的に実行されま す。 z QUE type は Dedicated Use あるいは, Non dedicated type の表示になります。 Dedicated Use 固定順方向転送です。File や転送サイズなどを変更する 自由度はありません。QUE が使用中でも処理を進めますの で、パイプライン処理を高速に実行するために使用しま す。 非固定順方向転送です。一般転送に用います。 Non dedicated type (詳細は技術資料参照) z QUE Status は QUE の現在の状況をしまします。ただし本状態コードは割り込み処 理、あるいはほかの DSK からのアクセスにより変更されますので、ツールが読み込 んだ状態が最新のものとは限りません。Status に含まれる状態コードは: z ¾ Open Space :本ブロックは未使用です。 ¾ Reserved :予約されています。 ¾ Wait for Transmission :転送のための QUE 設定が完了しています。 ¾ Wait for Response :転送が実行され、終了を待っています。 ¾ Reserved for correspond :従属 DSK での予約 ¾ Passed to correspond :従属 DSK での作業の準備 ¾ Post Execution :従属 DSK での実行 ¾ Pre Execution :現バージョンでは使用されていません。 Packet size は転送を分割する場合の最小サイズを表示します。分割しない場合は 0 が表示されます。後述する Words/Frame と密接な関係があります。現在選択でき る Packet Size は、 0,16,32,64,128,256,512 です。 z Direction は転送方向です。Master から Slave、あるいはその逆方向があります。 z Process ID は転送完了後に処理が必要な場合に設定する Process ID です。 順方向、 および 逆方向ともに設定できます。処理の行われる DSK は転送データを受け取っ た DSK です。Process ID が表示されている場合は、最後の転送処理で使用された Process ID です。0 は後処理が要求されていません。 z Words/Frame は上述の Packet size とともに転送サイズを表示します。MDS64 シス テムで MDLQUE を使用した転送は、TI 社の EDMA 機能による転送です。転送サイズ が大きくなると、ほかの割り込み等が処理されなくなり、実時間処理を実現できま せんので、一回の転送サイズを細分化して自己の EDMA への chaining を行い、大き なサイズの転送中でも途中で割り込み処理ができるように設定されています。この 機能を使用する場合は、上述の Packet Size を指定します。Packet Size が指定さ れた場合は、Packet Size が TI 社のマニアルにある Element Count に対応します。 Frame は Frame count に対応します。したがって TI 社の定義に基づき、“2” Frame の転送を行う場合は、Frame count は“1”になります。 下のコーディング例は、送出側、受け入れ側共に DBFS file を使用した順方向固 定転送の設定例です。Packet を使用しています。 iwords は全転送数を packet 数 で除しています。この時点では iwords は Frame として使えませんので制御ブロッ ク作成時に、“1”を減算して TI 社の定義に会うように変更されます。本ツール 実行後得られる Words/Frame は減算された後の数値が表示されますので、間違わ ないようにしてください。Packet を使用しない場合の iwords は転送量をそのまま 記入します。 //Forward FIX data channel using DBFS inpkt = 16; //0,16,32,64,128,256,512 :packet size iwords = 2*nFFT/inpkt; //transmission size in words TGETadrs=0; //to DSK address (current SLAVE) PTdmafix = C64MDL_FIX_SET(TGETadrs,iwords,inpkt,&bufmstr,&bufslav); From DSK/To DSK はそれぞれの DSK Address です。 From/To Address はそれぞれの DSK における絶対 Address です。 2.3.2 MDLQUE_DUMP Address 0x0200 から 0x3FF まで格納されているすべての MDLQUE の内容を出力します (180 ワ ー ド ) 。 転 送 BUFFER は tmpdbg を 使 用 し て い ま す の で 、 そ の 最 大 値 ("C64_emif2hpi.h" で定義されている defBUFFERSIZE )を超える場合は、それより も少ないサイズを指定してください。出力は 4 ワードずつのグループに分けられますの で、出力サイズが 4 の倍数で無い場合は、切り捨てられます。 下の表は出力例です。 2.3.1 MSGQUE_DUMP ADDRESS 0x400 から 0x57F まですべての MSGQUE 内のレコードを出力します。最大値は 96 ワードですが転送 BUFFER が 96 以下の場合はそれよりも少ないサイズを指定してく ださい。 出力は下図のように一ラインごとに 3 ワードが記載されます。MSGQUE は、トラブル発 生時にシステムの解析用として使われます。システムが正常に動作している場合には常 にブランクとして表示されます。これはほかのツールを実行中であっても、メッセージ の出力が最優先で行われるためです。 2.4 MDLOS KEY Registers 本ツールグループは MDLOS で使用されている REIGSTER の値を読み込む為に用意されて います。 2.4.1 MDLOS_reg0 MDLOS_reg0 を選択すると下記のダイアログが表示されますので目標 DSK ADDRESS を 入力して Execute ボタンをクリックしてください。 下図のような Register 類の現在の値が得られます。 2.4.2 MDLOS_reg1 MDLOS_reg1 を選択すると下記のダイアログが表示されますので目標 DSK ADDRESS を 入力して Execute ボタンをクリックしてください。 下図のような Register 類の現在の値が得られます。 2.4.3 MDLOS_reg2 MDLOS_reg2 を選択すると下記のダイアログが表示されますので目標 DSK ADDRESS を 入力して Execute ボタンをクリックしてください。 下図のような Register 類の現在の値が得られます。 2.4.4 PassCount PassCount はプログラム内に設定したチェック・ポイントです。ユーザーは任意の場所 に下記ファンクションを挿入することにより通過回数を知ることができます。 MDLpasscnt(XX); xx は 0 ――> 25 までの任意の整数 MDLpasscnt ファンクションは MDLOS 内の配列 Pointind[30]の該当箇所を“1”ずつ加 算します。PassCount では 26番から29番までをシステムで下記のように予約使用 していますのでユーザーは使えません。 PassCount の予約番号:(すべて MDLQUE_exec ファンクション内で Master から Slave への転送要求がある時に適用されます。) z PassPNT#26:以下の条件の時にセットされる。 Sequence test が要求されているとき、 (MDL_SEQUENCETST が“0”でない)。 実行中の TASK が存在する、(MDL_TASUKI2 != 0)。 次段の DSK の受け入れ準備が完了している。(MDL_TASUKI1 == 0) 実行中の TASK 順序が次段の DSK の完了した TASK に合致している。 z PassPNT#27:転送時に Slave 側 z PassPNT#28:転送時に Master 側 DBFS が読み出し可能の時にセットされる。 z PassPNT#29:Master から Slave への転送 EDMA を開始した時にセットされる。 DBFS が書き込み可能の時にセットされる。 PassCount を選択すると下記のダイアログが表示されますので、目的の DSK ADDRESS を 入力して Execute ボタンをクリックします。 下記のような PassCount テーブルが表示されます。参照のために Super Visor の PassCount も併記されています。 (注記) #26 から#29 はシステムの初期化時のデータも含んでいます。この値は初期 化の Load Module の大きさにより異なります。ユーザー処理での正確な通過回数が必要 な場合は、上記配列をリセットしてください。 2.4.5 PQSRCount Master から Slave への転送命令の実行直前に Priority Queue Status Register(PQSR)の 値をモニターしています。もし四つの転送要求 QUE の中に処理未完の要求があれば、 該当レベル箇所に“1”が加算されます。MDLOS はこの結果により処理を変更しませ ん。ユーザーは転送要求がどの程度システムのほかの転送(L2 やHPI)と競合して いるかを確認してください。 PQSRCount を選択すると下記のダイアログが表示されますので、目的の DSK ADDRESS を 入力して Execute ボタンをクリックします。 下記のような PQSRCount テーブルが表示されます。参照のために Super Visor の PQSRCount も併記されています。このデータは各 DSK の配列(PQSRCNT)に記録されて います。 2.5 MDLOS Memory files 本ツールグループは MDLOS で使用されている標準 file の値を読み込む為に用意されて います。標準 file には; z 通常配列: tmpbuf1, および z DBFS file: bufmstr および tmpbuf2 bufslav の4file を含みます。 2.5.1 tmpbuf1 および tmpbuf2 本ツールの使用方法は両 file 共同じですので、tmpbuf1 について説明します。 tmpbuf1 を選択すると下記のダイアログが表示されますので、目的の DSK ADDRESS を入 力して Execute ボタンをクリックします。 転送サイズの変更が可能です。入力しない場合は default 値になります。default 値は MDS64.gel file で初期化されている OpenMemory, tmpbuf1, および defgelsize が適用されます。本 default 値は tmpbuf2 で使用されていますので、変更する場合は留 意してください。配列 tmpbuf1 は Main プログラム の中で defBUFFERSIZE の大きさで 定義されています。また本ツール実行の際も、defBUFFERSIZE より大きなサイズ要求は 警告により実行を停止します。したがって tmpbuf1 配列の定義、および本ツールを使用 した転送要求のサイズには注意が必要です。 転送 Buffer は変更できません。 tmpdbg が使用されています。OpenMemory の場合と同 じように、グラフを含めた各種の表示が可能です。 下記のようなデータ・テーブルが表示されます。表示は OpenMemory と同じです。要求 サイズが 1 の場合は、1 ワードのみを表示しますが実際には逆方向転送の仕様により転 送 Buffer は 9 ワードのデータ転送を行います。 2.5.2 DBFS_bufmstr および DBFS_bufslav 本ツールは MDS64 システムで主データの転送を行っている DBFS file の内容を Super Visor DSK まで転送します。 bufmstr は送出側 file です。MSTR DSK 内でデータの作 成を行います。 bufslav は受け入れ側 file です。SLAVE で MSTR からのデータを受け 取ります。これらの file は二重バッファー構造をしており、データの授受の管理のた めに file 内に専用の制御ブロックを保有しています。転送 file は DBFS 専用の file (bufdbg)を用いており、転送された file を同一の構造体として読み込むことができ ます。 これらの3個の file(bufmstr, bufslav, bufdbg)は、MAIN プロフラムの中で同じ構造 体として定義されなければなりません。また本ツールを使用しない場合でも、bufdbg file は宣言されている必要があります。その場合は縮小したサイズでもかまいません。 DBFS_bufmstr を選択すると下記のダイアログが表示されますので、目的の DSK ADDRESS を入力して Execute ボタンをクリックします。 転送 BUFFER の変更はできません。”bufdbg” が使用されます。またサイズの変更もでき ません。プログラム本体内で “2*defBUFFERSIZE+4” に設定されます。 ツールの実行が完了すると下表のような MDLOS Memory ウインドウが表示されます。し かしこれはデータのベタ打ちですのであまり参考にできません。 構造体としてデータを観測するためには、TI社の Code Composer Studio(CCS)の Watch ウインドウを使用します。 下のテーブルは CCS の Watch ウインドウで Super Visor に転送された file を表示して います。最初の 4 ワードは制御ブロックです。データは buf1 および ています。 buf2 に格納され 3. エラー・メッセージ 3.1 Tool LOG ウインドウに表示されるエラーメッセージ 0x0004 Tool Busy GEL_RTNKEY が“0”でない場合に出力されます。ほかのツールが終了していません。 完了するまで待つか、あるいは“RESET_MDL_Debug”により強制終了させます。改善し ない場合は、Cold Start にしてください。 0x000C System is HALT MODE MDLHALT ツールを実行した後にほかのツールは実行できません。 0x0012 System is NOT Initialized “LOAD2SLAVE”レジスターの値が1以上、4以下でありません。初期化に問題があります。 0x000F No Super Visor DSK found CCS が接続されている DSK の Address が ”0xF1”でないときに出力されます。初期化が 完了していません。 0x0003 ERROR TIME OUT ==== ツールの実行が所定の時間内に終了しないときに表示されます。また Super Visor DSK がハングアップしていてもこのエラー・メッセージが出力されます。Super Visor がハ ングアップしている場合には, MDLHALT が実行できませんので、原因を取り除いた後に Cold Start をかけてください。 3.2 Output ウインドウに表示されるエラーメッセージ Output ウインドウはシステム関連の各種メッセージが出力されます。本項ではデバッ グ・ツールに関係が深いものを列挙します。またツール実行中のエラー・メッセージは すべて警告(**WARN**)メッセージになります。ERROR の表示がある場合は、ツール処理 の開始前、あるいは終了後に発生したエラーです。 z msg(49): Illegal Memory Range!!! (REF)(147:SEC: 251:milSEC )(#26)**WARN** Origin: F1 *msg(49): Illegal Memory Range!!! *VALUE Number= 51 , *VALUE(HEX)= 3000000 定義されていない Memory 領域からのデータ転送が要求されました。下表の領域からは ずれるとエラーが表示されます。MDS64 システムはワード単位で転送しますので、最後 のアドレスは各領域の最後のワードをアクセスするアドレスです。 (注記:この Memory 領域が適用されるのはツールのみです。MDLOS で使用される通常の データ転送は内部 Memory (0x00100000 Byte),および外部 SDRAM だけを対象にしていま す。制御 register 等の転送はできません。) /* On-chip memory map */ GEL_MapAdd( 0x00000000, 0, 0x00100000, 1, 1 ); // Internal Memory GEL_MapAdd( 0x01800000, 0, 0x00000058, 1, 1 ); // EMIFA CTL REGS GEL_MapAdd( 0x01840000, 0, 0x00008300, 1, 1 ); // L2 REGS GEL_MapAdd( 0x01880000, 0, 0x0000000C, 1, 1 ); // HPI REGS GEL_MapAdd( 0x018A0000, 0, 0x00000004, 1, 1 ); // HPI REGS cont. GEL_MapAdd( 0x018C0000, 0, 0x00000040, 1, 1 ); // MCBSP0 CTL REGS GEL_MapAdd( 0x01900000, 0, 0x00000040, 1, 1 ); // MCBSP1 CTL REGS GEL_MapAdd( 0x01940000, 0, 0x0000000C, 1, 1 ); // TIMER0 CTL REGS GEL_MapAdd( 0x01980000, 0, 0x0000000C, 1, 1 ); // TIMER1 CTL REGS GEL_MapAdd( 0x019C0000, 0, 0x0000000C, 1, 1 ); // Interrupt Selector GEL_MapAdd( 0x01A00000, 0, 0x00000800, 1, 1 ); // EDMA PARAM GEL_MapAdd( 0x01A0FF9C, 0, 0x00000064, 1, 1 ); // EDMA REGS GEL_MapAdd( 0x01A40000, 0, 0x00000040, 1, 1 ); // MCBSP2 CTL REGS GEL_MapAdd( 0x01A80000, 0, 0x00000058, 1, 1 ); // EMIFB CTL REGS GEL_MapAdd( 0x01AC0000, 0, 0x0000000C, 1, 1 ); // TIMER2 CTL REGS GEL_MapAdd( 0x01B00000, 0, 0x00000204, 1, 1 ); // GPIO REGS GEL_MapAdd( 0x01B40000, 0, 0x00000020, 1, 1 ); // (C6416T only) UTOPIA GEL_MapAdd( 0x01B80000, 0, 0x00000054, 1, 1 ); // (C6416T only) TCP/VCP GEL_MapAdd( 0x01C00000, 0, 0x00000028, 1, 1 ); // (C6416T only) PCI CNTL GEL_MapAdd( 0x01C1FFF0, 0, 0x00000010, 1, 1 ); // (C6416T only) PCI CNTL GEL_MapAdd( 0x01C20000, 0, 0x0000000C, 1, 1 ); // (C6416T only) PCI EEPROM GEL_MapAdd( 0x02000000, 0, 0x00000034, 1, 1 ); // QDMA REGS GEL_MapAdd( 0x30000000, 0, 0x04000000, 1, 1 ); // MCBSP0 Data, EDMA map GEL_MapAdd( 0x34000000, 0, 0x04000000, 1, 1 ); // MCBSP1 Data, EDMA map z GEL_MapAdd( 0x38000000, 0, 0x04000000, 1, 1 ); GEL_MapAdd( 0x50000000, 0, 0x0000008C, 1, 1 ); // MCBSP2 Data, EDMA map // (C6416T only) TCP/VCP /* Off-chip GEL_MapAdd( GEL_MapAdd( GEL_MapAdd( GEL_MapAdd( GEL_MapAdd( // // // // // memory map */ 0x60000000, 0, 0x64000000, 0, 0x80000000, 0, 0xA0000000, 0, 0xB0000000, 0, 0x00000008, 0x00040000, 0x01000000, 0x10000000, 0x10000000, 1, 1, 1, 1, 1, 1 1 1 1 1 ); ); ); ); ); CPLD EMIF-B, CE0 FLASH EMIF-B, CE1 16MB SDRAM EMIF-A,CE0 EMIF-A, CE2 EXPANSION EMIF-A, CE3 EXPANSION msg(68): imcomplete in previous request of DEBUG processing (REF)( 13:SEC: 532:milSEC )(#13)**WARN** Origin: 61 *msg(68): imcomplete in previous request of DEBUG processing *VALUE Number= 21 , *VALUE(HEX)= 6 このエラーはツールの実行の際に設定する逆方向転送の Process ID が設定時にすでに 設定状態になっているために発生します。直前のツールの実行にトラブルが発生した可 能性があります。System Error ですので,Cold Start をかけてください。 z msg(83): Fail ;Previous Debug request not complete (REF)( 21:SEC: 976:milSEC )(#13)**WARN** Origin: 51 *msg(83): Fail ;Previous Debug request not complete *VALUE Number= 0 , *VALUE(HEX)= 0 System Error です。ツールの制御 Register を次段 DSK にコピーをするときに次段 DSK の制御 Register が空でありません。直前ツールによるエラーが考えられます。Cold Start をしてください。 z (84): Fail (REF)( 52:SEC: *msg(84): Fail *VALUE Number= in Debug Protocol, try again その 1 70:milSEC )(#13)**WARN** Origin: 61 in Debug Protocol, try again 10 , *VALUE(HEX)= 0 MDS64 システムのツールでは各 DSK 間のデータ転送に毎実行時にプロトコル KEY を作成 しています。本エラーはプロトコルミスによる System Error です。Cold Start をして ください。 z msg(84): Fail in Debug Protocol, try again その 2 (REF)( 17:SEC: 755:milSEC )(#14)**WARN** Origin: 61 *msg(84): Fail in Debug Protocol, try again *VALUE Number= 20 , *VALUE(HEX)= 0 上記エラーと同じように、予約されている Process ID が次段 DSK からもどされた ID と 異なるために発生します。VALUE Number=20 のちがいにより判別します。 z msg(84): Fail in Debug Protocol, try again その 3 (REF)( 17:SEC: 755:milSEC )(#14)**WARN** Origin: 61 *msg(84): Fail in Debug Protocol, try again *VALUE Number= 30 , *VALUE(HEX)= 0 次段 DSK から制御がもどされた後に、次段 DSK の制御 Register をクリアします。クリ アに失敗した場合のエラーです。VALUE Number=30 により判別します。 z msg(88): Detect ERROR DSK/Super Visor during Debug process (REF)( 60:SEC: 321:milSEC )(#14)**WARN** Origin: 71 *msg(88): Detect ERROR DSK/Super Visor during Debug process *VALUE Number= 21 , *VALUE(HEX)= 0 要求された DSK ADDRESS に合致する DSK がありません。実装されている DSK よりも大き な DSK ADDRESS を要求した場合に出力されます。 z msg(108): Fail to update debug control (REF)( 21:SEC: 541:milSEC )(#14)**WARN** Origin: 21 *msg(108): Fail to update debug control *VALUE Number= 50 , *VALUE(HEX)= F0001 Status ツールによりハングアップ状態がわかりますが、 Status ツールを使用する以前に、ハングアップしている DSK(0x31)から DSK(0x41)をア クセスした場合に、本メッセージが出力されます。通常(core register ツール以外)は DSK(0x41)のデータは、DSK(0x31)から読み込みますので、DSK(0x31)がハングアップし ているためにエラーになります。この警告が出たら Status ツールを実行してハングア ップを確認してください。 z msg(111): No matching Break Point Found (REF)( 93:SEC: 822:milSEC )(#16)**WARN** Origin: 51 *msg(111): No matching Break Point Found *VALUE Number= 10 , *VALUE(HEX)= 19 エラーではありません。 MDS64 システムでは、本体プログラム内に Breaking Point を設定するために挿入した C64_debug_Break ファンクションを処理するたびに Debug_pnt_LST Register の該当ポイントにフラッグがたちます。 しかしほかの Breaking Point で停止している等の理由により、目的の C64_debug_Break ファンクシ ョンが処理されていない場合は、フラッグがたっていませんので、この警告メッセージ が出力されます。 z msg(124): Illegal Target DSK address for DEBUG!! (REF)( 26:SEC: 813:milSEC )(#20)**WARN** Origin: F1 *msg(124): Illegal Target DSK address for DEBUG!! *VALUE Number= 10 , *VALUE(HEX)= 81 DSK ADDRESS が規定値で無い場合に出力されます。 z msg(127): System error MDLREADY forced to free (REF)( 13:SEC: 477:milSEC )(#13)**WARN** Origin: 71 *msg(127): System error MDLREADY forced to free *VALUE Number= 0 , *VALUE(HEX)= 0 MDS64 システムはツールの実行時に重要レジスター類の退避をした後に、転送 Channel が占有されている場合は、終了するのを待ちます。一定時間経過後も終了しない場合は、 Channel の占有を強制解除して、ツールの実行を優先させます。 (注記:)本エラーが出力される場合は、本体プログラムに問題が発生している可能性が あります。データ転送部を再確認してください。 z msg(133): Illegal DEBUG buffer size その 1 (REF)(860:SEC: 594:milSEC )(#21)**WARN** Origin: F1 *msg(133): Illegal DEBUG buffer size *VALUE Number= 10 , *VALUE(HEX)= 10000 転送サイズは逆方向転送ブロックサイズで制限されています。最大値は 0XFFFF です。 z msg(133): Illegal DEBUG buffer size その 2 (REF)(1051:SEC: 858:milSEC )(#22)**WARN** Origin: F1 *msg(133): Illegal DEBUG buffer size *VALUE Number= 20 , *VALUE(HEX)= 101 上記エラーと同じようですが、VALUE Number が 10 と 20 で違います。このエラーは転 送 BUFFER にディフォルトの”tmpdbg”を使用したばあいに、そのディフォルト サイズ (defBUFFERSIZE)より転送要求サイズが大きい場合に表示されます。 z msg(134): Fail, DEBUG BUFFER address less than 0x900 (REF)(1411:SEC: 52:milSEC )(#30)**WARN** Origin: F1 *msg(134): Fail, DEBUG BUFFER address less than 0x900 *VALUE Number= 10 , *VALUE(HEX)= 200 MDS64 システムの 0x0000 から 0x0900 までは,MDLOS で使用する Register 類の専用領 域です。この領域内に転送 Buffer を指定するとエラーになります。 z msg(135): Variable missing during WATCH LIST (REF)( 97:SEC: 648:milSEC )(#22)**WARN** Origin: F1 *msg(135): Variable missing during WATCH LIST *VALUE Number= 10 , *VALUE(HEX)= C MDLwatch_List の実行中にエラー発生:変数追加要求時に変数が無い。System Error で す。 z msg(136): Error, Variable length exceed MAX 20 (REF)( 39:SEC: 677:milSEC )(#20)**WARN** Origin: F1 *msg(136): Error, Variable length exceed MAX 20 *VALUE Number= 30 , *VALUE(HEX)= 17 MDLwatch_List の実行中にエラー発生:変数名は最大 20 で制限されています。 z msg(137): fail: file open (REF)(289:SEC: 841:milSEC )(#19)**WARN** Origin: F1 *msg(137): fail: file open *VALUE Number= 40 , *VALUE(HEX)= 9CEB8 MDLwatch_List の実行中にエラー発生:File Open Error です。VALUE に Open 対象の file 名の Address が表示されています。 CCS の Watch ウインドウで確認してください。 ツールの場合の File Open Error は MAP file が見つからないばあいです。システム初 期化の際にも MAP file を読み込みますが、そのときには File が無くてもエラーにはな りません。 z msg(142): Breaking Point out of range: (REF)(1543:SEC: 191:milSEC )(#26)**WARN** Origin: F1 *msg(142): Breaking Point out of range: *VALUE Number= 10 , *VALUE(HEX)= 20 Breaking Point の入力範囲は 力されます。 1 から 31 です。それ以外の数値が入力されたときに出 開発ツール MDS64009) 開発ツール(資料番号 ツール 都筑通信商会(The DSPing Company) 〒224−0012 横浜市都筑区牛久保 1-8-6 電話/FAX: 045-349-5815 初版:リリース 2011/10/10
© Copyright 2024 Paperzz