Commit Graph

1157 Commits

Author SHA1 Message Date
0a5e54e9aa ecos_kernel_test experiment bugix: don't resume if 'experiment reached finish() before FI'
Change-Id: Id0bb9400b8aa28307ed385a8c32b91b17254ba1c
2014-01-15 12:52:44 +01:00
c0fe64ecd6 Merge "gem5: don't count instruction fetch as mem access" 2014-01-14 13:26:16 +01:00
3c7861ff06 core/sal: Added features that indicate whether FAIL* is initialized
GEM5 throws a reset trap during initialization.
This happens before the startup function is called.
This leads to problems because the startup function fills the m_CPUs list.
m_CPUs is needed for the TrapListener.
Therefore, we only react on traps after initialization.
This is needed in the following commit (see gem5/src/arch/arm/faults.cc).

Change-Id: I9ec6fd453705feb54b4f8a87d024181323a2d7ef
2014-01-14 13:07:21 +01:00
efbb6c6831 Merge "sal/gem5: getTimerTicks(), getTimerTicksPerSecond() implemented" 2014-01-14 12:45:13 +01:00
f359364888 sal/gem5: getTimerTicks(), getTimerTicksPerSecond() implemented
Change-Id: I01fdb5e4bdd61fc761e93ef77904c830131c9ed6
2014-01-14 12:13:55 +01:00
2f6111b2f4 openocd: type-cast fix
Fixed type-cast.
As we are using -fpermissive, it won't compile otherwise.

Change-Id: I97180c3d642065a501540bc0d9c58328d2ed4188
2014-01-13 19:13:26 +01:00
81210d17b2 openocd: include fix
Fixed absolute includes

Change-Id: Idaaa81710b7ace764635c6ab45d86067aadd1220
2014-01-13 19:13:26 +01:00
c03f42db44 openocd: config fix
In the OpenOCD config file for omap4460 an old definition of
Cortex-A9 CPUs was used. Without this fix, OpenOCD would not
start up.

Additionally this commit reduces the number of available Cortex-M
debug targets to one for the sake of simplicity.

Change-Id: Ic690bebd3d171ac0773bb0f1a8087ac96127fb6e
2014-01-13 19:13:26 +01:00
74b4a04d8e openocd: fixed static definition
As the target_to_arm function is needed in the OpenOCD-Wrapper,
it can't be any longer static.

Change-Id: I7099b99f2f1433359567278be16e4d71e06f28a7
2014-01-13 19:13:25 +01:00
f24d9813b6 openocd: speed-up
Normally OpenOCD reads all GP-Registers at halt, which is slow.
Restriction to only necessary Registers 1 and 15.

In the normal use case of OpenOCD this performance reduction does
not matter, because debugging does not need to be optimized for
performance. It just has to be faster than the human perception.

If we need to get the values of the registers 2 to 14, these are
fetched on demand per register.

Change-Id: I8587fbcc41c18722baebca1cec074188fe4cdebb
2014-01-13 19:13:25 +01:00
7e3cabf197 openocd: disabled main
As the openocd-executable won't be needed, the main-function just
prints a warning, which should never be seen in fail context.

Change-Id: I8e5bbd00f152f68058f946b68201c0917db9ec9a
2014-01-13 19:13:12 +01:00
f41247b143 gem5: don't count instruction fetch as mem access
Change-Id: I6ea9811c132ef7c235d5a03486ca08afc842b51f
2014-01-06 15:54:02 +01:00
34065fea60 weather-monitor: command line parameter are forwarded now
Parameters that are specified on the command line are now also forwarded.

Change-Id: I0e636f14dba43ef7877ce6e6deca1abb1f00a8a6
2014-01-03 16:38:02 +01:00
0907dfb0ae weather-monitor: now is a DatabaseCampaign
"removed" unneccessary memory-mapping ("Step 0")
cleaned out ExperimentData - now consists only of fsppilot and resultset
resultset now contains bitoffset which is part of result-table's primary key
adapted code to work with msg.fsppilot() instead of ExperimentData-values

