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: 
         |