origen_debuggers 0.5.1 → 0.5.2
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 +1 -1
- data/lib/origen_debuggers/j_link.rb +61 -5
- data/pattern/_workout.rb +28 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3953a38f824c2c77649cf0059f8176f646396847
|
4
|
+
data.tar.gz: dbf6a2c4c0a22d7aff1ad56468e914216aa5ff65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f18be4760f48bc01f20eb6612a84ddd1cef548e47b9542a5e92558027b622cac8e1c74cba855995520028fe87ec590e71b87f34d16ae3ed2478d9d115643963b
|
7
|
+
data.tar.gz: 155582f087d66bd897e38b211f285ce03537f497e805ecab57fd94079b31181c59891ce7ed6428d69833589e6364f64fe0cde714e1a79785d488002c9064951b
|
data/config/version.rb
CHANGED
@@ -226,21 +226,47 @@ module OrigenDebuggers
|
|
226
226
|
|
227
227
|
# Read 8 bits of data to the given byte address
|
228
228
|
def read8(data, options = {})
|
229
|
-
read_memory(extract_address(data, options),
|
229
|
+
read_memory(extract_address(data, options), number: 1)
|
230
230
|
end
|
231
231
|
alias_method :read_byte, :read8
|
232
232
|
alias_method :read_8, :read8
|
233
233
|
|
234
234
|
# Read 16 bits of data to the given byte address
|
235
235
|
def read16(data, options = {})
|
236
|
-
read_memory(extract_address(data, options),
|
236
|
+
read_memory(extract_address(data, options), number: 2)
|
237
237
|
end
|
238
238
|
alias_method :read_word, :read16
|
239
239
|
alias_method :read_16, :read16
|
240
240
|
|
241
241
|
# Read 32 bits of data to the given byte address
|
242
|
+
#
|
243
|
+
# data can be array of registers, if array of data then will auto-incrememnt address
|
242
244
|
def read32(data, options = {})
|
243
|
-
|
245
|
+
options = { optimize: false, # whether to use a single command to do the read
|
246
|
+
# user may care regarding endianness
|
247
|
+
size: 32, # size of each item in bits
|
248
|
+
number: 1, # default number of items
|
249
|
+
}.merge(options)
|
250
|
+
options[:optimize] = options[:optimized] if options[:optimized]
|
251
|
+
|
252
|
+
if data.is_a?(Array)
|
253
|
+
if options[:optimize]
|
254
|
+
# for optimized option assume single starting address for data in array
|
255
|
+
read_memory(extract_address(data, options), size: options[:size], number: data.length)
|
256
|
+
else
|
257
|
+
data.each_index do |i|
|
258
|
+
data_item = data[i]
|
259
|
+
# do separate writes for each 32-bit word
|
260
|
+
read_memory(extract_address(data_item, options) + i * (options[:size] / 8), size: options[:size])
|
261
|
+
end
|
262
|
+
end
|
263
|
+
else
|
264
|
+
if options[:optimize]
|
265
|
+
read_memory(extract_address(data, options), size: options[:size], number: options[:number])
|
266
|
+
else
|
267
|
+
read_memory(extract_address(data, options), number: (options[:size] / 8))
|
268
|
+
end
|
269
|
+
end
|
244
270
|
end
|
245
271
|
alias_method :read_longword, :read32
|
246
272
|
alias_method :read_32, :read32
|
@@ -341,11 +367,41 @@ module OrigenDebuggers
|
|
341
367
|
|
342
368
|
# Other methods can expose unique features of a given debugger
|
343
369
|
module Custom
|
370
|
+
def set_interface(interface)
|
371
|
+
# set interface and reset
|
372
|
+
value = interface == :swd ? 1 : 0 # set interface : JTAG=0, SWD=1
|
373
|
+
dw "si #{value}"
|
374
|
+
# pull a reset now
|
375
|
+
dw 'RSetType 2' # reset via reset pin which should be same as manual reset pin
|
376
|
+
# toggle. Also forces CPU to halt when it comes out of reset
|
377
|
+
dw 'r' # reset and halts the device (prob not needed)
|
378
|
+
dw 'halt' # halt core just in case
|
379
|
+
end
|
380
|
+
|
381
|
+
def halt
|
382
|
+
dw 'halt'
|
383
|
+
end
|
384
|
+
|
385
|
+
def quit
|
386
|
+
dw 'q'
|
387
|
+
end
|
388
|
+
|
344
389
|
def read_memory(address, options = {})
|
345
390
|
options = {
|
346
|
-
|
391
|
+
number: 1, # number of items to read
|
392
|
+
size: 8 # number of bits in each item
|
347
393
|
}.merge(options)
|
348
|
-
|
394
|
+
|
395
|
+
if options[:size] == 32
|
396
|
+
dw "mem32 0x#{address.to_s(16).upcase}, #{options[:number].to_hex}"
|
397
|
+
elsif options[:size] == 16
|
398
|
+
dw "mem16 0x#{address.to_s(16).upcase}, #{options[:number].to_hex}"
|
399
|
+
elsif options[:size] == 8
|
400
|
+
dw "mem 0x#{address.to_s(16).upcase}, #{options[:number].to_hex}"
|
401
|
+
# not sure difference between mem and mem8
|
402
|
+
else
|
403
|
+
fail 'You must supply a valid :size option!'
|
404
|
+
end
|
349
405
|
end
|
350
406
|
end
|
351
407
|
include Custom
|
data/pattern/_workout.rb
CHANGED
@@ -34,11 +34,38 @@ ss "Verify write16"
|
|
34
34
|
$tester.write16 0x55AA, :address => 0x12
|
35
35
|
ss "Verify write32"
|
36
36
|
$tester.write32 0x55AA_3344, :address => 0x12
|
37
|
+
|
38
|
+
ss "Verify read8"
|
39
|
+
$tester.read8 0x55, :address => 0x12
|
40
|
+
ss "Verify read16"
|
41
|
+
$tester.read16 0x55AA, :address => 0x12
|
42
|
+
ss "Verify read32"
|
43
|
+
$tester.read32 0x55AA_3344, :address => 0x12
|
44
|
+
ss "Verify read32, optimized"
|
45
|
+
$tester.read32 0x55AA_3344, address: 0x12, optimize:true
|
46
|
+
|
47
|
+
ss "Verify Array of 32-bit data"
|
48
|
+
$tester.read32 [0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF], address: 0x12
|
49
|
+
ss "Verify Array of 32-bit data, optimized"
|
50
|
+
$tester.read32 [0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF], address: 0x12, optimize: true
|
51
|
+
|
37
52
|
ss "Verify write with a register"
|
38
53
|
$tester.write $dut.reg(:reg32)
|
39
54
|
ss "Verify write with a data value"
|
40
55
|
$tester.write 0x55, :address => 0x12, :size => 8
|
41
56
|
ss "Verify read with a register"
|
42
57
|
$tester.read $dut.reg(:reg32)
|
43
|
-
ss "Verify read with a
|
58
|
+
ss "Verify read with a register, optimized"
|
59
|
+
$tester.read $dut.reg(:reg32), optimize: true
|
60
|
+
ss "Verify read with register and following 3 words, optimized"
|
61
|
+
$tester.read $dut.reg(:reg32), number: 4, optimize: true
|
62
|
+
ss "Verify read with an 8-bit data value"
|
44
63
|
$tester.read 0x55, :address => 0x12, :size => 8
|
64
|
+
ss "Verify read with a 16-bit data value"
|
65
|
+
$tester.read 0x5555, :address => 0x12, :size => 16
|
66
|
+
ss "Verify read with a 32-bit data value"
|
67
|
+
$tester.read 0x55555555, :address => 0x12, :size => 32
|
68
|
+
|
69
|
+
|
70
|
+
ss "Verify delay of 10k mS"
|
71
|
+
$tester.delay(10000)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_debuggers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -112,10 +112,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
112
|
version: 1.8.11
|
113
113
|
requirements: []
|
114
114
|
rubyforge_project:
|
115
|
-
rubygems_version: 2.
|
115
|
+
rubygems_version: 2.6.7
|
116
116
|
signing_key:
|
117
117
|
specification_version: 4
|
118
118
|
summary: Provides Origen tester models to drive bench debuggers such as the Segger
|
119
119
|
J-Link.
|
120
120
|
test_files: []
|
121
|
-
has_rdoc:
|