STLink: read16 exception in gdb_test
Open
Nobody has claimed this yet.
backlog
bug
- Dominant language
- Python
- Stars
- 1.5k
- Forks
- 560
- Avg merge
- 1h 41m
- Merged PRs (30d)
- 3
Description
"integer out of range for 'I' format code" exception reported while running gdb_test.py. This was found in the test log attached to #480. Seems to be specific to 16-bit reads?
Traceback (most recent call last):
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\gdbserver\gdbserver.py", line 537, in handle_message
reply = handler(msg[msgStart:])
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\gdbserver\gdbserver.py", line 886, in get_memory
mem = self.target_context.read_memory_block8(addr, length)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\debug\cache.py", line 512, in read_memory_block8
return self._memcache.read_memory_block8(addr, size)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\debug\cache.py", line 433, in read_memory_block8
return self._context.read_memory_block8(addr, size)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\debug\context.py", line 53, in read_memory_block8
return self._core.read_memory_block8(addr, size)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\coresight\cortex_m.py", line 566, in read_memory_block8
data = self.ap.read_memory_block8(addr, size)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\core\memory_interface.py", line 94, in read_memory_block8
mem = self.read16(addr)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\core\memory_interface.py", line 60, in read16
return self.read_memory(addr, 16, now)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\probe\stlink_probe.py", line 251, in read_memory
result = conversion.byte_list_to_u16le_list(self._link.read_mem16(addr, 2, self._apsel))[0]
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\probe\stlink\stlink.py", line 284, in read_mem16
return self._read_mem(addr, size, Commands.JTAG_READMEM_16BIT, self.MAXIMUM_TRANSFER_SIZE, apsel)
File "C:\Users\Kwinten\Documents\New folder\pyOCD\pyocd\probe\stlink\stlink.py", line 222, in _read_mem
cmd.extend(six.iterbytes(struct.pack('<IHB', addr, thisTransferSize, apsel)))
error: integer out of range for 'I' format code
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in pyocd/probe/stlink/stlink.py at _read_mem, especially the struct.pack call shown in the traceback, and trace the 16-bit read path from pyocd/core/memory_interface.py. Run gdb_test.py with the STLink setup that reproduces the report. Done means 16-bit reads no longer raise the integer-range exception.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools, embedded-iot
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100