Commit Graph

20 Commits

Author SHA1 Message Date
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
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
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