Commit Graph

20 Commits

Author SHA1 Message Date
99bcd93ffb openocd: reordering main loop
Main loop reordered, as before some buggy states could be reached.

Change-Id: If798724da5e7bc98b036058f2247e0ad17135723
2014-01-23 18:53:20 +01:00
bcb1e6b7a4 openocd: trace format fix
The output format of the tracing plugin needs to be as follows:
For a position in execution, first the PC-Event needs to be sent up
to the simulator controller, afterwards potential MEM-Events can be
signaled.

This order requirement is fixed with this commit.

Change-Id: I8412dd7a5a85a58c50a0d0d9b9d0369c838bc0a3
2014-01-23 18:53:20 +01:00
b97998829a openocd: some minor fixes in wrapper
Change-Id: I94ecde881d5eaeea280e5c6de3c3abc16c2903f4
2014-01-23 18:53:20 +01:00
55d17ba439 openocd: always try to aggregate mmu config writes
As memory writes have high fix costs, we want to minimize the number
of writes in consequence of the mmu configuration.

This commit aggregates writes as far as possible.

Change-Id: I4ba6618fc9023ae4a353585710e2933d3d7a6051
2014-01-23 18:53:20 +01:00
98777e1ec3 openocd: get activated watchpoint from openocd
Decoding the current instruction sometimes failes, so we need
to extract the currently activated watchpoint from the openocd
internal list of watchpoints. If we have more than one watchpoint,
we are in trouble.

Change-Id: I14b172e4f933ca894cf66685c6d2ca8e573a3151
2014-01-23 18:53:20 +01:00
eac600e1b6 openocd: silence debug-messages
Change-Id: I10d1ad484871cda5dba47f75b0d310ed441f701a
2014-01-23 18:53:20 +01:00
9f334a02bd openocd: arm read pc -> offset of 8
On ARM we need to add a offset to the pc, if we read it
(ARM ARM (DDI 0100I) page A2-9). This fixes bugs in memory
trace generation and watchpoint recognition.

Change-Id: I1cfcb84af2abae7971869d2ce29d602648e2f020
2014-01-23 18:53:20 +01:00
5142ff650e openocd: watchpoint check fix
If we halt in a watchpoint, we need to figure out, which one it was.
This will from now on be done by decoding the current instruction.

Change-Id: Ib62df0016c60044f2618af00e853b4373eb00bd7
2014-01-22 18:04:36 +01:00
e4ba517251 openocd: halt cortex-m3 after reboot
As we want to use the cortex-m3 only for memory access, it should
always be halted. To achieve this, we need to halt it after every
reboot.

Change-Id: I5f0edf4986b65aea5a2aa59020247b9676de4dcb
2014-01-22 18:04:36 +01:00
14cd9346ec openocd: generic halt function
Halting can now be done for cortex-a9 and cortex-m3 target with the halting
function which originally was only able to halt the cortex-a9 target.

Change-Id: I9ced64253405654c4155c8f776534bc7231387b2
2014-01-22 18:04:36 +01:00
f9cc503b7e openocd: freeze cyclecounter on halts
As the cycle counter seems to be running forth, we need to halt it, to
get exact cycle count values.

Change-Id: Id85c052b88cec48b25ee0975ad47369587e08096
2014-01-22 18:04:36 +01:00
227f0fd7b4 openocd: repetition in irregular step fail
Single-stepping as in tracing sometimes fails in a long step-chain.
So we repeat the step until it really stepped. It can be observed, that
if openocd returns a step error, it never accidently steps nonetheless.
To ensure this behaviour, we could check for correct pc.

Change-Id: I05f82e2af0ca822cd6cd5571ffc3845f4e6a1d91
2014-01-22 17:54:10 +01:00
c086800e58 openocd: added opcode parser
Added opcode parser of the F.E.H.L.E.R-project for analysis of
memory access in mmu-abort handling, tracing, etc.

Change-Id: I5912fa4a4d51ee0501817c43bae05e87ac0e9b90
2014-01-22 17:54:09 +01:00
146984f2fc openocd: Added support for MMU memory watch
AccessListener with long width are implemented as MMU page-faults

Change-Id: I85208463b1f7eb3dbab187287caa387394a4af90
2014-01-22 17:54:09 +01:00
809af0ae55 openocd: add cycle counter for trace timestamp
Added performance monitor hw-function cycle count.
Also fix for single-stepping exit, some additional register
exits and prevention of reboot failures.

Change-Id: I74196905dc39ecc14ae78366e7e1cb70ec7092f1
2014-01-22 17:54:03 +01:00
98a478badd openocd: arm register mapping
Mapping register id (ArmArchitecture) to openocd register id.

Change-Id: Id951ce1606e1720e7bc2fd7d6686cff8c1d5c9b4
2014-01-22 17:47:10 +01:00
1e511a4b64 openocd: main loop fix
Polling of current target system state was done non-blocking until now.
Because of this, when the target was executing a longer time, the main-loop
was walked through several times and so unwanted state changes were
triggered. After this fix, the polling of execution state is blocking
in a while-loop until the target system hits any halting condition.

Also added some minor fixes

Change-Id: I4cbbef6eb6ff6ff8a3451affb8409a0df6a95fc5
2014-01-22 17:43:31 +01:00
582459c5bb panda: non-returning openocd-loop at terminate
Previously for correct termination, the PandaController called
the finish-function of the openocd wrapper, invoked a coroutine
switch and waited for the openocd wrapper to finish up and switch
coroutine again, so the PandaController could exit with correct
exitStatus. Now the openocd-wrapper directly exits with chosen
exit status.

Change-Id: I8d318a4143c53340896ccee4d059a0d79fdcfe89
2014-01-22 17:43:31 +01:00
5638a7473e openocd: refactored register access
Change-Id: I396bd8a89e85d806183106c41070c58e2a37a377
2014-01-22 17:43:31 +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