Change-Id: I3b310e7a71d4b28479028250cd5722b3b2ce9f8c
2013-12-11 14:38:01 +01:00
839913592a Merge "Coding Guideline: Fixes." 2013-12-06 20:18:06 +01:00
ab9c0edf10 DatabaseCampaign: run jobs for known-outcome exps, too
Although we know that a known_outcome=1 pilot does not exhibit
behavior different from the golden run, the database schema does not
yet know what this behavior looks like (in terms of result-table
column values).  In order to be able to JOIN valid results for all
memory writes in the trace table (fspgroup maps them all onto *one*
pilot per variant), we need to run these experiments, too.

Additionally, don't join the fspgroup table; we only need this one for
result calculations afterwards.

Change-Id: Idcd2991274fede84526b1eee68a231774625d11a
2013-12-05 19:27:44 +01:00
8b6d744a3e import-trace: fix for using non-gzipped traces
As non-gzipped trace files cause import-trace to always import zero
events, the input file is now openend as in the dump-trace tool, where
opening non-gzipped files obviously works fine.

In the medium term we should find a centralized solution for this,
instead of re-implementing it all over the place.

Change-Id: I75845c03c0bbdc2b6b578b83d492b7dbbb40f051
2013-12-04 12:00:21 +01:00
73c39f7787 openocd: header fix
* If included by cpp-file, this will cause trouble. So it gets restricted
to use in c only.
* Prevent usage of "new" as variable name
* No redifinition of true and false, if included by C++
* Definition of bool fixed

Change-Id: Ic5403bd576afd9d2900a8ecfbcfdc50561ba0633
2013-12-02 14:53:35 +01:00
0bb8ff2fa7 openocd: add openocd wrapper
Including
 * Main loop for controlling pandaboard
 * Modification routines like setting halt conditions, reading
   or writing Memory, Registers, etc.
 * Timers

The *.hpp file is defined as *.hpp.in, because the absolute path to
config file must be set by CMake-Script (Will be introduced in later
commit)

Change-Id: I648df4916877dae550943bbb9b264b8d662689b7
2013-12-02 14:53:35 +01:00
5166ddf5e7 openocd: config file for Pandaboard ES + Flyswatter2
Combines the selection of both relevant config files.

Change-Id: Icc7d0add2f0a2ceab5ed715ef8d6b3b6a70ec774
2013-12-02 14:53:35 +01:00
83d72a091e debuggers: import openocd-0.7.0
Initial check-in of openocd-0.7.0 as it can be downloaded from
http://sourceforge.net/projects/openocd/files/openocd/0.7.0/

Any modifications will follow.

Change-Id: I6949beaefd589e046395ea0cb80f4e1ab1654d55
2013-12-02 14:53:22 +01:00
85fffe007e tracing: bugfix for enabled memory maps
With the recent updates to record one additional instruction at the trace
start, I broke memory-map handling (restrictMemoryAddresses() and
restrictInstructionAddresses()).  This change repairs this functionality.

Change-Id: I0daf9f474d0efe3f8e30a168c0ccc1e993e7ddc6
2013-11-18 15:49:06 +01:00
bd91549367 Merge "gem5: restore works now" 2013-11-13 17:20:53 +01:00
45e0b41022 gem5: restore works now
The function restore(PATH) can now be used to restore a checkpoint.

Change-Id: I25faf9f6335261d2b3ade4185eae93983ece9f97
2013-11-13 17:15:19 +01:00
f31548c026 Merge "core/sal: register issue fixed" 2013-11-13 16:08:40 +01:00
6fa0ae970b Coding Guideline: Fixes.
Sorry, for the small changesets.

Change-Id: I12e7b1b4efff0c63020613e399f8185ace97aec7
2013-11-11 13:27:43 +01:00
cf95437e65 RealtimeLogger: Fixed coding guideline issues.
Change-Id: I1172e0c60e2d6e895b4d3f99eb1a023c348bd3b3
2013-11-11 13:18:26 +01:00
8f0db45dfe Exp: Base system for the real time systems lecture
Change-Id: I3e5b8c6e60b57e6ec03500e9ee109fd5fb322cb2
2013-11-11 13:08:26 +01:00
4c7fcae6ad plugins: A simple signal generator
Listens on a configurable SUT's global variable.
On read access a signal pattern value is calculated and sent back
to the SUT.

