開発ツール - 都筑通信商会

マルチ 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