pyocd / pyOCD

Open source Python library for programming and debugging Arm Cortex-M microcontrollers
https://pyocd.io
Apache License 2.0
1.11k stars 477 forks source link

issue flashing lpc1768 #802

Closed djj198 closed 4 years ago

djj198 commented 4 years ago

Hi I'm having an issue flashing a .elf to my lpc1768 using pyocd v0.24.1 here is the error: 0084306:ERROR:gdbserver:Unhandled exception in handle_message: type object 'Target' has no attribute 'CATCH_CORE_RESET' Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/gdbserver/gdbserver.py", line 379, in handle_message reply = handler(msg[msgStart:]) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/gdbserver/gdbserver.py", line 598, in v_command return self.flash_op(data) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/gdbserver/gdbserver.py", line 714, in flash_op self.flash_loader.commit() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/flash/loader.py", line 164, in commit perf = builder.program(chip_erase=chipErase, File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/flash/builder.py", line 417, in program self._build_sectors_and_pages(keep_unwritten) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/flash/builder.py", line 297, in _build_sectors_and_pages self._enable_read_access() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/flash/builder.py", line 221, in _enable_read_access self.flash.init(self.flash.Operation.VERIFY) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/flash/flash.py", line 235, in init self.target.reset_and_halt(Target.ResetType.SW) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/core/coresight_target.py", line 387, in reset_and_halt return self.selected_core.reset_and_halt(reset_type) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/coresight/cortex_m.py", line 952, in reset_and_halt self.set_reset_catch(reset_type) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/coresight/cortex_m.py", line 925, in set_reset_catch self._reset_catch_delegate_result = self.call_delegate('set_reset_catch', core=self, reset_type=reset_type) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/core/target.py", line 205, in call_delegate return getattr(self._delegate, method_name)(*args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pyocd/target/builtin/target_LPC1768.py", line 106, in set_reset_catch self.set_vector_catch(self._saved_vc & ~Target.CATCH_CORE_RESET) AttributeError: type object 'Target' has no attribute 'CATCH_CORE_RESET'

it seems CATCH_CORE_RESET is missing a value, know anything about this?

When I use version 0.23.0 I don't have an error flashing, but have an error on using monitor reset.

Thanks

danielRep commented 4 years ago

Hi,

I am experience a similar issue with a Musca B1 board. I detect three different behaviours which probably can be related with the same issue that @djj198 reported. One, the gdbserver is initiated and pyocd is connect but the flashing operation doesn't start (it seems stuck), with the DAP LED blinking indefinetly. Second, the debug process passes all stages (w/o any outputted error) but the core seems to be in a wrong state. Third, the pyocd effectively outputs the following error, which is quite similar to @djj198 post.

My openocd version is 0.24.1-dev15.

0001283:INFO:gdbserver:GDB server started on port 3333
Started by GNU MCU Eclipse
0001289:INFO:server:Semihost server started on port 4445
0001290:INFO:gdbserver:GDB server started on port 3334
Started by GNU MCU Eclipse
0002328:INFO:gdbserver:One client connected!
0004534:ERROR:gdbserver:Unhandled exception in handle_message: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/gdbserver/gdbserver.py", line 379, in handle_message
    reply = handler(msg[msgStart:])
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/gdbserver/gdbserver.py", line 887, in handle_query
    return self.handle_remote_command(cmd)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/gdbserver/gdbserver.py", line 1009, in handle_remote_command
    self.target.reset_and_halt()
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 966, in reset_and_halt
    xpsr = self.read_core_register('xpsr')
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 1033, in read_core_register
    regValue = self.read_core_register_raw(regIndex)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 1047, in read_core_register_raw
    vals = self.read_core_registers_raw([reg])
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 1107, in read_core_registers_raw
    assert dhcsr_val & CortexM.S_REGRDY
AssertionError
0004546:INFO:gdbserver:Attempting to load Argon
0004547:INFO:gdbserver:Attempting to load FreeRTOS
0004548:INFO:gdbserver:Attempting to load Zephyr
0004549:INFO:gdbserver:Attempting to load RTX5
0006579:ERROR:gdbserver:Unhandled exception in handle_message: 
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/gdbserver/gdbserver.py", line 379, in handle_message
    reply = handler(msg[msgStart:])
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/gdbserver/gdbserver.py", line 598, in v_command
    return self.flash_op(data)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/gdbserver/gdbserver.py", line 714, in flash_op
    self.flash_loader.commit()
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/flash/loader.py", line 168, in commit
    keep_unwritten=self._keep_unwritten)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/flash/builder.py", line 417, in program
    self._build_sectors_and_pages(keep_unwritten)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/flash/builder.py", line 315, in _build_sectors_and_pages
    fill_end_of_page_gap()
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/flash/builder.py", line 259, in fill_end_of_page_gap
    self._enable_read_access()
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/flash/builder.py", line 221, in _enable_read_access
    self.flash.init(self.flash.Operation.VERIFY)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/flash/flash.py", line 235, in init
    self.target.reset_and_halt(Target.ResetType.SW)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/core/coresight_target.py", line 387, in reset_and_halt
    return self.selected_core.reset_and_halt(reset_type)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 966, in reset_and_halt
    xpsr = self.read_core_register('xpsr')
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 1033, in read_core_register
    regValue = self.read_core_register_raw(regIndex)
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 1047, in read_core_register_raw
    vals = self.read_core_registers_raw([reg])
  File "/usr/local/lib/python3.6/dist-packages/pyocd-0.24.1.dev15-py3.6.egg/pyocd/coresight/cortex_m.py", line 1107, in read_core_registers_raw
    assert dhcsr_val & CortexM.S_REGRDY
AssertionError
0006605:INFO:gdbserver:Client detached
0006606:INFO:gdbserver:Client disconnected!
Started by GNU MCU Eclipse

EDIT: I would mention that the DAPLink firmware is version 0242. EDIT2: FYI @flit, the board seems to work properly with older version 0.21.0 EDIT3: @flit after some investigation I can confirm that the commit with id b49611b, which supposedly enables the software reset feature has broken the use of pyocd with the MUSCA B1 board. At least is what I experienced. I just jumped to the release v0.24.0 and removed that code segment, and everything went well again (on v0.24.1 that workaround didn't work).

flit commented 4 years ago

The LPC1768 bug is fixed by #821, and was regression after renaming CATCH_CORE_RESET.

@danielRep The Musca-B1 issue is quite different. I've copied your report to new issue #841.

flit commented 4 years ago

Merged #821, so should be fixed on master.