RC1
Implement decoder first
Make mcds_hl_decoder.h a base class
Move specific implementation part to mcds_hl_decoder_axg.h/cpp
Add then mcds_hl_decoder_rcx.h/cpp

MTV
When no device is connected: Support opening .mcds files without messages/trace data and .mcdsc files.

MTV
Can detect that a TC4x device is a PD and issue a warning for trace to RAM

MTV
CPB trace for TC49N not selectable

ContTrace TC4x
IFSD has IFTG parts when started without reset before. Strange

Trace over Ethernet
Implement test case with ClientTrc first
Identifier is TRCUDP <port number>
In the server this instantiates a "TRCUDP device with this port number"
All ClientTrc with the same port number will connect to this instance
Implement there the dummy traces and remove them from the DAP class


The capability should be somehow visible to a client
Use a fixed port number
Client sets up channel to listen
Related MCDS config is downloaded as a 2nd step
TasAgent recognizes "setup Ethernet trace" by a certain access.
Could be also a write to a TAS AMAP XYZ address
Also need a mechanism to transport the TRCUDP port number 
Or it is just recognized by the write to TRIF_CTRL.OPMODE
This write is then delayed until the ISR is setup.

MCD API -> DAS
Include DAS DLL as source code as first step.

TC4D SRI.CPU0
In-range data qualification does not work, but out of range does (250507)

Adapt TC4Ex trace MUX configuration according to Jira 0000065261-63


Extend tdr_addr to 32 bit and use as criteria in MCDS0/1 qsort if no time information present

Idea:
.mcds file with markers for sections relevant to download
A2G compress by replacing long multick sequences by a single timestamp message

PTE to write locatable program that can be used for regression testing

TAS_PPRINT
Spinlock based reservation from different CPUs
CPU ID, VM, stream
Notifier if item was lost - Bit 15 of stream?

MTV - combine trace streams feature
Store also A2G in MTSC format -> up to 4 streams
Individual stream offset in ticks in .mcds file header
Stream offset can be negative as well
By default, streams are aligned by trigger trace marker

Or just define a binary message format for .mcds files with some compression

Generate mdar_tc49x[MDAR_NUM_RANGES_TC49X] when TC49N UM is available

Analyze MTV issue "unsolicited LMU initialization by MTV" found by Kajetan 230628

Publish in appnote the A3G configuration for CFT

Profiler class:
Can add traces incrementally - could come from different cars!!!!!
Finds all contained functions
Gives ratings of functions whether measurements are possible

Decoder:
If MTSC container cnt is not sequential, identify and handle and mark this then as trace gaps!

Put Recorder Lib on top of TAS Client API

Exclude CSA for A1G, A2G:
Read LCX register (use mcdsdl_get_data_symbol_addr())
Convert it to addr (TC manual: Figure 21 Generation of the Effective Address of a Context Save Area (CSA))
Get CSA from ELF and set data trace qualification accordingly

MTV bug:
Open an A3G .mcds file
Start tracing with an A2G device
-> GUI hint for data trace HW addresses is still for A3G

Generate also module address ranges with Python code generator

Add fine grained filtering 
Would be very much appreciated for Mathwork PIL setup

CMcdsrlUtils::mAnalyzeMcdscData()
miniMCDS properly supported at all????? -> Circular trace!!!! - RV_MCXACT22_ not in CMcdsrlUtils!!!!!!

Stack level analysis
Change stack level analysis so that it works better for IP qualified trace:
Call out of range + EndOfTrace + StartOfTrace at IP after call instruction
Final RET before EndOfTrace is ignored
Remove dependency on statistic collection

Decoder: Flow - IPI0 message visible in TC3xx/TC35x_FCALL_FRET_CPU1fl_EITM_201113.mcds in line 22
First analysis: This is a case with two indirect branches in a single MCDS cycle.
Providing a fix is not impossible but complex:
From CALL/RET stack analysis it is possible to guess what is missing.
Need to ensure from both sides, forward and backward, to be sure 

hl_decoder_test
Check also error counter.
Default is no errors, otherwise hand over a reference error counter struct.
WCED are handled smartly

Add control options to mcdsl_mcdsc_hdr_st for remote debug case
One param gives the type of mcdsl_mcdsc_hdr_st
It should support the setting of the fine grained filter in an efficient way
E.g. setting consecutive words with the same value.
Could use the lowest two address bits to encode this (block writes and init writes)
Leave this option for later.

Setup for regression testing:
Code is stored in regular .mcds files
It is following certain rules, e.g. the start address is a fixed location in the PSPR.
Code is downloaded, started and runs until trigger
Trace is compared on ASCII level with reference value
Maybe two versions of the reference file are needed (CPU clock can be phase shifted compared to MCDS clock)

A3G Add time stamping to qline

Utility functions above Recorder lib API, that generate command sequences e.g. for a breakpoint
Not part of Recorder lib to keep the Recorder implementation simple

CMcdsrlDeviceIf::mAdaptDape() not yet used
CMcdsrlDeviceIf::mCheckAndHandleSbdap() not yet used

Definition of a special transfer optimized mcdsl_mcdsc_st format will be done later
Convention e.g. that all FGTQ RAM locations not explicitly transferred are automatically set to 0
Can easily define escape sequences by "writing" to addr 0

Continuous trace with miniMCDS

    Problem to be solved: MCDS write bandwidth can be very bursty and unpredictable much faster (or slower) 
    than the DAP read bandwidth. There needs to be a fully reliable mechanism for detecting overruns.
    
    Basic idea:
    Use an MCX counter to count paragraphs
    With the counter value it can be detected:
    1. that a paragraph is full and can be read with a DAP blockread
    2. that an overrun between write and read pointer occurred (trace data was overwritten before or while it was read)
    
    The following algorithm uses the full 1024 block read possibility of DAP and minimizes the read accesses:
    Use event 20 (sync_rq) in MCXACT34 to create mcx_trig0 pulse in MCXEVT1.
    MCXEVT1 is used to increment the event counter

    Start the trace recording
    Loop:
    Read the MCX counter and compare it to reference counter in tool:
    If equal: Wait until higher
    If higher but no overrun: Read paragraph from TRAM and increment reference counter
    If overrun: Discard the previous paragraph and start algorithm again.

    A 16 bit MCX event counter is sufficient. The overrun of the counter just needs to be considered.

    For marking trace gaps in the trace data the TC4x MTSC format can be used.
    Or an EOT message could be artificially inserted at the end of the paragraph before the overrun.
    This requires however trace decoding.


OS analyzer
Get CSA range by reading TC registers (trace based analysis is not reliable)
Reduce flexibility to a single task ID address?

MCDSAL_ET_TIME
Just trace Cerberus reading the CPU's STM. Sequence: STM6 - STM0 - STM6

New possible feature: trigger or qualify on dcu_isr - should work now in A2G (NESTED ISR restrictions apply)

Calculate time in OS by just taking the time where interrupts are disabled
Task ID write is during this phase, dispatcher not necessarily

Replace MTV popup windows with a console - should be an independant window
Can log there also with timestamp Device connect, resets, etc.
Higlight stuff with colored font