Currently, only a superimposable sine wave signal form is implemented.
Further signal forms can be implemented by inheriting from the
abstract SignalForm class.

Change-Id: I2e6cf49cd44797999691c9e9cf0c54dd3c96875e
2013-11-11 13:07:42 +01:00
5d867be83b plugins: RealtimeLogger plugin
Logs access to a given global variable of the SUT, given by
a symbol name, and outputs value when variable is written to file.
Format:
<Simulation time>;<Value of variable>

Change-Id: I81b581e571be4255a1a2200c41e7c16657ddfd3d
2013-11-11 12:30:52 +01:00
443b3e4919 L4Sys: termination shortcuts
Add two new breakpoints to L4Sys experiment that allow detecting that
execution terminated with an error: vga_console_blink() is called by the
kernel if JDB was entered (meaning we are hanging, e.g., due to an
assertion); also longjmp() is only used by PF handling code after no
valid page fault handling could be performed

Change-Id: Ice61039c4bd07815a316bbc0bdb39f3483d9a1da
2013-11-06 17:37:20 +01:00
d4f22a38ff L4Sys: EIP deviation tracking
* after injecting a fault, track how many instructions it takes until
  execution deviates from original execution
* also track what the first deviating EIP value is

Change-Id: I18a9250517ca90214728c2c4b036b412f5dbf224
2013-11-06 17:37:20 +01:00
3db5d034a2 InstructionFilter: make unused EIP a default 0 parameter
Change-Id: I972be71af70934eef98bc67b27e32a98ecb8be3b
2013-11-06 17:37:20 +01:00
a5866a68a2 add l4-sys ignore file
Change-Id: Iea2228d8bafc2a3ecb4b6e26e2552813821a3d0b
2013-11-06 17:37:19 +01:00
71170145e0 Adapt l4-sys experiment to importer fix
no need to decrement instruction offset before setting bp anymore

Change-Id: I7f9c02349663899fa8f496a46bcb357bd567ac5c
2013-11-06 17:37:19 +01:00
63610d0652 L4sys: build fix
experiment.hpp is parsed before l4sys.ph.h is generated
-> remove dependency

Change-Id: I128108e562877caca732ad43fdb65b12e56951f8
2013-11-06 17:37:19 +01:00
3bf64351a4 core/sal: register issue fixed
Before, it was not possible to add registers in arbitrary order.

Change-Id: I952c03ea4339da2cdaf34bd4546c76c33cecd4cd
2013-11-01 17:26:26 +01:00
c000b50101 Merge branch 'tracing-off-by-one' 2013-10-28 18:37:07 +01:00
5171645d9a plugin/tracing: fix extended trace on umapped memory areas
When a register in the extended trace was dereferenced and the value
was smaller than the memory pool size, but the address was not mapped
an assertion occured and the tracing plugin terminated the
simulator. Now the dereferenced memory address is checked for being
mapped and not being smaller than the memory pool.

Change-Id: I9ac954988ef860969679f9f360814c5e4b66f473
2013-10-28 15:09:35 +01:00
148b09be2e tools/import-trace: added ElfImporter
The ElfImporter is not a real trace importer, but we locate it
into the import-trace utility, since here the infrastructure is
already in place to import things related to an elf binary into
the database.

The ElfImporter calls objdump and dissassembles an elf binary
and imports the results into the database.

Change-Id: I6e35673c8dbee3b7e8dfc7549d10e5dca9b55935
2013-10-24 15:30:17 +02:00
c87075e598 Merge branch 'importtrace-reparse-parameters' 2013-10-23 15:51:21 +02:00
d97e3dfa8f revert out-of-l4sys change
Change-Id: I86b27aae6fa30992b485af79e767ec23949d1e62
2013-10-21 15:38:15 +02:00
a65c64791e L4Sys experiment: add CR3 detection to prep run
Change-Id: Iebbc0309695ee6a7bb8c68fd6ffa24b73ffd7ee5
2013-10-21 15:28:07 +02:00
77b2e208d0 L4Sys Experiment: more on address space tracing
* introduce L4SYS_ADDRESS_SPACE_TRACE to indicate that we want
  to trace instructions in a different AS from the one we are starting
  the experiment in
* add CR3Run() to determine address space ID

