Changes between Version 82 and Version 83 of Developer/Projects/Open/TraceTool


Ignore:
Timestamp:
Mar 9, 2016, 10:34:21 PM (4 years ago)
Author:
Chris Johns
Comment:

Update the CTF tasks.

Legend:

Unmodified
Added
Removed
Modified
  • Developer/Projects/Open/TraceTool

    v82 v83  
    3232The following are the open tasks for the Trace project:
    3333
    34  1. RTEMS Trace linker (rtems-tld) Symbol Signatures
    35  1. Target Integration of the Capture Engine with rtems-tld
    36  1. CTF integration.
    37  1. Tracing tools improvements.
     341. RTEMS Trace linker (rtems-tld) Symbol Signatures
     351. Target Integration of the Capture Engine with rtems-tld
     361. CTF integration.
     371. Tracing tools improvements.
     38
     39'''Note:''' The rtems-tld tool is written in C++ and to work on this  tool you need good C++ coding skills and some knowledge of using the   STL. The tools has a tight coding standard that is not documented but plenty of code exists you can see and follow. Help is available so please ask if you need help and are willing to learn.
    3840
    3941== RTEMS Trace linker (rtems-tld) Symbol Signatures ==
     
    4951== CTF integration ==
    5052
    51 > Isaac, can this entry please be updated? Thanks Chris.
     53[http://www.efficios.com/ctf CTF] is really neat and brings to RTEMS a range of features we really need. The format is good and applicable to RTEMS and the post processing and real-time monitoring tools are valuable.
    5254
    53 CTF is really neat and brings to RTEMS a range of features we really need. The format is good and applicable to RTEMS and the post processing and real-time monitoring tools are valuable.
     55The CTF has a range of tools and parts and this task is to bring those together and into the RTEMS Trace Linker. The goal is to encapsulate what is needed to use CTF and what it provides with the functionality of the RTEMS Trace Linker to build an application for a user that uses CTF. The `rtems-tld` tool knows about RTEMS and function signatures (see task 1) and it can be taught to internally invoke the CTF tools to create a required configuration files and target code to integrate with the CTF post processing tools. Being able to use the Capture Engine is considered an advantage.
    5456
    55 The CTF has a range of tools and parts and this task is to bring those together and into the RTEMS Trace Linker. The goal is to encapsulate what is needed to use CTF and what it provides with the functionality of the RTEMS Trace Linker to build an application for a user that uses CTF. The rtems-tld tool knows about RTEMS and function signatures (see task 1) and it can be taught to internally invoke the CTF tools to create a required meta-data files and target code to integrate with the CTF post processing tools. Being able to use the Capture Engine is considered an advantage.
     57A key part is [https://github.com/efficios/barectf barectf]. This accepts a YAML configuration and generates suitable C code for integration into the application. This tool can be wrapped inside the `rtems-tld` and used transparently to the user. The `rtems-tld` can build any `barectf` generated code for a target because it already knows the compiler and flags required by the target. The user's code is wrapped by the GNU ld and that creates the dependencies to the `rtems-tld` generated code and in turn to the `barectf` generated code. No user code is touched at the source or even the object file level and this is an important requirement.
    5658
    57 This task is not as defined as the other ones and requires some research and analysis following on from what Isaac has already done. Isaac has discussed the remote protocol and this is an important part and worth plenty of attention.
     59What follow is mostly guess work on my part and needs to be clarified, corrected and cleaned up as we learn more. I base what is written on the current wrapping of trace calls is controlled by `rtems-tld` and so it can generate the `barectf` configuration file. The `barectf` generated code takes in the trace data and returns CTF format records suitable for buffering. The Capture Engine is used because it provides safe concurrent buffering of data. The project is bring all this together.
     60
     61The task can be divided up into:
     62
     631. Investigate how `barectf` works and what code is generated.
     642. Determine how the trace wrapped calls created by `rtems-tld` integrate to the `barectf` trace support. I suspect this is a matter of assigning event ids in the `barectf` configuration file to match the `rtems-tld` generated ids.
     653. Create an `rtems-tld` generator to generate C code to bind to the `barectf` calls.
     664. Integrate the `barectf` output support to the Capture Engine so it performs the buffering. This assumes the `barectf` code generated is sequential and event processing is sequential and contains no code to update global variables. The concurrent activity is the buffering and this is handled by the Capture Engine.
     675. Determine how to add extra special features such as CPU number.
     68
     69The final part of this task is transport to the host machine. How this happens has not been determined yet and is open to suggestions and innovation.
    5870
    5971== Tracing Improvements ==