.mcds files with MTSC format
Provide an absolute time and in the header
First container starts then with 0
Following containers are then scaled
Could compress old traces with many multitick messages to multimultiTick format (using "NTN" skip

MTV introduce "Store special" for
.mcds files in A3G format
IFTG and IFSD .mcdsc files
.tab files

Implement CMcdsElfFromMcdsFile::get_tl_func_array()

OTGB trigger syntax: (otgb0 & 0xf0) == 0x70 or even (otgb01 & 0x3F0000) == 0x110000
OTGB comment output: For OTGB0/1 mark unchanged TS with u: e.g. "DMA_TS16_PFu"
Or create syntax where posedges are indicated with a postfix /

Implement task triggering for "CPU0 TASK33" or in short "C0 T33"
This requires to include the bus master in the trigger equation
Allow this as a general trigger feature, but restrict to CPUs
Also allow "!CPU0"

Option to use the task mechanism just for ON/off watchpoints
Define an OLDA address for that
Can specify then that ON data value or the off data value or both
Or with address? TASKon = 0x80000888 TASKoff = 0x8000088C

Filter out redundant IPA messages which are output at paragraph start with same IP value as before
This effect happened in the CPU0/1 accesses to DSPR2 stall CPU2 (email Reinhard 150505)
Not sure whether this filtering makes sense???

Double click to copy cell content of MTV table view?


###################################################################################################
DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE DONE 
###################################################################################################

MTV:
If target was DAS connected -> no session name, then with the select window the connection fails

Changing TAS channel crashes TasServer
Analysis: Due to "UNSUBSCRIBE" packet of old ClientChl. TasServer hardened a bit.

TAS_PRINT
print standardization with channels and trace
print output to TAS channels if available
Trace output to OLDA always
use 8 byte writes
Use a different address for the string start -> can search this backward from the string end message
If highest byte is 0, this word contains the end of the string
Decoder will combine the different words of a string
First use case: C0P0 Thank you Reinhard!

Decoder
mctrlOpointsTc4Dx, mctrlOpointsTc43x done
fmiChoiceOpoint_Tc4Dx, fmiChoiceOpoint_Tc43x done
mdar_tc4dx done

Elf reader:
Search by address should always return the same symbol
But search by symbol should still be possible for redundant symbols

Simplify A1G2G OTGB implementation
Done: Reduce definitions to TS16 only (no OTGB2 and map all TS8)
Done: Check that multi configs on one OTGBx leads to complex detection
Done: Replace CLC register handling with CRegName.get_addr_from_regname()
Done: Use CRegName.get_addr_from_regname() to check if a register exist for a specific product and for the associated CLC register
Do not add the rest like CAN, HSSL, etc. since too much effort. Can be supported by tool partners.

MTV/Decoder:
Set symbol to full register name also in case of an unaligned byte access
E.g. output symbol "SCU_CCUCON0" instead of .SCU 

A3G get_config_reg_sequence()
Write one word to TBUF0/1 to ensure that new trace was generated in a post trigger trace + PORST scenario
This also helps for the TRACE_TO_RAM cases to find this out

Added to decoder lib:
mcd_bool_t mcdsdl_get_code_symbol_addr(mctrl_opoint_et8 opoint_ptu, const mcd_char_t* symbol, uint32_t *start_addr, uint32_t *size);
mcd_bool_t mcdsdl_get_data_symbol_addr(mctrl_opoint_et8 opoint_ptu, const mcd_char_t* symbol, uint32_t *start_addr, uint32_t *size);

Check if TC38xEVO will have the same miniMCDS bugs as TC38x
No according to errata sheet

Make sure that there is a lot of trace before a trigger
So start circular mode (not in case of after reset) 
and activate the end of trace trigger later, when trace has been already generated
Not implemented since there could be the confusing situation that there is the trigger condition without trigger 

MTV checks before release in /mcds/test/MTV_release_tests_with_boards.xlsx

MTV: Clear trace table when a .mcdsc config file is loaded
MTV: Prevent redundant frequency measurement when a .mcdsc config file is loaded

Bug fix: CSA was not always properly shown for A2G devices (opnt was SRI instead of CPU)

Fix for TSR issue (email Reinhard 210324)
No workaround possible since different OBs can create a situation where it will happen that TSR messages with a difference of 1 are issued

TC49x A-step
CPUx.DMI subchannel encoding in sideband is converted from 0 to 3 (TC4xx family encoding) for TC49x A-step

MTV bug:
0x0100 < (u16 & 0xFF00) < 0x8000     was converted to:
0x0100 <= (u16 & 0xFF00) <= 0x7F00   wrong
0x0200 <= (u16 & 0xFF00) <= 0x7F00   fixed

miniMCDS
Show two ranges if in range and one if out of range (IP and data) - Not enough HW resources

TSR time stamping uses now alwas the OB local tsu_rel triggers -> timestamp before causing event in trace

MTV A3G
Indicate if the traces from the two MCDS instances do not 100% overlap by grayed out zones in MTV

-t50r5_vm12_tbufCircular60_overSysRst_C0fl_210122.mcds has EIAA error - artefact after reset
Remove if possible with a simple condition

A3G Implement qualification by vm and prs for slave trace

A3G Implement trigger
MCDSCL_TGT_RESET - done
MCDSCL_TGT_OCDS_SUS - Replace by new MCX HW break_in trigger for all Aurix generations
MCDSCL_TGT_BUS_ERR - not supported by A-step HW, 

Replace Trig OCDS Suspend by Trig OCDS Break using the break input in the central MCX
Implement this consistently for all. Use the same HW watchpoint and not a virtual watchpoint.


Add MCTRL_MT_OTGB
Only on level TS16, TS32
Include previous data for TS16 like for status messages - but only for OTGB0/1 - NO since not really needed and use case not clear
Include enums for the message sources (mctrl_otgb_src_et)
Print mctrl_otgb_src_et as origin 

Fixed: A2G TC37x miniMCDS board: CPU2 handles interrupts but this is not visible in OTGB trace
Fixed: OTGB trigger are not shown properly TC39xB_OTGB_tg_210105.mcds

miniMCDS Support OCDS suspend trigger

MCDSCL_TGT_RESET for TC49x-A miniMCDS, mcdsLight without BOB_SPD: 
User alert which gives the hint for the boot ROM trigger address

Decoder lib changes for 3.2 implemented
	1. sideband_valid provides now the number of valid sideband bits
	2. Added vm to mt_ptu and mt_status
	3. Added MCTRL_MT_OTGB and mt_otgb
This is also reflected in the string representation

Introduce a replacement for the SPB error trigger
mcdsl_return_et mcdscl_set_tg(mctrl_tg_type_et tg_type, const void *param, mctrl_tgact_et tgact);
mcdsl_return_et mcdscl_get_tg(mctrl_tg_type_et tg_type, void *param, mctrl_tgact_et *tgact);
Replace by this the dedicated reset and suspend trigger!!!

Add Menu: VM {all 0...7}  PRS {all 0...7}  CSA "Show|Hide"

MTV
Support also SRI BOB with configurator lib and MTV (A1G, A2G)
Prevent that SPB window can be instantiated twice
Add SPB data trace to MTV default configuration

Fixed bug for PTU overruns in POBW 
instrAUX mismatch very reproducible if ELF + read from device for configuration r16_eth11_C3fl_C5fl_201220.mcds

Improved PTU message filtering after PTU fifo overrun. 
This removed several EIAA errors (e.g. in r16_vm12_C0fld_201223.mcds)

Configurator
Add option to remove CSA trace (TC1.8 feature)
mcdsl_return_et mcdscl_get_dtu_exclude_csa(mctrl_opoint_et opoint, mctrl_addr_range_st *range);
mcdsl_return_et mcdscl_set_dtu_exclude_csa(mctrl_opoint_et opoint, mctrl_addr_range_st *range);
For A1G and A2G the range is determined in CMcdsRichRecorder

Fixed: IPE shown with address 0 in git/das/mcds/test/decoder/TC39xB/Inchron_201215.mcds
CFT IPA in No Smart Display Mode shows instruction before - Can't be fixed since this could be a CALL.

A3G: PORST with circular trace to TBUF
Time stamp 0 (00 E2) as first two bytes in TBUFx are a good enough indicator for "no overrun"
There must be always a paragraph start at this location. The chance that the time stamp counter
is zero aftern an overrun is extremely low. And anyway this check is only needed if a PORST happened
and the TBUF data is read directly and not via TRIF.

Sort out the trigger_trace options.
A3G allows only full paragraphs
A3G Convert MCTRL_TRITRA_START to real post trigger mode

A3G
Fix PTU trigger bug: vm trig instead of ip trig

A3G smart display mode
Cut off overhanging messages from other MCDS instance if there are ticks and an endoftrace

IFTG
Marker needs to be MCDS instance specific to understand the trace output (DapStream_C1d_C4d_with_gaps_201204.mcds)

A3G: Trace to RAM - detect circular overrun
Look for time stamp 0 (00 E2) in tline and 8 or 9 as paragraph start qualifier in qline
This avoids writing to RAM which could cause an ECC error

Introduce MCTRL_TRITRA_10 - NO will not help for TBUF1 with just 4 paragraphs. -> Use 30 for 2pre 2post 

A3G MTV, RichRecorder
For trace to RAM check that access protections allow TME as master
If ACCEN registers have the reset value set it automatically e.g. for TC49x LMU
Otherwise notify the user

Steps before publishing to Enrico, Percepio, Inchron, Absint
Check with miniMCDS device

Fixed: ELF data and program data read from device are sometimes inconsistent
Fixed: Reading program data from device crashes when device is disconnected during this time

Fixed EITM errors in /test/decoder/TC3xx/TC35x_FCALL_FRET_CPU1fu_201113.mcds
and in TC3xx/TC35x_FCALL_FRET_CPU1fu_EITM_201113.mcds

A3G: Clear ACMSK.MSK bit for bus and slave trace in all ACMSK registers

Fixed bug: file://C:/Users/mayeralb/Documents/Work/Bug_Hunting/201104_EITM_bug

A3G: implement TC1.8 CSA filtering based on CPU settings
Only implemented for A3G and not yet in GUI

A3G: Switch on/off time stamps in both MCDS instances

A3G Create regression test cases to run
String as parameter TB8f_TS_C0fld  TBUF 8KB until full; Time Stamps; CPU0 flow and data
File name TC49aEmu_TB8f_TS_C0fld_201021.mcds


Implement MCDSL_CRSV_NO_FRILLS as described and remove get_config_reg_list()

Include VMs to configurator structs
Align busmaster enums with origin
mctrl_busma_et
mctrl_bmsub_et or channel number
Use subchannel only for DMA as trigger/qualifier? -> GUI becomes simple - or text field with number or string?
Replace A1G DMA busmaster handling by simple "all" solution

MTV: TC39x A-step is not supported anymore and rejected with a warning

Implemented mtscutils_rearrange_mtsc_from_circular_to_fifo()

A3G trace up to PORST
RichRecorder: Read TBUF0 and TBUF1 and convert to FIFO order with CMcdsDecoderFast
Convert this then to one MTSC stream with CMtscUtils

CMcdsDeviceModel::get_content_code() change param from i_cpu to opoint 
A good idea? at least not important - rejected

MTV - automatic restart fixen

MCDS frequency measurement to become Emulator friendly.
This is not really critical since done every 200ms

MTV bug: MCDS frequency measurement does not work in the release version! - fixed

A3G Decoder: Device model/cache needs an interface to the recorder lib
-> just register read_block() as a callback including instance pointer!

MTV: Use decoder lib functions. Mainly implemented except for tab file
Rework also the copy from MTV to Excel and the save to tab file funcs

Decoder: Introduce separate class for msg string generation from mcdsdl_msg_st
Remove then string generation funcs from decoder...

MTV - Trace over PORST implemented for A1G, A2G including miniMCDS

A3G Use TC1.8 disassembler with new type tricore_flow_instr_type TFIT_RFH

MTV - Device selection in recorder DLL with FLTK GUI does not work - 
Add a "list all devices function to the DLL" and lift the GUI to MTV level

A3G Upgrade needed for TC_16P_CSTEP -> TC_18

HL decoder test - ELF reader - Update requested from Diamantino 200720
Delivers in RELEASE mode completely different results if ELF file is involved!
Bug is fixed with update from Diamantino 200803

Configurator bug
Out of range does not work for IP trigger TC39x !(0x80000000 <= IP <= 0x8FFFFFFF)
Was fixed by removing the setting of FIFOCTL.TROFF in the beginning of the conig sequence

A3G decoder
data16 -> sideband  extend for hypervisor, shift R/W information + data size information to own byte
mStc[stc].dsbBits increased from 12 to 23 

mcds_std_msg_type_st 
Replace usage of instance with opoint
Add byte for MCDS instance, needed in A3G

MTV cleanup does not seem to work at all for TC39x  (200610) - fixed in checkin 200618 
Symptoms: e.g. SPB status trace can't be disabled (only in GUI, but still in trace) - PORST helps -> ?! 

Check if A2G pipeline delivers Supervisor/User mode -> No -> Only for A3G a change is needed
A3G decoder
Only for MTSC format
Convert trace data from TBUF (e.g. after PORST) to MTSC format (rich recorder function)

Recorder/Configurator: MCX counter value is included in cleanup when a counter was used

Recorder: Dual use of MCDS by two instances needs to be detected.
-> Point 2) in the comment for the cleanup error alert

