origen_arm_debug 1.1.3 → 1.1.4
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/boot.rb +1 -0
- data/config/commands.rb +12 -10
- data/config/version.rb +1 -2
- data/lib/origen_arm_debug/dap_controller.rb +30 -1
- data/lib/origen_arm_debug/jtag_dp.rb +9 -0
- data/lib/origen_arm_debug/sw_dp.rb +9 -0
- data/lib/origen_arm_debug_dev/dut_dual_dp.rb +34 -0
- data/pattern/workout.rb +55 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8129ae2a9371cfed96eeddab0b431b7fabea04648fe690a8e5b71232fa34cb89
|
4
|
+
data.tar.gz: d605f5cf618b53f2eff53ed0af3eab442d6bfe0a4292abd37895e51ddd1436bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cfc2498bad1094ec2e3fc39bceb5f8c0d72fb8f984f98f5934d6fcd4d78db4facaac0e1784f252e5cd301d0faaf9a1b1bfbedab41ba1d1cbc66a0cada20c94c
|
7
|
+
data.tar.gz: 2642fa31000ef162330132b2acd1ba1ffd2ac75639b96201b31c9800204c7712376bbcfed4ab11039e2577248d040201c68d419b12c032658e34bfe78fe1c41c
|
data/config/boot.rb
CHANGED
data/config/commands.rb
CHANGED
@@ -17,11 +17,11 @@ aliases ={
|
|
17
17
|
# Now branch to the specific task code
|
18
18
|
case @command
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
when "specs"
|
21
|
+
require "rspec"
|
22
|
+
exit RSpec::Core::Runner.run(['spec'])
|
23
23
|
|
24
|
-
when "examples"
|
24
|
+
when "examples", "test"
|
25
25
|
Origen.load_application
|
26
26
|
status = 0
|
27
27
|
|
@@ -30,6 +30,8 @@ when "examples" # , "test"
|
|
30
30
|
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
31
31
|
ARGV = %w(workout -t swd -e j750 -r approved)
|
32
32
|
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
33
|
+
ARGV = %w(workout -t dual_dp -e j750 -r approved)
|
34
|
+
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
33
35
|
ARGV = %w(workout -t config_test -e j750 -r approved/config_test)
|
34
36
|
load "#{Origen.top}/lib/origen/commands/generate.rb"
|
35
37
|
|
@@ -44,12 +46,12 @@ when "examples" # , "test"
|
|
44
46
|
status = 1
|
45
47
|
end
|
46
48
|
puts
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
if @command == "test"
|
50
|
+
Origen.app.unload_target!
|
51
|
+
require "rspec"
|
52
|
+
result = RSpec::Core::Runner.run(['spec'])
|
53
|
+
status = status == 1 ? 1 : result
|
54
|
+
end
|
53
55
|
exit status
|
54
56
|
|
55
57
|
# Always leave an else clause to allow control to fall back through to the
|
data/config/version.rb
CHANGED
@@ -3,12 +3,41 @@ module OrigenARMDebug
|
|
3
3
|
include Origen::Controller
|
4
4
|
include Helpers
|
5
5
|
|
6
|
+
attr_accessor :dp
|
7
|
+
|
6
8
|
# Returns the currently enabled DP (or the only DP if only one
|
7
9
|
# of them).
|
8
10
|
# If no dp is enabled before calling this, it will choose the
|
9
11
|
# SW_DP by default.
|
10
12
|
def dp
|
11
|
-
dps.first
|
13
|
+
@dp ||= dps.first
|
14
|
+
end
|
15
|
+
|
16
|
+
def set_dp(dp)
|
17
|
+
if dps.size > 1
|
18
|
+
if dp == :swd || dp == :sw
|
19
|
+
@dp = dps.first
|
20
|
+
elsif dp == :jtag
|
21
|
+
@dp = dps.last
|
22
|
+
else
|
23
|
+
Origen.log.error 'origen_arm_debug: Only SWD and JTAG DP available'
|
24
|
+
end
|
25
|
+
else
|
26
|
+
Origen.log.warn 'origen_arm_debug: Ignoring set_dp call since only one DP is available'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def reset_dp
|
31
|
+
@dp = nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def is_jtag?
|
35
|
+
dp.is_jtag?
|
36
|
+
end
|
37
|
+
|
38
|
+
def is_swd?
|
39
|
+
dp.is_swd?
|
12
40
|
end
|
41
|
+
alias_method :is_sw?, :is_swd?
|
13
42
|
end
|
14
43
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module OrigenARMDebugDev
|
2
|
+
# Simple JTAG-specific dut model that inherits from protocol-agnostic DUT model
|
3
|
+
class DUAL_DP_DUT < DUT
|
4
|
+
include OrigenSWD
|
5
|
+
include OrigenJTAG
|
6
|
+
|
7
|
+
# Adds jtag-required pins to the simple dut model
|
8
|
+
# Returns nothing.
|
9
|
+
def initialize(options = {})
|
10
|
+
super
|
11
|
+
add_pin :tclk
|
12
|
+
add_pin :tdi
|
13
|
+
add_pin :tdo
|
14
|
+
add_pin :tms
|
15
|
+
add_pin :trst
|
16
|
+
add_pin :swd_clk
|
17
|
+
add_pin :swd_dio
|
18
|
+
|
19
|
+
options[:class_name] = 'OrigenARMDebug::DAP'
|
20
|
+
options[:mem_aps] = {
|
21
|
+
mem_ap: {
|
22
|
+
base_address: 0x00000000,
|
23
|
+
latency: 16,
|
24
|
+
apreg_access_wait: 8,
|
25
|
+
apmem_access_wait: 8,
|
26
|
+
csw_reset: 0x23000040
|
27
|
+
},
|
28
|
+
mdm_ap: 0x01000000
|
29
|
+
}
|
30
|
+
# Specify (customize) ARM Debug implementation details
|
31
|
+
sub_block :arm_debug, options
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/pattern/workout.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
|
1
|
+
if Origen.app.target.name == 'dual_dp'
|
2
|
+
pattern_name = 'workout_dual_dp'
|
3
|
+
else
|
4
|
+
pattern_name = "workout_#{dut.arm_debug.dp.name}"
|
5
|
+
end
|
6
|
+
|
7
|
+
Pattern.create name: pattern_name do
|
2
8
|
|
3
9
|
ss "Tests of direct DP API"
|
4
10
|
dp = dut.arm_debug.dp
|
@@ -58,4 +64,52 @@ Pattern.create name: "workout_#{dut.arm_debug.dp.name}" do
|
|
58
64
|
dut.reg(:test).data = 0x0000FF01
|
59
65
|
dut.reg(:test)[0].read!
|
60
66
|
|
67
|
+
if Origen.app.target.name == 'dual_dp'
|
68
|
+
ss "SWITCHING DP"
|
69
|
+
dut.arm_debug.set_dp(:jtag)
|
70
|
+
|
71
|
+
ss "Test write register, should write value 0xFF01"
|
72
|
+
dut.reg(:test).write!(0x0000FF01)
|
73
|
+
|
74
|
+
ss "Test write register with overlay, no subroutine"
|
75
|
+
dut.reg(:test).overlay('write_overlay')
|
76
|
+
dut.reg(:test).write!(0x0000FF01, no_subr: true)
|
77
|
+
dut.reg(:test).overlay(nil)
|
78
|
+
|
79
|
+
ss "Test write register with overlay, use subroutine if available"
|
80
|
+
dut.reg(:test).overlay('write_overlay_subr')
|
81
|
+
dut.reg(:test).write!(0x0000FF01)
|
82
|
+
dut.reg(:test).overlay(nil)
|
83
|
+
|
84
|
+
ss "Test read register, should read value 0x0000FF01"
|
85
|
+
dut.reg(:test).read!
|
86
|
+
|
87
|
+
ss "Test read register, with overlay, no subroutine, should read value 0x0000FF01"
|
88
|
+
dut.reg(:test).overlay('read_overlay')
|
89
|
+
dut.reg(:test).read!(no_subr: true)
|
90
|
+
dut.reg(:test).overlay(nil)
|
91
|
+
|
92
|
+
ss "Test read register, with overlay, use subroutine if available"
|
93
|
+
dut.reg(:test).overlay('read_overlay_subr')
|
94
|
+
dut.reg(:test).read!
|
95
|
+
dut.reg(:test).overlay(nil)
|
96
|
+
|
97
|
+
ss "Test read register with mask, should read value 0xXXXxxx1"
|
98
|
+
dut.reg(:test).read!(mask: 0x0000_000F)
|
99
|
+
|
100
|
+
ss "Test read register with store"
|
101
|
+
dut.reg(:test).store!
|
102
|
+
|
103
|
+
ss "Test bit level read, should read value 0xXXXxxx1"
|
104
|
+
dut.reg(:test).reset
|
105
|
+
dut.reg(:test).data = 0x0000FF01
|
106
|
+
dut.reg(:test)[0].read!
|
107
|
+
|
108
|
+
ss "RESETTING DP (to default)"
|
109
|
+
dut.arm_debug.reset_dp
|
110
|
+
ss "Test bit level read, should read value 0xXXXxxx1"
|
111
|
+
dut.reg(:test).reset
|
112
|
+
dut.reg(:test).data = 0x0000FF01
|
113
|
+
dut.reg(:test)[0].read!
|
114
|
+
end
|
61
115
|
end
|
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: 1.1.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ronnie Lajaunie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- lib/origen_arm_debug/sw_dp.rb
|
98
98
|
- lib/origen_arm_debug/sw_dp_controller.rb
|
99
99
|
- lib/origen_arm_debug_dev/dut.rb
|
100
|
+
- lib/origen_arm_debug_dev/dut_dual_dp.rb
|
100
101
|
- lib/origen_arm_debug_dev/dut_jtag.rb
|
101
102
|
- lib/origen_arm_debug_dev/dut_swd.rb
|
102
103
|
- pattern/workout.rb
|