DTSL は Jython スクリプトを使用して DTSL コンフィギュレーションを作成します。通常、このコンフィギュレーションには、ターゲットシステムの各デバッグコンポーネントのオブジェクトが保存されます。
また、DS-5デバッガも、デバッガソフトウェアスタックの DTSL とは異なるレベルで Jython スクリプトを使用します。デバッガスクリプトでは、デバッガはデバッガ機能に対するオブジェクトインタフェースを提供します。例えば、デバッガスクリプトでは次の操作が可能です。
-
.axf ファイルをロードする
- 現在の実行コンテキストを特定する
- レジスタを読み出す
- ブレークポイントを設定する
- 実行を制御する
以上の操作は DTSL コンフィギュレーションのオブジェクトに対する操作を促しますが、デバッガ操作と DTSL オブジェクト操作の間に必ずしも直接的なマッピングが存在するわけではありません。これは特に SMP システムに当てはまります。
ただし、デバッガスクリプトで低レベルの DTSL オブジェクトにアクセスすることもあります。例えば、CoreSight について経験豊富なユーザの場合、PTM シーケンスを手動でプログラミングしたり、CTI 入力を直接駆動したりしなければならないことがあります。このような場合、デバッガスクリプトで DTSL でコンフィギュレーションを取得し、目的のオブジェクトを見つけてそのメソッドを直接呼び出して下さい。これは非常に強力な機能ですが、デバッガにはこのような操作が行われたことを認識する手段がないため、慎重に使用して下さい。ただし、使用する DTSL オブジェクトをデバッガが直接使用していなければ、このことはあまり問題とはなりません。いずれにせよ、デバッガが使用するコアオブジェクトに直接アクセスする際は、十分な注意が必要です。
次は、デバッガの Jython スクリプトで「PTM」という DTSL オブジェクトへのアクセスを取得する方法を記述したコード例です。
from arm_ds.debugger_v1 import Debugger
from com.arm.debug.dtsl import ConnectionManager
from com.arm.debug.dtsl.interfaces import IConfiguration
# Connect to DS-5 Debugger
debugger = Debugger()
assert isinstance(debugger, Debugger)
if not debugger.isConnected():
戻り値
# Access the underlying DTSL configuration
dtslConnectionConfigurationKey = debugger.getConnectionConfigurationKey()
dtslConnection = ConnectionManager.openConnection(dtslConnectionConfigurationKey)
dtslConfiguration = dtslConnection.getConfiguration()
assert isinstance(dtslConfiguration, IConfiguration)
deviceList = dtslConfiguration.getDevices()
for device in deviceList:
assert isinstance(device, IDevice)
if device.getName() == "PTM":
…