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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e80b1afc8a982d2a7ec2041ad61d4f4eedb011abc09a4931d669747c7dc3230c
4
- data.tar.gz: 9e4712df2359e3c55674282f9c0ac0169d47e9e7138a59e4a66773d1b087b223
3
+ metadata.gz: 8129ae2a9371cfed96eeddab0b431b7fabea04648fe690a8e5b71232fa34cb89
4
+ data.tar.gz: d605f5cf618b53f2eff53ed0af3eab442d6bfe0a4292abd37895e51ddd1436bc
5
5
  SHA512:
6
- metadata.gz: e3b956766978d89be7ebdeba678195ae916542f1c3b861bc35ec224966f02aea2b3fc4ec3bff87d0809f288a355b745a1334a957c710040a595265e11d4574e6
7
- data.tar.gz: 1607a271f01f25ab358205b51bfd9d0837c413041f2c2b57a5f43f8282ccba417d90eb24d32b02b4863343dc41707b155549ea6c54c9d7d370fdde04f67aaaef
6
+ metadata.gz: 4cfc2498bad1094ec2e3fc39bceb5f8c0d72fb8f984f98f5934d6fcd4d78db4facaac0e1784f252e5cd301d0faaf9a1b1bfbedab41ba1d1cbc66a0cada20c94c
7
+ data.tar.gz: 2642fa31000ef162330132b2acd1ba1ffd2ac75639b96201b31c9800204c7712376bbcfed4ab11039e2577248d040201c68d419b12c032658e34bfe78fe1c41c
data/config/boot.rb CHANGED
@@ -3,3 +3,4 @@ require "origen_arm_debug"
3
3
  require "origen_arm_debug_dev/dut"
4
4
  require "origen_arm_debug_dev/dut_jtag"
5
5
  require "origen_arm_debug_dev/dut_swd"
6
+ require "origen_arm_debug_dev/dut_dual_dp"
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
- # when "specs"
21
- # require "rspec"
22
- # exit RSpec::Core::Runner.run(['spec'])
20
+ when "specs"
21
+ require "rspec"
22
+ exit RSpec::Core::Runner.run(['spec'])
23
23
 
24
- when "examples" # , "test"
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
- # if @command == "test"
48
- # Origen.app.unload_target!
49
- # require "rspec"
50
- # result = RSpec::Core::Runner.run(['spec'])
51
- # status = status == 1 ? 1 : result
52
- # end
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
@@ -1,8 +1,7 @@
1
1
  module OrigenARMDebug
2
2
  MAJOR = 1
3
3
  MINOR = 1
4
- BUGFIX = 3
4
+ BUGFIX = 4
5
5
  DEV = nil
6
-
7
6
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
8
7
  end
@@ -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
@@ -65,5 +65,14 @@ module OrigenARMDebug
65
65
  def abort
66
66
  reg(:abort)
67
67
  end
68
+
69
+ def is_jtag?
70
+ true
71
+ end
72
+
73
+ def is_swd?
74
+ false
75
+ end
76
+ alias_method :is_sw?, :is_swd?
68
77
  end
69
78
  end
@@ -60,5 +60,14 @@ module OrigenARMDebug
60
60
  def abort
61
61
  reg(:abort)
62
62
  end
63
+
64
+ def is_jtag?
65
+ false
66
+ end
67
+
68
+ def is_swd?
69
+ true
70
+ end
71
+ alias_method :is_sw?, :is_swd?
63
72
  end
64
73
  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
- Pattern.create name: "workout_#{dut.arm_debug.dp.name}" do
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.3
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: 2019-01-21 00:00:00.000000000 Z
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