initial
This commit is contained in:
commit
9310fe6abc
112
benchmark.txt
Normal file
112
benchmark.txt
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
64K
|
||||||
|
|
||||||
|
bilbo@localhost ~ $ dd if=/dev/random of=random bs=64K count=1
|
||||||
|
1+0 records in
|
||||||
|
1+0 records out
|
||||||
|
65536 bytes (66 kB, 64 KiB) copied, 0.000637442 s, 103 MB/s
|
||||||
|
for i in `seq 1 10`; do ./tools/ftdi_transfer write 0xac010000 random |& grep -E 'measured|crc'; done
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.426 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
remote crc: 2af6d258; local crc 2af6d258
|
||||||
|
measured write time : 0.425 seconds
|
||||||
|
|
||||||
|
1MB
|
||||||
|
|
||||||
|
dd if=/dev/random of=random bs=1M count=1
|
||||||
|
1+0 records in
|
||||||
|
1+0 records out
|
||||||
|
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00464291 s, 226 MB/s
|
||||||
|
for i in `seq 1 10`; do ./tools/ftdi_transfer write 0xac010000 random |& grep -E 'measured|crc'; done
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.666 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.666 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.663 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.667 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.667 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.667 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.665 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.667 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.664 seconds
|
||||||
|
remote crc: de34b971; local crc de34b971
|
||||||
|
measured write time : 6.666 seconds
|
||||||
|
|
||||||
|
8MB:
|
||||||
|
|
||||||
|
dd if=/dev/random of=random bs=8M count=1
|
||||||
|
1+0 records in
|
||||||
|
1+0 records out
|
||||||
|
8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.0240846 s, 348 MB/s
|
||||||
|
for i in `seq 1 10`; do ./tools/ftdi_transfer write 0xac010000 random |& grep -E 'measured|crc'; done
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.247 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.271 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.245 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.242 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.242 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.251 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.271 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.245 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.242 seconds
|
||||||
|
remote crc: 1c92e87c; local crc 1c92e87c
|
||||||
|
measured write time : 53.270 seconds
|
||||||
|
|
||||||
|
15MB:
|
||||||
|
|
||||||
|
dd if=/dev/random of=random bs=15M count=1
|
||||||
|
1+0 records in
|
||||||
|
1+0 records out
|
||||||
|
15728640 bytes (16 MB, 15 MiB) copied, 0.0500857 s, 314 MB/s
|
||||||
|
for i in `seq 1 10`; do ./tools/ftdi_transfer write 0xac010000 random |& grep -E 'measured|crc'; done
|
||||||
|
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.868 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.868 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.870 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.865 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.822 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.869 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.819 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.821 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.871 seconds
|
||||||
|
remote crc: 55797d82; local crc 55797d82
|
||||||
|
measured write time : 99.866 seconds
|
1
ftdi_transfer_readme.txt
Normal file
1
ftdi_transfer_readme.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
- windows drivers / d2xx / vcp
|
41
prototype-differences.txt
Normal file
41
prototype-differences.txt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
This is a pre-production prototype. It does not represent the final product.
|
||||||
|
|
||||||
|
The production version will include (at least) the following changes:
|
||||||
|
|
||||||
|
- PCB schematic: The SH7091 SCIF is able to use the RTS2 and CTS2 signals as
|
||||||
|
GPIO. However, if RTS and CTS are routed to ADBUS on the FT232H, it is not
|
||||||
|
possible to simultaneously configure ADBUS signals as both UART and GPIO. For
|
||||||
|
this reason, a new PCB revision will instead route RTS/CTS to the FT232H
|
||||||
|
ACBUS. This will allow simultaneous RX/TX UART on ADBUS and GPIO on ACBUS. The
|
||||||
|
intent is to allow for more interesting out-of-band signaling, in addition to
|
||||||
|
what is possible with a plain UART.
|
||||||
|
|
||||||
|
- PCB schematic: rearranged all ACBUS connections; LEDs moved from ACBUS8/ACBUS9
|
||||||
|
to ACBUS0/ACBUS1; G-RESET moved from ACBUS1 to ACBUS5; SCK moved from ACBUS0
|
||||||
|
to ACBUS6.
|
||||||
|
|
||||||
|
- PCB layout: increase the size of the serial connector footprint pads
|
||||||
|
|
||||||
|
- PCB layout: increase clearance between passive components and serial connector footprint
|
||||||
|
|
||||||
|
- PCB layout: complete redraw
|
||||||
|
|
||||||
|
- PCB layout: changed USB connector type from USB Mini-B to USB Type-C
|
||||||
|
|
||||||
|
- PCB layout: replaced FT232HL with FT232HQ due to component shortage
|
||||||
|
|
||||||
|
- Serial connector: shield tin-plating applied at the factory
|
||||||
|
|
||||||
|
- Serial connector: conductive pin tin-plating applied at the factory
|
||||||
|
|
||||||
|
- Serial connector: increase thickness of shield pins
|
||||||
|
|
||||||
|
- Serial connector: slightly redimensioned to reduce grinding required for a
|
||||||
|
perfect fit in the female connector
|
||||||
|
|
||||||
|
- Serial connector: holes at the front of the pin guides were removed; this is
|
||||||
|
to prevent inconsistent bridging seen in some earlier samples
|
||||||
|
|
||||||
|
Other changes that are under consideration:
|
||||||
|
|
||||||
|
- possible inclusion of a Nylon case/enclosure for the PCB (depending on feedback/demand)
|
37
questionnaire.txt
Normal file
37
questionnaire.txt
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
- Would you pay $50 USD + $8 (US) shipping for this adapter?
|
||||||
|
|
||||||
|
Commentary: The serial connector is the main bottleneck on lowering the price.
|
||||||
|
|
||||||
|
- What is your favorite USB connector:
|
||||||
|
|
||||||
|
- USB Type-B (full-size)
|
||||||
|
- USB Mini-B
|
||||||
|
- USB Micro-B
|
||||||
|
- USB Type-C
|
||||||
|
|
||||||
|
Commentary: I think USB Mini-B has a good balance between connector strength
|
||||||
|
and size. USB Type-C might be more popular though.
|
||||||
|
|
||||||
|
- Would you pay $10 for a high-quality plastic case for this serial adapter?
|
||||||
|
|
||||||
|
Commentary: I think the exposed PCB has a nice aesthetic. I am also concerned
|
||||||
|
about the clearance between the Dreamcast serial port and the Dreamcast AV
|
||||||
|
port. It is deliberate that this serial adapter PCB is nearly as narrow as
|
||||||
|
possible.
|
||||||
|
|
||||||
|
- The maximum configurable Dreamcast SCIF speed is 1.5Mbit/s. However, it may be
|
||||||
|
possible to achieve faster speeds by overclocking the SCIF via the SCIF
|
||||||
|
external clock input. If a 1.5Mbit/s adapter is priced at $50 USD, would you
|
||||||
|
pay $100 for an adapter with that can transmit and receive at an overclocked
|
||||||
|
2.0Mbit/s?
|
||||||
|
|
||||||
|
Commentary: I think this is a funny idea, but I doubt people want to pay for
|
||||||
|
it. It is almost certainly a better idea to make a G2 bus (modem connector)
|
||||||
|
peripheral for this instead.
|
||||||
|
|
||||||
|
- Do you think there should be a similarly-priced serial adapter product for
|
||||||
|
Sega Saturn?
|
||||||
|
|
||||||
|
Commentary: Sega Saturn is slightly more interesting because there are three
|
||||||
|
completely separate serial interfaces on the same connector. This is a perfect
|
||||||
|
use-case for the FT4232H quad-channel UART chip.
|
90
summary.txt
Normal file
90
summary.txt
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
Product summary:
|
||||||
|
|
||||||
|
Dreamcast USB-UART adapter, featuring new durable Dreamcast serial connector.
|
||||||
|
|
||||||
|
Does not contain recycled/scavenged components from any Sega-original product.
|
||||||
|
|
||||||
|
Usable as a COM/tty port with generic software (FTDI VCP drivers required on
|
||||||
|
Windows; usable with no configuration on Linux). Custom software is also
|
||||||
|
provided for more advanced functionality.
|
||||||
|
|
||||||
|
What can you do with it?
|
||||||
|
|
||||||
|
This product is primarily intended for people interested in developing new
|
||||||
|
software for Sega Dreamcast.
|
||||||
|
|
||||||
|
For Dreamcast units with boot ROMs that will load software from CD-R (e.g: VA0,
|
||||||
|
VA1).
|
||||||
|
|
||||||
|
Example/suggested use-cases include:
|
||||||
|
|
||||||
|
- copy newly-written software from a PC to Dreamcast RAM for rapid compile/test cycles
|
||||||
|
|
||||||
|
- create dumps of Dreamcast texture memory (framebuffer "screenshots", Holly/emulator development, application debugging)
|
||||||
|
|
||||||
|
- SH4 debugging via GDB
|
||||||
|
|
||||||
|
- serial printf debugging
|
||||||
|
|
||||||
|
- interactive text console via a terminal emulator (minicom/picocom/screen/putty)
|
||||||
|
|
||||||
|
Many other data transfer use-cases are possible, including VMU save backups and
|
||||||
|
CD-ROM/GD-ROM backups.
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
- Capable of sustained data transfer at 1.5 Mbit/s, read and write (the
|
||||||
|
maximum configurable speed of the Dreamcast SCIF)
|
||||||
|
|
||||||
|
- Dreamcast global reset, user-controllable via USB (reset the Dreamcast
|
||||||
|
without pressing the power button)
|
||||||
|
|
||||||
|
- Two LEDs, user-controllable via USB (by default configured as TX/RX activity LEDs)
|
||||||
|
|
||||||
|
Transfer benchmarks:
|
||||||
|
|
||||||
|
Benchmarks are performed using the `ftdi_transfer` open source transfer program
|
||||||
|
on Linux.
|
||||||
|
|
||||||
|
- 50 kbyte @ 0.425±0.001 seconds (idealized time: 0.419 seconds)
|
||||||
|
- 1 Mbyte @ 6.666±0.002 seconds (idealized time: 6.711 seconds)
|
||||||
|
- 8 Mbyte @ 53.253±0.015 seconds (idealized time: 53.687 seconds)
|
||||||
|
- 15 Mbyte @ 99.854±0.026 seconds (idealized time: 100.663 seconds)
|
||||||
|
|
||||||
|
The integrity of the bytes transferred in each transfer are checked and
|
||||||
|
verified. Each test is repeated and averaged 10 times.
|
||||||
|
|
||||||
|
The results where the benchmarked speed is faster than the idealized time are
|
||||||
|
not a mistake. This occurs because FT232H chip is transmitting at 1573770
|
||||||
|
bits/sec, which is 0.721% faster than the Dreamcast's 1562500 bit/s. The SH7091
|
||||||
|
manual specifies (receive) speeds within 1% of the configured rate are
|
||||||
|
acceptable. Because the SH7091 SCIF performs 16x oversampling of the received
|
||||||
|
serial data and resynchronizes on every start bit, this effectively means that
|
||||||
|
the SCIF is being "overclocked" by 0.721% when the receive line is driven by a
|
||||||
|
FT232H.
|
||||||
|
|
||||||
|
The results where the benchmarked speed is slower than the idealized time is
|
||||||
|
because the round trip time of an extra USB transaction is included in the
|
||||||
|
benchmark measurement. This extra USB transaction is used to retrieve the CRC32
|
||||||
|
checksum of the transmitted data, as computed by the Dreamcast. The extra USB
|
||||||
|
transaction is also used to positively affirm the serial transfer is complete
|
||||||
|
(and not simply queued in the FT232H transmit buffer). This USB transaction
|
||||||
|
latency is relatively constant, and becomes insignificant with larger transfers.
|
||||||
|
|
||||||
|
Technical specifications:
|
||||||
|
|
||||||
|
Dreamcast serial connector:
|
||||||
|
|
||||||
|
- Aluminium shield/shroud (SLM 3d-printed)
|
||||||
|
|
||||||
|
- Aluminium conductive pins (laser-cut sheet metal)
|
||||||
|
|
||||||
|
- Plastic pin-housing (SLA 3d-printed)
|
||||||
|
|
||||||
|
USB UART PCB:
|
||||||
|
|
||||||
|
- FTDI FT232H USB UART
|
||||||
|
|
||||||
|
- 93LC56BT 2kbit configuration EEPROM
|
||||||
|
|
||||||
|
- custom 4-layer PCB
|
Loading…
x
Reference in New Issue
Block a user