rtems-tld tracing with printk

Chris Johns chrisj at rtems.org
Wed Sep 10 03:53:30 UTC 2014


Hi,

This is an update on the RTEMS trace linker being worked on and found in 
the http://git.rtems.org/chrisj/rtl-host.git repo.

The following is a trace using the both_hello example in examples-v2 
using the trace configuration file attached:

  $ sparc-rtems4.11-run both_hello.exe
  >> _Thread_Initialize (0x020013C0)
   1] Objects_Information*(4) = 0203C70C
   2] Thread_Control*(4) = 0203EB48
   3] const Scheduler_Control*(4) = 02035FF8
   4] void*(4) = 00000000
   5] size_t(4) = 00001000
   6] bool(1) = 00
   7] Priority_Control(4) = 000000FF
   8] bool(1) = 01
   9] Thread_CPU_budget_algorithms(4) = 00000000
  10] Thread_CPU_budget_algorithm_callout(4) = 00000000
  11] uint32_t(4) = 00000000
  12] Objects_Name(4) = 49444C45
  << _Thread_Initialize (0x020013C0)
  rt] bool(1) = 01
  >> _Thread_Initialize (0x020013C0)
   1] Objects_Information*(4) = 0203C5EC
   2] Thread_Control*(4) = 0203F0F8
   3] const Scheduler_Control*(4) = 02035FF8
   4] void*(4) = 00000000
   5] size_t(4) = 00001000
   6] bool(1) = 00
   7] Priority_Control(4) = 00000001
   8] bool(1) = 00
   9] Thread_CPU_budget_algorithms(4) = 00000000
  10] Thread_CPU_budget_algorithm_callout(4) = 00000000
  11] uint32_t(4) = 00000000
  12] Objects_Name(4) = 55493120
  << _Thread_Initialize (0x020013C0)
  rt] bool(1) = 01
  >> _Thread_Initialize (0x020013C0)
   1] Objects_Information*(4) = 0203C86C
   2] Thread_Control*(4) = 0203F940
   3] const Scheduler_Control*(4) = 02035FF8
   4] void*(4) = 00000000
   5] size_t(4) = 00002000
   6] bool(1) = 01
   7] Priority_Control(4) = 000000FD
   8] bool(1) = 01
   9] Thread_CPU_budget_algorithms(4) = 00000000
  10] Thread_CPU_budget_algorithm_callout(4) = 00000000
  11] uint32_t(4) = 00000000
  12] Objects_Name(4) = 00000000
  << _Thread_Initialize (0x020013C0)
  rt] bool(1) = 01
Classic -- Hello World
POSIX -- Hello World
  >> exit (0x02001324)
   1] int(4) = 00000000

I also attach the waf script I used to build the example. You need to 
build and install the rtl-host code to get a working rtems-tld.

The 3 threads created are the Init, POSIX_Init and IDLE No code in RTEMS 
was altered to do this.

Chris
-------------- next part --------------
;
; RTEMS Trace Linker Configuration: hello
;
; This script configure the both hello example to perform some
; tracing via the printf trace generator.
;
[tracer]
;
; Name of the trace.
;
name = Hello RTEMS Tracer
;
; Options can be defined here or on the command line.
;
options = all-funcs, verbose
;
; Functions to trace.
;
traces = hello-trace
;
; Define the function sets. These are the function's that can be
; added to the trace lists.
;
functions = hello-trace
;
; Include RTEMS Trace support.
;
include = rtems.ini, rtld-base.ini

;
; User application trace example.
;
[hello-trace]
generator = printk-generator
signatures = hello-signatures
trace = exit, Init, POSIX_Init, _Thread_Initialize
header = "#include <rtems.h>"
header = "#include <rtems/score/objectimpl.h>"
header = "#include <rtems/score/scheduler.h>"

[hello-signatures]
exit=void, int
Init = void, rtems_task_argument
POSIX_Init = void*, void*
_Thread_Initialize = bool, Objects_Information*, Thread_Control*, const Scheduler_Control*, void*, size_t, bool, Priority_Control, bool, Thread_CPU_budget_algorithms, Thread_CPU_budget_algorithm_callout, uint32_t, Objects_Name
-------------- next part --------------
# Copyright 2013 Gedare Bloom (gedare at rtems.org)
# Copyright 2014 Chris Johns (chrisj at rtems.org)
#
# This file's license is 2-clause BSD as in this distribution's LICENSE.2 file.
#

# Waf build script for an RTEMS Hello
import rtems_waf.rtems as rtems

def build(bld):
    rtems.build(bld)

    if rtems.check_env(bld, 'RTEMS_TLD'):
        bld(features = 'c rtrace',
            target = 'both_hello.exe',
            source = ['test.c'],
            rtems_trace_cfg = '../../hello/both_hello/hello.ini')
    else:
        bld(features = 'c cprogram',
            target = 'both_hello.exe',
            source = ['test.c'])


More information about the devel mailing list