Skip to content

Commit

Permalink
Add gprobe:// flash commands ##io
Browse files Browse the repository at this point in the history
  • Loading branch information
eibach authored and trufae committed Nov 7, 2023
1 parent 8edc9fa commit 40daf86
Show file tree
Hide file tree
Showing 3 changed files with 389 additions and 3 deletions.
24 changes: 22 additions & 2 deletions doc/gprobe.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
What is GProbe?
===============
GProbe is a protocol to communicate with various parts from
Genesis/STMicro/MegaChips that are mostly used in video chipsets.
Genesis/STMicro/MegaChips/Kinetic Technologies that are mostly used in video chipsets.

These chips have an integrated Turbo186 core. With GProbe you can read and write
RAM, reset the CPU, execute code in RAM, ...
Expand All @@ -21,11 +21,12 @@ What is implemented?
- RunCode
- GetDeviceId
- GetInformation
- Flash commands
- Listen command to dump Print-messages from the chip

TODOs
-----
- DisplayPort AUX Channel protocol wrapper
- Flash commands

What is tested?
---------------
Expand All @@ -35,6 +36,7 @@ What is tested?
- communication via DDC2Bi3
- controlling a MegaChips RD1-4320 DisplayPort 1.2a splitter reference board
- controlling a DELL U2410 connected via DVI
- flashing a STDP2600 with RC3.3 firmware on MNT RHDP board(mntre.com)

How to use for dummies?
-----------------------
Expand All @@ -58,3 +60,21 @@ Now enjoy all the great stuff that r2 offers, like:
- Visual mode with V, including cursor mode and insert hexpairs
- dumping segments to file
- disassembly and analysis

How to flash?
-------------
To flash you need three things:
- a flasher program that gets uploaded to the chip
- since it as a hexfile with multiple sections, you can convert it to .rapatch with hex2rapatch.py
- alternatively you can use ihex://, list the sections in json with :j and write them to gprobe:// using a script
- a binary firmware blob that gets flashed
- parameters (probably supplied in the gprobe script that comes with the firmware):
- load and start address for flasher program (0x1800 in the example)
- Maximum chunksize for flashing (0x200 in the example)
- flash address for binary blob (0x40000 in the example)

- :reset 0
- wp isp.rapatch
- :runcode 0x1800
- :flasherase 0xffff
- :flashwrite 0x200 0x400000 STDP2600_HDMI2DP_STD_RC3_3.bin
Loading

0 comments on commit 40daf86

Please sign in to comment.