This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hello,
I am trying to develop a simple communication link between a host machine and a running DSP. I have written a JAVA application that uses DSS to read and write the memory of the DSP using the memory.readData and memory.writeData functions available in the DebugSession class. This works fine if I halt the DSP before calling these function (using target.halt()), otherwise they throw an exception. Is there a way to read and write the memory of the DSP without halting the target? I am currently targetting a simutated C6416 but our final target is the C6472 multicore DSP with a XDS100.
I have looked at RTDX which seems to be able to do what we need but it doesn't seem to be supported by the XDS100. We could consider using an XDS560 but we are running our own RTOS on the DSP and I am not sure if the RTDX functions running on the DSP will be compatible with it. Are the sources for these functions available somehow?
Another question, using a XDS100 or XDS560, is there a way for the DSP to interrupt the host via the JTAG emulator?
Thanks
My recommendation would be for you to use the real time access features of C647x. When this debug option in enabled, your DSS reads will be performed without halting the target.
Earlier releases of CCSv4 did not have real time accesses enabled for C647x devices using XDS100. I checked the configuration files in the CCS 4.1 beta and confirmed it is supported in this release for XDS100.
For your last question, perhaps polling a target location with real time reads would suffice for your use case? If not, perhaps you could provide some additional details on what your use case is?
I'm now using CCSv4.01 beta in which the real-time option should be enabled. However, when I tried to set it to true I get this error: "SEVERE: Option is disabled or readonly; unable to set value."
I use the following code to set it: "m_debugSession.options.setBoolean("AllowInterruptsWhenHalted",true);"
I am still targetting the simulation of C6472, not real hardware. Is this option available with the simulator?
Once we can set this option, do I need to do something with my code running on the DSP? Must I set-up the interrupts in a particular way? I could find examples on how to use the CCS GUI to use the real-time mode but I am not clear about what I need to do when I don't use the CCS GUI. Is there documentation I have missed?
I was asking if the DSP could interrupt the host via the JTAG emulator in case it wouldnt' be possible to poll it without halting it.
The real time options don't apply to simulation. They don't really make sense there as it is not "real time" anyway.
After setting the option, you don't need to do anything special. Target accesses will occur without halting the target CPU.
I don't think you've missed any documentation. We will be adding some material to the CCS wiki to better explain the options and how to use them.
Hi,
Ok, thanks. I am now using the TI EVM for the C6472 instead of the simulator. It has an onboard XDS100 which I am using.
Setting the Real-Time option doesn't seem to work with it either.
I am calling m_debugSession.options.setBoolean("AllowInterruptsWhenHalted",true);
And I get this error: "SEVERE: Option is disabled or readonly; unable to set value."
Any idea?
JP
Could you check two things for me:
(1) Open the target configuration you are using in the target configuration editor. Along the bottom of the editor you'll see three tabs: Basic, Advanced, and Source. Click on the Source tab and ensure there is a line that looks like this:
<instance XML_version="1.2" href="drivers\tixds100c674x.xml" id="drivers" xml="tixds100c674x.xml" xmlpath="drivers"/>
(2) Next, open the file <install dir>\ccsv4\common\targetdb\drivers\tixds100c674x.xml in a text editor and ensure it has this line in it:
<property Type="hiddenfield" Value="true" id="realtimeEnabled" />
I want to be sure the configuration you are using has the property enabled in your install.
I have the following two lines that seem to match:
<instance XML_version="1.2" href="drivers\tixds100icepick_c.xml" id="drivers" xml="tixds100icepick_c.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers\tixds100c64xp.xml" id="drivers" xml="tixds100c64xp.xml" xmlpath="drivers"/>
tixds100icepick_c.xml doesn't seem to have anything about 'realtime;
tixds100c64xp.xml: <property Type="hiddenfield" Value="true" id="realtimeEnabled" />
Just wondering if there was any progress on this issue?
I have also tried with an XDS510 from SEED, but I get the same result.
I have modified file seedxds510plusc6400_plus.xml to add the 'realtime' line as follows, but it doesn't work either...
<?xml version="1.0"?>
<drivers id="TMS320C64XX">
<isa Type="TMS320C64XP" ProcID="0x50019348">
<driver file="..\..\..\emulation\drivers\tixds6400_plus.dvr">
<property Type="hiddenfield" Value="true" id="realtimeEnabled" />
<connectionType Type="SEEDEMU"/>
</driver>
</isa>
</drivers>
Hi,
Can you tell me which core on the C6472 you are trying to set the real time option for? There was a bug in versions of CCS before 4.1 that only allowed the user to modify real time options on the first core of a multicore device, even if all cores supported real time mode. I think you mention you are using 4.0.1, and therefore this might be the problem you are running into.
I don't have an older version of CCS handy to test the exact behaviour, but the expected behaviour for the bug should be:
"Texas Instruments XDS100v1 USB Emulator_0/C64XP"
- will allow you to set real time options via: options.setBoolean("AllowInterruptsWhenHalted",true);
- you will also see that the option is enabled in the GUI (Right click on the core, and choose "Edit Texas Instruments XDS100v1 USB Emulator_0/C64XP" -> Target )
"Texas Instruments XDS100v1 USB Emulator_0/C64XP_1" to "Texas Instruments XDS100v1 USB Emulator_0/C64XP_5"
- will not allow you to set real time options via: options.setBoolean("AllowInterruptsWhenHalted",true);
- you will also see that the option is disabled in the GUI
Can you confirm if this is the bug you are seeing (by trying to set the realtime option on the first core)? If it is, I can confirm that this bug has been fixed in CCS4.1; I have tested that I can bring up the C6472 device in CCS, and I was able to set the real time options for all 6 cores.
Thanks.
Hi,
I am always working with the first core: 'Texas Instruments XDS100 USB Emulator_0/C64XP_0'
I am using CCS Version: 4.1.0.01000.
Note that I am using the CCXML file EVM6472_XDS100USB.ccxml that was installed with the EVM for C6472. This file refers to Texas Instruments XDS100 USB Emulator_0 and not Texas Instruments XDS100v1 USB Emulator_0 as you mention.
Is this correct? I am not sure what version of the XDS100 is onboard. The board is labeled SW Rev2.0...
I can see the Real-Time option in the CCS UI. And I can set it too. However, I am not sure whether it has any effect or not...
Are you using the EVM for C6472?
Thanks
I actually do not have the hardware, so I am only testing that CCS is allowing me to modify the real time settings for this device.
Also note that setting it in the location I was pointing to does not actually get applied until the next debug launch. If you modify the setting under Tools -> Debugger Options -> Generic Debugger Options, it should take effect immediately, which will allow you to access the target without halting the target CPU.
As for the issue you noted in DSS for setting this property, I have just discovered a bug in the DSS initialization that is preventing it from reading the <property Type="hiddenfield" Value="true" id="realtimeEnabled" /> properly from the driver XML. This will imply that the real time options will be disabled in DSS for all targets. I have filed a bug for this and will be looked at in the next few days.
I have also created a workaround for you to try. I have attached a file, PropertiesDB.xml, to this post. This modified file will enable the real time options for all targets, including the C6472, which will allow you to modify this option in DSS. Please also note that the workaround will enable the real time options for devices that do not support it (ie; simulators), and setting this option for those targets will not have any effect.
Please backup and replace the file in your <installDir>\ccsv4\DebugServer\propertyDB\
Let me know if you have any questions on the workaround, and also let me know if the provided workaround solves the issue you are seeing.
Thank you very much.
<?xml version="1.0" encoding="UTF-8"?> <PropertyList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- Node definitions. These appear as a tree in eclipse --> <!-- Generic Nodes --> <node id="GenericPropertiesNode"> <name>Generic Debugger Options</name> <children> <child>ProgramLoadGroup</child> <child>RealtimeGroup</child> <child>RunToGroup</child> <child>LaunchGroup</child> <child>ConnectGroup</child> <child>OSDebugGroup</child> <child>PipelineAccuracy</child> <child>PreventStepIntoAsm</child> <child>ResetOnRestart</child> </children> </node> <!-- End Generic Nodes --> <!-- MSP430 Nodes --> <node id="MSP430PropertiesNode"> <name>MSP430 Properties</name> <children> <child>ClockControlNode</child> <child>DisableBreakpointsOnFreeRun</child> <child>AllowSoftwareBreakpoints</child> <child>UseHardwareBreakpointsFirst</child> <child>DisableInterruptsWhileStepping</child> <child>TargetVoltage</child> <child>MSP430DownloadOptions</child> </children> </node> <node id="ClockControlNode"> <name>Clock Control</name> <children> <child>GeneralClockControlGroup</child> <child>ModuleClockControlGroup</child> </children> <disableIf> <clockcontrol>NONE</clockcontrol> </disableIf> </node> <!-- End MSP430 Nodes --> <!-- TMS320C28XX Nodes--> <node id="TMS320C28XX_DisassemblyStyleNode"> <name>C28xx Disassembly Style Options</name> <children> <child>TMS320C28XX_RegisterAddrModeGroup</child> <child>TMS320C28XX_AddrModeOffset</child> <child>TMS320C28XX_ImmediateValue</child> <child>TMS320C28XX_CallsAndBranchesGroup</child> </children> </node> <!-- End TMS320C28XX Nodes--> <!-- TMS320C54XX Nodes--> <!-- Not sure if C54x will be supported <node id="TMS320C54XX_DisassemblyStyleNode"> <name>C54xx Disassembly Style Options</name> <children> <child>TMS320C54XX_DisassemblyStyle</child> <child>TMS320C54XX_DirectAddrRadix</child> <child>TMS320C54XX_ImmediateAddrRadix</child> </children> </node> --> <!-- End TMS320C54XX Nodes--> <!-- TMS320C55XX Nodes--> <node id="TMS320C55XX_DisassemblyStyleNode"> <name>C55xx Disassembly Style Options</name> <children> <child>TMS320C55XX_DisassemblyStyle</child> <child>TMS320C55XX_ImmediateValueGroup</child> </children> </node> <!-- End TMS320C55XX Nodes--> <!-- TMS320C56XX Nodes--> <node id="TMS320C56XX_DisassemblyStyleNode"> <name>C55X+ Disassembly Style Options</name> <children> <child>TMS320C56XX_DisassemblyStyle</child> <child>TMS320C56XX_ImmediateValueGroup</child> <child>TMS320C56XX_OpcodeDisplayWidth</child> </children> </node> <!-- End TMS320C56XX Nodes--> <!-- TMS320C62XX Nodes--> <node id="TMS320C62XX_DisassemblyStyleNode"> <name>C62XX Disassembly Style Options</name> <children> <child>TMS320C62XX_AddrRadix</child> <child>TMS320C62XX_Immedradix</child> <child>TMS320C62XX_DisplayControlGroup</child> <child>TMS320C62XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C62XX Nodes--> <!-- TMS320C64XX Nodes--> <node id="TMS320C64XX_DisassemblyStyleNode"> <name>C64XX Disassembly Style Options</name> <children> <child>TMS320C64XX_AddrRadix</child> <child>TMS320C64XX_Immedradix</child> <child>TMS320C64XX_DisplayControlGroup</child> <child>TMS320C64XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C64XX Nodes--> <!-- TMS320C64XP Nodes--> <node id="TMS320C64XP_DisassemblyStyleNode"> <name>C64XP Disassembly Style Options</name> <children> <child>TMS320C64XP_AddrRadix</child> <child>TMS320C64XP_Immedradix</child> <child>TMS320C64XP_DisplayControlGroup</child> <child>TMS320C64XP_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C64XP Nodes--> <!-- TMS320C67XX Nodes--> <node id="TMS320C67XX_DisassemblyStyleNode"> <name>C67XX Disassembly Style Options</name> <children> <child>TMS320C67XX_AddrRadix</child> <child>TMS320C67XX_Immedradix</child> <child>TMS320C67XX_DisplayControlGroup</child> <child>TMS320C67XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C67XX Nodes--> <!-- TMS470R1X Nodes --> <node id="TMS470R1X_DisassemblyStyleNode"> <name>TMS470R1X Disassembly Style Options</name> <children> <child>TMS470R1X_DisassMode</child> </children> </node> <!-- End TMS470R1X Nodes--> <!-- TMS470R2X Nodes --> <node id="TMS470R2X_DisassemblyStyleNode"> <name>TMS470R2X Disassembly Style Options</name> <children> <child>TMS470R2X_DisassMode</child> </children> </node> <!-- End TMS470R2X--> <!-- TMS470R3X Nodes --> <node id="TMS470R3X_DisassemblyStyleNode"> <name>TMS470R3X Disassembly Style Options</name> <children> <child>TMS470R3X_DisassMode</child> </children> </node> <!-- End TMS470R3X--> <!-- TMS470RCX Nodes --> <node id="TMS470RCX_DisassemblyStyleNode"> <name>TMS470RCX Disassembly Style Options</name> <children> <child>TMS470RCX_DisassMode</child> </children> </node> <!-- End TMS470RCX--> <!-- TMS470R9X Nodes --> <node id="TMS470R9X_DisassemblyStyleNode"> <name>TMS470R9X Disassembly Style Options</name> <children> <child>TMS470R9X_DisassMode</child> </children> </node> <!-- End TMS470R9X--> <!-- TMS470RDX Nodes --> <node id="TMS470RDX_DisassemblyStyleNode"> <name>TMS470RDX Disassembly Style Options</name> <children> <child>TMS470RDX_DisassMode</child> </children> </node> <!-- End TMS470RDX--> <!-- TMS470REX Nodes --> <node id="TMS470REX_DisassemblyStyleNode"> <name>TMS470REX Disassembly Style Options</name> <children> <child>TMS470REX_DisassMode</child> </children> </node> <!-- End TMS470REX--> <!-- Group definitions. These appear as a dotted box grouping related option --> <!-- Generic Groups --> <group id="ProgramLoadGroup"> <name>Program/Memory Load Options</name> <children> <child>ClearBreakpointsOnLoad</child> <child>AddCEXITbreakpointAfterLoad</child> <child>AddCIOBreakpointAfterLoad</child> <child>VerifyAfterProgramLoad</child> </children> </group> <group id="RealtimeGroup"> <name>Realtime Options</name> <children> <child>UseLegacyStopMode</child> <child>AllowInterruptsWhenHalted</child> <!-- There are no targets that support this setting right now. Once there are, remove this comment <child>UsePreEmptiveAccesses</child> --> <child>PoliteRealtimeMode</child> </children> <!-- <enableIf> <realtimeEnable>true</realtimeEnable> </enableIf> --> </group> <group id="OSDebugGroup"> <name>OS Aware Debug Options</name> <children> <child>ThreadDebuggingEnabled</child> <child>AutoRefreshThreads</child> <child>ModuleDebuggingEnabled</child> </children> </group> <group id="RunToGroup"> <name>Auto Run Options</name> <children> <child>AutoRunToLabelName</child> <child>AutoRunToLabelOnRestart</child> <child>AutoRunToLabelOnReset</child> </children> </group> <group id="LaunchGroup"> <name>Launch Options</name> <children> <child>ConnectOnStartup</child> <child>EnableInstalledBreakpoint</child> <child>IgnoreSoftLaunchFailures</child> </children> </group> <group id="ConnectGroup"> <name>Connection Options</name> <children> <child>AutoResetOnConnect</child> <child>RemoveDebugStateAtConnect</child> <child>AutoConnectIfChildConnects</child> </children> </group> <!-- End Generic Groups --> <!-- MSP430 Groups --> <group id="GeneralClockControlGroup"> <name>General</name> <children> <child>GenClockDesc</child> <child>ClockControlACLK</child> <child>ClockControlSMCLK</child> <child>ClockControlMCLK</child> <child>ClockControlTACLK</child> </children> </group> <group id="ModuleClockControlGroup"> <name>Extended</name> <children> <child>ExtendClockDesc</child> <child>ClockControlWatchdog</child> <child>ClockControlTimerA</child> <child>ClockControlTimerB</child> <child>ClockControlBasicTimer</child> <child>ClockControlLCDFrequency</child> <child>ClockControlTimerCounter</child> <child>ClockControlTimerPort</child> <child>ClockControlUSART0</child> <child>ClockControlUSART1</child> <child>ClockControlFlashControl</child> <child>ClockControlADC</child> <child>ClockControlACLKExtPin</child> <child>ClockControlSMCLKExtPin</child> <child>ClockControlMCLKExtPin</child> </children> <disableIf> <clockcontrol>STANDARD</clockcontrol> </disableIf> </group> <!-- End MSP430 Groups --> <!-- TMS320C28XX Groups --> <group id="TMS320C28XX_RegisterAddrModeGroup"> <name>Register Addressing Mode</name> <children> <child>TMS320C28XX_DisplayAtOperand</child> </children> </group> <group id="TMS320C28XX_CallsAndBranchesGroup"> <name>Calls and Branches</name> <children> <child>TMS320C28XX_DisplaySymbolically</child> </children> </group> <!-- End TMS320C28XX Groups --> <!-- TMS320C55XX Groups --> <group id="TMS320C55XX_ImmediateValueGroup"> <name>Immediate Values</name> <children> <child>TMS320C55XX_HexDisplay</child> </children> </group> <!-- End TMS320C55XX Groups --> <!-- TMS320C56XX Groups --> <group id="TMS320C56XX_ImmediateValueGroup"> <name>Immediate Values</name> <children> <child>TMS320C56XX_HexDisplay</child> </children> </group> <!-- End TMS320C56XX Groups --> <!-- TMS320C62XX Groups --> <group id="TMS320C62XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C62XX_DisplayAddress</child> <child>TMS320C62XX_DisplayCondCode</child> <child>TMS320C62XX_DisplayDelaySlot</child> <child>TMS320C62XX_DisplayOpCode</child> <child>TMS320C62XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C62XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C62XX_AliasRegSP</child> <child>TMS320C62XX_AliasRegDP</child> <child>TMS320C62XX_AliasRegFP</child> </children> </group> <!-- End TMS320C62XX Groups --> <!-- TMS320C64XX Groups --> <group id="TMS320C64XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C64XX_DisplayAddress</child> <child>TMS320C64XX_DisplayCondCode</child> <child>TMS320C64XX_DisplayDelaySlot</child> <child>TMS320C64XX_DisplayOpCode</child> <child>TMS320C64XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C64XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C64XX_AliasRegSP</child> <child>TMS320C64XX_AliasRegDP</child> <child>TMS320C64XX_AliasRegFP</child> </children> </group> <!-- End TMS320C64XX Groups --> <!-- TMS320C64XP Groups --> <group id="TMS320C64XP_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C64XP_DisplayAddress</child> <child>TMS320C64XP_DisplayCondCode</child> <child>TMS320C64XP_DisplayDelaySlot</child> <child>TMS320C64XP_DisplayOpCode</child> <child>TMS320C64XP_DisplayFuncUnit</child> </children> </group> <group id="TMS320C64XP_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C64XP_AliasRegSP</child> <child>TMS320C64XP_AliasRegDP</child> <child>TMS320C64XP_AliasRegFP</child> </children> </group> <!-- End TMS320C64XP Groups --> <!-- TMS320C67XX Groups --> <group id="TMS320C67XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C67XX_DisplayAddress</child> <child>TMS320C67XX_DisplayCondCode</child> <child>TMS320C67XX_DisplayDelaySlot</child> <child>TMS320C67XX_DisplayOpCode</child> <child>TMS320C67XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C67XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C67XX_AliasRegSP</child> <child>TMS320C67XX_AliasRegDP</child> <child>TMS320C67XX_AliasRegFP</child> </children> </group> <!-- End TMS320C67XX Groups --> <!-- Property definitions --> <!-- Generic Property Definitions --> <property id="ClearBreakpointsOnLoad"> <target>generic</target> <name>Disable all breakpoints when loading a different program</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AddCEXITbreakpointAfterLoad"> <target>generic</target> <name>Halt at program termination (requires setting a breakpoint)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> <target>TMS320C28XX</target> <target>TMS192C2006</target> <doNotSetSystemBreakpoints>true</doNotSetSystemBreakpoints> </uniqueDefault> </property> <property id="AddCIOBreakpointAfterLoad"> <target>generic</target> <name>Enable CIO function use (requires setting a breakpoint)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>TMS192C2006</target> <doNotSetSystemBreakpoints>true</doNotSetSystemBreakpoints> </uniqueDefault> </property> <property id="PipelineAccuracy"> <target>generic</target> <name>Simulators will flush the pipeline on a halt</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="PreventStepIntoAsm"> <target>generic</target> <name>Automatically step over functions without debug information when source stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ResetOnRestart"> <target>generic</target> <name>Reset the target on a program load or restart</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <uniqueDefault value="1"> <target>MSP430</target> </uniqueDefault> </property> <property id="RemoveDebugStateAtConnect"> <target>generic</target> <name>Remove remaining debug state at connect</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="VerifyAfterProgramLoad"> <target>generic</target> <name>Verification Options</name> <valueType>ChoiceList</valueType> <values> <value>Full verification</value> <value>Fast verification</value> <value>No verification</value> </values> <defaultValue>Fast verification</defaultValue> <uniqueDefault value="Full verification"> <target>MSP430</target> </uniqueDefault> </property> <property id="UseLegacyStopMode"> <target>generic</target> <name>Halt the target before any debugger access</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- The following options are for legacy drivers that support the old realtime api's. Currently there are no drivers that support the new api's --> <property id="AllowInterruptsWhenHalted"> <target>generic</target> <name>Enable silicon real-time mode (service critical interrupts when halted, allow debugger accesses while running)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="PoliteRealtimeMode"> <target>generic</target> <name>Enable polite real-time mode</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <disableIf> <property id="AllowInterruptsWhenHalted">0</property> </disableIf> </property> <!-- The following options are for new drivers that support the new realtime api's. Currently there are no drivers that support this When we do, these properties should be optionally enabled based on a setting in the target setup ccxml file. These options differ in text, dependence of each other, and there is one additional property too <property id="AllowInterruptsWhenHalted"> <target>generic</target> <name>Service critical interrupts when halted</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> <property id="PoliteRealtimeMode"> <target>generic</target> <name>Enable polite real-time mode</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> <property id="UsePreEmptiveAccesses"> <target>generic</target> <name>Perform pre-emptive accesses (debug access may stall the target)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> --> <property id="ThreadDebuggingEnabled"> <target>generic</target> <name>Display processes and threads in the debug view</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AutoRefreshThreads"> <target>generic</target> <name>Update process list on every halt</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <disableIf> <property id="ThreadDebuggingEnabled">0</property> </disableIf> <valueOnDisabled>currentValue</valueOnDisabled> </property> <property id="ModuleDebuggingEnabled"> <target>generic</target> <name>Automatically load module symbols</name> <valueType>ChoiceList</valueType> <values> <value>Never</value> <value>When modules are loaded and unloaded (intrusive on target execution, and requires a patched kernel)</value> <value>Whenever halted in the module load/unload routines (you must manually set breakpoints in the appropriate routines for this to work)</value> </values> <defaultValue>Never</defaultValue> </property> <property id="AutoRunToLabelName"> <target>generic</target> <name>Run to</name> <valueType>String</valueType> <defaultValue>main</defaultValue> </property> <property id="AutoRunToLabelOnRestart"> <target>generic</target> <name>On a program load or restart</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AutoRunToLabelOnReset"> <target>generic</target> <name>On a reset</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <uniqueDefault value="1"> <target>MSP430</target> </uniqueDefault> </property> <property id="ConnectOnStartup"> <target>generic</target> <name>Connect to the target on debugger startup</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="AutoResetOnConnect"> <target>generic</target> <name>Reset the target on a connect</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="EnableInstalledBreakpoint"> <target>generic</target> <name>Restore breakpoints from previous session</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="IgnoreSoftLaunchFailures"> <target>generic</target> <name>Continue debug launch if target connection or program load fails</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="AutoConnectIfChildConnects"> <target>generic</target> <name>Auto connect if a child connects</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <enableIf> <target>ICEPICK_B</target> <target>ICEPick_C</target> <target>CS_DAP</target> <target>CS_DAP_PC</target> </enableIf> </property> <!-- End Generic Property Definitions --> <!-- MSP430 Property Definitions --> <property id="DisableBreakpointsOnFreeRun"> <target>MSP430</target> <name>Disable breakpoints on a free run</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AllowSoftwareBreakpoints"> <target>MSP430</target> <name>Use software breakpoints</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <eem>EMEX_HIGH</eem> </uniqueDefault> </property> <property id="UseHardwareBreakpointsFirst"> <target>MSP430</target> <name>Use hardware breakpoints by default</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="MSP430DownloadOptions"> <target>MSP430</target> <name>Download Options</name> <valueType>ChoiceList</valueType> <values> <value>Erase main memory only</value> <value>Erase main and information memory</value> <value>Erase main, information and protected information memory</value> <value>Retain unchanged memory</value> </values> <defaultValue>Erase main and information memory</defaultValue> </property> <property id="GenClockDesc"> <target>MSP430</target> <name>Stop the following clocks on emulation halt:</name> <valueType>Text</valueType> </property> <property id="ClockControlACLK"> <target>MSP430</target> <name>Auxilary Clock (ACLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlSMCLK"> <target>MSP430</target> <name>Sub-main Clock (SMCLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlMCLK"> <target>MSP430</target> <name>Master Clock (MCLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTACLK"> <target>MSP430</target> <name>TACLK</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ExtendClockDesc"> <target>MSP430</target> <name>Stop the following clocks/associated clocks on emulation halt:</name> <valueType>Text</valueType> </property> <property id="ClockControlWatchdog"> <target>MSP430</target> <name>Watch Dog Timer (WDT)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerA"> <target>MSP430</target> <name>Timer_A</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerB"> <target>MSP430</target> <name>Timer_B</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlBasicTimer"> <target>MSP430</target> <name>Basic Timer</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlLCDFrequency"> <target>MSP430</target> <name>LCD Frequency</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlTimerCounter"> <target>MSP430</target> <name>8 bit Timer/Counter</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerPort"> <target>MSP430</target> <name>Timer Port</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlUSART0"> <target>MSP430</target> <name>USART0</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlUSART1"> <target>MSP430</target> <name>USART1</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlFlashControl"> <target>MSP430</target> <name>Flash Control</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlADC"> <target>MSP430</target> <name>Analog-to-Digital Converter (ADC)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlACLKExtPin"> <target>MSP430</target> <name>Auxiliary Clock (ACLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlSMCLKExtPin"> <target>MSP430</target> <name>Sub-main Clock (SMCLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlMCLKExtPin"> <target>MSP430</target> <name>Main Clock (MCLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TargetVoltage"> <target>MSP430</target> <name>Target Voltage (mV)</name> <valueType>Numeric</valueType> <defaultValue>3000</defaultValue> </property> <property id="DisableInterruptsWhileStepping"> <target>MSP430</target> <name>Disable interrupts while stepping</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- End MSP430 Property Definitions --> <!-- TMS320C28XX Property Definitions --> <property id="TMS320C28XX_DisplayAtOperand"> <target>TMS320C28XX</target> <name>Display @ operand</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C28XX_AddrModeOffset"> <target>TMS320C28XX</target> <name>Addressing Mode Offset</name> <valueType>ChoiceList</valueType> <values> <value>Hexadecimal</value> <value>Decimal (default)</value> </values> <defaultValue>Decimal (default)</defaultValue> </property> <property id="TMS320C28XX_ImmediateValue"> <target>TMS320C28XX</target> <name>Immediate Value</name> <valueType>ChoiceList</valueType> <values> <value>Hexadecimal</value> <value>Decimal</value> <value>Default (refer to spec)</value> </values> <defaultValue>Default (refer to spec)</defaultValue> </property> <property id="TMS320C28XX_DisplaySymbolically"> <target>TMS320C28XX</target> <name>Display Symbolically</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C28XX Property Definitions --> <!-- TMS320C54XX Property Definitions --> <!-- Not sure if C54x will be supported <property id="TMS320C54XX_DisassemblyStyle"> <target>TMS320C54XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Mnemonic</defaultValue> </property> <property id="TMS320C54XX_DirectAddrRadix"> <target>TMS320C54XX</target> <name>Direct Addessing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Decimal</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C54XX_ImmediateAddrRadix"> <target>TMS320C54XX</target> <name>Immediate Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Decimal</value> <value>Binary</value> </values> <defaultValue>Hex</defaultValue> </property> --> <!-- End TMS320C54XX Property Definitions --> <!-- TMS320C55XX Property Definitions --> <property id="TMS320C55XX_DisassemblyStyle"> <target>TMS320C55XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Mnemonic</defaultValue> </property> <property id="TMS320C55XX_HexDisplay"> <target>TMS320C55XX</target> <name>Hexadecimal Display</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- End TMS320C55XX Property Definitions --> <!-- TMS320C56XX Property Definitions --> <property id="TMS320C56XX_DisassemblyStyle"> <target>TMS320C56XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Algebraic</defaultValue> </property> <property id="TMS320C56XX_HexDisplay"> <target>TMS320C56XX</target> <name>Hexadecimal Display</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="TMS320C56XX_OpcodeDisplayWidth"> <target>TMS320C56XX</target> <name>Opcode Display Width</name> <valueType>ChoiceList</valueType> <values> <value>Show all bytes</value> <value>Truncate to 12 bytes</value> <value>Truncate to 6 bytes</value> <value>Hide</value> </values> <defaultValue>Show all bytes</defaultValue> </property> <!-- End TMS320C56XX Property Definitions --> <!-- TMS320C62XX Property Definitions --> <property id="TMS320C62XX_AddrRadix"> <target>TMS320C62XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C62XX_Immedradix"> <target>TMS320C62XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C62XX_DisplayAddress"> <target>TMS320C62XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayCondCode"> <target>TMS320C62XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayDelaySlot"> <target>TMS320C62XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayOpCode"> <target>TMS320C62XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayFuncUnit"> <target>TMS320C62XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegSP"> <target>TMS320C62XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegDP"> <target>TMS320C62XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegFP"> <target>TMS320C62XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C62XX Property Definitions --> <!-- TMS320C64XX Property Definitions --> <property id="TMS320C64XX_AddrRadix"> <target>TMS320C64XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XX_Immedradix"> <target>TMS320C64XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XX_DisplayAddress"> <target>TMS320C64XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayCondCode"> <target>TMS320C64XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayDelaySlot"> <target>TMS320C64XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayOpCode"> <target>TMS320C64XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayFuncUnit"> <target>TMS320C64XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegSP"> <target>TMS320C64XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegDP"> <target>TMS320C64XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegFP"> <target>TMS320C64XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XX Property Definitions --> <!-- TMS320C64XP Property Definitions --> <property id="TMS320C64XP_AddrRadix"> <target>TMS320C64XP</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XP_Immedradix"> <target>TMS320C64XP</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XP_DisplayAddress"> <target>TMS320C64XP</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayCondCode"> <target>TMS320C64XP</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayDelaySlot"> <target>TMS320C64XP</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayOpCode"> <target>TMS320C64XP</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayFuncUnit"> <target>TMS320C64XP</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegSP"> <target>TMS320C64XP</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegDP"> <target>TMS320C64XP</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegFP"> <target>TMS320C64XP</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XP Property Definitions --> <!-- TMS320C67XX Property Definitions --> <property id="TMS320C67XX_AddrRadix"> <target>TMS320C67XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C67XX_Immedradix"> <target>TMS320C67XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C67XX_DisplayAddress"> <target>TMS320C67XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayCondCode"> <target>TMS320C67XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayDelaySlot"> <target>TMS320C67XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayOpCode"> <target>TMS320C67XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayFuncUnit"> <target>TMS320C67XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegSP"> <target>TMS320C67XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegDP"> <target>TMS320C67XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegFP"> <target>TMS320C67XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XX Property Definitions --> <!-- TMS470R1X Property Definitions --> <property id="TMS470R1X_DisassMode"> <target>TMS470R1X</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R1X Property Definitions --> <!-- TMS470R2X Property Definitions --> <property id="TMS470R2X_DisassMode"> <target>TMS470R2X</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R2X Property Definitions --> <!-- TMS470R3X Property Definitions --> <property id="TMS470R3X_DisassMode"> <target>TMS470R3X</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R3X Property Definitions --> <!-- TMS470R9X Property Definitions --> <property id="TMS470R9X_DisassMode"> <target>TMS470R9X</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R9X Property Definitions --> <!-- TMS470RCX Property Definitions --> <property id="TMS470RCX_DisassMode"> <target>TMS470RCX</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470RCX Property Definitions --> <!-- TMS470RDX Property Definitions --> <property id="TMS470RDX_DisassMode"> <target>TMS470RDX</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470RDX Property Definitions --> <!-- TMS470REX Property Definitions --> <property id="TMS470REX_DisassMode"> <target>TMS470REX</target> <name>Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470REX Property Definitions --> <!-- fin --> </PropertyList>
Hi,
The workarounds themselves have not been included in any CCS builds, since they were only meant as a temporary solution to the actual problem.
The two problems that was noted in this thread:
1. Real time options only accessible on the first core of a multi-core configuration.
2. Real time options not modifiable in DSS.
These two issues have been resolved and should be available in the latest CCS4.1.2 build.
Thanks.
Ricky
Hi Ricky,
I have CCS4.1.2 (Code Composer Studio Core Edition Version: 4.1.2.00027) installed on my PC and I'm trying to modify the Real time options in DSS.
I can change the "UseLegacyStopMode", but the other real time options (AllowInterruptsWhenHalted, PoliteRealtimeMode) cause an exception, e.g. they are read only.
debugServer = (DebugServer) env.getServer("DebugServer.1");
debugServer.setConfig("c:/temp/C28027_XDS100.ccxml");
debugSession = debugServer.openSession("*", "*");
System.out.printf("1) UseLegacyStopMode = %b\n", debugSession.options.getBoolean("UseLegacyStopMode"));
debugSession.options.setBoolean("UseLegacyStopMode", true);
System.out.printf("2) UseLegacyStopMode = %b\n", debugSession.options.getBoolean("UseLegacyStopMode"));
System.out.printf("1) AllowInterruptsWhenHalted = %b\n", debugSession.options.getBoolean("AllowInterruptsWhenHalted"));
try { debugSession.options.setBoolean("AllowInterruptsWhenHalted", true); }
catch (Exception e){ StatusText.setText("Error setting AllowInterruptsWhenHalted\n"); }
System.out.printf("2) AllowInterruptsWhenHalted = %b\n", debugSession.options.getBoolean("AllowInterruptsWhenHalted"));
System.out.printf("1) PoliteRealtimeMode = %b\n", debugSession.options.getBoolean("PoliteRealtimeMode"));
try { debugSession.options.setBoolean("PoliteRealtimeMode", true); }
catch (Exception e){ StatusText.setText("Error setting PoliteRealtimeMode\n"); }
System.out.printf("2) PoliteRealtimeMode = %b\n", debugSession.options.getBoolean("PoliteRealtimeMode"));
Below is the output from the above code.
1) UseLegacyStopMode = false
2) UseLegacyStopMode = true
1) AllowInterruptsWhenHalted = false
SEVERE: Option is disabled or readonly; unable to set value.
2) AllowInterruptsWhenHalted = false
1) PoliteRealtimeMode = false
SEVERE: Option is disabled or readonly; unable to set value.
2) PoliteRealtimeMode = false
I would like to enable polite mode so I can read/write memory without having to stop the CPU first.
It looks like the changes for real time mode didn't get in to CCS4.1.2.
Is this correct, and if so do you know when this will be fixed?
cheers Chris
Chris,
You are right in that the realtime mode fix was not included in CCS4.1.2. The current scope of the fix is in CCS4.2, which will be release later in the year.
In the mean time, you can work around the issue with the attached file PropertiesDB.xml,
- Please backup and replace the file in your <installDir>\ccsv4\DebugServer\propertyDB\
Note: The only difference this file will make to CCS is that it will let you modify the "Enable silicon real-time mode" option for all devices, including ones that do not support the functionality.
Let me know if you have any questions.
Thanks.
Ricky
<?xml version="1.0" encoding="UTF-8"?> <PropertyList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- Node definitions. These appear as a tree in eclipse --> <!-- Generic Nodes --> <node id="GenericPropertiesNode"> <name>Generic Debugger Options</name> <children> <child>ProgramLoadGroup</child> <child>RealtimeGroup</child> <child>RunToGroup</child> <child>LaunchGroup</child> <child>ConnectGroup</child> <child>OSDebugGroup</child> <child>PipelineAccuracy</child> <child>PreventStepIntoAsm</child> <child>ResetOnRestart</child> <child>DisableInterrupts</child> </children> </node> <!-- End Generic Nodes --> <!-- ISA specific nodes for general options --> <!-- MSP430 Nodes --> <node id="MSP430PropertiesNode"> <name>MSP430 Properties</name> <children> <child>ClockControlNode</child> <child>DisableBreakpointsOnFreeRun</child> <child>AllowSoftwareBreakpoints</child> <child>UseHardwareBreakpointsFirst</child> <child>TargetVoltage</child> <child>MSP430DownloadOptionsGroup</child> <child>LowPowerModeGroup</child> </children> </node> <node id="ClockControlNode"> <name>Clock Control</name> <children> <child>GeneralClockControlGroup</child> <child>ModuleClockControlGroup</child> </children> <disableIf> <clockcontrol>NONE</clockcontrol> </disableIf> </node> <!-- End MSP430 Nodes --> <!-- Disassembly options, which are all ISA specific --> <!-- TMS320C28XX Nodes--> <node id="TMS320C28XX_DisassemblyStyleNode"> <name>C28xx Disassembly Style Options</name> <children> <child>TMS320C28XX_RegisterAddrModeGroup</child> <child>TMS320C28XX_AddrModeOffset</child> <child>TMS320C28XX_ImmediateValue</child> <child>TMS320C28XX_CallsAndBranchesGroup</child> </children> </node> <!-- End TMS320C28XX Nodes--> <!-- TMS320C54XX Nodes--> <!-- Not sure if C54x will be supported <node id="TMS320C54XX_DisassemblyStyleNode"> <name>C54xx Disassembly Style Options</name> <children> <child>TMS320C54XX_DisassemblyStyle</child> <child>TMS320C54XX_DirectAddrRadix</child> <child>TMS320C54XX_ImmediateAddrRadix</child> </children> </node> --> <!-- End TMS320C54XX Nodes--> <!-- TMS320C55XX Nodes--> <node id="TMS320C55XX_DisassemblyStyleNode"> <name>C55xx Disassembly Style Options</name> <children> <child>TMS320C55XX_DisassemblyStyle</child> <child>TMS320C55XX_ImmediateValueGroup</child> </children> </node> <!-- End TMS320C55XX Nodes--> <!-- TMS320C56XX Nodes--> <node id="TMS320C56XX_DisassemblyStyleNode"> <name>C55X+ Disassembly Style Options</name> <children> <child>TMS320C56XX_DisassemblyStyle</child> <child>TMS320C56XX_ImmediateValueGroup</child> <child>TMS320C56XX_OpcodeDisplayWidth</child> </children> </node> <!-- End TMS320C56XX Nodes--> <!-- TMS320C62XX Nodes--> <node id="TMS320C62XX_DisassemblyStyleNode"> <name>C62XX Disassembly Style Options</name> <children> <child>TMS320C62XX_AddrRadix</child> <child>TMS320C62XX_Immedradix</child> <child>TMS320C62XX_DisplayControlGroup</child> <child>TMS320C62XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C62XX Nodes--> <!-- TMS320C64XX Nodes--> <node id="TMS320C64XX_DisassemblyStyleNode"> <name>C64XX Disassembly Style Options</name> <children> <child>TMS320C64XX_AddrRadix</child> <child>TMS320C64XX_Immedradix</child> <child>TMS320C64XX_DisplayControlGroup</child> <child>TMS320C64XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C64XX Nodes--> <!-- TMS320C64XP Nodes--> <node id="TMS320C64XP_DisassemblyStyleNode"> <name>C64XP Disassembly Style Options</name> <children> <child>TMS320C64XP_AddrRadix</child> <child>TMS320C64XP_Immedradix</child> <child>TMS320C64XP_DisplayControlGroup</child> <child>TMS320C64XP_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C64XP Nodes--> <!-- TMS320C67XX Nodes--> <node id="TMS320C67XX_DisassemblyStyleNode"> <name>C67XX Disassembly Style Options</name> <children> <child>TMS320C67XX_AddrRadix</child> <child>TMS320C67XX_Immedradix</child> <child>TMS320C67XX_DisplayControlGroup</child> <child>TMS320C67XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C67XX Nodes--> <!-- TMS470R1X Nodes --> <node id="TMS470R1X_DisassemblyStyleNode"> <name>ARM 7 Disassembly Style Options</name> <children> <child>TMS470R1X_DisassMode</child> </children> </node> <!-- End TMS470R1X Nodes--> <!-- TMS470R2X Nodes --> <node id="TMS470R2X_DisassemblyStyleNode"> <name>ARM 9 Disassembly Style Options</name> <children> <child>TMS470R2X_DisassMode</child> </children> </node> <!-- End TMS470R2X--> <!-- TMS470R3X Nodes --> <node id="TMS470R3X_DisassemblyStyleNode"> <name>ARM 11 Disassembly Style Options</name> <children> <child>TMS470R3X_DisassMode</child> </children> </node> <!-- End TMS470R3X--> <!-- TMS470RCX Nodes --> <node id="TMS470RCX_DisassemblyStyleNode"> <name>Cortex A8 Disassembly Style Options</name> <children> <child>TMS470RCX_DisassMode</child> </children> </node> <!-- End TMS470RCX--> <!-- TMS470R9X Nodes --> <node id="TMS470R9X_DisassemblyStyleNode"> <name>Cortex A9 Disassembly Style Options</name> <children> <child>TMS470R9X_DisassMode</child> </children> </node> <!-- End TMS470R9X--> <!-- TMS470RDX Nodes --> <node id="TMS470RDX_DisassemblyStyleNode"> <name>Cortex R4 Disassembly Style Options</name> <children> <child>TMS470RDX_DisassMode</child> </children> </node> <!-- End TMS470RDX--> <!-- TMS470REX Nodes --> <node id="TMS470REX_PropertiesNode"> <name>Cortex M3 Properties</name> <children> <child>TMS470REX_DisableInterruptsWhileStepping</child> <child>TMS470REX_DisassemblyStyleNode</child> </children> </node> <node id="TMS470REX_DisassemblyStyleNode"> <name>Cortex M3 Disassembly Style Options</name> <children> <child>TMS470REX_DisassMode</child> </children> </node> <!-- End TMS470REX--> <!-- Group definitions. These appear as a dotted box grouping related option --> <!-- Generic Groups --> <group id="ProgramLoadGroup"> <name>Program/Memory Load Options</name> <children> <child>ClearBreakpointsOnLoad</child> <child>AddCEXITbreakpointAfterLoad</child> <child>AddCIOBreakpointAfterLoad</child> <child>VerifyAfterProgramLoad</child> </children> </group> <group id="RealtimeGroup"> <name>Realtime Options</name> <children> <child>UseLegacyStopMode</child> <child>AllowInterruptsWhenHalted</child> <!-- There are no targets that support this setting right now. Once there are, remove this comment <child>UsePreEmptiveAccesses</child> --> <child>PoliteRealtimeMode</child> </children> <!-- <enableIf> <realtimeEnable>true</realtimeEnable> </enableIf> --> </group> <group id="OSDebugGroup"> <name>OS Aware Debug Options</name> <children> <child>ThreadDebuggingEnabled</child> <child>AutoRefreshThreads</child> <child>ModuleDebuggingEnabled</child> </children> </group> <group id="RunToGroup"> <name>Auto Run Options</name> <children> <child>AutoRunToLabelName</child> <child>AutoRunToLabelOnRestart</child> <child>AutoRunToLabelOnReset</child> </children> </group> <group id="LaunchGroup"> <name>Launch Options</name> <children> <child>ConnectOnStartup</child> <child>EnableInstalledBreakpoint</child> <child>IgnoreSoftLaunchFailures</child> </children> </group> <group id="ConnectGroup"> <name>Connection Options</name> <children> <child>AutoResetOnConnect</child> <child>RemoveDebugStateAtConnect</child> <child>AutoConnectIfChildConnects</child> </children> </group> <!-- End Generic Groups --> <!-- MSP430 Groups --> <group id="MSP430DownloadOptionsGroup"> <name>Download Options</name> <children> <child>MSP430DownloadOptions</child> <child>L092ExternalMemoryDL</child> <child>MSP430UnlockBSLMode</child> </children> </group> <group id="GeneralClockControlGroup"> <name>General</name> <children> <child>GenClockDesc</child> <child>ClockControlACLK</child> <child>ClockControlSMCLK</child> <child>ClockControlMCLK</child> <child>ClockControlTACLK</child> </children> </group> <group id="ModuleClockControlGroup"> <name>Extended</name> <children> <child>ExtendClockDesc</child> <child>ClockControlWatchdog</child> <child>ClockControlTimerA</child> <child>ClockControlTimerB</child> <child>ClockControlBasicTimer</child> <child>ClockControlLCDFrequency</child> <child>ClockControlTimerCounter</child> <child>ClockControlTimerPort</child> <child>ClockControlUSART0</child> <child>ClockControlUSART1</child> <child>ClockControlFlashControl</child> <child>ClockControlADC</child> <child>ClockControlACLKExtPin</child> <child>ClockControlSMCLKExtPin</child> <child>ClockControlMCLKExtPin</child> </children> <disableIf> <clockcontrol>STANDARD</clockcontrol> </disableIf> </group> <group id="LowPowerModeGroup"> <name>Low Power Mode Settings</name> <children> <child>MSP430LPMx5Mode</child> </children> </group> <!-- End MSP430 Groups --> <!-- TMS320C28XX Groups --> <group id="TMS320C28XX_RegisterAddrModeGroup"> <name>Register Addressing Mode</name> <children> <child>TMS320C28XX_DisplayAtOperand</child> </children> </group> <group id="TMS320C28XX_CallsAndBranchesGroup"> <name>Calls and Branches</name> <children> <child>TMS320C28XX_DisplaySymbolically</child> </children> </group> <!-- End TMS320C28XX Groups --> <!-- TMS320C55XX Groups --> <group id="TMS320C55XX_ImmediateValueGroup"> <name>Immediate Values</name> <children> <child>TMS320C55XX_HexDisplay</child> </children> </group> <!-- End TMS320C55XX Groups --> <!-- TMS320C56XX Groups --> <group id="TMS320C56XX_ImmediateValueGroup"> <name>Immediate Values</name> <children> <child>TMS320C56XX_HexDisplay</child> </children> </group> <!-- End TMS320C56XX Groups --> <!-- TMS320C62XX Groups --> <group id="TMS320C62XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C62XX_DisplayAddress</child> <child>TMS320C62XX_DisplayCondCode</child> <child>TMS320C62XX_DisplayDelaySlot</child> <child>TMS320C62XX_DisplayOpCode</child> <child>TMS320C62XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C62XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C62XX_AliasRegSP</child> <child>TMS320C62XX_AliasRegDP</child> <child>TMS320C62XX_AliasRegFP</child> </children> </group> <!-- End TMS320C62XX Groups --> <!-- TMS320C64XX Groups --> <group id="TMS320C64XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C64XX_DisplayAddress</child> <child>TMS320C64XX_DisplayCondCode</child> <child>TMS320C64XX_DisplayDelaySlot</child> <child>TMS320C64XX_DisplayOpCode</child> <child>TMS320C64XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C64XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C64XX_AliasRegSP</child> <child>TMS320C64XX_AliasRegDP</child> <child>TMS320C64XX_AliasRegFP</child> </children> </group> <!-- End TMS320C64XX Groups --> <!-- TMS320C64XP Groups --> <group id="TMS320C64XP_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C64XP_DisplayAddress</child> <child>TMS320C64XP_DisplayCondCode</child> <child>TMS320C64XP_DisplayDelaySlot</child> <child>TMS320C64XP_DisplayOpCode</child> <child>TMS320C64XP_DisplayFuncUnit</child> </children> </group> <group id="TMS320C64XP_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C64XP_AliasRegSP</child> <child>TMS320C64XP_AliasRegDP</child> <child>TMS320C64XP_AliasRegFP</child> </children> </group> <!-- End TMS320C64XP Groups --> <!-- TMS320C67XX Groups --> <group id="TMS320C67XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C67XX_DisplayAddress</child> <child>TMS320C67XX_DisplayCondCode</child> <child>TMS320C67XX_DisplayDelaySlot</child> <child>TMS320C67XX_DisplayOpCode</child> <child>TMS320C67XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C67XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C67XX_AliasRegSP</child> <child>TMS320C67XX_AliasRegDP</child> <child>TMS320C67XX_AliasRegFP</child> </children> </group> <!-- End TMS320C67XX Groups --> <!-- Group containing properties for disabling interrupts while stepping/running etc --> <group id="DisableInterrupts"> <name>Disable interrupts</name> <children> <child>DisableIntWhileAsmStepping</child> <child>DisableIntWhileSrcStepping</child> <child>DisableIntWhileRunning</child> </children> </group> <!-- Property definitions --> <!-- Generic Property Definitions --> <property id="ClearBreakpointsOnLoad"> <target>generic</target> <name>Disable all breakpoints when loading a different program</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AddCEXITbreakpointAfterLoad"> <target>generic</target> <name>Halt at program termination (requires setting a breakpoint)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> <target>TMS320C28XX</target> <target>TMS192C2006</target> <doNotSetSystemBreakpoints>true</doNotSetSystemBreakpoints> </uniqueDefault> </property> <property id="AddCIOBreakpointAfterLoad"> <target>generic</target> <name>Enable CIO function use (requires setting a breakpoint)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>TMS192C2006</target> <doNotSetSystemBreakpoints>true</doNotSetSystemBreakpoints> </uniqueDefault> </property> <property id="PipelineAccuracy"> <target>generic</target> <name>Simulators will flush the pipeline on a halt</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="PreventStepIntoAsm"> <target>generic</target> <name>Automatically step over functions without debug information when source stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ResetOnRestart"> <target>generic</target> <name>Reset the target on a program load or restart</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <uniqueDefault value="1"> <target>MSP430</target> </uniqueDefault> </property> <property id="RemoveDebugStateAtConnect"> <target>generic</target> <name>Remove remaining debug state at connect</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="VerifyAfterProgramLoad"> <target>generic</target> <name>Verification Options</name> <valueType>ChoiceList</valueType> <values> <value>Full verification</value> <value>Fast verification</value> <value>No verification</value> </values> <defaultValue>Fast verification</defaultValue> <uniqueDefault value="Full verification"> <target>MSP430</target> </uniqueDefault> </property> <property id="UseLegacyStopMode"> <target>generic</target> <name>Halt the target before any debugger access</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- The following options are for legacy drivers that support the old realtime api's. Currently there are no drivers that support the new api's --> <property id="AllowInterruptsWhenHalted"> <target>generic</target> <name>Enable silicon real-time mode (service critical interrupts when halted, allow debugger accesses while running)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="PoliteRealtimeMode"> <target>generic</target> <name>Enable polite real-time mode</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <disableIf> <property id="AllowInterruptsWhenHalted">0</property> </disableIf> </property> <!-- The following options are for new drivers that support the new realtime api's. Currently there are no drivers that support this When we do, these properties should be optionally enabled based on a setting in the target setup ccxml file. These options differ in text, dependence of each other, and there is one additional property too <property id="AllowInterruptsWhenHalted"> <target>generic</target> <name>Service critical interrupts when halted</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> <property id="PoliteRealtimeMode"> <target>generic</target> <name>Enable polite real-time mode</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> <property id="UsePreEmptiveAccesses"> <target>generic</target> <name>Perform pre-emptive accesses (debug access may stall the target)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> --> <property id="ThreadDebuggingEnabled"> <target>generic</target> <name>Display processes and threads in the debug view</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AutoRefreshThreads"> <target>generic</target> <name>Update process list on every halt</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <disableIf> <property id="ThreadDebuggingEnabled">0</property> </disableIf> <valueOnDisabled>currentValue</valueOnDisabled> </property> <property id="ModuleDebuggingEnabled"> <target>generic</target> <name>Automatically load module symbols</name> <valueType>ChoiceList</valueType> <values> <value>Never</value> <value>When modules are loaded and unloaded (intrusive on target execution, and requires a patched kernel)</value> <value>Whenever halted in the module load/unload routines (you must manually set breakpoints in the appropriate routines for this to work)</value> </values> <defaultValue>Never</defaultValue> </property> <property id="AutoRunToLabelName"> <target>generic</target> <name>Run to</name> <valueType>String</valueType> <defaultValue>main</defaultValue> </property> <property id="AutoRunToLabelOnRestart"> <target>generic</target> <name>On a program load or restart</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AutoRunToLabelOnReset"> <target>generic</target> <name>On a reset</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <uniqueDefault value="1"> <target>MSP430</target> </uniqueDefault> </property> <property id="ConnectOnStartup"> <target>generic</target> <name>Connect to the target on debugger startup</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="AutoResetOnConnect"> <target>generic</target> <name>Reset the target on a connect</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="EnableInstalledBreakpoint"> <target>generic</target> <name>Restore breakpoints from previous session</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="IgnoreSoftLaunchFailures"> <target>generic</target> <name>Continue debug launch if target connection or program load fails</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="AutoConnectIfChildConnects"> <target>generic</target> <name>Auto connect if a child connects</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <enableIf> <target>ICEPICK_B</target> <target>ICEPick_C</target> <target>CS_DAP</target> <target>CS_DAP_PC</target> </enableIf> </property> <!-- End Generic Property Definitions --> <!-- MSP430 Property Definitions --> <property id="DisableBreakpointsOnFreeRun"> <target>MSP430</target> <name>Disable breakpoints on a free run</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AllowSoftwareBreakpoints"> <target>MSP430</target> <name>Use software breakpoints</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <eem>EMEX_HIGH</eem> </uniqueDefault> </property> <property id="UseHardwareBreakpointsFirst"> <target>MSP430</target> <name>Use hardware breakpoints by default</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="MSP430DownloadOptions"> <target>MSP430</target> <name>Erase Options</name> <valueType>ChoiceList</valueType> <values> <value>Erase main memory only</value> <value>Erase main and information memory</value> <value>Erase main, information and protected information memory</value> <value>Retain unchanged memory</value> </values> <defaultValue>Erase main and information memory</defaultValue> </property> <property id="GenClockDesc"> <target>MSP430</target> <name>Stop the following clocks on emulation halt:</name> <valueType>Text</valueType> </property> <property id="ClockControlACLK"> <target>MSP430</target> <name>Auxilary Clock (ACLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlSMCLK"> <target>MSP430</target> <name>Sub-main Clock (SMCLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlMCLK"> <target>MSP430</target> <name>Master Clock (MCLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTACLK"> <target>MSP430</target> <name>TACLK</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ExtendClockDesc"> <target>MSP430</target> <name>Stop the following clocks/associated clocks on emulation halt:</name> <valueType>Text</valueType> </property> <property id="ClockControlWatchdog"> <target>MSP430</target> <name>Watch Dog Timer (WDT)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerA"> <target>MSP430</target> <name>Timer_A</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerB"> <target>MSP430</target> <name>Timer_B</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlBasicTimer"> <target>MSP430</target> <name>Basic Timer</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlLCDFrequency"> <target>MSP430</target> <name>LCD Frequency</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlTimerCounter"> <target>MSP430</target> <name>8 bit Timer/Counter</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerPort"> <target>MSP430</target> <name>Timer Port</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlUSART0"> <target>MSP430</target> <name>USART0</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlUSART1"> <target>MSP430</target> <name>USART1</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlFlashControl"> <target>MSP430</target> <name>Flash Control</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlADC"> <target>MSP430</target> <name>Analog-to-Digital Converter (ADC)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlACLKExtPin"> <target>MSP430</target> <name>Auxiliary Clock (ACLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlSMCLKExtPin"> <target>MSP430</target> <name>Sub-main Clock (SMCLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlMCLKExtPin"> <target>MSP430</target> <name>Main Clock (MCLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TargetVoltage"> <target>MSP430</target> <name>Target Voltage (mV)</name> <valueType>Numeric</valueType> <defaultValue>3000</defaultValue> </property> <property id="L092ExternalMemoryDL"> <target>MSP430</target> <name>Copy application to external SPI memory after program load</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <supportExtMemDL>true</supportExtMemDL> </enableIf> </property> <property id="MSP430LPMx5Mode"> <target>MSP430</target> <name>Halt on device wake up (required for debugging LPMx.5 mode)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <supportLPMx5>true</supportLPMx5> </enableIf> </property> <property id="MSP430UnlockBSLMode"> <target>MSP430</target> <name>Allow Read/Write/Erase access to BSL memory</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <supportBSLMemory>true</supportBSLMemory> </enableIf> </property> <!-- End MSP430 Property Definitions --> <!-- TMS320C28XX Property Definitions --> <property id="TMS320C28XX_DisplayAtOperand"> <target>TMS320C28XX</target> <name>Display @ operand</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C28XX_AddrModeOffset"> <target>TMS320C28XX</target> <name>Addressing Mode Offset</name> <valueType>ChoiceList</valueType> <values> <value>Hexadecimal</value> <value>Decimal (default)</value> </values> <defaultValue>Decimal (default)</defaultValue> </property> <property id="TMS320C28XX_ImmediateValue"> <target>TMS320C28XX</target> <name>Immediate Value</name> <valueType>ChoiceList</valueType> <values> <value>Hexadecimal</value> <value>Decimal</value> <value>Default (refer to spec)</value> </values> <defaultValue>Default (refer to spec)</defaultValue> </property> <property id="TMS320C28XX_DisplaySymbolically"> <target>TMS320C28XX</target> <name>Display Symbolically</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C28XX Property Definitions --> <!-- TMS320C54XX Property Definitions --> <!-- Not sure if C54x will be supported <property id="TMS320C54XX_DisassemblyStyle"> <target>TMS320C54XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Mnemonic</defaultValue> </property> <property id="TMS320C54XX_DirectAddrRadix"> <target>TMS320C54XX</target> <name>Direct Addessing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Decimal</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C54XX_ImmediateAddrRadix"> <target>TMS320C54XX</target> <name>Immediate Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Decimal</value> <value>Binary</value> </values> <defaultValue>Hex</defaultValue> </property> --> <!-- End TMS320C54XX Property Definitions --> <!-- TMS320C55XX Property Definitions --> <property id="TMS320C55XX_DisassemblyStyle"> <target>TMS320C55XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Mnemonic</defaultValue> </property> <property id="TMS320C55XX_HexDisplay"> <target>TMS320C55XX</target> <name>Hexadecimal Display</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- End TMS320C55XX Property Definitions --> <!-- TMS320C56XX Property Definitions --> <property id="TMS320C56XX_DisassemblyStyle"> <target>TMS320C56XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Algebraic</defaultValue> </property> <property id="TMS320C56XX_HexDisplay"> <target>TMS320C56XX</target> <name>Hexadecimal Display</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="TMS320C56XX_OpcodeDisplayWidth"> <target>TMS320C56XX</target> <name>Opcode Display Width</name> <valueType>ChoiceList</valueType> <values> <value>Show all bytes</value> <value>Truncate to 12 bytes</value> <value>Truncate to 6 bytes</value> <value>Hide</value> </values> <defaultValue>Show all bytes</defaultValue> </property> <!-- End TMS320C56XX Property Definitions --> <!-- TMS320C62XX Property Definitions --> <property id="TMS320C62XX_AddrRadix"> <target>TMS320C62XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C62XX_Immedradix"> <target>TMS320C62XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C62XX_DisplayAddress"> <target>TMS320C62XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayCondCode"> <target>TMS320C62XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayDelaySlot"> <target>TMS320C62XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayOpCode"> <target>TMS320C62XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayFuncUnit"> <target>TMS320C62XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegSP"> <target>TMS320C62XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegDP"> <target>TMS320C62XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegFP"> <target>TMS320C62XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C62XX Property Definitions --> <!-- TMS320C64XX Property Definitions --> <property id="TMS320C64XX_AddrRadix"> <target>TMS320C64XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XX_Immedradix"> <target>TMS320C64XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XX_DisplayAddress"> <target>TMS320C64XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayCondCode"> <target>TMS320C64XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayDelaySlot"> <target>TMS320C64XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayOpCode"> <target>TMS320C64XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayFuncUnit"> <target>TMS320C64XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegSP"> <target>TMS320C64XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegDP"> <target>TMS320C64XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegFP"> <target>TMS320C64XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XX Property Definitions --> <!-- TMS320C64XP Property Definitions --> <property id="TMS320C64XP_AddrRadix"> <target>TMS320C64XP</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XP_Immedradix"> <target>TMS320C64XP</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XP_DisplayAddress"> <target>TMS320C64XP</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayCondCode"> <target>TMS320C64XP</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayDelaySlot"> <target>TMS320C64XP</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayOpCode"> <target>TMS320C64XP</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayFuncUnit"> <target>TMS320C64XP</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegSP"> <target>TMS320C64XP</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegDP"> <target>TMS320C64XP</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegFP"> <target>TMS320C64XP</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XP Property Definitions --> <!-- TMS320C67XX Property Definitions --> <property id="TMS320C67XX_AddrRadix"> <target>TMS320C67XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C67XX_Immedradix"> <target>TMS320C67XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C67XX_DisplayAddress"> <target>TMS320C67XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayCondCode"> <target>TMS320C67XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayDelaySlot"> <target>TMS320C67XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayOpCode"> <target>TMS320C67XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayFuncUnit"> <target>TMS320C67XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegSP"> <target>TMS320C67XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegDP"> <target>TMS320C67XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegFP"> <target>TMS320C67XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XX Property Definitions --> <!-- TMS470R1X Property Definitions --> <property id="TMS470R1X_DisassMode"> <target>TMS470R1X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R1X Property Definitions --> <!-- TMS470R2X Property Definitions --> <property id="TMS470R2X_DisassMode"> <target>TMS470R2X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R2X Property Definitions --> <!-- TMS470R3X Property Definitions --> <property id="TMS470R3X_DisassMode"> <target>TMS470R3X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R3X Property Definitions --> <!-- TMS470R9X Property Definitions --> <property id="TMS470R9X_DisassMode"> <target>TMS470R9X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R9X Property Definitions --> <!-- TMS470RCX Property Definitions --> <property id="TMS470RCX_DisassMode"> <target>TMS470RCX</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470RCX Property Definitions --> <!-- TMS470RDX Property Definitions --> <property id="TMS470RDX_DisassMode"> <target>TMS470RDX</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470RDX Property Definitions --> <!-- TMS470REX Property Definitions --> <property id="TMS470REX_DisableInterruptsWhileStepping"> <target>TMS470REX</target> <name>Disable interrupts while stepping (on Stellaris In-Circuit Debug Interface Only) </name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS470REX_DisassMode"> <target>TMS470REX</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470REX Property Definitions --> <!-- ISA specific properties for disabling interrupts while stepping/running etc --> <!-- MSP430 has a different option as it has to muck with a control register, so changing it would prevent stepping thru code that alters that register --> <property id="DisableIntWhileAsmStepping"> <target>generic</target> <name>When assembly stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="DisableIntWhileSrcStepping"> <target>generic</target> <name>When source stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="DisableIntWhileRunning"> <target>generic</target> <name>When running</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- fin --> </PropertyList>
Hi Ricky,
that worked fine. The only issue I found was I could only set these values after I had connected and performed a reset, eg
debugServer = (DebugServer) env.getServer("DebugServer.1");
debugServer.setConfig("c:/temp/C28027_XDS100.ccxml");
debugSession = debugServer.openSession("*", "*");
debugSession.target.connect();
debugSession.target.reset();
debugSession.options.setBoolean("UseLegacyStopMode", true);
debugSession.options.setBoolean("AllowInterruptsWhenHalted", true);
debugSession.options.setBoolean("PoliteRealtimeMode", true);
If I set these debug options before calling connect, the connect function produced an exception.
Thank you for your help.
cheers Chris
Hi Ricky,
after writing more of my code I'm now writing to variables on the piccolo A usb stick. But I notice that each time I changed a variable my interrupt stopped.
I then realised that I had set UseLegacyStopMode=true which is meant to halt the CPU before memory access. So I just removed this line and then all memory writes stops.
debugServer = (DebugServer) env.getServer("DebugServer.1");
debugServer.setConfig("../PiccoloTarget/C28027_XDS100.ccxml");
debugSession = debugServer.openSession("*", "*");
debugSession.target.connect();
debugSession.target.reset();
//debugSession.options.setBoolean("UseLegacyStopMode", true);
debugSession.options.setBoolean("AllowInterruptsWhenHalted", true);
debugSession.options.setBoolean("PoliteRealtimeMode", true);
debugSession.memory.loadProgram("../PiccoloTarget/PiccoloTarget.out");
debugSession.target.runAsynch();
Addr_PwmTicks = debugSession.symbol.getAddress("Gui_PwmTicks");
debugSession.memory.writeWord(0, Addr_PwmTicks, 300);
Then I had a look at the debug tab and saw the following errors.
DEBUG:
SEVERE: C28xx: Real-time switching could not be allowed
SEVERE: C28xx: Real-time switching could not be allowed
SEVERE: Errors during memory.writeData(): Address: 0x8842 Error: 0x400000
SEVERE: Error writing memory: Errors during memory.writeData(): Address: 0x8842 Error: 0x400000
So I think this means that while I can now set my debug options in DSS, they still don't work.
cheers Chris
Hi Ricky,
I've just tried CCS4.1.3 and it seems real time mode still isn't working.
I've tried the original and your suggested PropertiesDB.xml file. For each file when I try and set the "AllowInterruptsWhenHalted" it returns an error stating it's read only.
debugSession.options.setBoolean("AllowInterruptsWhenHalted", true); //fails, see error below
r = debugSession.options.getBoolean("AllowInterruptsWhenHalted"); //returns false
SEVERE: C28xx: Real-time switching could not be allowed
Is there anything I can do to get around this?
cheer
Chris
Chris,
The DSS real-time mode fix is scheduled to be included in CCS4.2 release, and therefore is not included in the latest CCS4.1.3 build.
As for why the workaround with the PropertiesDB.xml files not working in CCS4.1.3, I will need to investigate first. I'll update you as soon as I find out anything.
Thanks.
Ricky
Chris,
I just re-read your post and I need to clarify with you which error message you are actually getting.
You stated you are getting a read-only error when you try to set AllowInterruptsWhenHalted, but when you included the actual error message, it is "SEVERE: C28xx: Real-time switching could not be allowed", which is not an read-only error. The read-only error should be something like "Option is disabled or readonly; unable to set value." So, can you clarify which error you are actually getting? The other error is a driver error, and if that is the one you are getting, we have to make sure real-time mode is supported for the device/emulator you are using.
Some additional information from my investigation you might be interested in:
I just installed CCS4.1.3 and using the PropertiesDB.xml included in this thread, I was able to set AllowInterruptsWhenHalted after I connected to my F28035 stick via Texas Instruments XDS100v2 USB Emulator. I did notice the included PropertiesDB.xml is a little out of date, so I updated it for CCS4.1.3 if you are interested.
This is a snippet of code I was testing:
debugSession.target.connect();
env.traceWrite(debugSession.options.getBoolean("UseLegacyStopMode")) // prints false
env.traceWrite(debugSession.options.getBoolean("AllowInterruptsWhenHalted")) // prints false
env.traceWrite(debugSession.options.getBoolean("PoliteRealtimeMode")) // prints true
debugSession.options.setBoolean("AllowInterruptsWhenHalted",true)
debugSession.options.setBoolean("PoliteRealtimeMode",false)
env.traceWrite(debugSession.options.getBoolean("AllowInterruptsWhenHalted")) // prints true
env.traceWrite(debugSession.options.getBoolean("PoliteRealtimeMode")) // prints false
Thanks.
Ricky
<?xml version="1.0" encoding="UTF-8"?> <PropertyList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- Node definitions. These appear as a tree in eclipse --> <!-- Generic Nodes --> <node id="GenericPropertiesNode"> <name>Generic Debugger Options</name> <children> <child>ProgramLoadGroup</child> <child>RealtimeGroup</child> <child>RunToGroup</child> <child>LaunchGroup</child> <child>ConnectGroup</child> <child>OSDebugGroup</child> <child>PipelineAccuracy</child> <child>PreventStepIntoAsm</child> <child>ResetOnRestart</child> <child>DisableInterrupts</child> </children> </node> <!-- End Generic Nodes --> <!-- ISA specific nodes for general options --> <!-- MSP430 Nodes --> <node id="MSP430PropertiesNode"> <name>MSP430 Properties</name> <children> <child>ClockControlNode</child> <child>DisableBreakpointsOnFreeRun</child> <child>AllowSoftwareBreakpoints</child> <child>UseHardwareBreakpointsFirst</child> <child>TargetVoltage</child> <child>MSP430DownloadOptionsGroup</child> <child>LowPowerModeGroup</child> </children> </node> <node id="ClockControlNode"> <name>Clock Control</name> <children> <child>GeneralClockControlGroup</child> <child>ModuleClockControlGroup</child> </children> <disableIf> <clockcontrol>NONE</clockcontrol> </disableIf> </node> <!-- End MSP430 Nodes --> <!-- Disassembly options, which are all ISA specific --> <!-- TMS320C28XX Nodes--> <node id="TMS320C28XX_DisassemblyStyleNode"> <name>C28xx Disassembly Style Options</name> <children> <child>TMS320C28XX_RegisterAddrModeGroup</child> <child>TMS320C28XX_AddrModeOffset</child> <child>TMS320C28XX_ImmediateValue</child> <child>TMS320C28XX_CallsAndBranchesGroup</child> </children> </node> <!-- End TMS320C28XX Nodes--> <!-- TMS320C54XX Nodes--> <!-- Not sure if C54x will be supported <node id="TMS320C54XX_DisassemblyStyleNode"> <name>C54xx Disassembly Style Options</name> <children> <child>TMS320C54XX_DisassemblyStyle</child> <child>TMS320C54XX_DirectAddrRadix</child> <child>TMS320C54XX_ImmediateAddrRadix</child> </children> </node> --> <!-- End TMS320C54XX Nodes--> <!-- TMS320C55XX Nodes--> <node id="TMS320C55XX_DisassemblyStyleNode"> <name>C55xx Disassembly Style Options</name> <children> <child>TMS320C55XX_DisassemblyStyle</child> <child>TMS320C55XX_ImmediateValueGroup</child> </children> </node> <!-- End TMS320C55XX Nodes--> <!-- TMS320C56XX Nodes--> <node id="TMS320C56XX_DisassemblyStyleNode"> <name>C55X+ Disassembly Style Options</name> <children> <child>TMS320C56XX_DisassemblyStyle</child> <child>TMS320C56XX_ImmediateValueGroup</child> <child>TMS320C56XX_OpcodeDisplayWidth</child> </children> </node> <!-- End TMS320C56XX Nodes--> <!-- TMS320C62XX Nodes--> <node id="TMS320C62XX_DisassemblyStyleNode"> <name>C62XX Disassembly Style Options</name> <children> <child>TMS320C62XX_AddrRadix</child> <child>TMS320C62XX_Immedradix</child> <child>TMS320C62XX_DisplayControlGroup</child> <child>TMS320C62XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C62XX Nodes--> <!-- TMS320C64XX Nodes--> <node id="TMS320C64XX_DisassemblyStyleNode"> <name>C64XX Disassembly Style Options</name> <children> <child>TMS320C64XX_AddrRadix</child> <child>TMS320C64XX_Immedradix</child> <child>TMS320C64XX_DisplayControlGroup</child> <child>TMS320C64XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C64XX Nodes--> <!-- TMS320C64XP Nodes--> <node id="TMS320C64XP_DisassemblyStyleNode"> <name>C64XP Disassembly Style Options</name> <children> <child>TMS320C64XP_AddrRadix</child> <child>TMS320C64XP_Immedradix</child> <child>TMS320C64XP_DisplayControlGroup</child> <child>TMS320C64XP_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C64XP Nodes--> <!-- TMS320C67XX Nodes--> <node id="TMS320C67XX_DisassemblyStyleNode"> <name>C67XX Disassembly Style Options</name> <children> <child>TMS320C67XX_AddrRadix</child> <child>TMS320C67XX_Immedradix</child> <child>TMS320C67XX_DisplayControlGroup</child> <child>TMS320C67XX_AliasRegisterGroup</child> </children> </node> <!-- End TMS320C67XX Nodes--> <!-- TMS470R1X Nodes --> <node id="TMS470R1X_DisassemblyStyleNode"> <name>ARM 7 Disassembly Style Options</name> <children> <child>TMS470R1X_DisassMode</child> </children> </node> <!-- End TMS470R1X Nodes--> <!-- TMS470R2X Nodes --> <node id="TMS470R2X_DisassemblyStyleNode"> <name>ARM 9 Disassembly Style Options</name> <children> <child>TMS470R2X_DisassMode</child> </children> </node> <!-- End TMS470R2X--> <!-- TMS470R3X Nodes --> <node id="TMS470R3X_DisassemblyStyleNode"> <name>ARM 11 Disassembly Style Options</name> <children> <child>TMS470R3X_DisassMode</child> </children> </node> <!-- End TMS470R3X--> <!-- TMS470RCX Nodes --> <node id="TMS470RCX_DisassemblyStyleNode"> <name>Cortex A8 Disassembly Style Options</name> <children> <child>TMS470RCX_DisassMode</child> </children> </node> <!-- End TMS470RCX--> <!-- TMS470R9X Nodes --> <node id="TMS470R9X_DisassemblyStyleNode"> <name>Cortex A9 Disassembly Style Options</name> <children> <child>TMS470R9X_DisassMode</child> </children> </node> <!-- End TMS470R9X--> <!-- TMS470RDX Nodes --> <node id="TMS470RDX_DisassemblyStyleNode"> <name>Cortex R4 Disassembly Style Options</name> <children> <child>TMS470RDX_DisassMode</child> </children> </node> <!-- End TMS470RDX--> <!-- TMS470REX Nodes --> <node id="TMS470REX_PropertiesNode"> <name>Cortex M3 Properties</name> <children> <child>TMS470REX_DisableInterruptsWhileStepping</child> <child>TMS470REX_DisassemblyStyleNode</child> </children> </node> <node id="TMS470REX_DisassemblyStyleNode"> <name>Cortex M3 Disassembly Style Options</name> <children> <child>TMS470REX_DisassMode</child> </children> </node> <!-- End TMS470REX--> <!-- Group definitions. These appear as a dotted box grouping related option --> <!-- Generic Groups --> <group id="ProgramLoadGroup"> <name>Program/Memory Load Options</name> <children> <child>ClearBreakpointsOnLoad</child> <child>AddCEXITbreakpointAfterLoad</child> <child>AddCIOBreakpointAfterLoad</child> <child>VerifyAfterProgramLoad</child> </children> </group> <group id="RealtimeGroup"> <name>Realtime Options</name> <children> <child>UseLegacyStopMode</child> <child>AllowInterruptsWhenHalted</child> <!-- There are no targets that support this setting right now. Once there are, remove this comment <child>UsePreEmptiveAccesses</child> --> <child>PoliteRealtimeMode</child> </children> <!-- <enableIf> <realtimeEnable>true</realtimeEnable> </enableIf> --> </group> <group id="OSDebugGroup"> <name>OS Aware Debug Options</name> <children> <child>ThreadDebuggingEnabled</child> <child>AutoRefreshThreads</child> <child>ModuleDebuggingEnabled</child> </children> </group> <group id="RunToGroup"> <name>Auto Run Options</name> <children> <child>AutoRunToLabelName</child> <child>AutoRunToLabelOnRestart</child> <child>AutoRunToLabelOnReset</child> </children> </group> <group id="LaunchGroup"> <name>Launch Options</name> <children> <child>ConnectOnStartup</child> <child>EnableInstalledBreakpoint</child> <child>IgnoreSoftLaunchFailures</child> </children> </group> <group id="ConnectGroup"> <name>Connection Options</name> <children> <child>AutoResetOnConnect</child> <child>RemoveDebugStateAtConnect</child> <child>AutoConnectIfChildConnects</child> </children> </group> <!-- End Generic Groups --> <!-- MSP430 Groups --> <group id="MSP430DownloadOptionsGroup"> <name>Download Options</name> <children> <child>MSP430DownloadOptions</child> <child>L092ExternalMemoryDL</child> <child>MSP430UnlockBSLMode</child> </children> </group> <group id="GeneralClockControlGroup"> <name>General</name> <children> <child>GenClockDesc</child> <child>ClockControlACLK</child> <child>ClockControlSMCLK</child> <child>ClockControlMCLK</child> <child>ClockControlTACLK</child> </children> </group> <group id="ModuleClockControlGroup"> <name>Extended</name> <children> <child>ExtendClockDesc</child> <child>ClockControlWatchdog</child> <child>ClockControlTimerA</child> <child>ClockControlTimerB</child> <child>ClockControlBasicTimer</child> <child>ClockControlLCDFrequency</child> <child>ClockControlTimerCounter</child> <child>ClockControlTimerPort</child> <child>ClockControlUSART0</child> <child>ClockControlUSART1</child> <child>ClockControlFlashControl</child> <child>ClockControlADC</child> <child>ClockControlACLKExtPin</child> <child>ClockControlSMCLKExtPin</child> <child>ClockControlMCLKExtPin</child> </children> <disableIf> <clockcontrol>STANDARD</clockcontrol> </disableIf> </group> <group id="LowPowerModeGroup"> <name>Low Power Mode Settings</name> <children> <child>MSP430LPMx5Mode</child> </children> </group> <!-- End MSP430 Groups --> <!-- TMS320C28XX Groups --> <group id="TMS320C28XX_RegisterAddrModeGroup"> <name>Register Addressing Mode</name> <children> <child>TMS320C28XX_DisplayAtOperand</child> </children> </group> <group id="TMS320C28XX_CallsAndBranchesGroup"> <name>Calls and Branches</name> <children> <child>TMS320C28XX_DisplaySymbolically</child> </children> </group> <!-- End TMS320C28XX Groups --> <!-- TMS320C55XX Groups --> <group id="TMS320C55XX_ImmediateValueGroup"> <name>Immediate Values</name> <children> <child>TMS320C55XX_HexDisplay</child> </children> </group> <!-- End TMS320C55XX Groups --> <!-- TMS320C56XX Groups --> <group id="TMS320C56XX_ImmediateValueGroup"> <name>Immediate Values</name> <children> <child>TMS320C56XX_HexDisplay</child> </children> </group> <!-- End TMS320C56XX Groups --> <!-- TMS320C62XX Groups --> <group id="TMS320C62XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C62XX_DisplayAddress</child> <child>TMS320C62XX_DisplayCondCode</child> <child>TMS320C62XX_DisplayDelaySlot</child> <child>TMS320C62XX_DisplayOpCode</child> <child>TMS320C62XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C62XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C62XX_AliasRegSP</child> <child>TMS320C62XX_AliasRegDP</child> <child>TMS320C62XX_AliasRegFP</child> </children> </group> <!-- End TMS320C62XX Groups --> <!-- TMS320C64XX Groups --> <group id="TMS320C64XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C64XX_DisplayAddress</child> <child>TMS320C64XX_DisplayCondCode</child> <child>TMS320C64XX_DisplayDelaySlot</child> <child>TMS320C64XX_DisplayOpCode</child> <child>TMS320C64XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C64XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C64XX_AliasRegSP</child> <child>TMS320C64XX_AliasRegDP</child> <child>TMS320C64XX_AliasRegFP</child> </children> </group> <!-- End TMS320C64XX Groups --> <!-- TMS320C64XP Groups --> <group id="TMS320C64XP_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C64XP_DisplayAddress</child> <child>TMS320C64XP_DisplayCondCode</child> <child>TMS320C64XP_DisplayDelaySlot</child> <child>TMS320C64XP_DisplayOpCode</child> <child>TMS320C64XP_DisplayFuncUnit</child> </children> </group> <group id="TMS320C64XP_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C64XP_AliasRegSP</child> <child>TMS320C64XP_AliasRegDP</child> <child>TMS320C64XP_AliasRegFP</child> </children> </group> <!-- End TMS320C64XP Groups --> <!-- TMS320C67XX Groups --> <group id="TMS320C67XX_DisplayControlGroup"> <name>Display Control</name> <children> <child>TMS320C67XX_DisplayAddress</child> <child>TMS320C67XX_DisplayCondCode</child> <child>TMS320C67XX_DisplayDelaySlot</child> <child>TMS320C67XX_DisplayOpCode</child> <child>TMS320C67XX_DisplayFuncUnit</child> </children> </group> <group id="TMS320C67XX_AliasRegisterGroup"> <name>Alias Register</name> <children> <child>TMS320C67XX_AliasRegSP</child> <child>TMS320C67XX_AliasRegDP</child> <child>TMS320C67XX_AliasRegFP</child> </children> </group> <!-- End TMS320C67XX Groups --> <!-- Group containing properties for disabling interrupts while stepping/running etc --> <group id="DisableInterrupts"> <name>Disable interrupts</name> <children> <child>DisableIntWhileAsmStepping</child> <child>DisableIntWhileSrcStepping</child> <child>DisableIntWhileRunning</child> </children> </group> <!-- Property definitions --> <!-- Generic Property Definitions --> <property id="ClearBreakpointsOnLoad"> <target>generic</target> <name>Disable all breakpoints when loading a different program</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AddCEXITbreakpointAfterLoad"> <target>generic</target> <name>Halt at program termination (requires setting a breakpoint)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> <target>TMS320C28XX</target> <target>TMS192C20XX</target> <doNotSetSystemBreakpoints>true</doNotSetSystemBreakpoints> </uniqueDefault> </property> <property id="AddCIOBreakpointAfterLoad"> <target>generic</target> <name>Enable CIO function use (requires setting a breakpoint)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>TMS192C20XX</target> <doNotSetSystemBreakpoints>true</doNotSetSystemBreakpoints> </uniqueDefault> </property> <property id="PipelineAccuracy"> <target>generic</target> <name>Simulators will flush the pipeline on a halt</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="PreventStepIntoAsm"> <target>generic</target> <name>Automatically step over functions without debug information when source stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ResetOnRestart"> <target>generic</target> <name>Reset the target on a program load or restart</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <uniqueDefault value="1"> <target>MSP430</target> </uniqueDefault> </property> <property id="RemoveDebugStateAtConnect"> <target>generic</target> <name>Remove remaining debug state at connect</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="VerifyAfterProgramLoad"> <target>generic</target> <name>Verification Options</name> <valueType>ChoiceList</valueType> <values> <value>Full verification</value> <value>Fast verification</value> <value>No verification</value> </values> <defaultValue>Fast verification</defaultValue> <uniqueDefault value="Full verification"> <target>MSP430</target> </uniqueDefault> </property> <property id="UseLegacyStopMode"> <target>generic</target> <name>Halt the target before any debugger access</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- The following options are for legacy drivers that support the old realtime api's. Currently there are no drivers that support the new api's --> <property id="AllowInterruptsWhenHalted"> <target>generic</target> <name>Enable silicon real-time mode (service critical interrupts when halted, allow debugger accesses while running)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="PoliteRealtimeMode"> <target>generic</target> <name>Enable polite real-time mode</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- The following options are for new drivers that support the new realtime api's. Currently there are no drivers that support this When we do, these properties should be optionally enabled based on a setting in the target setup ccxml file. These options differ in text, dependence of each other, and there is one additional property too <property id="AllowInterruptsWhenHalted"> <target>generic</target> <name>Service critical interrupts when halted</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> <property id="PoliteRealtimeMode"> <target>generic</target> <name>Enable polite real-time mode</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> <property id="UsePreEmptiveAccesses"> <target>generic</target> <name>Perform pre-emptive accesses (debug access may stall the target)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <realtimeEnabled>true</realtimeEnabled> </enableIf> </property> --> <property id="ThreadDebuggingEnabled"> <target>generic</target> <name>Display processes and threads in the debug view</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AutoRefreshThreads"> <target>generic</target> <name>Update process list on every halt</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <disableIf> <property id="ThreadDebuggingEnabled">0</property> </disableIf> <valueOnDisabled>currentValue</valueOnDisabled> </property> <property id="ModuleDebuggingEnabled"> <target>generic</target> <name>Automatically load module symbols</name> <valueType>ChoiceList</valueType> <values> <value>Never</value> <value>When modules are loaded and unloaded (intrusive on target execution, and requires a patched kernel)</value> <value>Whenever halted in the module load/unload routines (you must manually set breakpoints in the appropriate routines for this to work)</value> </values> <defaultValue>Never</defaultValue> </property> <property id="AutoRunToLabelName"> <target>generic</target> <name>Run to</name> <valueType>String</valueType> <defaultValue>main</defaultValue> </property> <property id="AutoRunToLabelOnRestart"> <target>generic</target> <name>On a program load or restart</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AutoRunToLabelOnReset"> <target>generic</target> <name>On a reset</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <uniqueDefault value="1"> <target>MSP430</target> </uniqueDefault> </property> <property id="ConnectOnStartup"> <target>generic</target> <name>Connect to the target on debugger startup</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="AutoResetOnConnect"> <target>generic</target> <name>Reset the target on a connect</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="EnableInstalledBreakpoint"> <target>generic</target> <name>Restore breakpoints from previous session</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="IgnoreSoftLaunchFailures"> <target>generic</target> <name>Continue debug launch if target connection or program load fails</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="AutoConnectIfChildConnects"> <target>generic</target> <name>Auto connect if a child connects</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <enableIf> <target>ICEPICK_B</target> <target>ICEPick_C</target> <target>CS_DAP</target> <target>CS_DAP_PC</target> </enableIf> </property> <!-- End Generic Property Definitions --> <!-- MSP430 Property Definitions --> <property id="DisableBreakpointsOnFreeRun"> <target>MSP430</target> <name>Disable breakpoints on a free run</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="AllowSoftwareBreakpoints"> <target>MSP430</target> <name>Use software breakpoints</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <eem>EMEX_HIGH</eem> </uniqueDefault> </property> <property id="UseHardwareBreakpointsFirst"> <target>MSP430</target> <name>Use hardware breakpoints by default</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="MSP430DownloadOptions"> <target>MSP430</target> <name>Erase Options</name> <valueType>ChoiceList</valueType> <values> <value>Erase main memory only</value> <value>Erase main and information memory</value> <value>Erase main, information and protected information memory</value> <value>Retain unchanged memory</value> </values> <defaultValue>Erase main and information memory</defaultValue> </property> <property id="GenClockDesc"> <target>MSP430</target> <name>Stop the following clocks on emulation halt:</name> <valueType>Text</valueType> </property> <property id="ClockControlACLK"> <target>MSP430</target> <name>Auxilary Clock (ACLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlSMCLK"> <target>MSP430</target> <name>Sub-main Clock (SMCLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlMCLK"> <target>MSP430</target> <name>Master Clock (MCLK)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTACLK"> <target>MSP430</target> <name>TACLK</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ExtendClockDesc"> <target>MSP430</target> <name>Stop the following clocks/associated clocks on emulation halt:</name> <valueType>Text</valueType> </property> <property id="ClockControlWatchdog"> <target>MSP430</target> <name>Watch Dog Timer (WDT)</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerA"> <target>MSP430</target> <name>Timer_A</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerB"> <target>MSP430</target> <name>Timer_B</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlBasicTimer"> <target>MSP430</target> <name>Basic Timer</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlLCDFrequency"> <target>MSP430</target> <name>LCD Frequency</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlTimerCounter"> <target>MSP430</target> <name>8 bit Timer/Counter</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlTimerPort"> <target>MSP430</target> <name>Timer Port</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlUSART0"> <target>MSP430</target> <name>USART0</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlUSART1"> <target>MSP430</target> <name>USART1</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlFlashControl"> <target>MSP430</target> <name>Flash Control</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlADC"> <target>MSP430</target> <name>Analog-to-Digital Converter (ADC)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlACLKExtPin"> <target>MSP430</target> <name>Auxiliary Clock (ACLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="ClockControlSMCLKExtPin"> <target>MSP430</target> <name>Sub-main Clock (SMCLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="ClockControlMCLKExtPin"> <target>MSP430</target> <name>Main Clock (MCLK) on external pin</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TargetVoltage"> <target>MSP430</target> <name>Target Voltage (mV)</name> <valueType>Numeric</valueType> <defaultValue>3000</defaultValue> </property> <property id="L092ExternalMemoryDL"> <target>MSP430</target> <name>Copy application to external SPI memory after program load</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <supportExtMemDL>true</supportExtMemDL> </enableIf> </property> <property id="MSP430LPMx5Mode"> <target>MSP430</target> <name>Halt on device wake up (required for debugging LPMx.5 mode)</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <supportLPMx5>true</supportLPMx5> </enableIf> </property> <property id="MSP430UnlockBSLMode"> <target>MSP430</target> <name>Allow Read/Write/Erase access to BSL memory</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> <enableIf> <supportBSLMemory>true</supportBSLMemory> </enableIf> </property> <!-- End MSP430 Property Definitions --> <!-- TMS320C28XX Property Definitions --> <property id="TMS320C28XX_DisplayAtOperand"> <target>TMS320C28XX</target> <name>Display @ operand</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C28XX_AddrModeOffset"> <target>TMS320C28XX</target> <name>Addressing Mode Offset</name> <valueType>ChoiceList</valueType> <values> <value>Hexadecimal</value> <value>Decimal (default)</value> </values> <defaultValue>Decimal (default)</defaultValue> </property> <property id="TMS320C28XX_ImmediateValue"> <target>TMS320C28XX</target> <name>Immediate Value</name> <valueType>ChoiceList</valueType> <values> <value>Hexadecimal</value> <value>Decimal</value> <value>Default (refer to spec)</value> </values> <defaultValue>Default (refer to spec)</defaultValue> </property> <property id="TMS320C28XX_DisplaySymbolically"> <target>TMS320C28XX</target> <name>Display Symbolically</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C28XX Property Definitions --> <!-- TMS320C54XX Property Definitions --> <!-- Not sure if C54x will be supported <property id="TMS320C54XX_DisassemblyStyle"> <target>TMS320C54XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Mnemonic</defaultValue> </property> <property id="TMS320C54XX_DirectAddrRadix"> <target>TMS320C54XX</target> <name>Direct Addessing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Decimal</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C54XX_ImmediateAddrRadix"> <target>TMS320C54XX</target> <name>Immediate Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Decimal</value> <value>Binary</value> </values> <defaultValue>Hex</defaultValue> </property> --> <!-- End TMS320C54XX Property Definitions --> <!-- TMS320C55XX Property Definitions --> <property id="TMS320C55XX_DisassemblyStyle"> <target>TMS320C55XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Mnemonic</defaultValue> </property> <property id="TMS320C55XX_HexDisplay"> <target>TMS320C55XX</target> <name>Hexadecimal Display</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- End TMS320C55XX Property Definitions --> <!-- TMS320C56XX Property Definitions --> <property id="TMS320C56XX_DisassemblyStyle"> <target>TMS320C56XX</target> <name>Disassembly Style</name> <valueType>ChoiceList</valueType> <values> <value>Algebraic</value> <value>Mnemonic</value> </values> <defaultValue>Algebraic</defaultValue> </property> <property id="TMS320C56XX_HexDisplay"> <target>TMS320C56XX</target> <name>Hexadecimal Display</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <property id="TMS320C56XX_OpcodeDisplayWidth"> <target>TMS320C56XX</target> <name>Opcode Display Width</name> <valueType>ChoiceList</valueType> <values> <value>Show all bytes</value> <value>Truncate to 12 bytes</value> <value>Truncate to 6 bytes</value> <value>Hide</value> </values> <defaultValue>Show all bytes</defaultValue> </property> <!-- End TMS320C56XX Property Definitions --> <!-- TMS320C62XX Property Definitions --> <property id="TMS320C62XX_AddrRadix"> <target>TMS320C62XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C62XX_Immedradix"> <target>TMS320C62XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C62XX_DisplayAddress"> <target>TMS320C62XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayCondCode"> <target>TMS320C62XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayDelaySlot"> <target>TMS320C62XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayOpCode"> <target>TMS320C62XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_DisplayFuncUnit"> <target>TMS320C62XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegSP"> <target>TMS320C62XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegDP"> <target>TMS320C62XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C62XX_AliasRegFP"> <target>TMS320C62XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C62XX Property Definitions --> <!-- TMS320C64XX Property Definitions --> <property id="TMS320C64XX_AddrRadix"> <target>TMS320C64XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XX_Immedradix"> <target>TMS320C64XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XX_DisplayAddress"> <target>TMS320C64XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayCondCode"> <target>TMS320C64XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayDelaySlot"> <target>TMS320C64XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayOpCode"> <target>TMS320C64XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_DisplayFuncUnit"> <target>TMS320C64XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegSP"> <target>TMS320C64XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegDP"> <target>TMS320C64XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XX_AliasRegFP"> <target>TMS320C64XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XX Property Definitions --> <!-- TMS320C64XP Property Definitions --> <property id="TMS320C64XP_AddrRadix"> <target>TMS320C64XP</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XP_Immedradix"> <target>TMS320C64XP</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C64XP_DisplayAddress"> <target>TMS320C64XP</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayCondCode"> <target>TMS320C64XP</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayDelaySlot"> <target>TMS320C64XP</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayOpCode"> <target>TMS320C64XP</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_DisplayFuncUnit"> <target>TMS320C64XP</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegSP"> <target>TMS320C64XP</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegDP"> <target>TMS320C64XP</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C64XP_AliasRegFP"> <target>TMS320C64XP</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XP Property Definitions --> <!-- TMS320C67XX Property Definitions --> <property id="TMS320C67XX_AddrRadix"> <target>TMS320C67XX</target> <name>Addressing Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C67XX_Immedradix"> <target>TMS320C67XX</target> <name>Immediate Radix</name> <valueType>ChoiceList</valueType> <values> <value>Hex</value> <value>Dec</value> </values> <defaultValue>Hex</defaultValue> </property> <property id="TMS320C67XX_DisplayAddress"> <target>TMS320C67XX</target> <name>Address</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayCondCode"> <target>TMS320C67XX</target> <name>Cond. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayDelaySlot"> <target>TMS320C67XX</target> <name>Delay Slot</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayOpCode"> <target>TMS320C67XX</target> <name>Op. Code</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_DisplayFuncUnit"> <target>TMS320C67XX</target> <name>Functional Unit</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegSP"> <target>TMS320C67XX</target> <name>SP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegDP"> <target>TMS320C67XX</target> <name>DP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS320C67XX_AliasRegFP"> <target>TMS320C67XX</target> <name>FP</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <!-- End TMS320C64XX Property Definitions --> <!-- TMS470R1X Property Definitions --> <property id="TMS470R1X_DisassMode"> <target>TMS470R1X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R1X Property Definitions --> <!-- TMS470R2X Property Definitions --> <property id="TMS470R2X_DisassMode"> <target>TMS470R2X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R2X Property Definitions --> <!-- TMS470R3X Property Definitions --> <property id="TMS470R3X_DisassMode"> <target>TMS470R3X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R3X Property Definitions --> <!-- TMS470R9X Property Definitions --> <property id="TMS470R9X_DisassMode"> <target>TMS470R9X</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470R9X Property Definitions --> <!-- TMS470RCX Property Definitions --> <property id="TMS470RCX_DisassMode"> <target>TMS470RCX</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470RCX Property Definitions --> <!-- TMS470RDX Property Definitions --> <property id="TMS470RDX_DisassMode"> <target>TMS470RDX</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470RDX Property Definitions --> <!-- TMS470REX Property Definitions --> <property id="TMS470REX_DisableInterruptsWhileStepping"> <target>TMS470REX</target> <name>Disable interrupts while stepping (on Stellaris In-Circuit Debug Interface Only) </name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> </property> <property id="TMS470REX_DisassMode"> <target>TMS470REX</target> <name>Disassembly Mode</name> <valueType>ChoiceList</valueType> <values> <value>Mixed ARM/Thumb</value> <value>ARM Only</value> <value>Thumb Only</value> </values> <defaultValue>Mixed ARM/Thumb</defaultValue> </property> <!-- EndTMS470REX Property Definitions --> <!-- ISA specific properties for disabling interrupts while stepping/running etc --> <!-- MSP430 has a different option as it has to muck with a control register, so changing it would prevent stepping thru code that alters that register --> <property id="DisableIntWhileAsmStepping"> <target>generic</target> <name>When assembly stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="DisableIntWhileSrcStepping"> <target>generic</target> <name>When source stepping</name> <valueType>Boolean</valueType> <defaultValue>1</defaultValue> <uniqueDefault value="0"> <target>MSP430</target> </uniqueDefault> </property> <property id="DisableIntWhileRunning"> <target>generic</target> <name>When running</name> <valueType>Boolean</valueType> <defaultValue>0</defaultValue> </property> <!-- fin --> </PropertyList>
Hi Ricky,
When I used the installed PropertiesDB.xml I get
debugSession.options.setBoolean("AllowInterruptsWhenHalted",true) -> "SEVERE: Option is disabled or readonly; unable to set value." and causes an exception to occur.
When I use your new PropertiesDB.xml I get
debugSession.options.setBoolean("AllowInterruptsWhenHalted",true) -> "SEVERE: C28xx: Real-time switching could not be allowed." env.traceWrite(debugSession.options.getBoolean("AllowInterruptsWhenHalted")) // prints FALSE
So I'm guessing I have a driver error??
My setup is as follows:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configurations XML_version="1.2" id="configurations_0">
<configuration XML_version="1.2" id="Texas Instruments XDS100v2 USB Emulator_0">
<instance XML_version="1.2" desc="Texas Instruments XDS100v2 USB Emulator_0" href="connections\TIXDS100v2_Connection.xml" id="Texas Instruments XDS100v2 USB Emulator_0" xml="TIXDS100v2_Connection.xml" xmlpath="connections"/>
<connection XML_version="1.2" id="Texas Instruments XDS100v2 USB Emulator_0">
<instance XML_version="1.2" href="drivers\tixds100v2c28x.xml" id="drivers" xml="tixds100v2c28x.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers\tixds100v2cla.xml" id="drivers" xml="tixds100v2cla.xml" xmlpath="drivers"/>
<platform XML_version="1.2" id="platform_0">
<instance XML_version="1.2" desc="TMS320F28035_0" href="devices\f28035.xml" id="TMS320F28035_0" xml="f28035.xml" xmlpath="devices"/>
</platform>
</connection>
</configuration>
</configurations>
Is there any extra information I can extract to see why my driver doesn't think real time is enabled?
cheers
Chris
Hi Ricky,
I used a clean XP pc and installed CCS4.1.3 (and used your PropertiesDB.xml) with netbeans for java development.
I found that when I ran your test code without any breakpoints it did print true for "AllowInterruptsWhenHalted". But if I single steped over the code it came back false. This is how I was debugging it before. If you single step your test code does it still print true?
When I ran my code (without any breakpoints so AllowInterruptsWhenHalted==true) I then found when I accessed memory I got the following errors
debug:
Have no FileObject for C:\Program Files\Java\jdk1.5.0_14\jre\lib\i18n.jar
Have no FileObject for C:\Program Files\Java\jdk1.5.0_14\jre\lib\sunrsasign.jar
Have no FileObject for C:\Program Files\Java\jdk1.5.0_14\jre\classes
SEVERE: C28xx: Real-time switching could not be allowed
SEVERE: C28xx: Real-time switching could not be allowed
SEVERE: Errors during memory.writeData(): Address: 0x8ac7 Error: 0x400000
SEVERE: Error writing memory: Errors during memory.writeData(): Address: 0x8ac7 Error: 0x400000
When I use CCS4 to debug some target code I can set "enable silcon real-time mode" and "enable polite real-time mode" without any problem.
cheers Chris
Chris,
Thanks for the test case. I did not try out any more scenarios than reading/writing to the option, since I am mainly responsible for the PropertiesDB component; but I can try out your use case and see if I can reproduce it or not. I'll let you know if I find more information.
Regards,
Ricky
Chris,
I think I figured out what the problem is. In CCS, when you send the real-time option "Enable silicon real-time mode", you get the following dialog:
But DSS cannot represent the dialog in your script, and therefore it will default to the choice "No" for the dialog, and therefore, the option does not get applied.
There are two workarounds:
1. Set ST1 bit 1 to 0 first before setting the option:
var st1Val = debugSession.memory.readRegister("ST1");
var st1ValMod = st1Val & ~2;
debugSession.memory.writeRegister("ST1",st1ValMod);
2. Use DSS to modify the default choice of dialogs:
debugSession.setDefaultDialogResponse("Yes");
Let me know if it works for you or not.
Thanks.
Ricky
Hi Ricky,
your are a genius ;-) It now kinda works. There are some restrictions..
1) This doesn't work, it still gives an error.
st1Val = debugSession.memory.readRegister("ST1"); //2571
st1ValMod = st1Val & ~2; //2569
debugSession.memory.writeRegister("ST1",st1ValMod);debugSession.options.setBoolean("AllowInterruptsWhenHalted",true);
SEVERE: C28xx: Real-time switching could not be allowed
2) This does seem to work
debugSession.setDefaultDialogResponse("Yes");
3) The order of debugsession command are important, eg
debugServer = (DebugServer) env.getServer("DebugServer.1");
debugServer.setConfig("../PiccoloTarget/C28027_XDS100.ccxml");
debugSession = debugServer.openSession("*", "*");
debugSession.target.connect();
debugSession.target.reset();
debugSession.memory.loadProgram("../PiccoloTarget/PiccoloTarget.out");
// the next 4 lines must be called after loadProgram
//Otherwise getAddress fails
debugSession.setDefaultDialogResponse("Yes");
debugSession.options.setBoolean("UseLegacyStopMode",false);
debugSession.options.setBoolean("AllowInterruptsWhenHalted",true);
//This must also be set to true for memory read/writes to work.
debugSession.options.setBoolean("PoliteRealtimeMode",true);
debugSession.target.runAsynch();
Addr = debugSession.symbol.getAddress("Gui_A");
debugSession.memory.writeWord(0, Addr, 0x55);
value = debugSession.memory.readWord(0, Addr);
Thank you very much for your help.
cheers Chris
I have just started using CCS Version: 4.2.1.00004 and I have found that our code will work only with the patched version of PropertiesDB.xml mentioned above.
It seems that the 4.2 release does not include the necessary fix. Is this so or has there been another change that prevents our code from working?
Peter,
Can you let me know what exactly is not working (ie; what connection/board you are using, what you are doing in your scripting, what is the error message)? We discussed a few different problems in this thread, and I want to make sure I am addressing the correct one.
As a simple test, I was able to set the realtime option (AllowInterruptsWhenHalted) on a F28035/XDS100 on CCS4.2.0, so I expect the various fixes to be in the CCS4.2.1 build.
Thanks.
Ricky
The problem has been resolved.
I had installed CCS 4.2 from the disc supplied with the EVM6474L. This installation came up with an error (the problem has been reported to eInfochips) which appeared to have nothing to do with CCS directly and seemed to leave it working. After many strange problems (including the PropertiesDB.xml issue and the abject failure of on-line software updates), I decided to remove that installation of CCS 4.2 and use a direct download from the TI site. This installed without error and seems to be working. The PropertiesDB.xml file included in that release does allow memory access without halting the processors.
Thank you for your investigation.