Recorder, MTV: miniMCDS support

Recorder: Support self assessment (including size of on-chip trace buffer) -> mcdsrl_cplty_st
Recorder: Support devices without MCDS for CCL use case (query and connect of devices)
Recorder: mcdsrl_qry_devices()

MTV start: Ensure that cleanup was called in the last session which was e.g. terminated in a debug session.
This fixes the bug that wrong trace is shown, when MCDS still has an old configuration.
Is done now by checking that the OCS register has its reset value (OCS initialized now by cleanup)

MTV: If HAR config - inital suspend will impact circular on trigger operation
A3G will probably have the same problem? - Just disable the suspend trigger in the MTV standard config? 

MTV: If HAR config, the decoder subtracts the start time offset in smart display mode
Not done since too complex

get_config_reg_sequence(REMOVE num_reg_before_soc PARAM)

Change that MTV uses the recorder DLL. Allow to load other implementations (PLS) of the recorder DLL
Requires to implement the new OTGB config concept 

OTGB config simplification
If MCDSL_CRSV_HAR, the clock enabling with CLC registers is added. Otherwise not!
-> Can use then the recorder DLL for MTV!
Separate cleanup function which clears the OTGB source configuration once the trace is done.
Called after trace done (or before a new trace configuration is downloaded)

Fixed continuous decoding time jump bug when the trigger is not in the first decoded trace data block.
Issue was reported by Inchron (email Max 200305)

Recorder lib: removed .mcdsc file interface to enforce that mcdsc_cleanup is created by using the configurator lib

Removed MUX register reset from cleanup!

Fixed the IFTG startup issue:
Used mRecThread_RestartAfterTmemOverflow_IFTG() in start_recording() for a robust IFTG startup

Include MCDSL_CRSV information in .mcdsc File header
MTV notify no reset if .mcdsc file with reset config is loaded - Not needed since anyway ignored

Remove mTraceBuf feature from CMcdsConfigRegs since only used in MTV and not for the recorder lib

Add a checker to mcdsrl_start_recording() that device state (HAR or not) has to match with (mcdsc->hdr.crsv is MCDSL_CRSV_HAR or not)
mcdsrl_start_recording() will also return an error that if device is not in HAR state and MCDSL_CRSV_HAR is used --> Device will be shortly be suspended...

Include mcdsrl_mode_et also in mcdsl_mcdsc_st?

Make detection tolerant against ISR NESTED level

Introduce A3G TAG IDs in MTV and trace lib

No implemented since no further investment in miniMCDS
miniMCDS STDSW Task trace support
Poor man's approach with STDSW Task state in cnt_trig[2]
Already partly implemented in mPobDtuSetAddrQuali() and mPobDtuGetAddrQuali()

Recorder DLL
Transformation of single writes to DAS Blockwrites MCDS

Thread (similar to continuous trace) for parallel recording and decoding
Not needed since release version is quite fast

Support a short delta configuration by the Configurator

Analyzer lib:
Remove initial reset from CMcdsalEngineOs::identify_tasks()
Possible root cause: The different MCDS configurations switch the MUX
Solution: CPUs use POBY or POBZ for CPU0
POBX is reserved for OTGB

Not implemenented since not really needed:
Using a config for a different device type (e.g. AURIX to A2G)
- Always read in .mcds and .mcdsc files to the appropriate derived CMcdsConfigRegs
- Copy the status via the structs to another instance of the derived CMcdsConfigRegs class
- Compare a config reg checksum. If it matches, it is a default MTV configuration
- If a default configuration, the config will be copied with the structs even if a different device type
- Otherwise the user will be notified that it is not compatible for this device type

New task ID strategy:
Identify "taskDelayUntil" task start function (task switch + always the same address for RFE)
Trigger on this function and go back to timer ISR or trap!!!!
Assume that also end of the ISR is the same for both cases 
Or assume a second sequence? - Differentiate by last instruction of ISR

Remove RESTART from recorder lib - also trace_state.num_restarts

Remove MCDS reset from A1G, MCDSlight and A2G

Test with TC35x device

IFSD trace does not start reliably. IFTG works.

mcds_recorder_das.dll - continuous trace with IFSD
Implement TRIC mode by actively setting the watermark pointer in EMEM
Continuous trace with XTM:
Suspend Chip when the next tile is entered - Disable also ticks - Add a watchpoint - anyway due to OCDS suspend?
Read out the full tile
Reconfigure the watermark
Start the device again

Analyzer: Just identify and check timer interrupts - no assumption about a period - schedule table OS...

Expose in decoder:
	get_instruction(opoint, addr, uint32_t &instr bool &is_16_bit)  // is_16_bit needed? or implicit if upper 16 bits are not 0?
	bool get_instruction_info(uint32_t instr, tricore_flow_instr_type *flow, unsigned int *offset, bool *absolute) const;

When we know the MCDS frequency, we can reduce the busy bits for EMEM reading!
No, has no significant performance impact since blockread uses the param only the the initial access delay

Implemented clean: POBX used for OTGB in A3G
Use allocate_pob() and get_pob_index()

190303 RFE does not generate a CFT message -> adapt code accordingly

Split multi watchpoint messages on low level decoder level if not smart display
Or assign two high-level entries to it?
NO - Just always use the multi watchpoint message. Could create from that a multi-line entry in MTV

Fix the MTV two CPU GUI bug which Alex reported

Check that no ticks are being lost if continuous trace is decoded blockwise
CMcdsHlDecoderPackaged::update() -> split in init() and update()
Not fully implemented solution, since too complex:
  CMcdsHlDecoder does not output and memorizes all messages of the last paragraph as remainder.
  It checks smartly that the first of these messages is uncritical (whatever this means)
  After these the newly decoded messages are added to mMsg[] 
  Then the analysis function is run over the whole array
With the implemented solution only pure data traces are guaranteed to be artefact free

Add test for continuous trace decoded in chunks for data

Increase Decoder DLL (+ MTV) max size for decoding to 20 MB
Or arbitrary size and change to sliding decoding? - no

IFTG, IFSD 

IFTG with MCTRL_TIME_R_AND_TICKS
First messages after gap still have the old time stamp before the start of the paragraph timestamp
Simple solution: just omit these messages before the timestamp

Add test cases for IFSD and IFTG to mcds_hl_decoder_test

Change all DLL strings to (c) Infineon Technologies 2019
Update version numbers of DLLs to V0.9

Rename MCTRL_MT_ENDOFTRACE_IFTG to MCTRL_MT_IFTG
IFTG is generated for A3G then with different rules

Add continuous trace to demo project

Test IFSD, IFTG with A1G

IFTG decoding: Replace <endoftrace> by IFTG message
Own binary IFTG and IFSD status messages for binary decoder

Add IFTG and IFSD to Trace column in MTV

190107 Recorder lib: Reading from not initialized EMEM causes DAS faults - initialize or ignore.

MTV add a warning if the trace file size is larger than 2MB

Need to shift a bar to avoid uncontrolled overruns in trace with gaps
This means an end_of_trace in case of an overrun - good, so no special marking in the file needed
Same solution as for sample traces!!!!
Adapt the decoder for multiple <endoftrace> in IFTG files

Add an IFSD testmode, where as many as possible device suspensions are artificially inserted

Trigger description:
u32 > 0 converted to 1 <= u32 <= 4294967295 - not anymore, will stay as u32 > 0
What for u32 != 0? Fine, not converted, test was added

IFSD trace
Add an MCX watchpoint where the device is suspended

Test stop_at for different configurations.

Frequency measurement - delivers 0 without error code -  the documentation needs to be adapted

Timestamps for watchpoints - implement and test for A2G!
A2G: Shift TASK control sri_act[1] to sri_act[3], keep sri_act[2] - done but not tested
Use sri_act[1] for time stamps

Added MCTRL_TGACT_TIMESTAMP
Changed MCTRL_TIME_BY_WATCHPOINTS to MCTRL_TIME_BY_TRIGGERS

Need to introduce OTGB support in configurator lib
    virtual void get_otgb_ctrl(mctrl_otgb_ctrl_st* otgb_ctrl) = 0;
    virtual void set_otgb_ctrl(const mctrl_otgb_ctrl_st* otgb_ctrl) = 0;

Add simple RW function to recorder lib

Fix issue FCALL from Max (email 180831)

void CMcdsElfFileLoader::get_tl_func_array(uint32_t num_tl_func, mdm_content_st **tl_func) = 0;
// Returns an array of the top level functions in the ELF file
// These functions are the candidates for the task "main" functions

Change Release compile options so that the Decoder DLL is not 20MB

