origen_arm_debug 0.4.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/version.rb +2 -2
- data/lib/origen_arm_debug/mem_ap.rb +6 -4
- data/lib/origen_arm_debug/swj_dp.rb +34 -0
- data/templates/web/index.md.erb +30 -15
- data/templates/web/partials/_navbar.html.erb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e004df0c8d145be274dae133a25750de5d4775d
|
4
|
+
data.tar.gz: 661b0086a39ef3e4287cd97e7c551ee35f81fc01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3b76b470b1247868e15f9fafd851401fa747b504df323ffb3d9c593c18401ce8ad69da7b4b92c4f38a994b7483d78c22a1c37b6d2a81f0368ce4e327244d043
|
7
|
+
data.tar.gz: b09cb03684e736f2f7f9adc80ae8dc05f35ae03771b4bbcabca4aebfc04442daf8532a9eb4e97cb1dfca95c69466c0034317f579188cbb9690b16e652dbc8127
|
data/config/version.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
'include rgen'
|
2
1
|
module OrigenARMDebug
|
3
2
|
# Object that defines the API necessary to perform MEM-AP transactions. Requires
|
4
3
|
# a top-level protocol be defined as well as a top-level instantiation of an
|
@@ -175,7 +174,7 @@ module OrigenARMDebug
|
|
175
174
|
# of options[:edata]
|
176
175
|
# @param [Hash] options Options to customize the operation
|
177
176
|
# Returns nothing.
|
178
|
-
def
|
177
|
+
def r(addr, rdata, options = {})
|
179
178
|
# Warn caller that this method is being deprecated
|
180
179
|
msg = 'Use mem_ap.read(addr, options) instead of R(addr, rdata, options)'
|
181
180
|
Origen.deprecate msg
|
@@ -184,6 +183,7 @@ module OrigenARMDebug
|
|
184
183
|
options = { rdata: rdata }.merge(options)
|
185
184
|
read(addr, options)
|
186
185
|
end
|
186
|
+
alias_method :R, :r
|
187
187
|
|
188
188
|
# Method to write to a mem_ap register (legacy)
|
189
189
|
#
|
@@ -191,7 +191,7 @@ module OrigenARMDebug
|
|
191
191
|
# @param [Integer] wdata Data to be written
|
192
192
|
# @param [Hash] options Options to customize the operation
|
193
193
|
# Returns nothing.
|
194
|
-
def
|
194
|
+
def w(addr, wdata, options = {})
|
195
195
|
# Warn caller that this method is being deprecated
|
196
196
|
msg = 'Use mem_ap.write(addr, wdata, options) instead of W(addr, wdata, options)'
|
197
197
|
Origen.deprecate msg
|
@@ -199,6 +199,7 @@ module OrigenARMDebug
|
|
199
199
|
# Patch arguments and send to new method
|
200
200
|
write(addr, wdata, options)
|
201
201
|
end
|
202
|
+
alias_method :W, :w
|
202
203
|
|
203
204
|
# Method to write and then read from a mem_ap register (legacy)
|
204
205
|
#
|
@@ -206,7 +207,7 @@ module OrigenARMDebug
|
|
206
207
|
# @param [Integer] wdata Data to be written
|
207
208
|
# @param [Hash] options Options to customize the operation
|
208
209
|
# Returns nothing.
|
209
|
-
def
|
210
|
+
def wr(addr, wdata, options = {})
|
210
211
|
# Warn caller that this method is being deprecated
|
211
212
|
msg = 'Use mem_ap.write_read(addr, wdata, options) instead of WR(addr, wdata, options)'
|
212
213
|
Origen.deprecate msg
|
@@ -214,6 +215,7 @@ module OrigenARMDebug
|
|
214
215
|
# Patch arguments and send to new method
|
215
216
|
write_read(addr, wdata, options)
|
216
217
|
end
|
218
|
+
alias_method :WR, :wr
|
217
219
|
|
218
220
|
# -----------------------------------------------------------------------------
|
219
221
|
# Support Code
|
@@ -297,6 +297,12 @@ module OrigenARMDebug
|
|
297
297
|
"data=0x#{wdata.to_s(16).rjust(8, '0')}"
|
298
298
|
end
|
299
299
|
|
300
|
+
# Method
|
301
|
+
#
|
302
|
+
# @param [Integer] name Name of register to be transacted
|
303
|
+
# @param [Integer] rwb Indicates read or write
|
304
|
+
# @param [Integer] wdata Value of data to be written
|
305
|
+
# @param [Hash] options Options to customize the operation
|
300
306
|
def dpacc_access(name, rwb, wdata, options = {})
|
301
307
|
addr = get_dp_addr(name)
|
302
308
|
|
@@ -307,6 +313,13 @@ module OrigenARMDebug
|
|
307
313
|
acc_access(addr, rwb, 0, wdata, options)
|
308
314
|
end
|
309
315
|
|
316
|
+
# Method
|
317
|
+
#
|
318
|
+
# @param [Integer] addr Address of register to be transacted
|
319
|
+
# @param [Integer] rwb Indicates read or write
|
320
|
+
# @param [Integer] wdata Value of data to be written
|
321
|
+
# @param [Integer] rdata Value of data to be read back
|
322
|
+
# @param [Hash] options Options to customize the operation
|
310
323
|
def apacc_access(addr, rwb, wdata, rdata, options = {})
|
311
324
|
set_apselect((addr & 0xFFFFFFFE) | (@current_apaddr & 1), options)
|
312
325
|
if @imp == :swd
|
@@ -317,6 +330,13 @@ module OrigenARMDebug
|
|
317
330
|
acc_access((addr & 0xC), rwb, 1, wdata, options)
|
318
331
|
end
|
319
332
|
|
333
|
+
# Method
|
334
|
+
#
|
335
|
+
# @param [Integer] addr Address of register to be transacted
|
336
|
+
# @param [Integer] rwb Indicates read or write
|
337
|
+
# @param [Integer] ap_dp Indicates Access Port or Debug Port
|
338
|
+
# @param [Integer] wdata Value of data to be written
|
339
|
+
# @param [Hash] options Options to customize the operation
|
320
340
|
def acc_access(addr, rwb, ap_dp, wdata, options = {})
|
321
341
|
if @imp == :swd
|
322
342
|
acc_access_swd(addr, rwb, ap_dp, wdata, options = {})
|
@@ -325,6 +345,13 @@ module OrigenARMDebug
|
|
325
345
|
end
|
326
346
|
end
|
327
347
|
|
348
|
+
# Method SWD-specific
|
349
|
+
#
|
350
|
+
# @param [Integer] addr Address of register to be transacted
|
351
|
+
# @param [Integer] rwb Indicates read or write
|
352
|
+
# @param [Integer] ap_dp Indicates Access Port or Debug Port
|
353
|
+
# @param [Integer] wdata Value of data to be written
|
354
|
+
# @param [Hash] options Options to customize the operation
|
328
355
|
def acc_access_swd(addr, rwb, ap_dp, wdata, options = {})
|
329
356
|
if (rwb == 1)
|
330
357
|
swd.read(ap_dp, addr, options)
|
@@ -335,6 +362,13 @@ module OrigenARMDebug
|
|
335
362
|
swd.swd_dio_to_0(options[:w_delay])
|
336
363
|
end
|
337
364
|
|
365
|
+
# Method JTAG-specific
|
366
|
+
#
|
367
|
+
# @param [Integer] addr Address of register to be transacted
|
368
|
+
# @param [Integer] rwb Indicates read or write
|
369
|
+
# @param [Integer] ap_dp Indicates Access Port or Debug Port
|
370
|
+
# @param [Integer] wdata Value of data to be written
|
371
|
+
# @param [Hash] options Options to customize the operation
|
338
372
|
def acc_access_jtag(addr, rwb, ap_dp, wdata, options = {})
|
339
373
|
if !options[:r_attempts].nil?
|
340
374
|
attempts = options[:r_attempts]
|
data/templates/web/index.md.erb
CHANGED
@@ -22,21 +22,23 @@ or if your application is a plugin add this to your <code>.gemspec</code>
|
|
22
22
|
spec.add_development_dependency "origen_arm_debug", ">= <%= Origen.app.version %>"
|
23
23
|
~~~
|
24
24
|
|
25
|
-
__NOTE:__ You will also need to include <code>require 'origen_arm_debug'</code> somewhere in your environment
|
25
|
+
__NOTE:__ You will also need to include <code>require 'origen_arm_debug'</code> somewhere in your environment
|
26
|
+
if your app is a plugin.
|
26
27
|
|
27
28
|
|
28
29
|
### How To Use
|
29
30
|
|
30
|
-
Include the <code>OrigenARMDebug</code> module in your DUT class,
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
Include the <code>OrigenARMDebug</code> module in your DUT class, then hook it up
|
32
|
+
to the Origen register API via
|
33
|
+
<code>read_register</code> and <code>write_register</code> methods.
|
34
|
+
|
35
|
+
The <code>OrigenARMDebug</code> module also provides additional methods to use the ARM Debug protocol including:
|
36
|
+
accessing device memory, accessing core and floating point registers (cortex M cores only),
|
37
|
+
entering/exiting debug mode (cortex M cores only), setting the PC (cortex M cores only)
|
38
|
+
and stepping through code (cortex M cores only).
|
37
39
|
|
38
40
|
You must also include a compatible physical driver depending on what debug
|
39
|
-
interface your
|
41
|
+
interface your device has, one of the following can be used:
|
40
42
|
|
41
43
|
* [JTAG](http://origen-sdk.org/jtag)
|
42
44
|
* [Single Wire Debug](http://origen-sdk.org/swd)
|
@@ -46,16 +48,29 @@ class DUT
|
|
46
48
|
|
47
49
|
include OrigenARMDebug
|
48
50
|
include Origen::Registers
|
49
|
-
# Also include the required physical driver
|
51
|
+
# Also include the required physical driver, JTAG in this example
|
52
|
+
include OrigenJTAG
|
50
53
|
|
51
54
|
def initialize
|
52
|
-
|
53
|
-
|
55
|
+
reg :myreg, 0x0012, size: 16 do |reg|
|
56
|
+
reg.bits 15..8, :upper_byte
|
57
|
+
reg.bits 7..0, :lower_byte
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Hook the ARMDebug module into the register API, any register read
|
62
|
+
# requests will use the ARM Debug protocol by default
|
63
|
+
def read_register(reg, options={})
|
64
|
+
arm_debug.read_register(reg, options)
|
54
65
|
end
|
55
66
|
|
67
|
+
# As above for write requests
|
68
|
+
def write_register(reg, options={})
|
69
|
+
arm_debug.write_register(reg, options)
|
70
|
+
end
|
56
71
|
end
|
57
72
|
|
58
|
-
DUT.new.
|
73
|
+
DUT.new.myreg.write!(0x55AA) # => Will generate the required vectors using the ARM debug protocol
|
59
74
|
~~~
|
60
75
|
|
61
76
|
|
@@ -69,13 +84,13 @@ object for use in the console:
|
|
69
84
|
~~~
|
70
85
|
origen i
|
71
86
|
|
72
|
-
>
|
87
|
+
> dut.arm_debug
|
73
88
|
=> #<OrigenARMDebug::Driver:0x0000001ee48e78>
|
74
89
|
~~~
|
75
90
|
|
76
91
|
Follow the instructions here if you want to make a 3rd party app
|
77
92
|
workspace use your development copy of the OrigenARMDebug plugin:
|
78
|
-
[Setting up a Plugin Development Environment](http://origen-sdk.org/origen/
|
93
|
+
[Setting up a Plugin Development Environment](http://origen-sdk.org/origen/guides/plugins)
|
79
94
|
|
80
95
|
This plugin also contains a test suite, makes sure this passes before committing
|
81
96
|
any changes!
|
@@ -14,7 +14,7 @@
|
|
14
14
|
<li class="<%= options[:tab] == :api ? 'active' : '' %>"><a href="<%= path "/api/" %>">API</a></li>
|
15
15
|
<li class="<%= options[:tab] == :coverage ? 'active' : '' %>"><a href="<%= path "/coverage" %>">Coverage</a></li>
|
16
16
|
<li class="<%= options[:tab] == :release ? 'active' : '' %>"><a href="<%= path "/release_notes" %>">Release Notes</a></li>
|
17
|
-
<li><a href="https://github.com/Origen-SDK/
|
17
|
+
<li><a href="https://github.com/Origen-SDK/origen_arm_debug">Github</a></li>
|
18
18
|
</ul>
|
19
19
|
<%= import "origen/web/logo.html" %>
|
20
20
|
</div><!--/.nav-collapse -->
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_arm_debug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ronnie Lajaunie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.2.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: origen_testers
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description:
|
70
84
|
email:
|
71
85
|
- Ronnie.Lajaunie@freescale.com
|