origen_arm_debug 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|