非機密扱い | ![]() | ARM DUI0446ZJ | ||
| ||||
ホーム > デバッグおよびトレースサービスレイヤ(DTSL) > DTSL オブジェクトモデルの拡張 > デバイス リセット動作のオーバーライド |
DSTREAM クラス デバイスでは、System Reset 要求のデフォルトの操作は、JTAG コネクタ上で nSRST
を駆動することです。一部のプラットフォームの場合、このピンは JTAG コネクタに存在しません。このピンが存在しない場合には、他の方法を使用してリセットを実行する必要があります。
システム リセット コントローラ デバイスなど、別のシステム コンポーネントに書き込んでリセットを行う場合もあります。これを使用できない場合は別の方法として、システムのウォッチドッグタイムアウトを発生させてシステムを順にリセットします。どちらの方法でも、デフォルトのリセット動作を変更する必要があります。デフォルトのリセット動作をオーバーライドするには、必要なアクションを実行するため、resetTarget
メソッドがオーバーライドされる場合があります。
以下のコードシーケンスはこの例です。
1.from com.arm.debug.dtsl.components import ConnectableDevice 2.[snip] 3. 4.class DtslScript(DTSLv1): 5.'''デバッグとトレースをサポートするトップレベルのコンフィギュレーション クラス''' 6. 7.[snip] 8. 9.def setupPinMUXForTrace(self): 10.'''Sets up the IO Pin MUX to select 4 bit TPIU trace''' 11.addrDBGMCU_CR = 0xE0042004 12.value = self.readMem(addrDBGMCU_CR) 13.value |= 0xE0 # TRACE_MODE=11 (4 bit port), TRACE_IOEN=1 14.self.writeMem(addrDBGMCU_CR, value) 15. 16.def enableSystemTrace(self): 17.'''Sets up the system to enable trace 18.For a Cortex-M3 system we must make sure that the 19.TRCENA bit (24) in the DEMCR registers is set. 20.NOTE: This bit is normally set by the DSTREAM Cortex-M3 21.template - but we set it ourselves here in case 22.no one connects to the Cortex-M3 device. 23.''' 24.addrDEMCR = 0xE000EDFC 25.bitTRCENA = 0x01000000 26.value = self.readMem(addrDEMCR) 27.value |= bitTRCENA 28.self.writeMem(addrDEMCR, value) 29. 30.def postReset(self): 31.'''Makes sure the debug configuration is re-instated 32.following a reset event 33.''' 34.if self.getOptionValue("options.traceBuffer.traceCaptureDevice") == "DSTREAM": 35.self.setupPinMUXForTrace() 36.self.enableSystemTrace() 37. 38.def resetTarget(self, resetType, targetDevice): 39.# perform the reset 40.DTSLv1.resetTarget(self, resetType, targetDevice) 41.# perform the post-reset actions 42.Self.postReset()
行 38
では resetTarget
メソッドが宣言されます。このメソッドは、通常のリセット メソッドを呼び出してリセットを実行した後、カスタム postReset
メソッドを呼び出して、リセット後に必要なアクションを実行します。
DTSLv1
への resetTarget
の実装により、targetDevice
の systemReset
メソッドが呼び出されます。