Thank you to the guys at HEGE supporting Badcaps [ HEGE ] [ HEGE DEX Chart ]

Announcement

Collapse
No announcement yet.

Anyone good at using OpenOCD?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Anyone good at using OpenOCD?

    Hello,

    I have an ARM-USB-OCD-H JTAG device and I'm trying to use OpenOCD to read the flash from this old Linksys WPS54G V1 Wireless Print Server. The processor is a Marvel 88W8510. I tried getting a datasheet for it but could only get a two page summary. When I went to contact Marvel for a full datasheet, there was some text that said they couldn't give out any documentation until I had this thing called a non-disclosure agreement and to contact my local authorized seller to get one. I've contacted the one closest to me asking for one. Not really sure what they're for or why I need it to read a datasheet.

    Anyway, the flash chip is a NOR Macronix MX29LV800TTC-70 1MB flash chip. I believe I've successfully created a board.cfg file and a target.cfg file but I'm not sure how to setup the flash stuff. I've read that I need the base address but cannot find this information in the datasheet for the flash. Here are my board.cfg and target.cfg files.

    # linksys-wps54gv1.cfg file
    Code:
    #
    # Linksys WPS54G v1
    #
    # Boards may override chip names, perhaps based on role,
    # but the default should match what the vendor uses
    if { [info exists CHIPNAME] } {
      set _CHIPNAME $CHIPNAME
    } else {
      set _CHIPNAME 88w8510
    }
    
    # ONLY use ENDIAN with targets that can change it.
    if { [info exists ENDIAN] } {
      set _ENDIAN $ENDIAN
    } else {
      set _ENDIAN little
    }
    
    # TAP identifiers may change as chips mature, for example with
    # new revision fields (the "3" here). Pick a good default; you
    # can pass several such identifiers to the "jtag newtap" command.
    if { [info exists CPUTAPID ] } {
      set _CPUTAPID $CPUTAPID
    } else {
      set _CPUTAPID 0x159463d3
    }
    
    source [find target/88w8510.cfg]
    # 88w8510 target .cfg file
    Code:
    telnet_port 4444
    gdb_port 3333
    
    # interface 0
    
    reset_config trst_only
    
    jtag newtap $_CHIPNAME cpu -irlen 4 -expected-id $_CPUTAPID
    
    set _TARGETNAME $_CHIPNAME.cpu
    target create $_TARGETNAME arm9tdmi -chain-position $_TARGETNAME
    
    flash bank MX29LV800 mrvlqspi 0x0 0 0 0 $_TARGETNAME 0x46010000
    I got the reset_config trst_only command from someone elses .cfg file. They had the same processor so I thought it was okay to borrow it. Any idea how I'm supposed to figure out the base address? I tried using the Marvel flash driver but I think maybe I should be using cfi because when I halt the 88w8510 and try auto-probing the flash, it fails horribly.

    This is the error message I get:
    Code:
    #0 : MX29LV800 (mrvlqspi) at 0x00000000, size 0x00000000, buswidth 0, chipwidth 0
     flash info bank_id
    
    Warn : memory read caused data abort (address: 0x46010004, size: 0x4, count: 0x1)
    Error: auto_probe failed
    
    {name mrvlqspi base 0 size 0 bus_width 0 chip_width 0}
    Any suggestions? Thank you!
    -- Law of Expanding Memory: Applications Will Also Expand Until RAM Is Full
Working...
X