dlbeer / mspdebug

Debugging tool for MSP430 MCUs
GNU General Public License v2.0
184 stars 80 forks source link

Can't program MSP430F2274 - Could not write device memory (error = 7) #128

Closed DanielO closed 1 year ago

DanielO commented 1 year ago

Hi, I'm trying to use mspdebug 0.25 on FreeBSD (via the ports tree) with tilib (also ports - msp430-debug-stack-3.15.1.1_4) however I find the dongle seems to get into an odd state part way through programming.

Once it is in this state all accesses fail (reads and writes).

I have used this hardware with mspdebug on macOS (although there I used the Ti build libmsp430 from CCstudio 9). I think that is version v3.15.0.0 rather than v3.15.0.1 like here.

I doubt it's really an mpsdebug issue per se but not sure how to debug it.

[patest 5:18] ~> mspdebug tilib
MSPDebug version 0.25 - debugging tool for MSP430 MCUs
Copyright (C) 2009-2017 Daniel Beer <dlbeer@gmail.com>
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Chip info database from MSP430.dll v3.15.0.1 Copyright (C) 2013 TI, Inc.

Using new (SLAC460L+) API
MSP430_GetNumberOfUsbIfs
MSP430_GetNameOfUsbIf
Found FET: mspfet0014
MSP430_Initialize: mspfet0014
Firmware version is 31501001
MSP430_VCC: 3000 mV
MSP430_OpenDevice
MSP430_GetFoundDevice
Device: MSP430F2274 (id = 0x001c)
2 breakpoints available
MSP430_EEM_Init
Chip ID data:
  ver_id:         27f2
  ver_sub_id:     0000
  revision:       60
  fab:            40
  self:           0000
  config:         04
  fuses:          00
Device: MSP430F2274

Available commands:
    !               fill            power           setwatch_r
    =               gdb             prog            setwatch_w
    alias           help            read            simio
    blow_jtag_fuse  hexout          regs            step
    break           isearch         reset           sym
    cgraph          load            run             verify
    delbreak        load_raw        save_raw        verify_raw
    dis             md              set
    erase           mw              setbreak
    exit            opt             setwatch

Available options:
    color                       gdb_loop
    enable_bsl_access           gdbc_xfer_size
    enable_fuse_blow            iradix
    enable_locked_flash_access  lowercase_dis
    fet_block_size              quiet
    gdb_default_port

Type "help <topic>" for more information.
Use the "opt" command ("help opt") to set options.
Press Ctrl+D to quit.

(mspdebug) gdb
Bound to port 2000. Now waiting for connection...
Client connected from 127.0.0.1:11472
Clearing all breakpoints...
Reading registers
Monitor command received: erase
Erasing...
Monitor command received: erase segment 0x1080
Erasing...
(mspdebug) gdb
Bound to port 2000. Now waiting for connection...
Client connected from 127.0.0.1:24370
Clearing all breakpoints...
Reading registers
Monitor command received: erase
Erasing...
Monitor command received: erase segment 0x1080
Erasing...
Writing   16 bytes to 0x1080
Writing 3820 bytes to 0x8000
Writing   54 bytes to 0x8eec
Writing 8176 bytes to 0x9000
Writing 8176 bytes to 0xaff0
tilib: MSP430_Memory: Could not write device memory (error = 7)
Writing   16 bytes to 0x1080
tilib: MSP430_Memory: Could not write device memory (error = 7)
Monitor command received: erase
Erasing...
Reading    1 bytes from 0x1080
tilib: MSP430_Memory: Could not read device memory (error = 6)
Reading    1 bytes from 0x1080
tilib: MSP430_Memory: Could not read device memory (error = 6)
Reading    1 bytes from 0x8000
tilib: MSP430_Memory: Could not read device memory (error = 6)
Reading    4 bytes from 0x8000
tilib: MSP430_Memory: Could not read device memory (error = 6)
^Cgdb: recv: Interrupted system call
DanielO commented 1 year ago

I went to have another look at this today and it magically started working 🙄 Sorry for the noise.