-
-
Save four0four/680e1fa70e7c216baac2afbd459d03d8 to your computer and use it in GitHub Desktop.
source [find cpu/arc/arcompact.tcl] | |
source [find cpu/arc/em.tcl] | |
set _CHIPNAME arc600 | |
set _TARGETNAME $_CHIPNAME.cpu | |
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -expected-id 0x200024b1 | |
target create $_TARGETNAME arc600 -chain-position $_TARGETNAME | |
arc jtag wait-until-write-finished on | |
$_TARGETNAME configure -event reset-assert "arc_arcompact_reset $_TARGETNAME" | |
arc_arcompact_init_regs |
@piernov
Pretty cool! Glad that you figured it out.
My thinkpad still has UUID and machine ID emptied after the reflash, so maybe I'll return to that project some day...
Having OpenOCD as an alternative to closed-source "repair" programmers would definitely benefit some folks out there...
@dossalab
"I managed to program thit chip using just FT2232H JTAG and some python code to take binary and send it to the controller. "
Would you mind sharing that python code please?
@dossalab "I managed to program thit chip using just FT2232H JTAG and some python code to take binary and send it to the controller. " Would you mind sharing that python code please?
I found something, even though it's most likely an initial version. It connects through telnet to a running OpenOCD instance and sends direct reads and writes and talks to the controller... I've given you access in private but if it works fine I'll happily disclose it for the public.
You'll need the correct openocd script with the fix I mentioned before.
The way to go would be to write the 'correct' driver for OpenOCD. May be that's the time....
@dossalab thanks for your answer. In fact, I managed to do what I want.
I was just not properly initializing the Flash controller after reset. (took a look at the Glasgow implementation to get a hint)
In my case I wanted to put a Dell board in manufacturing mode, so I erased the pages at address 0x47000 and 0x47800, with the following OpenOCD commands:
Warning: do not run this before making a backup!
Always make a backup before erasing/programming anything, you can dump the memory (with
dump_image
for example) since Flash is mapped at the beginning, just that by default the first 4 kiB are protected but we are not touching these.(sorry for the mix of decimal and hexadecimal)
You need to wait just a little bit between erasing the two pages since the controller is still busy (as indicated by the status register), no too long because the EC will end up resetting after short while when it's halted (there's probably a watchdog somewhere).
Would be nice to have a proper script or Flash driver but this will do for now. For some other purposes I need to program the entire Flash and this will need some more work.