origen_arm_debug 0.4.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|