ftdi_transfer: add manual page
This commit is contained in:
parent
9933d945bf
commit
ee695dab8c
200
tools/ftdi_transfer.1
Normal file
200
tools/ftdi_transfer.1
Normal file
@ -0,0 +1,200 @@
|
||||
.TH ftdi_transfer 1 "19 Nov 2024" "ftdi_transfer" "Manual"
|
||||
.SH "NAME"
|
||||
ftdi_transfer \- Dreamcast data transfer for FTDI chips
|
||||
.SH "SYNOPSIS"
|
||||
.sp
|
||||
.ad l
|
||||
.in +8
|
||||
.ti -8
|
||||
.B ftdi_transfer
|
||||
.RI "[ " COMMAND ... "" " ] "
|
||||
|
||||
.ti -8
|
||||
.sp
|
||||
.IR COMMAND " := { "
|
||||
.sp
|
||||
.ti -4
|
||||
.B read
|
||||
.IR SRC_ADDR
|
||||
.IR READ_SIZE
|
||||
.IR FILENAME
|
||||
.sp
|
||||
.ti -4
|
||||
.B write
|
||||
.IR DEST_ADDR
|
||||
.IR FILENAME
|
||||
.sp
|
||||
|
||||
.ti -4
|
||||
.B jump
|
||||
.IR JUMP_ADDR
|
||||
.sp
|
||||
|
||||
.ti -4
|
||||
.B speed
|
||||
.IR SCBRR
|
||||
.sp
|
||||
|
||||
.ti -4
|
||||
.B console
|
||||
.sp
|
||||
|
||||
.ti -4
|
||||
.B maple_storage_dump
|
||||
.sp
|
||||
|
||||
.ti -8
|
||||
.IR "" " }"
|
||||
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.SS Terminology
|
||||
|
||||
.BR host :
|
||||
The computer that is directly executing the
|
||||
.B ftdi_transfer
|
||||
command-line application.
|
||||
|
||||
.BR target :
|
||||
The computer that is responding to commands generated by
|
||||
.BR ftdi_transfer
|
||||
(typically a Sega Dreamcast).
|
||||
|
||||
.SS COMMAND behavior
|
||||
|
||||
Prior to processing any
|
||||
.IR COMMAND ","
|
||||
.B ftdi_transfer
|
||||
first signals a state machine reset by sending UART break signal. When the
|
||||
receiving program running on the Dreamcast observes a UART break signal, the SH4
|
||||
SCIF is also reset. This reset sequence also prematurely terminates any
|
||||
commands that were in progress from the perspective of the Dreamcast.
|
||||
|
||||
.B ftdi_transfer
|
||||
processes the
|
||||
.IR COMMAND
|
||||
list in order from left to right. This ability to process multiple commands is
|
||||
intended both as a convenience, and to allow for "scripted" interactions with
|
||||
the Dreamcast to be executed more quickly.
|
||||
|
||||
For example, a single
|
||||
.B ftdi_transfer
|
||||
invocation could perform all of these actions in sequence:
|
||||
|
||||
.TS
|
||||
tab (@);
|
||||
l lx.
|
||||
-@T{
|
||||
copy a newly-compiled test program that manipulates Holly / Texture Memory state in some interesting way
|
||||
T}
|
||||
-@T{
|
||||
execute the test program (eventually returning from `main`)
|
||||
T}
|
||||
-@T{
|
||||
dump the entire content of Texture Memory to a file
|
||||
T}
|
||||
-@T{
|
||||
dump the values of all Holly registers to a file
|
||||
T}
|
||||
.TE
|
||||
|
||||
Such a sequence would be useful in combination with a CORE emulator, such as
|
||||
skmp's "refsw".
|
||||
|
||||
.SH "COMMANDS"
|
||||
.B read
|
||||
.I SRC_ADDR
|
||||
.I READ_SIZE
|
||||
.I FILENAME
|
||||
.sp
|
||||
.in +4
|
||||
Copy
|
||||
.IR READ_SIZE
|
||||
bytes of
|
||||
.B target
|
||||
memory starting at address
|
||||
.I SRC_ADDR
|
||||
on the
|
||||
.BR target
|
||||
to
|
||||
.I FILENAME
|
||||
on the
|
||||
.BR host .
|
||||
|
||||
.in -4
|
||||
.B write
|
||||
.I DEST_ADDR
|
||||
.I FILENAME
|
||||
.sp
|
||||
.in +4
|
||||
Copy the content of
|
||||
.I FILENAME
|
||||
from the
|
||||
.B host
|
||||
to
|
||||
.I DEST_ADDR
|
||||
on the
|
||||
.BR target .
|
||||
The number of bytes copied to
|
||||
.B target
|
||||
memory is equal to the size of
|
||||
.IR FILENAME .
|
||||
|
||||
.in -4
|
||||
.B jump
|
||||
.I JUMP_ADDR
|
||||
.sp
|
||||
.in +4
|
||||
Set the
|
||||
.B target
|
||||
program counter to JUMP_ADDR using the SH4 `jsr` instruction. If desired, the
|
||||
code may return to the serial transfer program with `rts` when execution is
|
||||
finished.
|
||||
|
||||
.in -4
|
||||
.B speed
|
||||
.I SCBRR
|
||||
.in +4
|
||||
Set the value of the SCIF SCBRR2 register on the
|
||||
.B target
|
||||
to
|
||||
.IR SCBRR .
|
||||
If specified,
|
||||
.B speed
|
||||
should be the last command in the sequence given to
|
||||
.BR ftdi_transfer .
|
||||
This command has reliability issues, and changing serial speeds is not
|
||||
recommended nor generally necessary.
|
||||
|
||||
.in -4
|
||||
.B console
|
||||
.in +4
|
||||
Continuously copy all bytes received from the
|
||||
.B target
|
||||
to the terminal emulator that
|
||||
.B ftdi_transfer
|
||||
is connected to. This is useful for "printf" debugging of the
|
||||
.B target
|
||||
program.
|
||||
|
||||
.in -4
|
||||
.B maple_storage_dump
|
||||
.in +4
|
||||
Copy the raw content of all Maple storage devices on the
|
||||
.B target
|
||||
to files on the
|
||||
.BR host .
|
||||
|
||||
.SH EXAMPLES
|
||||
|
||||
Copy and execute a program from the
|
||||
.B host
|
||||
on the
|
||||
.BR target :
|
||||
.P
|
||||
.EX
|
||||
./ftdi_transfer \\
|
||||
write 0xac010000 program.bin \\
|
||||
jump 0xac010000 \\
|
||||
console
|
||||
.EE
|
Loading…
x
Reference in New Issue
Block a user