Change-Id: I7bdaf1e858a6dd369af5175bd56e1b4e2d5f05ef
2013-10-21 15:28:07 +02:00
523f4a465b add injection address to results
Change-Id: I7966f97b8c09bbd6510ca6066dd40be398b54de3
2013-10-21 15:28:07 +02:00
f2d0919553 tracing: simplify confusing iponly/memonly configuration
The internal m_iponly / m_memonly bools are a bit hackish; especially it's
unclear what should happen if both are set.  The m_tracetype enum now
encompasses all possible configurations, while the plugin's user interface
remains unchanged.

Change-Id: Ibdd872b5cc5781836428b27bfb2db3825700e671
2013-10-17 19:09:54 +02:00
64034e29b4 tracing: bugfix: advance prevtime only if delta was recorded
This change implements what the source-code comment already promised but
didn't keep: As we only record time deltas instead of absolute time values,
prevtime must not be overwritten unless the current delta was really added
to the trace.  This has caused timing information to be stored incorrectly
if certain events were skipped (e.g., because they didn't match the memory
map configured by the user).

Change-Id: Id40271d117dd91b1122136c62329d64174f304b0
2013-10-17 19:07:35 +02:00
22b9646b80 import-trace: dynamic instruction off-by-one
Richard noticed that instr2 values are off by one when done with the
MemoryImporter vs. with his own importer.  The core problem is that
the dynamic instruction counter in the Importer base class
(Importer::copy_to_database, instruction_count_t instr) gets increased
*after* reporting an IP event to the importer implementation; this has
the side-effect that memory access events have a +1 dynamic
instruction count offset with regard to the IP event of the
instruction they belong to.

Bottom line: IP events and all memory events belonging to that
instruction should have the same dynamic instruction number.
Christian argued for the numbers starting with 0, which, as a side
effect, relativizes the repercussions of the change introduced in the
previous commit, as the new "first" event gets the sequence number 0
now.

 -  All experiments and importers only dealing with memory accesses
    (MemoryImporter) are affected by this change:  The dynamic
    instruction count now starts with 0 instead of 1.  Together with
    the previous commit, the only change is one additional dynamic
    instruction at position 0.  Note that existing trace files do not
    have this additional instruction, which shifts all trace positions
    by 1.

 -  All importers that process *only* IP events (InstructionImporter,
    RandomJumpImporter, RegisterImporter) won't see any difference.
    Commit 036e340, though, introduced a +1 offset.

 -  Experiments that use these instruction counts for navigating to
    the target instruction must be checked to properly deal with the
    dynamic instruction #0 (no forwarding necessary).  All dynamic
    instruction offsetting should now work uniformly for both memory
    accesses and all other fault models.  To be sure everything works
    in order, sanity-check the current absolute instruction pointer
    right before fault injection.

Change-Id: I3f509f1b47836fa78fd029a7bb7c36c878912d97
2013-10-17 18:28:40 +02:00
3dc752cd09 tracing: fix loss of first dynamic instruction
When starting the tracing plugin (simulator.addFlow()), at the moment
the *current* dynamic instruction (e.g., the one the start symbol
points to) is skipped, and tracing commences with the second
instruction.  This change records an additional instruction event at
the trace begin.

Note that this change affects all tracing-plugin users.  The first
event gets recorded when starting the plugin (simulator.addFlow()).
This avoids compatibility/off-by-one issues when recording traces with
the generic-tracing experiment vs. with custom experiments.

Change-Id: Ic24e17a68b8a44edad3be994e9edd6d6712bfda1
2013-10-17 18:28:28 +02:00
090125a283 Revert "generic-tracing: fix lossage of first event"
This reverts commit 036e340bd9.

Problems with this one were:
 -  Broken event timings.  m_prevtime wasn't reset to m_curtime in
    TracingPlugin::handleSingleIP(), resulting in a large deltatime
    being recorded for the second event, too.  This effectively
    doubled the experiment's start time.
 -  Code repetition (copy/pasted for special handling of first event),
    making planned changes (advanced tracing for IP events) more
    difficult.
 -  Unnecessary additional tracing-plugin interface method.

Change-Id: I4b74d1a3f4563aabe6626399f9b30a2171b4c285
2013-10-17 17:44:43 +02:00