Add TC35xEVO/38xEVO JTAG IDs (after Nitin's DAS update email from Nitin 180807 )

Three DLLs
mcds_decoder.dll      - Input ELF and .mcds files
mcds_recorder_das.dll - Input .mcdsc files, output binary trace files
mcds_configurator.dll - Input .mcds/mcdsc files, output .mcdsc files
Interface is .mcds/.mcdsc file based
*FILE doesn't seem to work as parameter -> open with file names

Binary interface -> mcds_decoder.dll
Support all messages
Testing of ERROR and IGNORE messages still weak
Create an own dll with a clean and simple interface:
Only files in + binary out
Create specific header files for that, which contain just the needed information

Decoder Lib Decision: Don't provide .mcds file storing
This is not needed for the decoder lib use case
There is always the risk that a wrong ELF file is used
For debugging "strange trace" cases MTV can be used
int mcdsdl_mcds_file_store(const char *mcds_file_name, bool include_code, bool include_symbols, const char **alert_str);
// Returns 0 in case of success, otherwise a negative number
// Will combine trace_data from mcdsdl_decode() with the configuration from mcdsdl_mcdsc_file_load() and optional 
// The .mcds file provides the device configuration including MCDS and (optional) trace data

NO: Lib: Implement opening of ELF and .mcds file with FILE* pointer only (not by name)
Introduce this approach consistently everywhere.
Not done since too complex and the filename is anyway needed at the lower layers

Use mGetMsgPtu() for creating the strings to avoid redundant code
Update numbering and sorting of mctrl_opoint_et

Merged mctrl_opoint_sri_et into mctrl_opcpu_et and renamed mctrl_opcpu_et to mctrl_opoint_et

Support for TC35x and TC33x added (not yet tested).

A2G
OTGB support download of register setting sequences also for other OTGB sources than INT, DMA and SMU

Automatic restart mode does not work if in the MCD Basic Client breakpoints are enabled.
180118 Tested with TC29x and all worked
Probably a change in MTV fixed this (suspend level detection instead of edge) 

TC39xB Test OTGB DMA and SRI DMA trace
A2G - Remove RP0/1 in master string of DMA trace

Add A2G device specific address range descriptions with HW symbols
E.g. OLDA is wrong -> Test then OLDA GUI

Trace of CPU0 in parallel to OTGB (use POBZ)

TC39xB_OTGB_SMU_INT_with_trig_180102.mcds
Origin: DMA.RP0.C0 ???
Operation: O 01 -> O10 (reflects data ordering)
Address: Only one digit

Hide the strange IP behavior somehow: TC39xB_CPU1_start_180101.mcds

Ignore DST CLKDIV changes for Smart Display
The DST message which shows the transition from HALT to not halted shall be displayed

Disable automatically PTU Status trace in case of CPUx.SRI
Also ensur that not automatically enabled if Program Trace is "enabled" in case of CPUx.SRI

BOB SPB 
Change to qualification with subchannel entered as a number
Add DMIsafe/DMI submaster to the regular master selection
Only for DMA support entering of the DMA channel just with a number.

BOB SRI 
Qualification with subchannel similar to BOB SPB, but just for DMA

DMA subchannel handling implemented
A2G POB DTU SRIslave master qualification
Make this part in the GUI only visible if CPUx.SRI is selected

Improved GUI for address range settings (triggering and trace)
All trigger selections in menu with in or oo range but not disabled!
Clear MSK bit in all ACMSK registers if SRIslave is selected

TC39xB: EMEM configured with access error (TriBoard_TC39xB_Holger_171201.elf)
Just check the access protection register and notify based on that the user.

TC39xB: Support of 2MB TCM

TC38x SRI slave trace creates mainly address messages in case of out of range qualification after a while
Refer to TC38x_Func_01_171110.mcds
This is probably due to some duplex DTU timing differences between CPU and SRI slave
The same qualification configuration works for CPU data trace
Identified as a HW bug!

TC38x miniMCDS decoder bug:
In case of SRI slave trace, the origin column is only properly shown when the triggering was enabled.
Otherwise only the same as in Opoint is shown like for CPU pipeline trace
Fixed: Need to handle MSK bit properly in both TCXACMSK registers

Bug fixed: MTV V2.0: Frequency measurement did not work on private Win 10 computer

miniMCDS OCDS suspend trigger
A suspend watchpoint message is generated at trace start and this starts the tick generation
RV_MCXACT22_TG_SUS = 0x00C30000 -> 0x00430000 Transition instead of state, also for watchpoint
The regular MCDS implementation is correct with transition

MTV V2.0: Opening .mcds files with double click in Windows Explorer does not work
Works on new notebook again 171105

MTV
An .mcds file will contain no TDR if there are syntax errors during decoding
This happened for a function trace over system reset with TC38x at the wafer prober
Code changed CMcdsHlDecoderPackaged::update()

MTV hangs in menu_close_view() { ... exit() }
	Open .mcds File Menu (doesn't matter whether a file actually loaded or the window immediately closed again)
	Exit MTV -> MTV crash
	171014 Crashes in Fl_GDI_Graphics_Driver::draw() called by Button::draw()
	171015 Found out: Example project in fltk lib (native-filechooser.cxx) crashes in a similar way
	Submit as bug to http://www.fltk.org/str.php ? - no since it seems to be a Win 7 issue
	Check whether this effect also occurs on a Win 10 PC - did not occur on private Win10 PC 171022
Workaround for Win7: 
  All Windows are hidden before exit() is called. Results in MTV zombie process with a 10MB memory footprint.
  This is acceptable and nearly no user will notice it. The time of Win7 is over anyway.
Will not be fixed since it doesn't seem to occur for Win10

miniMCDS for TC38x
Change from dtu_acc_wr/rd to dtu_acc_trig[0/1] - Just program dtu_acc_trig to behave like wr/rd - OK
This should work for trace qualification and for data trigger! - OK
Test that data all trigger is working - OK
Decoder: add origin string on CMcdsDecoder level and change CMcdsDecoderA2g::mMsgStrPrintOoCpuDtu() accordingly - OK
TC38x miniMCDS: Shows DMA.RP0.C0 if CPU pipeline is selected -> Overridden - OK

miniMCDS for TC38x
Prevent a configuration which will potentially result in the TC38x multick erratum
Triggering on read data value

miniMCDS OCDS suspend trigger

Change all GUIs to Windows 10 flat layout

miniMCDS
Check if rd OR wr can be offered as option for data triggering:
Possibly yes (using MCXEVT8) for TC29x, TC39xA miniMCDS but too much effort
Implemented for A2G miniMCDS
MTV bug fixed: SRI error trigger can't be disabled when no SRI opoint is selected

OTGB supported for AURIX, TC39x A-step, but restricted to INT, DMA
OTGB paramters can be entered on GUI level
OTGB detailed decoding on HL decoder level
Implement mConfigRegs->get_otgb_ctrl(const mctrl_otgb_ctrl_st* otgb_ctrl);

Fixed bug: OLDA/STDSW trace only in segment 8 (cached) and not in segment A (uncached) - Complain Hella 170503

TC39x B-step
Add core ID of POBz to decoder
Add support for nested interrupts

In case of "Automatic Restart" the decoding error pop-up window is disabled
This is needed for the use case: MTV trace following regular debugger operations 
(e.g. T32 with own HW + MTV via DAPE)

MTV bug: PORST notification did not work anymore due to device frequency measurement

MCDS messages corrupted:
Could happen when EMEM is disabled/enabled with EMEM_CLC
This was the case in the Autoliv SW 170112
-> Added a hint to user notification

MTV bug: DAPE is detected for TC29x SBDAP. 

MTV: Store only effective trace data size in .mcds files for the case: Trace until trigger which has no circular overrun

MTV GUI: Added explicit menu entries for CPUx and CPUy

Investigated 161213, but too much effort and risk -> keep it as it is in fmt_save_mcds_file()
Implement the following instead of fmt_save_mcds_file() in CMcdsHlDecoderPackaged
Before storing a .mcds file which includes code an symbols, a full decoding is necessary.
There are situation for program flow/instruction decoding where only the string generation will fetch certain code parts

MTV V2.0 in DAS V6.0 ----------------------------------------------------------------------------------

MTV: Detects now automatically for DAPE if CBS_OSTATE.EECTRC is set and notifies the user otherwise.

MTV STDSW TASK: Offer Timestamps as option for TASKon TASKoff

MTV
Do not allow End for circular recording, only "40 bytes before End"
The option "40 Bytes before End" ensures that all trigger relevant trace messages are included before <endoftrace>.

Implement STDSW Triggering with Symbols:
".STDSW.TASK.Rdy2ON" etc. as shown in the tooltip window

Support DAPE operation mode for MTV

Bugs in tick calculation:
Ticks got wrong when changing between smart and non smart display
Ticks were not properly handled for watchpoint and time stamp messages

HL Message Only changes:
Filter out SPB STATE messages which only indicate SPB Retry (RTY)
Filter out SPB Retry (RTY) read transactions (DTRA)

miniMCDS support
- Introduce CMcdsConfigRegs base class (also then for A2G)
- Implement only the needed subset for miniMCDS
- Introduce also an own GUI for miniMCDS
Test miniMCDS support with TC29x PD device and with TC39x

Remove "End" from circular address options, since the trigger WP message is missing
160807 Could not reproduce this effect -> No change

Checks with TC39x A-step silicon
CMcdsDecoderA2g::mMsgStrPrintOriginSpbTc39xAstep()
Check how Cerberus transactions are reported
Check whether DMA subchannels are somehow considered.

CMcdsDecoderA1g::mMsgStrPrintOriginSpbTc39xAstep()
Add erratum number to comment when available to sprintf(ms->comment, "")

IP range as condition for data trigger
This was a feedback from Microconsult as a missing feature compared to Freescale
Add in Program Trigger Selection Menu "Condition for Data Trig" below "Watchpoint"

Support refresh of Trace Info window
E.g. from check_mcds_frequency()

"WARNING: Frequency has changed" can be optional disabled

List loaded ELF files in fmt_win_mcds_trace_info

Add Toolname + Version to .mcds(c) files
McdsTool="MTV V5.0"

Introduce a .mcds and .mcdsc file format version in the file format (Hint from Lauterbach 160603)

TC39xA - Workaround for MCDS ERRATUM: Ambiguous bus master TAG-ID information for the SPB bus
Implemented for trigger programming and trace decoding
Will still need some fine tuning, when the silicon is available for testing

Renamed BUSMA_DAM to BUSMA_AMU and associated string accordingly to "AMU"

TC39xA/B
GUI: Update selection lists which determine TMUX settings
TMUX0: OLDA/STDSW    TMUX1: DMA (CPU slaves need to be covered by POB)

TC39xA/B
CMcdsDeviceAddrRangeDes::init() Add TC39x memory map
Store PDF as .txt File.
Identify range numbers and search then for "Reserved" or the short name between ().

MTV GUI STDSW Task bug
POB IP trigger qualification by STDSW Task can't be enabled

Trace Info window
With recording time, MCDS frequency, etc.
All kind of errors
Decoder statistics info? Number of bytes, Paragraphs, Time tick fraction? NO

miniMCDS
Only support with decoder, not with GUI. This saves a lot of effort and reduces complexity.

Support "C0 T30" syntax also in OLDA data trigger entry window
Not for the moment. Too much effort and no really natural mapping to addr. and data

Add absolute time information based on measurements (reading MCDS timer periodically
Just measure, when the device is connected and notify then the user.
Output as SS.000.000.000 in TimeA column
Add YYMMDD HH:MM:SS information in .mcds file
Add frequency in .mcds file

Simplify BOB_SRI control:
AURIX: TMUX0: OLDA/STDSW    TMUX1: Arbitrary SRI slave
A2G:   TMUX0: OLDA/STDSW    TMUX1: DMA (CPU slaves need to be covered by POB)

STDSW Task: Add test case for task qualified tick generation

Additional choice for all qualification and triggers, including status:
In STDSW Task
Out of STDSW Task
No STDSW Task condition

STDSW Task State control window with 3 lines:
C0 V0 T356
CPU0 VMM0 TASK356
task_20ms

When the STDSW Task is configured the user will be asked:
"Set all active trigger and qualification to: In STDSW Task?"
A good idea??? - NO -> Not implemented

Add option for watchpoints with explicit time stamps
Option for explicit time stamps for OLDA/STDSW messages + watchpoints
And for CPU status messages (only ISR entry/exit)
Only if in range
NO! too complex. Just qualify ticks with task

In case of Tick qualification with STDSW Task
Do not show any timestamp/Tick information outside of qualified range
The TimeR/TSR messages are the boundaries. 
Just need to detect whether there are timestamps inside of a range or not

Notify user if trace contains FIFO overrun error messages

TC39xB step MCDS
Clone also TriCore DTU table entries in mcds_decoder_a2g.cpp
Implement MDER_1D_D64, MDER_2D_D64_D16D32_EDWD16
Introduced RA_MCDS_MUX_TC_RC
Ownership Trace Unit and corresponding registers modified to support PSW.PRS[2:0]


Control of Ticks:
Ticks off
Ticks always on
Qualify ticks with Task(will create a timestamp when the task is activated)
The last option greatly reduces the trace bandwidth
This approach is much simpler than trying to create individual timestamps for task entry/exit and ISRs

Change complete MCDS addressing to MCDS offset addresses

Introduce a specific OLDA GUI which includes the STDSW Task Trace option 

Use Menu MCDS->OLDA for the new GUI
Warp CFmtWinMcdsBobSri slowly

MTV GUI MCDS->CPU, mcdscl_dtu_ctrl_tq_st, CMcdsConfigRegs
Removed dedicated OLDA range for making the overall concept for STDSW task trace simpler

MTV Added tooltip for Ticks/Timestamps insertion in menu MCDS->General

STDSW Task Trace output
Comment example:  "CPU0 VMM3 TASK 123 10ms_task (IP 80003458 my_func+1A8)"

###################################################################################################
DAS Release V5.0 with MTV V1.0

Done MTV 150831
Bug fix: IPI0 was not supported in CFT mode in all cases

Done MTV 150828
More generic (IPI0) based implementation of filter for RET before ISR issue

Done MTV 150818
Bug fix: Storing a .mcds file after a .mcdsc file was not possible

Done MTV 150816
1. Filter for RET before ISR (MCDS issue)
2. Bug fix for long IPA flow sequence saved in .mcds file
3. Added MCDS Config Regs Control Mapping (MCRCM) Version -> .mcds, .mcdsc files

Done MTV 150803
Bug fix: TCM tiles were not handled properly in the assignment to Trace Memory

Done MTV 150731
Before configuring EMEM TCM it is checked now whether TCM is used already
Bug fix: Writes now "no change" for unused tiles to TILECONFIG and TILECONFIGXM
Supports now reading miniMCDS .mcds files when the file has a proper header

Done MTV 150727
Bug fix: EDEM error was wrongly reported in a corner case
Can read now also Lauterbach ASCII files starting with "  D:" (miniMCDS TMEM data)
Only TCM tiles which are needed are assigned to trace memory
Bug fix: EMEM XTM RAM was not used when XTM was selected. 
EMEM TCM/XTM config is now derived from FIFOBOT/FIFOTOP value
Uses now in addition MUX register value to detect MCDS config changes

Done MTV 150717
Can now upload trace from devices which end up in an double WDT reset state (device locked)
Fixed bug in SRI GUI master/channel configuration. Configuration was lost when the window was closed and reopenend.
If an .mcds file is opened with a double click in Explorer the top of the table is now the trigger trace message

Done MTV 150630
1. If MCDS config was changed after recording the saving of a potential inconsistent .mcds file is prevented
2. CALL instructions in sequential code are now commented: (ERROR - ELF file? Other?)
   This occurs for the potential  MTCR LCX + CALL  TriCore trace IF bug
3. Added option CPU Data Trace Qualification by Program Qualification
4. Removed the option of having more than one MTV view. Excel can be used instead or several MTV instances can be started.
5. Bug fix: Automatic Restart did not work in version 150504 and 150505
6. Added comment for context save/restore (CSA) operations and also the symbol offset is corrected
7. Improved command line and batch mode operation
   Added batch mode for recording
   Added batch mode for file conversion
   "-tdr" command line option replaced by "-showTdrInfo"
   Quotation marks around the .mcds/.mcdsc file name are now optional
8. Command line .mcds files are loaded with TRIGGER TRACE as first line in view

Done MTV 150505:
Bug fix: function/flow/instruction trace when there are two discontinuities in the same MCDS clock cycle

Done MTV 150504:
.mcds file can now include now code and symbols
All MCDS configuration windows are updated when loading a .mcds file or when changing to a device
Bug fix: File, device list in the window headline
Bug fix: IPA representing a sequential section with non-sequential final instruction CMcdsHlDecoder::mIsSequential()
Introduced get_preamble_string_for_mcds_file() like get_preamble_string_for_config_file()
Moved CMcdsFileHandler::write_mcds_file_header() to mfio_write_header()
Same for read_mcdsc_file()/save_mcdsc_file()
Added complete DAS Binaries of V4.6 to git

Done MTV 150413:
Added OLDA as MCDS trace config menu entry
Removed OLDA range at CPU from default trace configuration
Fixed bug in CPU Opoint selection
Fixed bug in SRI Opoint selection
Keep SRI Error Trigger and SRI Status trace in sync in both windows
Introduced .ALL HW symbol for address range inputs
Improved address range checking with user notification for SPB and SRI
Both SRI Opoints can now be used in parallel
Avoid the user notification for .all (0 to 0xFFFFFFFF) address range (SPB and SRI)
If all CPU/SRI MCDS config windows are closed, the next opened one will not connect to the disabled OB if there is also an enabled OB


Done MTV 150407:
Filter out the boot ROM address at trace after PORST
Multiline Input for data trigger value comparison
Tooltip for IP trace type selection
Tooltip for data comparison entry
Tooltip "Optional second address range"
Added access type (R/W/all) like for CPUs to SPB and SRI data trigger
Split data value trigger string to multi line if too long
Print data value condition to trigger message
Same syntax as output e.g. for triggers in trace window
Resorted WCED, EIAA, EITM, EDEM in Warning window
Testcase with SPB, SRI data triggers including value
Fixed bug for the case that an address range started with simply "0"
Fixed bug that resulted in WCED if CFT trace was IP qualified


******************************** Not part of next release

MTV "can't close Window bug" observed on Reinhard's PC
Already occurs when an "open file window" is opened but then aborted as the very first action
begin()+end() now done in CFlMcdsTraceTable constructor - Done
Check if all new/delete pairs match - Done
Check new compiled FLTK V3.3 version - Done
Increased heap size to 8MB - Done
Check how the exit is handled in the FLTK V3.3 examples - Done

=======
MTV
Move BOB/POB instance moving + swapping to CMcdsConfigRegs


MTV time stamp handling after HARR - old does not work
Ensure that OCDS Suspend release generates immediately a message
This message is then subtracted as offset from the following time stamps
Investigate: is it possible to start the system with one access to MCDS?
E.g. MCDS breakout controls OCDS suspend effectively controlled by FIFCTL.TRDIS
By writing FIFOCTL also the system is started -> time stamping is reproducible
However does not help when the debugger starts MCDS, but that's probably fine.
RV_MCXEVT23_ON      = 0xFFFFFFFF,  // Static active value to have an inactive to active transition when FIFCTL.TRDIS becomes inactive
RV_MCXACT31_SUSOUT  = 0xB7000000,  // EVT23, inverted, static -> suspend_out becomes inactive when EVT23 becomes active
A+ spec idea: SUSOUT also (optional) controlled by FIFCTL.TRDIS
All this does not work since the time base is reset with PORST!!!
Suggestion: Use a 32 bit counter instead of TSR messages

MTV time stamp handling after HARR
Start a 32 bit counter when the OCDS suspend signal is released
This counter value is output instead of TSR messages


MTV
MCDS Timer overrun counter
When polling the state just check also whether the MCDS timer value is less 
then the previous one -> increment overrun counter and consider this when decoding
Add param in .mcds file for counter offset

MTV Trigger Trace Counter
Add configuration option that only the Nth trigger will cause trigger trace

MTV Explorer integration bug
Problem when double clicking certain .mcds files (endless GUI update loop)
Not clear whether the right MTV exe version is used by Explorer

Investigate: is it possible to start the system with one access to MCDS?
E.g. MCDS breakout controls OCDS suspend effectively controlled by FIFCTL.TRDIS
By writing FIFOCTL also the system is started -> time stamping is reproducible
However does not help when the debugger starts MCDS, but that's probably fine.
RV_MCXEVT23_ON      = 0xFFFFFFFF,  // Static active value to have an inactive to active transition when FIFCTL.TRDIS becomes inactive
RV_MCXACT31_SUSOUT  = 0xB7000000,  // EVT23, inverted, static -> suspend_out becomes inactive when EVT23 becomes active
A+ spec idea: SUSOUT also (optional) controlled by FIFCTL.TRDIS
All this does not work since the time base is reset with PORST!!!
Suggestion: Use a 32 bit counter instead of TSR messages

MTV time stamp handling after HARR
Start a 32 bit counter when the OCDS suspend signal is released
This counter value is output instead of TSR messages


MTV
MCDS Timer overrun counter
When polling the state just check also whether the MCDS timer value is less 
then the previous one -> increment overrun counter and consider this when decoding
Add param in .mcds file for counter offset

MTV Trigger Trace Counter
Add configuration option that only the Nth trigger will cause trigger trace

MTV Explorer integration bug
Problem when double clicking certain .mcds files (endless GUI update loop)
Not clear whether the right MTV exe version is used by Explorer



MTV
Update or close MCDS config windows when switching between .mcds file and device

.mcds File format
Convert ticks to TSR messages
Extend TSR messages to 64 bit for having absolute values without overflow
Option to insert a header with timestamps between paragraphs
Or just use zip compression? - Conditional if the factor justifies it
Or better just a very simple compression scheme for ticks?
Use multick 0 as 12 bit marker + 20 bits tick -> good for 1 Mio ticks
This is in the range of one 4KB paragraph filled with ticks (690k), so it
does not make sense to further optimize this
These compressed files need to be stored with sequential paragraphs, since
the size of a paragraph is not fixed anymore
--> introduce a 64 bit aligned paragraph marker with a recording time stamp
MCDS Spec should mention this trick as option for storing MCDS trace data
Add a message which justs tells that the last one is repeated N times 
-> compresses IDLE loop - no better use ZIP in this case (compress whole file)

MTV
Add menu which allows to set the MCDS configuration to:
Clear all configurations
Trigger on errors and resets
Default configuration

MTV, CMcdsHlDecoder
Replace "Smart Display" selection with representation level choice:
- Native MCDS Messages
- MCDS Artefacts Removed
- High Level Semantic (new, will show interpretation of OLDA data)
Independent from that ELF files can be loaded/unloaded

CMcdsHlDecoder
Binary output of IP messages with:
addr_start, addr_end, addr_next, const uint16_t *instr_sequence, uint32_t instr_next
Indicate also Function/Flow/Instr trace
Support also DisAssembler interface

MTV
Offer access type selection (R/W/all) also for SPB/SRI DTUs

Strange GUI effects possible only/just when there was an assertion hit?

MTV
Automatic update of status and error trigger in 2nd window does not work
GUI: Just show one SRI control window for the moment

CMcdsHlDecoder
Comment CSA writes/reads in comment (e.g. address + symbol)
Not really very helpful and not so easy to identify this situation

Filter out redundant IPI before IPE in case of instruction trace stopped by OCDS suspend

ChipCoach ideas
Search for RMW sequences
Search for OCDS accesses

MTV
Time window trace -> active X  s after start (HARR, etc.)

MTV
Synchronization with system timers
Trace STM reads on SPB and use this information to show an absolute time in TimeA column?

CMcdsHlDecoder
Move OTGB comment printing from CMcdsDecoderA1g to here

MTV
The Fl_Native_File_Chooser widget transmits UTF-8 encoded filenames to its user. It is
 recommended to open files that may have non-ASCII names with the fl_fopen() or
 fl_open() utility functions that handle these names in a cross-platform way 
 (whereas the standard fopen()/open() functions fail on the MSWindows platform 
 to open files with a non-ASCII name).

OTGB Decoder
Define enums for all modules including instances e.g. CAN, CANR, etc.
Select the Trigger Sets for a module
Overlay the 8 Bit TS' as well

CAN


MTV
Counter to trigger Trigger X cycles after trace start

CMcdsHlDecoder
mAnalyzeCpuIPxMsg_GetInstrAtEndOfIncrement()
Optimize and note that also used in mAnalyzeCpuIPxMsg_GetCallOrRetInstrBefore()

CMcdsHlDecoder
Need to analyze instruction boundaries with function entries available in the ELF file
Only this will allow to make mAnalyzeCpuIPxMsg_GetCallOrRetInstrBefore() fully reliable
Algorithm: go back until symbol_offset 0 or until two consecutive 16 bit instructions are found

MTV
Option to ignore cache/uncached addresses (mask out 0x2000000 bit for 0x80000000/0xA000000 segment)
Not possible with AURIX MCDS

CMcdsHlDecoder
Convert WPM to sever WPS messages by assigning several mHlMsgSel[] entries to the WPM message
Store somewhere in the HL array the first mHlMsgSel[] index for this WPM
--> Can calculate easily which watchpoint this "WPS" is
Need to consider TRIGGER TRACE functionality

MTV
Halt after reset start with Prolog Code
Get Prolog Code example from verification team

MTV for miniMCDS
Unchanged GUI except that separate OLDA entry is removed (change header to "Data/OLDA Trace")
Shift comparator resource between second qualifier and trigger for IP and data.

MTV
Implement for IP triggering that also all TriCore OCDS triggers can be optional used (EVT8 supports this)

HL Decoder
Resort RW data messages and IP instruction in instruction mode to place them directly after
the associated LD/ST instruction. This is only possible in Instruction mode when Ticks are enabled.

MTV
Output register name in case of SFR accesses
Or even link to register data base on internet

MTV
Easy SMU trigger for trace control

MTV
Use data address trigger also for "Program Sync".
Check that always the instruction before is the LD/ST instruction

MTV Installer
register .mcds and .mcdsc file extension to Windows -> double click in Windows Explorer will start MTV 

MTV
Updates MCDS Opoint windows when a new .mcds file is loaded
Possibly just need to detect this case in the window callback or update method of the base class
Refresh is called anyway. Maybe need to derive CFmtWinMcdsPob from Fl_Double_Window and override a method

MTV
Config script like C++ classes

POB[0].setCPU(0)

POB[0].DCU.enable()
POB[0].DCU.disable()
CPUx

Input of data qualification ranges with text:
e f9000000 f0000000 
i f0000000 f00000ff
i STM0
CPU0.data.include(0xF0000000, 0xF00000FF)

Idea Hot Spotting:
Trace with mid trigger (e.g. a specific function) and auto-arm
Analyze then all the scenarios which happened in the different runs

Trace Viewer
Issue a warning when no trace from EMEM could be read due to a power fail -> ECC fail.
This can be easily detected when less than the pattern bits at the beginning/end are readable.
Check then also with writing that EMEM is accessible in general.

Trace Viewer
Show "*" after .mcdsc file in Window top bar after the MCDS configuration was modified
Or better:
Don't mix .mcdsc and GUI configurations

Trace Viewer
Simple option in MCDS POB GUI to to trace data without the CPUs' 64 bit writes and reads (hide stack accesses)

HL Decoder
Include handling of SYSCALL and RFM
Detection of all calls and returns without disassembler

Fix all warnings for Level4

MTV
Check if <Optimization>Disabled</Optimization> can be changed to MaxSpeed

MTV
Info window which contains beside other stuff the list of .elf files


MTV
Steps for getting a valid configuration from a running device:
Prerequisite: No valid configuration loaded
1. Hot attach
2. Stop Recording -> trace data and config are read from device 
3. Save trace as .mcds file -> config is stored as part of .mcds file
4. Read this .mcds file -> config is retrieved
5. Save config as .mcdsc file

Warning if ELF file does not cover all IPA/IPI messages:
  "WARNING: ELF file does not cover all IPA/IPI messages. 
   Stack Level analysis will be affected by missing calls due to the 
   unknown instructions represented by IPA/IPI messages"

Separate FL/GUI from mcds_device_if implementation. Only needed for device selection -> give selection function as param

Ersetze die addr+value arrays mit beliebig langen DAS Listen????


mcds_trace_recorder
1. Also allows capturing the MCDS/OCDS configuration and store it to a file
   Use Perl, Python or ? syntax to store the captured data -> Easy future reuse in a script
   Talk to Oreste, which language to use
   Harry: Perl or Python
   Question: Source snippet possible which is compatible to both?
   Need potentially also FGTQ RAMs contents

   Round tripping of config files via real device:
   Config file is downloaded to device and read from there 
   --> Makes it much more likely that a config file is tested before distributed
   Extract EMEM settings etc. from config file

Config File Format for easy diff and checks by a human with an ASCII file reader (column/2 is byte address!)

        Will be only needed for FGTQ -> Don't implement at the moment

        BLOCK <start_addr_hex> <num_words_decimal> <comment>
        <data_bytes_hex_lsb_first>

        BLOCK C0000004 3
        001122334455667788AABBCC

        For FGTQ RAMS this is needed:
        FIFO <addr_hex> <num_words_decimal> <comment>
        <data_bytes_hex_lsb_first>

        FIFO C0000004 3
        001122334455667788AABBCC


mcds_trace_viewer
command line option for decoding files
Create a dedicated function that decodes a file to another file.
"Magic" button to guess settings like CFT, CPU mux etc.
 Own columns for called functions and ticks of this function

   PORST during recording is a "trigger". Just notify the user and upload the file

   Recording option needs to be set according to config file entry????

pop-up error window in case of mismatch between elf file and trace
Just check these counters in the end: CMcdsHlDecoder::mErrCountInstrAddrAlignment

.mcdsr rendering file
All information for rendering: OS related, signal names + addresses + further rendering info
Can also be part of .mcds file

Add symbol names to hard addresses in MCDS comparator values of .mcdsc file
-> allows to easily remap with new .elf file

Check all .elf files for a specific PC address. 
  If found in several .elf files -> Warning to user with buttons "OK" "Don't notify again"
  Two different types of notifications: 1. Both elf files have same content. 2. Different content
  If device is suspended also the flash/RAM of the device is checked. 


Matlab integration
.mcds file reader for Matlab
Synchronization of "signals" to trigger by tracing Cerberus TRIG accesses
Signal description in .mcds file contains the relationship to a specific trigger
Option to declare a signal pre or post TRIG for having the right cycle assignment.
Only timestamps for the trigger writes needed

.mcdsc MCDS configuration file

mcds_hl_decoder
Conservative CFT decoding, assuming no short functions for performance measurement
-> Stack always valid
Event column:
DCU -> SUS /SUS (Suspend on, Suspend inactive, ISR entry, ISR exit)
Smart and selected entries: E.g. ISR exit only shown if ISR was active before
Store different states in bit vector associated with opoint
Starting point is then a 256x32 bit state array for covering all potential opoints
Semantic aware trace - Convert OLDA entries to Comment "Task x started"
ELF reader + disassembler from Diamantino?

Task ID column

mcds_decoder
Interface to input a register list to get out information like TMUX settings or even for OTGB 
Can ask class for register shopping list (small, extended).
array of 2x uint32_t struct for address and data.
Index with enum. Coverage: CPU and SRI TMUX, OTGB
Usually the values are retrieved from the MCDS part of the device_model

Output complete OTGB info in Comment (pointer to print functions)
- print functions for all kind of OTGB configurations still missing

MCDS  (Origin "MCX Counter x" Comment even e.g. "CPU0 Cache Hits" if MCX config is known)

Calculate ratio of ticks to time stamp units assuming that all source frequencies are constant

trace_recorder
Wrap DAS with CDeviceIf class
- No special functionality if not absolutely needed 
- Use arrays of mcds_reg_st for programming of MCDS, EMEM and OTGB
- This includes the initialization of EMEM paragraph boundaries
- Addresses are "PD view" but remapped to direct BBB accesses within CDeviceIf
- Exception for block write for FGTQ RAMs


mcds_config format
Allow trace data description section. E.g. for "signals"


Class which generates a final configuration image for MCDS
This image is XORed with the reset values
This image is then downloaded in a smart way, considering gaps in the address map and the MCDS reset state.
Default file format to store this image including OCDS configuration.
Writing in the given sequence will result in a proper configuration
Eventuell MCDS Enabling mit key weglassen.

Control of tracer by TL1 (suspend) -> Adapt mcdxdas.dll that TL1 is activated.

Record with any tool idea
Define binary file format including descriptive header
Data is 64 bit aligned in files -> 64 bit signature between  tiles 
Optional 64 bit  s time stamp by external tool between  tiles .
Some rules like paragraph aligned start needed
Use this for own experiments with decoder.
Standardized marker for a detected PORST between "tiles"

Use ZIP algorithm to compress files


OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
DONE

CMcdsDeviceIfDas 
Check device suspend state only once when decoding is started. 
Don't bother the device cache when we know that the device is not suspended.
Current implementation does a real device suspended check only every 200 ms

<<<<<<< origin/master
=======
.mcds file - include ELF/code information
Just list all functions with their address range
Same for data symbols (without hex data)
If no symbols are available, read data from device.
Store all relevant code as 32 byte (ATOM size of Device cache) aligned blocks
Used hex and show in reverse order (human readable little endian data)
DS@70001234 my_data
CS@8000FFAB 68 my_func1
CS@8000FFF0 82 my_func2
C@8000FFA0 87654321 87654321 87654321 87654321 87654321 87654321 87654321 87654321
C@8000FFC0 87654321 87654321 87654321 87654321 87654321 87654321 87654321 87654321
Binary data handling with device cache

Ask user to include symbol data in .mcds file "Include symbol and code data in .mcds file?"
In addition notify user if code is involved, that it will be read from the device.
The information that code is involved is know by the device model.
Check if trace contains IP messages and data messages.
The device model will get an init param log_symbols -> code and data symbol addresses are logged
When logging the last 4 entries in the list are checked, whether they contain the same symbol address
Otherwise a new entry is added
This list is then sorted and all redundant symbol addresses are removed
-> based on this list the symbols are included in the .mcds file

When the data was written to the file and the size is known, ask user again if the data size
is quite large. Or KIS and don't ask?

This ensures that the content of the .mcds file matches the reality (no wrong ELF file).
This is mandatory for the implementation in CMcdsDeviceCache.
It also ensures that the actual device code is the same as in the ELF file.

CMcdsDeviceIfDas 
Check device suspend state only once when decoding is started. 
Don't bother the device cache when we know that the device is not suspended.
Current implementation does a real device suspended check only every 200 ms

>>>>>>> local
MTV
Implement enforced hot attach when UDAS was adapted accordingly
Feature now implemented in next DAS version (API, DLL, UDAS)

MTV
Tooltip for address range entries

MTV
Add a help window with a list of all HW symbols
Optimum would be a right mouse click menu

MTV
Notify user if e.g. a segment F address is entered in the SPB window which
can only be observed at LMU or CPUx SRI slave I/F

MTV
Allow to use symbol names and offsets in the address entry windows in the MTV gui
If ".CAN0" is entered, this creates a range for the CAN address range
Always assume hex values in address range entry windows
User can just enter ".CAN0" to get the full range
Use three lines for hex address, start address as symbol, end address as symbol
Output upper address of a range as ".STM0+all"

MTV
All address entry windows always assume hex values
User does not need to enter "0x", this is done automatically
For data entry windows "0x" will be mandatory to indicate hex

MTV, CMcdsHlDecoder
Ensure that all HW Resources have a '.' in their name.
This ensures that no data object from the ELF file can have a similar name
E.g. OCDS.CBS .CAN .CANR .OLDA

CMcdsHlDecoder
Get symbols for data addresses from ELF file. 
The following was needed for that:
Use CMcdsDeviceAddrRangeDes inside of CMcdsDeviceModel to determine the upper bound
of data segments from the ELF file. The upper end of a RAM limits a data segment.

MTV
The following idea cannot be implemented with the AURIX MCDS logic
Ask user for Segment 8/A and 9/B qualifiers and triggers whether this is
just for the specific one or for both.
Show value then as A/81234567 instead of 0x81234567

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
MTV release 150209 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO


CMcdsHlDecoder
Outputs symbolic names for address ranges like CPU0.DSPR, ASCLIN0, etc.
Approach: Write parser for text file created from copying the address map table in the UM

CMcdsHlDecoder
Fixed bugs for the case that reference data is available from both ELF file and device

CMcdsHlDecoder
Improved robustness of stack level analysis for Instruction and Function trace

MTV
Fixed bug in implementation of:
Checks now also after recording whether the MCDS configuration was changed
(5 instead of 4 FIFOPRE LSB bits need to be ignored)

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
MTV release 150126 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO


CMcdsHlDecoder
Fixed "context save bug" which was caused by wrong 64 bit data masking in message extraction.
It was no duplex DTU bug as previously assumed. 
Note MCDS_OPNT_CPU_DTU0/1, MCDS_OPNT_SRI_DTU0/1 needed for combining DTA+DTWD

MTV
ISRs are marked with Symbol/Label ISR_START ISR_END and in SL column "I s" "I e"
(Function trace - mark ISR by triggering a ptu_sync --> IPA? -> no too complex)

MTV
User is now notified with a pop-up window of fatal MCDS decoding errors
Notification includes a hint that this could be caused by user SW configuring the MCDS as well.

MTV
Added hot attach check whether MCDS is configured already
Checks now also after recording whether the MCDS configuration was changed
Don't offer to upload the trace since there could be problems...

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
MTV release 150119 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

MTV
Prevent that CMcdsConfigRegs configuration can be changed while Trace is being recorded or decoded.

MTV
Always enable CPU status trace, when flow or instruction IP trace is enabled

MTV
Filter out 0xC000015A IPA message artefact, when CPU1/2 are not enabled/running

MTV
CPU data trigger now working properly (user forced now to select read or write)

MTV
Fixed: SRI X-Bar trace does not work

MTV
Notify user of EDEM mismatch in case of DEBUG instruction only in comment line

MTV
CPU DTU Trigger(!) is not working - 150101 could not reproduce
Need to change menu selection to trigger on write or (exclusive) trigger on read
and include dtu_acc_rd/wr accordingly in event generation
Add to regression

MTV
Trigger trace recording for application reset per default

MTV
Remove SSW related OCDS HARR configuration after Reset&Halt
Clear TR0EVT of CPU0 to avoid unintended HARR for Application and System resets
TR0EVT is used by the SSW to halt before the first user instruction        

MTV
Start/stop button "LED" gets yellow in post trigger mode when the remaining EMEM is filled.

MTV
Bus Error Trigger for SRI and SPB
Enable per default as Trigger Trace for SRI and SPB

Investigate WCEDbug.mcds
-> accept the fact that it is not possible to detect always the instruction before an IPA address

MTV
Prevent that Mcr is changed when recording.
Simply set CMcdsConfigRegs to readOnly

CMcdsConfigRegs
DCU status trace control for SPB, SRI and CPUs has no proper "Complex" recognition.

MTV
Reduce width of Comment column (only disassembler + smart status trace now)

OTGB Register
Rules: 
If MUX is set to OTGB check all OTGB registers
  Write only if there is a difference to the value stored in Mcr. 
  This applies also for the reset values!
Otherwise don't write and also don't write to .mcds and to .mcdsc files

CMcdsDeviceIfDas
Added workaround for erratum OCDS_TC.044 EMEM RAM can t be written via BBB when global OCDS
suspend is active

CMcdsHlDecoder - STATE comment
Show only important bits and the bits which do not have their default value
E.g. don't show SUS since its anyway always 0 due to the MCDS configuration
Filtering out of HALT/SBRK/HBRK messages

MTV
Menu Edit->Smart Display allows now to control the message filtering

MTV
Command line option -tdr just controls now the TDR related columns

MTV
Add status trace to default configuration
Add OCDS suspend trigger to default configuration

MTV
Version, compile date and time now shown in Help->About window

MTV
Init issue visible for Audi trace (strange IPI message)
Solution is to start trace with suspend release for PORST HARR case similar to mcdxdas.dll
This change ensures also tick generation with suspend release (not clear why), which means
that function, flow and instruction trace are perfectly time aligned after reset
Fixed in CMcdsDeviceIfDas::mStartCpu0AfterPorstHalt()

CMcdsHlDecoder
Remove redundant state messages with no difference to previous message (inserted at paragraph boundaries)
Add then ErikaOS_1404_OTGB_IRQ_OLDA.mcds to regression

MTV
AutoArm mode
The trick: Restart trace recording immediately, but don't clear the screen

MTV
CPU Halt Trigger
Only Halt and not watchpoint generation to keep it simple

MTV
Implement suspend by OCDS via dcu_sys of SRI BOB(edge, not level sensitive!)

MTV
Remove Jump Linked Functions column if not -tdr for first release
CFT JLF or TMF (Jump Linked or Tail Merged Functions) column

CMcdsHlDecoder
Add per default "IP START" for first real IP message (CPU individually)
Use mCpu[].first_ipa

MTV
Handle case that trace buffer is set to 0 in GUI
E.g. Notify user that at least two paragraphs are needed

CMcdsHlDecoder
Output just disassembler for source and target of CALL/RET instructions
The other info is now available already in the two line representation in a consistent way

MTV
Translate Watchpoint operation to Trig SRI Data, Trig Reset, Trig SRI Error, Trig CPU IP, etc.
But not in TDR mode

MTV
Global Trigger window for reset and OCDS suspend and Trigger point selection
Also show the status of the trigger configuration in the POB/BOB/OTGB windows
Use for that the same string as for the comment of the watchpoints in the trace

MCDS Decoder project for Thorsten Klose
Packaged Decoder
Console project
Should be prepared for "save as VCD file" of in MTV

MTV Trigger Trace
Trigger trace point can just be set to START/30%/60%/90%/40BytesBeforeEnd/END

CMcdsHlDecoder
CFT Output two lines with source and target of CALL/RET instruction

MTV
Allow normalization of time with GUI
Simple solution: If only ticks enabled -> relative to trigger trace point
This requires just to add a positive or negative offset when the strings are generated
The same easy approach is possible for TimeA in [ms], assuming a constant TimeR base

CMcdsDecoder
Remove register IF since only MCDS_MUX register is needed
OTGB details will be covered in the HL decoder

MTV
Table line index becomes negative before TRIGGER TRACE
Output (negative) line index to tab file

MTV 
Output configuration of watchpoint 

MTV
Trigger a watchpoint + PTU sync (needed?) with trace_done action to make it clearly visible

CMcdsConfigRegs
Remove mMcdsRegValid[]

MTV 
Add tick control in General control
Introduce smart ticks - Smart ticks not possible
Always start with an absolute time stamp?

MTV
Add absolute Time Stamp at each paragraph boundary

MTV
Adapt parameter of mPobPtuSetIpQuali() similar mPobPtuGetIpTrig() (split mcr_ptu_ctrl_st)

MTV
Show trigger menu part always when a trigger is enabled

MTV
Assciate .mcds and .mcdsc files -> double click in Windows Explorer will start MTV 

CMcdsHlDecoder::mAnalyzeHlMsgOnly()
Use HMM_NO_HL_MSG instead of omitMsg

MTV
Show menu entries like "No Address Qualification" only when needed (similar to SRI master qualification)

MTV
Trigger Trace button in POB and BOB windows next to Opoint selection
Resizes the window to show the TT part on the right side

MTV
Show "C0/32/64..." in comment for AURIX DMA trace

Show OLDA as operation. 
Use CMcdsConfigRegs::get_ar_olda() for detecting the address range

MTV
Default configuration just by calling functions like set_pob_ptu_ctrl()
Don't load default.mcdsc

MTV
File assiciation with .mcds and .mcdsc files (DAS installer)

MTV Bus Master Qualification
Add options for all CPUs, All DMA

MTV
POB DTU GUI
Align with PTU/SPB GUI for in Range/oo range
remove olda/stack from mcr_dtu_ctrl_st

MTV
Dedicated OLDA address range qualifier (without PTU sync)
Either Stack out of range or 1-2 data ranges
Only need to correct when stack range and data ranges overlap

MTV
Change operation output to W64, W32, W16, W, R64, ..., R

MTV
2 user ranges with 3 Trigger sets dtu_ea_trig[0/1/2]
Mapped to EVT10 and EVT12 for including dtu_acc_wr and dtu_acc_rd
--> 2 in range triggers and theoretical 3 oo range triggers -> just 2 shown to user
Alwas activate sync in flow and func trace

MTV
Extend regression suite to cover critical spots not only in the beginning of traces

MTV POB GUI
Add DSU control (interrupts, suspend, etc.)
Add data trace with option to filter out 64 bit accesses

HL Decoder
Support multiline for tab infrastructure

HL Decoder
Don't show IPA messages when not CFT

Trace Viewer
Menu bar width needs to become independent of window size if window is resized smaller

Decoder
Use just CALL/RET/IP instead of CFT CALL/CFT RET/ (IP in case of IPI/IPA and no CFT)
Only in the comment there can be a hint for CFT

Trace Viewer
Use CMcdsHlDecoderPackaged

Trace Viewer:
Standard .mcdsc file is automatically loaded with Start Button (if no config is loaded)

Trace Viewer:
Add "Connect" Button: localhost + if only one device + hot attach + switch to 30 MHz
Device->Connect means all options (select window) including frequency question

mcds_decoder
Decode CPUs and SRI based on TMUX settings (CPUx | CPUy) | (CPU1 | CPU1 | CPU2)

Add also comment to mcds_msg_str_st
-> Shift output of mMsgString_SMTT_BUS_DST() from mcds_hl_decoder to mcds_decoder
-> Same for mMsgString_SMTT_CPU_DST()

mcds_hl_decoder
Array with msg indexes:
 - Hide skip messages and add ticks to following message
 - Combine addr + data for split 64 bit accesses
 - But only if not TDR Info is requested

mcds_decoder
Short TDR info for IPR, IPC, etc. messages (and data messages without 64 bit data?)
Show again whether msg was compressed

mcds_decoder
Standard encoding independent of AURIX/AURIX_PLUS
But only if CPUx is already resolved to CPU0/1/2 etc.
Implement for all observation blocks

mcds_trace_viewer
command line option to show TDR info

mcds_decoder
Hide mcds_msg_cid_et etc. and replace with mcds_std_msg_type_st encodings for higher layer

Own class representing the device
Data comes from real device or ELF file or .mcdsc file. Depends on situation + use case
Data is used for
- IP decompression
- MCDS decoder config

Trace Viewer
Cntrl-A+Cntrl-C export to Excel or even a more direct integration

Shift operations like "Watch 1" from origin to operation

Remove TDR Msg in msg struct - store only the info somewhere: was compressed / is still compressed e.g. with a processed flag
Use the 16 bit tdr msg field to store always a 15 + 1 bit TDR address
Remove array index field
NO since stc_proc needed also for storing the ERROR code

Decoder init() option - No, because there are corner cases, when split to different paragraphs
_CONVERT_WPS_TO_WPM     // Only WPM messages need to be handled by higher layer
_COMBINE_SPLIT_TO_DTRW  // Combine split ( > 108 bit) DTA+DTWD -> DTW, DTA+DTRD -> DTR

130325
ok MCDS_CID_AX_TSU_MCX
ok MCDS_CID_AX_WTU_MCX, WTU_TCX, WTU_TCY, WTU_SPB, WTU_SRI
ok MCDS_CID_AX_PTU_TCX, PTU_TCY
ok MCDS_CID_AX_DTU_SPB, DTU0_TCX, DTU0_TCY, DTU1_TCX, DTU1_TCY
ok MCDS_CID_AX_DTU0_SRI1, DTU0_SRI2, DTU1_SRI1, DTU1_SRI2
ok MCDS_CID_AX_DCU_SPB, DCU_SRI, DCU_TCX, TCU_TCY
ok MCDS_CID_AX_OTU_TCX, OTU_TCY

TDR data in data64 also in case of syntax errors?

Handle 12 bit source field for DTU messages

tdr_addr could be reduced to 16 bit -> 32k modulo locations
or store in 64bit data field since not needed in most of the cases? - good idea!
7bit length, 1bit nibble, 32 bit address, 32bit tdr_msg

Integrate core description strings in ucv_st

init() Optional parameter to remove "compressed messages without reference"

 - Trace Type (TT) and Core ID encoding is unchanged compared to raw data 
   OR BETTER NORMALIZE TO AURIX REPRESENTATION in ttcid_proc?

